Java串口助手 带UI界面 Java串口调试工具 FPV

Java串口助手 带UI界面 Java串口调试工具 FPV

效果图

在这里插入图片描述
FPV控制模式,需要硬件支持

随便讲点

这个说是串口调试工具有点尴尬, 因为最开始是为了用电脑在自己做的小车上玩FPV写的一个小程序,所以有个FPV功能。
FPV需要硬件支持,我的操作是USB转串口然后接上433,摄像头是用的那种带USB口的图传接收器,tb搜手机图传应该就有吧。。
小车那边也是用的433做的接受,图像用图传发射,效果还行。延迟方面因为车跑的不快所以也感觉不明显。

FPV模式演示视频:链接:https://pan.baidu.com/s/1NTWxUiKdxLwTA2dOvqAvrg 提取码:52u3

依赖jar包

RXTXcomm.jar
webcam-capture-0.3.12.jar 提取码 inc4

代码

Main类,主要用来选择串口,选择出来的串口会丢给下面的类进行解析和打开

package com.serial;

import java.awt.Choice;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Enumeration;

import javax.swing.JButton;
import javax.swing.JFrame;

import gnu.io.CommPortIdentifier;

public class Main {
   

	public static void main(String[] args) {
   
		//选择串口窗口创建
				JFrame xzck = new JFrame("请选择串口");
				Choice c = new Choice();
				JButton b = new JButton("打开");
				Image icon = Toolkit.getDefaultToolkit().getImage("images/logo/logo1.png");  //设置图标
				
		    	ArrayList<String> sum = findPort();
		    	//判断可用窗口数量是否为零
			    	
			        	for(int i = 0;i <= sum.size() - 1;i++){
   
			            	c.add(sum.get(i));
			        	}
			        	c.setBounds(90, 40, 120, 30);
			    		b.setBounds(110, 90, 80, 30);
			    		
			    		xzck.setBounds(300, 250, 300, 200);
			        	xzck.setIconImage(icon);   //设置窗口的logo
			    		xzck.setResizable(false);
			    		xzck.setLayout(null);
			    		
			    		xzck.add(c);
			    		xzck.add(b);
			    		
			    		xzck.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			    		xzck.setVisible(true);
			    		
			    		b.addActionListener(new ActionListener(){
   
			                //选择串口界面开启按钮点击监听
			                public void actionPerformed(ActionEvent e) {
   
			                	
			                	try {
   
			                		//关闭窗口
			                    	xzck.dispose();
			                    	
									(new Serial()).ckks(c.getSelectedItem());
									System.out.println("串口开启!!!!");
								} catch (InterruptedException e1) {
   
									System.out.println("串口IO流错误");
									e1.printStackTrace();
								}
			                }
			            });
	}
	
	
	//获取可用串口
		@SuppressWarnings("unchecked")
		public static final ArrayList<String> findPort() {
   
	    	//System.out.println("开始获取");
	        //获得当前所有可用串口
	        Enumeration<CommPortIdentifier> portList = CommPortIdentifier.getPortIdentifiers();
	        ArrayList<String> portNameList = new ArrayList<>();
	        //将可用串口名添加到List并返回该List
	        while (portList.hasMoreElements()) {
   
	            String portName = portList.nextElement().getName();
	            portNameList.add(portName);
	        }
	        //[返回可用串口List
	        return portNameList;
	    }
}

这是Serial类,主要的类都在里面

package com.serial;

import java.util.Enumeration;

import gnu.io.CommPortIdentifier;

import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import gnu.io.UnsupportedCommOperationException;

import java.awt.Choice;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.TooManyListenersException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToggleButton;

import com.github.sarxos.webcam.Webcam;
import com.github.sarxos.webcam.WebcamPanel;
import com.github.sarxos.webcam.WebcamResolution;



class dsfs implements Runnable {
   
	//这个是定时发送线程
	private int time = 100;//延时默认100ms
	private Thread t;
	private String threadName = "定时发送线程";
	dsfs(int time) {
   
		this.time = time;
	}
	@SuppressWarnings("static-access")
	public void run() {
   
		
		while(Serial.zt_ds){
   
			try {
   
				Serial.write(Serial.jtf.getText());
				t.sleep(time);//等待时间
			} catch (InterruptedException e) {
   
				e.printStackTrace();
			}
		}
		Serial.log("停止定时发送");
		
   	}
	public void start () 
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值