java 串口通信总结之打包发送

来源:互联网 发布:软件 qa qc 编辑:程序博客网 时间:2024/05/22 15:50

新学期开始,老师出个题,让我写个串口通信程序,因为我学的是java,所以就采用java语言。在百度上搜索了一番,找到了一些资料,然后就在别人的demo上面做修改。

<hr>

由于我的机器是win7  64位系统,而sun公司的javax.comm包没有支持64位的,而且sun公司已经停止了对其更新,所以我采用rxtx开源包

Rxtx是个提供串口和并口通信的开源java类, 

RXTX的旧版本支持在javax.comm-win32-2.0基础上的扩展,RXTX新版本支持对javax.comm的覆盖式支持,原来用javax.comm的把所有import javax.comm.*改成import gnu.io.*即可。

通过CommPort类的getInputStream()和getOutputStream()方法分别获得端口的输入流和输出流

串口通信应用程序有两种模式:一种是实现SerialPortEventListener接口,通过监听串口事件并作相应处理
另一种就是建立一个独立的接收线程负责数据的接收。

最基本的串口通信很快通过网上的程序实现了简单的一发一收效果,接着就是完成老师提供的文档协议的通信要求。

首先是将待发送的数据封装成帧,帧的格式如图:


校验单元 ,针对帧体中的“帧体长度”和“数据净荷”内容进行校验(从“帧体”的第一个字节计算到数据净荷的最后一个字节)

接下来进行转义,转义需求如下:

当数据中出现0X7E时,将0X7E用两个字符0X7D、0X5E代替;当数据中出现0X7D时,将0X7D用两个字符0X7D、0X5D代替

到此,一帧待发送的完整的数据就已经封装好了,后面我会再讲到如何针对封装好的数据进行解析还原。

0 0
原创粉丝点击