前言: IT培训网小编来给大家介绍一下java串口模拟器,java串口通信由于没有相应的串口硬件,选了一款windows串口虚拟机机
IT培训网小编来给大家介绍一下java串口模拟器,java串口通信由于没有相应的串口硬件,选了一款windows串口虚拟机机器。
串口模拟器
Launch Virtual Serial Port Driver
模拟两对四个串口,COM1发送数据给COM2,COM3发送数据给COM4
java包
<dependency>
<groupId>com.fazecast</groupId>
<artifactId>jSerialComm</artifactId>
<version>[2.0.0,3.0.0)</version>
</dependency>
mport com.fazecast.jSerialComm.SerialPort;
import com.fazecast.jSerialComm.SerialPortDataListener;
import com.fazecast.jSerialComm.SerialPortEvent;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Classname ComTest
* @Description com串口通信
* @Date 2021/9/4 10:44
* @Created by huangsm
*/
public class ComTest {
/**
* <com名称,SerialPort>串口通信map,存储串口名称与串口信息
*/
private Map<String, SerialPort> comMap = new HashMap<>();
/**
* com口列表
*/
private List<String> comList = new ArrayList<>();
public ComTest() {
//将所有的串口信息放入comlist,comMap中
SerialPort[] commPorts = SerialPort.getCommPorts();
for (SerialPort commPort : commPorts) {
comList.add(commPort.getSystemPortName());
comMap.put(commPort.getSystemPortName(), commPort);
//监听所有串口通信的数据
commPort.openPort();
commPort.addDataListener(new SerialPortDataListener() {
@Override
public int getListeningEvents() {
return SerialPort.LISTENING_EVENT_DATA_RECEIVED;
}
@Override
public void serialEvent(SerialPortEvent serialPortEvent) {
byte[] newData = serialPortEvent.getReceivedData();
System.err.println(String.format("串口%s接收到数据大小:%s,串口数据内容:%s"
,serialPortEvent.getSerialPort().getSystemPortName(),newData.length,new String(newData)));
}
});
}
}
public static void main(String[] args) throws Exception {
ComTest comTest = new ComTest();
List<String> comList = comTest.comList;
Map<String, SerialPort> comMap = comTest.comMap;
BufferedReader systemIn = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.println("你的可以通信的串口列表");
for (String comName : comList) {
System.out.println("========" + comName + "========");
}
System.out.println("请输入你的串口:");
String com = systemIn.readLine();
if(!comList.contains(com)){
System.out.println("输入的串口不正确:");
continue;
}
System.out.println("输入你要发送的消息:");
String msg = systemIn.readLine();
SerialPort serialPort = comMap.get(com);
serialPort.writeBytes(msg.getBytes(),msg.getBytes().length);
//这里是让串口先接收到数据再重新发送数据
Thread.sleep(1000);
}
}
}
你的可以通信的串口列表
========COM1========
========COM2========
========COM3========
========COM4========
请输入你的串口:
COM3
输入你要发送的消息:
137912037
串口COM4接收到数据大小:9,串口数据内容:137912037
你的可以通信的串口列表
========COM1========
========COM2========
========COM3========
========COM4========
请输入你的串口:
文章出自:http://qh.itpxw.cn/peixun/software/2022123705.html
文章标题:Java串口通信模拟器
免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员
用户级别:10
机构名称:IT培训网
联 系 人:罗老师
联系电话:13783581536
联系手机:13783581536
在线客服:
在 线 QQ:
电子邮件:
网站域名:http://www.itpxw.cn
注册时间:2016-07-18 11:07
最后登录:2024-02-20 13:02
Java定义方法的格式是什么?IT培训网小编来告诉大家。所谓方法...
大家在Java教程中会学到关于Java消息推送的知识,那么,Java消息...
常用的Java日期格式转换有哪些?IT培训网小编来告诉大家。 1...
Java创建对象数组的方法是什么?IT培训网小编来告诉大家。Ja...