VX300 协议解析

包结构索引

 

1.包头

   字节1

  包头字节始终为255。标头字节仅表示新数据包的开始。

2.长度

   字节2

  通常的做法是发送一个字节告知数据包长度,以便接收代码知道数据包中预期有多少个字节。 在我们的情况下,数据包始终为13个字节长,因此该字节始终为13个字节。

3.指令类型

  字节3
  指令类型字节是您要发送到固件的命令的主要标识符。 请参阅“命令索引”部分以查看指令类型的列表。
  了解命令的三种类型
  您会注意到每个命令最多可以有3个版本。 例如,命令40可以作为40、41或42发送。

  将其视为在单个字节中发送两条信息可能是最简单的。
  命令IE:0/10/20/40/50/80
  带有命令IE的R / W请求:0/1/2
  每个命令具有三种不同类型的读/写0 =写无回波包1 =用回波包写2 =已读
  例如,如果您要调用命令40,则它可能是以下版本之一:40 =写无回波包41 =使用回波包写42 =已读

  回音包
  当请求回送数据包时,固件将执行写命令,然后返回串行数据包。串行数据包将与接收到的数据包相同,因此称为名称。回声包。

  使用回音包的原因主要有两个:确认已接收并写入数据在代码中充当时序控件。通常,在第一个命令完成之前,您不希望下一部分代码执行。因此,在继续进行下一部分代码之前,您需要等待回显被返回。

  请注意,并非每个命令都具有所有三个R / W选项。某些命令仅允许读取,而某些命令则没有0或无回声的选项。

4.指令子类型

   字节4

  指令子类型字节用于命令子类型。例如,对于用于设置模型变量的指令类型40,有以下子类型指令:

实例类型40子类型示例
1 设置机器人模型
10 读/写一个模型变量 
20 配置一个模型关节 
21  读/写一个关节的最大值/最小值
22  读/写一个抓手的最大值/最小值 

 

5.指令细节1/2/3/4

   字节5 /字节6 /字节7 /字节8

  这些字节用于发送命令所需的详细信息。 它们可能是寄存器地址,伺服ID,联合ID或其他信息。

6.数据字节1/2/3/4

   字节9 /字节10 /字节11 /字节12

  数据字节用于发送有符号整数。 由于一个字节只能保存0〜255个有符号整数之间的值,因此分成4个字节。

7.校验和

  字节13

  校验和用于检查串行数据包是否已成功完整发送,以及所有数据是否正确。

  请注意:包头不包含在校验和中校验和的
  计算公式如下:

  校验和=(长度+指令类型+指令使用+指令详细信息1 +指令详细信息2 +指令详细信息3 +指令详细信息4 +数据字节1 +数据字节2 +数据字节3 +数据字节4)%256

 

示例

读写所有舵机寄存器

Header Length  Instruction Type  Value Range Servo Count Register Address Low Byte Register Address High Byte  Value Range
255 13 30          

 

Data Integer(1)   Data Integer(2) Data Integer(3)   Data Integer(4) CheckSum
         

 读取关节的2D点/重心

Header Length  Instruction Type  Value Range Servo Count Register Address Low Byte Register Address High Byte  Value Range
255 13 82  40        

 

Data Integer(1)   Data Integer(2) Data Integer(3)   Data Integer(4) CheckSum
 X position low byte  X position high byte  Y position low byte  Y position high byte  

posted @ 2020-03-15 11:10  kay880  阅读(308)  评论(0编辑  收藏  举报