TCP格式(括号内数值是字节数)
7E * * EF messagetype(1) messagectrl(4) [timemark(6)] blockcount(1) mark1len(1),mark1[],testspeed1(4),data1len(2),data1[],mark2len(1),mark2[],testspeed2(4), data2len(2),data2[] CRC
解析如下
7E * * EF 0xEF是转发包的标识
messagetype(1) 1字节, 转发方式ID, 默认0为最常用的格式
messagectrl(4) 4字节, 转发控制字包含的转发内容包含哪些项 默认1表示包含时间戳
#define TimeMark 1
#define WorkPlace 2
比如messagectrl=1 表示其中包含时间戳 timemark 时间戳,固定为6位.
比如messagectrl=3 表示其中包含时间戳+工地信息(另有结构定义)
[timemark(6)] 6字节,时间戳, 这是可选项,根据messageCtrl来确定是不是有这项目
blockcount(1) 1字节, 数据块数,一个块通常对应一个通道.最多对应256个通道
mark1len(1), 1字节, 数据块标识的长度, 通常是该通道描述信息的长度
mark1[], n字节, 这里的长度取决于mark1len的长度
testspeed1(4), 4字节 该通道的采集频率
data1len(2), 2字节,数据的字节数,
data1[], n字节, 数据内容,长度是data1len中值,每个数据为浮点数,实际个数=data1len/4
mark2len(1), 1字节, 数据块标识的长度, 通常是该通道描述信息的长度
mark2[], n字节, 这里的长度取决于mark2len的长度
testspeed2(4), 4字节 该通道的采集频率
data2len(2), 2字节,数据的字节数,
data2[], n字节, 数据内容,长度是data2len中值,每个数据为浮点数,实际个数=data2len/4
......
CRC
客户给的格式 .这个怎么接收呢?
你这个要分多次读取,用字节数组接收,根据客户文档按字节转换为对应的值。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632