没想到挺多人需要这个的,很高兴这篇文章能对大家有帮助,主要的工具类博文里已经有了,当然,要小工具源码的留言邮箱即可。 2019.09.05
最近接触到了串口及其读写,在此记录java进行串口读写的过程。
1.导入支持java串口通信的jar包:
在maven项目的pom.xml中添加RXTXcomm的依赖 或者 下载RXTXcomm.jar并导入到项目中。
支持Java串口通信操作的jar包,java.comm比较老,而且不支持64位系统,推荐使用Rxtx这个jar包(32位/64位均支持)。
下载地址:
注意:运行过程中抛出java.lang.UnsatisfiedLinkError错误或gnu.io下的类找不到时,将rxtx解压包中的rxtxParallel.dll,rxtxSerial.dll 这两个文件复制到C:\Windows\System32 目录下可解决该错误。
2.编写代码操作串口:
串口必要参数类:包含连接串口所必须的参数,方便在调用串口时设置和传递串口参数
/**
* 串口必要参数接收类
* @author: LinWenLi
* @date: 2018年7月21日 下午4:30:40
*/
public class ParamConfig {
private String serialNumber;// 串口号
private int baudRate; // 波特率
private int checkoutBit; // 校验位
private int dataBit; // 数据位
private int stopBit; // 停止位
public ParamConfig() {}
/**
* 构造方法
* @param serialNumber 串口号
* @param baudRate 波特率
* @param checkoutBit 校验位
* @param dataBit 数据位
* @param stopBit 停止位
*/
public ParamConfig(String serialNumber, int baudRate, int checkoutBit, int dataBit, int stopBit) {
this.serialNumber = serialNumber;
this.baudRate = baudRate;
this.checkoutBit = checkoutBit;
this.dataBit = dataBit;
this.stopBit = stopBit;
}
getter()...
setter()...
}
串口操作类:(其中包含的CustomException是自定义异常类,仅用于抛出异常原因。)
import gnu.io.CommPortIdentifier;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import gnu.io.UnsupportedCommOperationException;
/**
* 串口参数的配置 串口一般有如下参数可以在该串口打开以前进行配置: 包括串口号,波特率,输入/输出流控制,数据位数,停止位和奇偶校验。
*/
// 注:串口操作类一定要继承SerialPortEventListener
public class SerialPortUtils implements SerialPortEventListener {
// 检测系统中可用的通讯端口