读书人

java串口编程-读取称重仪器中净重

发布时间: 2012-07-15 20:20:06 作者: rapoo

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

一、需求说明

??????? 将仪表和计算机串口相连,计算机通过软件向仪表发送指令,然后仪表返回结果,在计算机软件界面上显示。

?

二、实现过程

1、查看仪表说明书

??????? 仪表型号为XK3190-A9,主要是查看相关参数(波特率、数据位、停止位、奇偶校验),通讯方式及指令规则。

?

2、使用串口通讯工具、串口监听工具进行调试

??????? 网上可以下到很多相关软件,主要是方便测试。串口通讯工具、串口监听工具(AccessPort)

?

3、将仪表“通讯方式”改成“指令模式”

??????? 根据说明书,在仪表上输入:打印设置--->98--->输入--->....

?

4、java编码(重点)

(1)使用comm在java程序中管理本地端口,目前,常见的Java串口包有SUN在1998年发布的串口通信API:comm2.0.jar(Windows下)、comm3.0.jar(Linux/Solaris);IBM的串口通信API以及一个开源的实现。鉴于在Windows下SUN的API比较常用以及IBM的实现和SUN的在API层面都是一样的,那个开源的实现又不像两家大厂的产品那样让人放心,这里就只介绍SUN的串口通信API在Windows平台下的使用。

(2)附件中“javacomm20-win32.zip”


java串口编程-读取称重仪器中净重
?

(3)解压该压缩包,从commapi\Readme.html开始读起

(4)Copy win32com.dll to your <JDK>\bin directory.
(5)Copy comm.jar、javax.comm.properties to your <APP>\lib directory.

(6)研究java.comm包中的相关类及功能


java串口编程-读取称重仪器中净重
----javax.comm.CommPortIdentifier 这个类主要用于对串口进行管理和设置,是对串口进行访问控制的核心类。

?

----javax.comm.SerialPort 这个类用于描述一个RS-232串行通信端口的底层接口,它定义了串口通信所需的最小功能集。通过它,用户可以直接对串口进行读、写及设置工作。?

?

?

(7)开始编写自己的代码

?

##### 串口参数配置(配置到spring容器里) #####

?

##### 调用函数,取得净重值 #####

129     [00000000]  IRP_MJ_CREATE                   Port Opened - javaw.exe130     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 4800131     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8132     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 9600133     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8134     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 9600135     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8136     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 4800137     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8138     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 4800139     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8140     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 4800141     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8142     [00000000]  IRP_MJ_WRITE                    Length: 0006, Data: 02 41 44 30 35 03 143     [00000013]  IRP_MJ_READ                     Length: 0014, Data: 02 41 44 2B 30 30 30 35 36 36 31 31 41 03 144     [00001356]  IRP_MJ_CLOSE                    Port Closed145     [00000000]  IRP_MJ_CREATE                   Port Opened - javaw.exe146     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 4800147     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8148     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 9600149     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8150     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 9600151     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8152     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 4800153     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8154     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 4800155     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8156     [00000000]  IOCTL_SERIAL_SET_BAUD_RATE      Baud Rate: 4800157     [00000000]  IOCTL_SERIAL_SET_LINE_CONTROL   StopBits: 1, Parity: No, DataBits: 8158     [00000000]  IRP_MJ_WRITE                    Length: 0006, Data: 02 41 44 30 35 03 159     [00000013]  IRP_MJ_READ                     Length: 0014, Data: 02 41 44 2B 30 30 30 36 39 36 31 31 36 03 160     [00000349]  IRP_MJ_CLOSE                    Port Closed

?

Length:0006,????? Data:02 41 44 30 35 03??? 为发送的十六进制指令

Length:0014,????? Data:02 41 44 2B 30 30 30 36 39 36 31 31 36 03?为返回的十六进制内容

?

三、总结:调试过程中,串口监听工具起着很重要的作用。

读书人网 >编程

热点推荐