三、实例

(1)打开、关闭串口

首先使用CommPortIdentifier中的方法,获取可用的端口,并且选择一个端口打开作为通信端口。

A:枚举可用端口

void listPortChoices() 
{
     CommPortIdentifier portId;
     Enumeration en = CommPortIdentifier.getPortIdentifiers();
      while (en.hasMoreElements()) 
       {
         portId = (CommPortIdentifier) en.nextElement();
         if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) 
         System.out.println(portId.getName());
10         }
11         portChoice.select(parameters.getPortName());
12   }
13   
14   

B:打开指定的端口

CommPortIdentifier portId;
try 
{
  //生成CommPortIdentifier类的实例
  portId = CommPortIdentifier.getPortIdentifier("COM4");
catch (NoSuchPortException e)
{
   e.printStackTrace();
10  }
11  try 
12  {
13      //打开串口COM4,设置超时时限为3000毫秒
14      serialPort = (SerialPort) portId.open("testApp"3000);
15 
16  catch (PortInUseException e)
17  {
18      e.printStackTrace();
19  }
20   
21   

C:关闭端口

使用完的端口,必须记得将其关闭,否则其它的程序将无法使用该端口,CommPortIdentifier类只提供了开启端口的方法,而要关闭端口,则要调用CommPort类的close()方法。

serialPort.close()

(2)设置串口参数

try {
    try {
        serialPort.setSerialPortParams(9600, //  波特率
                                       SerialPort.DATABITS_8,//  数据位数
                                       SerialPort.STOPBITS_1, //  停止位
                                       SerialPort.PARITY_NONE);//  奇偶位
    } 
    catch (UnsupportedCommOperationException e)
     {
10          e.printStackTrace();
11      }
12   

(3)串口的读、写

A:向串口写数据

    OutputStream outputStream;
    try
    {
        outputStream = serialPort.getOutputStream();
    } 
    catch (IOException e)
     {
        e.printStackTrace();
    }
10      bt = new byte[] { (byte0x55, (byte0xAA, (byte0xF1 };
11      try
12      {
13          outputStream.write(bt);
14          outputStream.flush();
15          outputStream.close();
16      }
17      catch (IOException e)
18       {
19          e.printStackTrace();
20      }
21   

B:读取串口中的数据

读操作,需继承SerialPortEventListener接口。为SerialPort添加监听Listener。实现该接口的serialEvent (SerialPortEvent event)方法。

        public class SerialRead implements SerialPortEventListener{
       
            InputStream inputStream;
            byte[] rBuffer = new byte[38];
             SerialRead(SerialPort serialPort)
             {
                try {
                    serialPort.addEventListener((SerialPortEventListener) this);
                    this.serialPort.notifyOnDataAvailable(true);
10         
11                  } catch (TooManyListenersException e) {
12                  }
13             
14                  try {
15                      if (serialPort != null)
16                          inputStream = serialPort.getInputStream();
17                  } catch (IOException e) {
18                  }
19                  }
20               
21              public void serialEvent(SerialPortEvent event) 
22              {
23                  if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE)
24                  { 
25                      int count = 0;
26                      try 
27                      {
28                          while ((ch = inputStream.read()) != -1
29                          {       
30                              bt[count++]=(byte)ch;
31                          }
32                      }
33                      catch (IOException e) 
34                      {
35                          e.printStackTrace();
36                      }
37                  }   
38              }
39   

JAVA 串口编程(二)相关推荐

  1. java rxtx version_RXTX实现JAVA串口编程

    给大家分项下用RXTX库实现JAVA串口编程. 一 准备工作 1.1 下载资源文件 首先下载RXTX库对应的资源文件.下载地址 http://fizzed.com/oss/rxtx-for-java ...

  2. RXTX实现JAVA串口编程

    给大家分项下用RXTX库实现JAVA串口编程. 一 准备工作 1.1 下载资源文件 首先下载RXTX库对应的资源文件.下载地址 http://fizzed.com/oss/rxtx-for-java ...

  3. Linux 串口编程二 深入了解 termios

    前言 这一系列串口编程重点在应用层编程,但是在讲解原理与相关概念时需要对驱动框架有个基础的认识.如果只是浅尝辄止,以后在遇到串口驱动与应用层程序调试难免遇到瓶颈.关于 tty驱动架构参见我的其他博客: ...

  4. Java网络编程(二) 连续发送数据

    有了建立连接的基础后,接下来尝试连续地发送和接收数据. 对于发送端比较好理解,有数据时就可以发送出去.对于接收端,就需要一直监听是否有数据发送过来.一个基本的方法就是使用 while(true) 循环 ...

  5. java串口编程-读取称重仪表中净重

    一.需求说明 将仪表和计算机串口相连,计算机通过软件向仪表发送指令,然后仪表返回结果,在计算机软件界面上显示. 二.实现过程 1.查看仪表说明书 仪表型号为XK3190-A9,主要是查看相关参数(波特 ...

  6. Java 并发编程(二):如何保证共享变量的原子性?

    线程安全性是我们在进行 Java 并发编程的时候必须要先考虑清楚的一个问题.这个类在单线程环境下是没有问题的,那么我们就能确保它在多线程并发的情况下表现出正确的行为吗? 我这个人,在没有副业之前,一心 ...

  7. java数据库编程(二) 数据库操作

    关于数据库的连接方法已在java 数据库编程(一)JDBC连接Sql Server数据库一文中为大家介绍,还没有链接数据库的小伙伴请先点击查看. 今天首先为大家介绍一下数据库的连接及操作的核心类与接口 ...

  8. Java网络编程二:Socket详解

    Socket又称套接字,是连接运行在网络上两个程序间的双向通讯的端点. 一.使用Socket进行网络通信的过程 服务端:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端的连接 ...

  9. JAVA 串口编程 (三)

    四.实例分析 同API一起下载的还有一个examples文件,里面有个最简单的读.写程序,对其进行注释,以增进了理. (1)读串口 1  import java.io.*; 2  import jav ...

最新文章

  1. 用百度开放地图api在代码中获得两地距离
  2. React Native 和ionic2 你选择哪一个?
  3. Mircosoft 正式把Windows Mobile改名为Windows Phone,你会因此而购买Windows Phone吗?
  4. 前端学习(1897)vue之电商管理系统电商系统之实现搜索功能
  5. 高质量JAVA代码编写规范
  6. 数据解读京东上最受欢迎的面包
  7. 161011、oracle批量插入数据
  8. C#调用Microsoft.DirectX.DirectSound问题记录及解决
  9. 微信小程序做搜索(精细版)
  10. Element UI 官网以及其他技术文档
  11. php和jsp有什么区别,php和jsp之间的区别是什么
  12. 西安电子科技大学-数字电路与逻辑设计大作业-汽车尾灯显示控制电路
  13. 软考软件设计师下午题目java设计模式(自用)
  14. 改变世界的17个数学公式
  15. 谷歌浏览器好用的复制粘贴插件_关于谷歌浏览器(chrome)的一些好用的插件推荐...
  16. 平台注册加入微信验证码机制。
  17. 云计算导论课后习题第一章
  18. yolov5 人群计数及阀值报警
  19. 转载(https://blog.csdn.net/qq_36738482/article/details/72823509)大数据的概念
  20. 信息系统安全实验(七):使用Kerberos实现网络身份认证

热门文章

  1. H.264专利费不受FRAND限制 Android设备商受影响
  2. LiveVideoStack秋季招聘(编辑、会务运营、项目经理)
  3. 深入解读无服务器架构下的数据库
  4. 关于小程序·云开发峰会,你想get的干货全在这了!
  5. 腾讯再次开源三项技术,提升企业运维效率
  6. TSRC白帽子,10亿用户的守护者
  7. Nginx 内置变量,细化规则,真实IP获取及限制连接请求
  8. VT-x/AMD-V 硬件加速器已被启动,但当前处于无效状态
  9. Ubuntu 16.04 把Dock放到桌面底部
  10. goland设置Terminal