当前位置: 移动技术网 > IT编程>开发语言>Java > java 串口通信实现流程示例

java 串口通信实现流程示例

2019年07月19日  | 移动技术网IT编程  | 我要评论
1、下载64位rxtx for java 链接:http://fizzed.com/oss/rxtx-for-java 2、下载下来的包解压后按照说明放到java_hom

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 串口通信实现流程示例的全部内容,希望对大家有所帮助。如有问题可以随时留言,期待您的宝贵意见。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网