Java串口通信

更新时间:2023-07-25 16:25:22 阅读: 评论:0

Java串口通信
1. Java串口通信实现
Java中,利用Java Communication API可以操作计算机的串口,Jar包的名称为comm.jar,但是这个包只合适于Windows平台的操作系统,其它的操作系统需要其它的Jar包。Comm.jar包由Sun公司发布,分别提供了对常用的RS232串行端口和IEEE1284并行端口通信的支持。Java Communication API和环境变量配置所需要的文件我已经打包后放在同文档的目录下,名称为:支点教育javacomm20-win32.zip
1.1. 通信前的准备工作
在实现与计算机串口通信之前,需要对Java作一些相应的环境变量配置,配置步骤很简单,只需三步即可完成。
win32com.dll拷贝到{JAVA_HOME}\jre\bin
comm.jar拷贝到{JAVA_HOME}\jre\lib
把properties拷贝到{JAVA_HOME}\jre\lib
说明:为什么这些文件都是放到jre路径下呢?这是因为通常运行“Java MyApp”的时候,都是由JRE下的虚拟机启动的。只有放在“这里”,虚拟机才能顺利的找到相应的文件,不然可能会提示找不到串口的错误信息。
1.2. Java Communication API的大概认识
这里没有详细描述CommAPI每个类和接口的用法,只介绍案例代码中有用到的主要类和接口的用法,这也是CommAPI最基础的类结构。下面截图是CommAPI的所有类:
CommPort
这是用于描述被底层系统支持的端口的抽象类,通常常用的端口有串口和并口,该抽象类包含了IO的控制方法,这些方法对于所有不同的通信端口来说都是通用的。SerialPortParallelPort是它的两个子类,分别表示串口和并口。两都对于各自底层的物理端口有着不同的控制方法。这里暂时只关注SerialPort类。
CommPortIdentifier
这个类主要用于对串口进行管理和设置,是对串口进行访问控制的核心类。常用的方法有:
确定是否有可用的通信端口
IO操作打开通信端口
决定端口的所有权
处理端口所有权的争用
管理端口通信引发的事件(Event)
SerialPort
这个类描述了RS-232串口通信端口的底层类,它定义了串口通信所需要的基本功能。例如,通过它,用户可以直接对串口进行读、写及参数设置的工作。一个SerialPort对象对应着一个端口。
1.3. 串口通信的实现过程
串口通信的主要步骤包括:
获得串口标识
打开串口
设置串行端口通讯参数
获取输入(出)流
进行读写操作
下面是如何列出所有的端口方法:
//得到的是一个枚举对象
portList = CommPortIdentifier.getPortIdentifiers();
public String[] systemAllComs(){
        String[] coms = null;
        List comList = new ArrayList();
        //遍历枚举对象,包括串口和并口
        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {  //判断端口类型是否为串口
                System.out.println(portId.getName());
                comList.add(portId.getName());
            }
        }
        int len = comList.size();
        coms = zoonew String[len];
        Iterator it = comList.iterator();
        int i = 0;
        while(it.hasNext()){
            coms[i] = (();
            i++;
        }
        return coms;
新视野大学英语读写教程3课后答案
    }
以上代码可以列举出当前系统所有可用的串口名称,我的机器上输出的结果是COM1COM2COM3
对某个串口进行监听:
/* 初始化指定的 Com 端口(获得com标识) */
            portId = CommPortIdentifier.getPortIdentifier(com);
            System.out.println("进入" + com);
            /* 打开指定的 Com 端口,2000为超时时间 */
            rialPort = (SerialPort) 钵酒portId.open("1600K", 2000);
           
            /* 从端口对象获得输入流 */
            inputStream = rialPort.getInputStream();
            /* 注册监听器 */富爸爸 穷爸爸
            rialPort.addEventListener(this);
            /* 开始监听,默认为不监听 */
            rialPort.notifyOnDataAvailable(true);
            /* 设置串行端口通讯参数 */
            rialPort.BaudRate(), sp.getDatabits(), sp.getStopbits(), sp.getParity());
这段代码包含了几个功能,包括:初始化某个串口,打开串口,获得串口的输入(输出)流,注册串口监听器和设置串口的通信参数,这些都是控制串口的基本操作流程。详细见代码。
Java实现串口通信的简单操作到这里基本完成,刚才上面提到的监听器代码如下,监听器代码中引用到了另一个Java类---“自动键盘实现类”。
switch(EventType()) {
        ca SerialPortEvent.BI:
        ca SerialPortEvent.OE:
        ca SerialPortEvent.FE:
        ca SerialPortEvent.PE:
        ca SerialPortEvent.CD:
        ca SerialPortEvent.CTS:
        ca SerialPortEvent.DSR:
        ca SerialPortEvent.turn怎么读英语单词RI:
        ca SerialPortEvent.OUTPUT_BUFFER_EMPTY:
            break;
//这里只关注数据部分
        ca SerialPortEvent.DATA_AVAILABLE:
            try {
                int i = 13;
                byte[] readBuffer = new byte[i];
                System.out.println(inputStream.available());
                while (inputStream.available() > 0) {
                    inputStream.read(readBuffer);
                }
                String str = new美女翻译张京 String(readBuffer);
//将在串口读取到的数据作为autoKey方法的参数,实现自动键盘功能
                key.autoKey(str);
            } catch (IOException e) {
                e.printStackTrace();
            }
            break;
        }
2. 串口通信的主要参数及含义简单解析
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配:
波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。
数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。
ud to do停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。
小学教材全解3、 辅助工具
工具1
绯闻少女第六季软件名称:SUDT SERIALNULL(文件名称:有限天数免费试用)
    的:由于串口开发,需要硬件接口,以及串口链接线。使用本软件可以在没有硬件串口接口和链接线的情况下,模拟出串口,并且可以让模拟出的两个串口互相导通。
工具2
软件名称:PComm26免费)
目    的:用于给串口发送数据的软件

本文发布于:2023-07-25 16:25:22,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/188454.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:串口   端口   参数   进行   设置   代码   表示
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图