下面这道题是关于串口通讯的协议定义,小弟不解,请求大神讲解,越细越好。
包头: 告诉接收方一个完整的数据帧的开始 数据长度 应该是16进制的表示方式数据内容 发送的信息校验和保证数据的完整性 很多种验证方式连接方式 就用串口的235口 交叉线 全双工 可同时收发发送先根据一条数据的长度 以及附加数据位算出总的byte长度假定数据内容是100个byte那么 一共就是 1 + 2 + 100 + 1 = 104byte_all_lenght 那么接收方收到信息以后 首先把最后一个字节的数值取出来 然后根据校验和的校验算法将除了最后一个byte的数据再算一次校验和 得到的结果与最后一个字节比较 如果一样 说明数据完整可靠 然后在把前3个byte去掉 剩下的就是你得到的数据
用 RS232 通信就可以了 包头 就是定位数据包 校验和用来确保数据传输的正确
通讯协议。 也就是收发问题,例如两个设备,在同一时间只能接受或者发送,这叫做半双工。两个设备,在同一时间能接受还能发送,这叫做半双工。 你给的图片只是通讯协议的格式。包头就是 一个包的开始0x55 打头。数据长度,就是这个包有几个字节。数据内容就是 包里面所发送的数据。校验和,就是包头+数据长度+数据内容例如两个设备一个发送 0x55 (包头)06(数据长度 6个字节)0x000x01 0x020x03 0x04 0x05 (数据内容)0x5f(校验和)另一个接受, 收到 0x55 (包头)06(数据长度 6个字节)0x000x01 0x020x03 0x04 0x05 (数据内容)0x5f(校验和)这串数据后 根据你的需求可以返回,或者不返回数据,一般都返回。 你给的分太少了,,就到这吧,,

串口通信如何使用MODBUS协议?举个C语言的例子。
Modbus两种协议的编程方法: 1、LRC校验LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。LRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。下面是它对应的代码:BYTE GetCheckCode(const char * pSendBuf, int nEnd)//获得校验码{BYTE byLrc = 0;char pBuf[4];int nData = 0;for(i=1; i