精通硬件和PC通讯协议,帮忙给看看协议!!
PC通讯协议
一、机器空闲:
1) 控制器发给PC数据 (共6个16进制数):
7E + 'K ' + 实际值低位 + 实际值高位 + 校验和低位 + 校验和高位
2) PC机应答给控制器数据 (共6个16进制):
A : 用户没有发指令:
7E + 'S ' + 目标值低位 + 目标值高位 + 校验和低位 + 校验和高位
B : 当用户按《SEND》发指令:
7E + 'S ' + 目标值低位 + 目标值高位 + 校验和低位 + 校验和高位
二、机器运行中:
1) 控制器发给PC数据 (共6个16进制数):
7E + 'M ' + 目标值低位 + 目标值高位 + 校验和低位 + 校验和高位
2) PC机应答给控制器数据 (共6个16进制):
A : 实际值已经达到目标值时:
7E + 'K ' + 目标值低位 + 目标值高位 + 校验和低位 + 校验和高位
B : 实际值没有达到目标值时:
7E + 'S ' + 目标值低位 + 目标值高位 + 校验和低位 + 校验和高位
校验和方法:数据的前4位做CRC检验.
以上就是硬件(是种控制器,步进机)厂家给我们发的协议
希望大侠们帮解释一下!
感谢!
[解决办法]
这个很简单啊,
7E相当于是数据开始标志
'K '是数据类型标志
接下来的2个字节就是数据了,收到后拼接起来就是
最后2个字节就是校验,校验正确才认为接收到的数据是正确的,否则接收到的数据无效
[解决办法]
用串口传输还是并口?
以第一种情况,简单解释
1) 控制器发给PC数据 (共6个16进制数):
7E + 'K ' + 实际值低位 + 实际值高位 + 校验和低位 + 校验和高位
7E为数据头,K字符代表传输类型
在PC机上收到的数可能为7E 75 XX XX YY YY,总数应该是6个字节,中间的XX XX就是数据,需要你进行重组,高低位互换,后面的YY YY就是校验和,是将其前面的4个字节做的4位CRC校验和。
如mochen5460(mochen)所说,在收到数据之后,读取前4个字节,然后做校验,和收到的校验和部分作比较,相同则说明数据接收正确,否则数据错误,选择丢弃,然后可以让发送方重发或者不管继续接收后续数据