概述
一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如我们的环境在线监测系统下的各类监测仪器如流量计,PH计,电机状态检测仪器就需要定时的接受控制系统发送来的查询和控制信息,并将执行结果或查询结果发送回控制系统。
一.java的串口通讯扩展包javax.comm
Sun的J2SE中并没有直接提供任何一种串行通讯协议的开发包,而是以独立的jar包形式发布在java.sun.com网站上----即comm.jar,称之为Javatm Communications API,它是J2SE的标准扩展。comm.jar并不是最近才有,早在1998年时,sun就已经发布了这个开发包。comm.jar分别提供了对常用的RS232串行端口和IEEE1284并行端口通讯的支持。目前sun发布的comm.jar只有Windows和Solaris平台两个版本,如果需要Linux平台下的,可以在http://users.frii.com/jarvi/rxtx/index.html找到。
所有的comm API位于javax.comm包下面。其中比较重要的类和接口如下,
javax.comm.CommDriver
javax.comm.CommPort
javax.comm.ParallelPort
javax.comm.SerialPort
javax.comm.CommPortIdentifier
javax.comm.CommPortOwnershipListener
javax.comm.ParallelPortEvent
javax.comm.SerialPortEvent
javax.comm.ParallelPortEventListener (extends java.util.EventListener)
javax.comm.SerialPortEventListener (extends java.util.EventListener)
javax.comm.NoSuchPortException
javax.comm.PortInUseException
javax.comm.UnsupportedCommOperationException
通讯方式,CommPort的输入流的读取方式与文件的输入流有些不一样,那就是可能永远不知这个InputStream何时结束,除非对方的OutputStream发送了一个特定数据表示发送结束,收到这个特定字符后,再行关闭InputStream。而comm.jar提供了两种灵活的方式让我们读取数据:
1.轮询方式(Polling)
2.监听方式(listening)。Comm API支持标准的Java Bean型的事件模型。也就是说,可以使用类似AddXXXListener这样的方法为一个串口注册自己的监听器,以监听方式进行数据读取。
二.RXTX项目
RXTX是一个提供串口和并口通信的开源java类库,由该项目发布的文件均遵循LGPL协议。该项目的主页位于http://users.frii.com/jarvi/rxtx/index.html。
RXTX项目提供了Windows,Linux,Mac os X,Solaris操作系统下的兼容javax.comm串口通讯包API的实现,为其他开发人员在此类系统下开发串口应用提供了相当的方便。
针对x86体系结构的Linux操作系统平台,RXTX的部署包括下面几个文件:
* RXTXcomm.jar RXTX自己的javax.comm实现
* librxtxSeri