2.6 KiB
2.6 KiB
下位机和上位机通信协议 V1.3
| 起始 | 长度高 | 长度低 | 类型高 | 类型低 | 数据字节1 | ... | 数据字节n | 校验低 | 校验高 | 结束 |
|---|---|---|---|---|---|---|---|---|---|---|
| 0xAA | 0x00 | 0x0A | 's' | 't' | 0xFF | 0xFF | 0xBB |
长度=数据字节数+2,组成一个无符号16位数,校验字节随意给值即可
类型
-
命令
- 开始命令 st,长度3,数据0xFF
- 停止命令sp,长度3,数据0xFF
- 测试命令te,长度10,数据为十进制字符串,'0''0''0''0''0''0''5''0'表示值50,'5'在前,'0'在后
- 停止测试tt,长度3,数据0xFF
- poweron命令po,长度3,数据0xFF
- 设置相机触发周期对应的脉冲数sc,长度10,数据为十进制字符串,'0''0''0''0''0''0''5''0'表示值50,'5'在前,'0'在后
- 设置阀板动作对应的脉冲数sv,长度10,数据为十进制字符串,'0''0''0''0''0''0''5''0'表示值50,'5'在前,'0'在后
- 设置相机触发到阀板动作的延迟脉冲数sa,长度10,数据为十进制字符串,'0''0''0''0''0''0''5''0'表示值50,'5'在前,'0'在后
- 数据命令da, 长度为视需求而定,数据要有(长度-2)个字节
-
数据
数据就是阀数据,其实这是一个命令,也就是数据命令'da',分到数据这一节写是因为它的参数格式和其他命令不同,下表为字节排序,接收时从右往左,也就是数据字节1先接收到,然后是数据字节2,最后是数据字节(m-1)。
阀1代表面向各块阀板,最靠近右边的阀,所以最左边的为阀n
| 数据字节(m-1) | 数据字节(m-2) | ... | 数据字节2 | 数据字节1 | 数据字节0 |
|---|---|---|---|---|---|
| 阀n~(n-7) | 阀(n-8)~(n-15) | ... | 阀24-17 | 阀16-9 | 阀8-1 |
对于各个字节,其中的位是这么对应的,以数据字节2为例
| 位7 | 位6 | 位5 | 位4 | 位3 | 位2 | 位1 | 位0 |
|---|---|---|---|---|---|---|---|
| 阀8 | 阀7 | 阀6 | 阀5 | 阀4 | 阀3 | 阀2 | 阀1 |
需要注意的是,这里的数据不是ascii编码的,是直接的数据字节。上面描述字节排序的表为hostcomputer图像中的一行对应的阀动作,一共若干行,发送完一行后接着发送下一行,直到最后一行。因此一共有(行数*m)个字节的数据。