java串口发送十六进制数,本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下1.介绍使用Java实现的串口通信程序,支持十六进制数据的发送与接收。 源码:…

  • Post author:
  • Post category:java


本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下

1.介绍

使用Java实现的串口通信程序,支持十六进制数据的发送与接收。

源码:SerialPortDemo

效果图如下:

48cfcaf3222d1a48dc2b0bdd00dcde91.png

2.RXTXcomm

内含32位与64位版本

使用方法:

拷贝 RXTXcomm.jar 到 JAVA_HOMEjrelibext目录中;

拷贝 rxtxSerial.dll 到 JAVA_HOMEjrebin目录中;

拷贝 rxtxParallel.dll 到 JAVA_HOMEjrebin目录中;

JAVA_HOME为jdk安装路径

3.串口通信管理

SerialPortManager实现了对串口通信的管理,包括查找可用端口、打开关闭串口、发送接收数据。

package com.yang.serialport.manage;

import gnu.io.CommPort;

import gnu.io.CommPortIdentifier;

import gnu.io.NoSuchPortException;

import gnu.io.PortInUseException;

import gnu.io.SerialPort;

import gnu.io.SerialPortEventListener;

import gnu.io.UnsupportedCommOperationException;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.Enumeration;

import java.util.TooManyListenersException;

import com.yang.serialport.exception.NoSuchPort;

import com.yang.serialport.exception.NotASerialPort;

import com.yang.serialport.exception.PortInUse;

import com.yang.serialport.exception.ReadDataFromSerialPortFailure;

import com.yang.serialport.exception.SendDataToSerialPortFailure;

import com.yang.serialport.exception.SerialPortInputStreamCloseFailure;

import com.yang.serialport.exception.SerialPortOutputStreamCloseFailure;

import com.yang.serialport.exception.SerialPortParameterFailure;

import com.yang.serialport.exception.TooManyListeners;

/**

* 串口管理

*

* @author yangle

*/

public class SerialPortManager {

/**

* 查找所有可用端口

*

* @return 可用端口名称列表

*/

@SuppressWarnings(“unchecked”)

public static final ArrayList findPort() {

// 获得当前所有可用串口

Enumeration portList = CommPortIdentifier

.getPortIdentifiers();

ArrayList portNameList = new ArrayList();

// 将可用串口名添加到List并返回该List

while (portList.hasMoreElements()) {

String portName = portList.nextElement().getName();

portNameList.add(portName);

}

return portNameList;

}

/**

* 打开串口

*

* @param portName

* 端口名称

* @param baudrate

* 波特率

* @return 串口对象

* @throws SerialPortParameterFailure

* 设置串口参数失败

* @throws NotASerialPort

* 端口指向设备不是串口类型

* @throws NoSuchPort

* 没有该端口对应的串口设备

* @throws PortInUse

* 端口已被占用

*/

public static final SerialPort openPort(String portName, int baudrate)

throws SerialPortParameterFailure, NotASerialPort, NoSuchPort,

PortInUse {

try {

// 通过端口名识别端口

CommPortIdentifier portIdentifier = CommPortIdentifier

.getPortIdentifier(portName);

// 打开端口,设置端口名与timeout(打开操作的超时时间)

CommPort commPort = portIdentifier.open(portName, 2000);

// 判断是不是串口

if (commPort instanceof SerialPort) {