java 串口通信实现流程示例

 更新时间:2017年11月24日 10:40:41   作者:zhylioooo  
这篇文章主要介绍了java 串口通信实现流程示例,具有一定参考价值,需要的朋友可以了解下。

1、下载64位rxtx for java 链接:http://fizzed.com/oss/rxtx-for-java

2、下载下来的包解压后按照说明放到JAVA_HOME即JAVA的安装路径下面去

3、在maven的pom.xml下添加

  <dependency>
    <groupId>org.rxtx</groupId>
    <artifactId>rxtx</artifactId>
    <version>2.1.7</version>
  </dependency>

4、串口API

  CommPort:端口的抽象类
  CommPortIdentifier:对串口访问和控制的核心类
  SerialPort:通过它可以直接对串口进行读、写及设置工作

5、列出本机可用端口

Enumeration<CommPortIdentifier> em = CommPortIdentifier.getPortIdentifiers();
  while (em.hasMoreElements()) {
    String name = em.nextElement().getName();
    System.out.println(name);
  }

6、一般步骤:打开串口得到串口对象==》设置参数==》对串口进行读写==》关闭串口,其中对串口进行读操作比较常用

//打开串口
  CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("COM4");//COM4是串口名字
  CommPort commPort = portIdentifier.open("COM4", 2000);  //2000是打开超时时间
  serialPort = (SerialPort) commPort;
  //设置参数(包括波特率,输入/输出流控制,数据位数,停止位和齐偶校验)
  serialPort.setSerialPortParams(9600,
  SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
  SerialPort.PARITY_NONE);
  //监听串口事件
  serialPort.addEventListener(new Abc()); //Abc是实现SerialPortEventListener接口的类,具体读操作在里面进行
  // 设置当有数据到达时唤醒监听接收线程
  serialPort.notifyOnDataAvailable(true);
  // 设置当通信中断时唤醒中断线程
  serialPort.notifyOnBreakInterrupt(true);
  //  in.close(); //关闭串口

Abc类内容,即读串口的具体操作:

public class Abc implements SerialPortEventListener {
  public void serialEvent(SerialPortEvent arg0) {
    // TODO Auto-generated method stub
    //对以下内容进行判断并操作
    /*
    BI -通讯中断
    CD -载波检测
    CTS -清除发送
    DATA_AVAILABLE -有数据到达
    DSR -数据设备准备好
    FE -帧错误
    OE -溢位错误
    OUTPUT_BUFFER_EMPTY -输出缓冲区已清空
    PE -奇偶校验错
    RI - 振铃指示
    */
    //switch多个,if单个
    if (arg0.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
      try {
        InputStream in = null;
        byte[] bytes = null;
        in = App.serialPort.getInputStream();

        int bufflenth = in.available();
        while (bufflenth != 0) {
          // 初始化byte数组为buffer中数据的长度
          bytes = new byte[bufflenth];
          in.read(bytes);
          System.out.println(new String(bytes));
          bufflenth = in.available();
        }
        
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }  
}

写操作:

OutputStream out = serialPort.getOutputStream();
out.write(data); //byte[] data;
out.flush();

总结

以上就是本文关于java 串口通信实现流程示例的全部内容,希望对大家有所帮助。如有问题可以随时留言,期待您的宝贵意见。

相关文章

  • Java Rabbitmq中四种集群架构的区别详解

    Java Rabbitmq中四种集群架构的区别详解

    这篇文章主要为大家详细介绍了Java Rabbitmq中四种集群架构的区别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 超好用的Java工具类库Hutool用法详解

    超好用的Java工具类库Hutool用法详解

    Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,下面就跟随小编一起来学习一下Hutool的具体用法吧
    2023-09-09
  • 简单了解SpringMVC与Struts2的区别

    简单了解SpringMVC与Struts2的区别

    这篇文章主要介绍了简单了解SpringMVC与Struts2的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 如何在Java中优雅地使用正则表达式详解

    如何在Java中优雅地使用正则表达式详解

    这篇文章主要给大家介绍了关于如何在Java中优雅地使用正则表达式的相关资料,正则表达式就是一个字符串,但和普通的字符串不同的是,正则表达式是对一组相似字符串的抽象,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • MyBatis-Plus:saveOrUpdate根据指定字段更新或插入方式

    MyBatis-Plus:saveOrUpdate根据指定字段更新或插入方式

    这篇文章主要介绍了MyBatis-Plus:saveOrUpdate根据指定字段更新或插入方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 详解如何配置springboot跳转html页面

    详解如何配置springboot跳转html页面

    这篇文章主要介绍了详解如何配置springboot跳转html页面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java构造器使用方法及注意事项

    Java构造器使用方法及注意事项

    这篇文章主要介绍了Java构造器使用方法及注意事项的相关资料,这里举例说明如何使用构造器及需要注意的地方,需要的朋友可以参考下
    2017-07-07
  • Springmvc获取前台请求数据过程解析

    Springmvc获取前台请求数据过程解析

    这篇文章主要介绍了Springmvc获取前台请求数据过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 详解Java中NullPointerException的处理方法

    详解Java中NullPointerException的处理方法

    这篇文章将带大家来单独看一个很常见的异常--空指针异常,这个可以说是每个Java程序员都必知的异常,所以我们不得不单独学习一下,文中有详细的代码示例,需要的朋友可以参考下
    2023-08-08
  • 详解Java二叉排序树

    详解Java二叉排序树

    这篇文章主要介绍了Java二叉排序树,包括二叉排序树的定义、二叉排序树的性质、二叉排序树的插入和查找等,感兴趣的小伙伴们可以参考一下
    2015-12-12

最新评论