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

本文介绍了使用Java的RXTX库在Win7 64位系统上进行串口通信的方法,包括数据帧的封装,涉及帧格式、校验和转义规则。通过实现SerialPortEventListener接口或建立接收线程来处理串口事件。

新学期开始,老师出个题,让我写个串口通信程序,因为我学的是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代替

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值