41 lines
2.8 KiB
Markdown
41 lines
2.8 KiB
Markdown
# 下位机和上位机通信协议 V1.2
|
||
|
||
| 起始 | 长度高 | 长度低 | 类型高 | 类型低 | 数据字节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'在后
|
||
- 设置相机触发到阀板动作的延迟脉冲数sb,**长度**10,数据为十进制字符串,'0''0''0''0''0''0''5''0'表示值50,'5'在前,'0'在后
|
||
- 数据命令da, **长度**为视需求而定,数据要有(**长度**-2)个字节
|
||
- 数据命令db, **长度**为视需求而定,数据要有(**长度**-2)个字节
|
||
|
||
- 数据
|
||
|
||
数据就是阀数据,其实这是一个命令,也就是数据命令'da''db',分到数据这一节写是因为它的参数格式和其他命令不同,下表为字节排序,接收时从右往左,也就是数据字节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)个字节的数据。 |