package com.example.demo.service;
import com.fazecast.jSerialComm.SerialPort;
public class RelaySwitch {
public void open(){
SerialPort comPort = SerialPort.getCommPort("COM6");
// 设置串口参数
comPort.setComPortParameters(9600, 8, 1, 0); // 波特率、数据位、停止位、校验位
comPort.setComPortTimeouts(SerialPort.TIMEOUT_WRITE_BLOCKING, 0, 0); // 设置超时
// 打开串口
if (comPort.openPort()) {
System.out.println("串口已打开.");
// 准备发送的数据(十六进制格式)
byte[] sendData = hexStringToByteArray("01050001FF00DDFA");
// 创建一个线程用于发送数据
try {
// 获取输出流
try (java.io.OutputStream out = comPort.getOutputStream()) {
// 发送数据
out.write(sendData);
out.flush();
Thread.sleep(100);
System.out.println("已发送数据: " + byteArrayToHexString(sendData));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭串口
comPort.closePort();
System.out.println("串口已关闭.");
}
} else {
System.err.println("无法打开串口.");
}
}
public void close() {
SerialPort comPort = SerialPort.getCommPort("COM6");
// 设置串口参数
comPort.setComPortParameters(9600, 8, 1, 0); // 波特率、数据位、停止位、校验位
comPort.setComPortTimeouts(SerialPort.TIMEOUT_WRITE_BLOCKING, 0, 0); // 设置超时
// 打开串口
if (comPort.openPort()) {
System.out.println("串口已打开.");
// 准备发送的数据(十六进制格式)
byte[] sendData = hexStringToByteArray("FE05000100008805");
// 创建一个线程用于发送数据
try {
// 获取输出流
try (java.io.OutputStream out = comPort.getOutputStream()) {
// 发送数据
out.write(sendData);
out.flush();
Thread.sleep(100);
System.out.println("已发送数据: " + byteArrayToHexString(sendData));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭串口
comPort.closePort();
System.out.println("串口已关闭.");
}
} else {
System.err.println("无法打开串口.");
}
}
private static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
private static String byteArrayToHexString(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X ", b));
}
return sb.toString().trim();
}
}
01-05
1132
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
05-31