首页 > 编程语言 >java读取虚拟串口数据

java读取虚拟串口数据

时间:2023-01-05 14:55:23浏览次数:40  
标签:java 读取 com3 SerialPort 串口 finalCom data

语言:java

虚拟串口工具:Virtual Serial Port Driver Pro 9.0,选择pairing模块下,点击add virtual paring按钮即可创建串口对,还无法自定义outin

串口助手:xcom2.6,在串口选择框中选择刚创建好的虚拟串口,使用默认设置,点击打开串口,输入框中输入数据,点击发送数据即可发送数据。如果接收端没有接收到数据(稍微等等),则重新选择串口,互换输入输出端。

相关组件:jSerialComm==2.9.3

1.导入maven依赖:

<dependency>
            <groupId>com.fazecast</groupId>
            <artifactId>jSerialComm</artifactId>
            <version>[2.0.0,3.0.0)</version>
</dependency>

2.也可以直接导入jar包:把jSerialComm-2.9.3存入java项目的lib目录中,在IDEA下,选中jar包然后点击右键,选择add ad library,即可在代码中引用。

 具体代码实现:

public void read(String portDescriptor) {
        //portDescriptor= e.g., "/dev/ttyS0" or "COM3"
        SerialPort[] serialPorts = SerialPort.getCommPorts();
        //serialPorts[0]是接收端
        SerialPort com3 = serialPorts[0];
        com3.setParity(SerialPort.EVEN_PARITY);
        com3.setFlowControl(SerialPort.FLOW_CONTROL_DISABLED);
        boolean isOpened = com3.openPort();

        if (isOpened) {
            //基于事件监听
            try {
                Thread.sleep(1000);
                SerialPort finalCom = com3;
                //监听器监听串口数据变化
                com3.addDataListener(new SerialPortDataListener() {
                    @Override
                    public int getListeningEvents() {
                        return SerialPort.LISTENING_EVENT_DATA_AVAILABLE;
                    }

                    @Override
                    public void serialEvent(SerialPortEvent serialPortEvent) {
                        if (serialPortEvent.getEventType() != SerialPort.LISTENING_EVENT_DATA_AVAILABLE) {
                            return;
                        }
                        while (finalCom.bytesAvailable() != 0) {
                            byte[] data = new byte[com3.bytesAvailable()];
                            int numRead = finalCom.readBytes(data, data.length);
                            System.out.println("the length of data: "+ numRead);
                            System.out.println(new String(data));
                            try {
                                Thread.sleep(2000);
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
} 

 

标签:java,读取,com3,SerialPort,串口,finalCom,data
From: https://www.cnblogs.com/lanoBlog/p/17027484.html

相关文章

  • 直播app源码,Java的输入输出
    直播app源码,Java的输入输出第一种输入方法:scanner importjava.util.Scanner;//导入java.util.ScannerpublicclassUser{  publicstaticvoidmain(String[]......
  • idea为java程序添加启动参数(program arguments,vm arguments,Environment variable)
    programarguments作用programarguments 中的值作为args[]的参数传入应用程序,书写格式参数1参数2参数3注意:参数之间要以空格分隔,如果参数值中间有空格,则用引号......
  • Java synchronized
    synchronized是java提供线程间同步的重要机制保证在同一时刻,被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果java内存模型:先通过一个生产者消费者例......
  • Java泛型
    Java泛型泛型上下限泛型的上限格式:<?extends类>含义:只能接收该类型及其子类泛型的下限格式:<?super类>含义:只能接收该类型及其父类......
  • (实例)一种读取配置文件的方法
    #-*-coding:utf-8-*-#学习cookie和session两种方法的用法区别#未登录:cookie:未登录#登录:cookie:登录#有一个页面,必须登陆之后才能看到数据#每次访问这个页面......
  • java中的多线程
    一.线程的创建线程的创建方式有两种:一种是继承Thread类,重写run()方法【这里的run()方法只是普通的方法】,在主方法中,创建该类的对象,调用对象的start()方法。二种是实现R......
  • unity读取Excel
    使用unity5.6的和Excel是2016版本。新建工程,新建文件夹Plugins,然后导入两个dll,一个是EXCEL一个system.Data。  读取脚本如下:usingSystem.Collections.Generic;usingUnit......
  • java.io.IOException: Permission denied——文件导出时报错
    背景业务系统中,有一个导出,就是很普通的列表查询,然后可以点击导出,生成一个文件。就这么一个功能。使用的excel工具类是:org.apache.poi.xssf用的poi这个工具类。问题......
  • Java基础语法
    基本的dos命令打开cmd的方式开始+系统+命令提示行Win+R输入cmd打开控制台在任意的文件夹下面,按住shift+鼠标右键,在此处打开命令行窗口资源管理器的地址栏前面加上......
  • Java毕业生就业系统学生就业统计系统
    简介本项目主要是为了统计毕业生就业情况(就业方向分为四种:参加工作,考研,自主创业,待就业),教师可登入该系统查看学生就业情况,包括:考研、职业领域、工作城市,薪资等统计情况,并且......