0x80作为分隔符的问题(50)

  • 主题发起人 silaszhe
  • 开始时间
S

silaszhe

Unregistered / Unconfirmed
GUEST, unregistred user!
要写一个对串口RS232的模块进行操作的程序。发送命令之后,得到的返回值为:7b 7b 44 bb 数据帧 7b 7d7b 7b为帧头 44 bb为命令字 7b 7d为帧尾档中有个注释:“为了避免数据帧中有7b7b的情况,发送数据前,要对数据进行检测,如果有就在7b的后面加0x80,也就是说每个7b后面都有一个0x80,接收数据是如果遇到后面有0x80的7b我们就认为是数据,如果7b后面跟的是7b或是7d就认为是结束标志或是开始标志。”我想问问0x80这个在传回的数据里怎么表示,用pos()函数我查什么?各位有遇到过相似问题并解决的么?
 
S

stlont

Unregistered / Unconfirmed
GUEST, unregistred user!
0x80 就是 16进制的 80,十进制 是 128,正如 7b 可以写成 0x7b,数据7b 预先处理成 7b 80接收后扫描7b 80 ,如果有则转为7b那个注释写的有点问题,因为7b可以确定是16进制表示,而80不能确定是16进制还是10进制,所以特地加了0x指示是16进制,但这也会引起读者混乱,不如将7b 也写成 0x7b, 这样就统一了或是在开始指明所有数据都是16进制
 
S

silaszhe

Unregistered / Unconfirmed
GUEST, unregistred user!
唉~说的是啊。0x80可不就是十六进制么,这我倒是知道。当天下午我就去现场了,结果发现命令和数据都是16进制的,你说这厂家多该死。分就给你吧,挺冷清的。
 
顶部