mBlock固件协议说明

2015-9-28 09:56:24
50767

协议通信的单位是“帧”(frame)


  • 请求帧由以下几个部分组成:head,  length, index, action, module, data

  head: 帧首,2个字节,值为0xFF 0x55。

  length: 表征接下来的data的长度。1个字节。 

  index: 请求编号。1个字节。 

       action: 指令类型,1表示请求传感器数据 2表示执行器指令

  module: 表征该帧是属于哪一种模块的,如“编码电机驱动模块”(0x01),“步进电机驱动模块”(0x02)。一个字节。

  data: 所要发送的数据,这里可以是任意数据,也可以根据需要进一步封装数据包。


  • 返回帧由以下几个部分组成:head, index, type, data

  head: 帧首,2个字节,值为0xFF 0x55。

       index: 请求编号。1个字节。 

       type: 数据类型。1个字节。1 - byte 、2 - float、3 - short、 4 - len+string
       data: 数据,长度由数据类型决定

  • 示例

       控制直流电机:
              M1口的直流电机全速正转:0xFF 0X55 0x07 0x0 0x2 0x0A 0x09 short2bytes(255)
              M2口的直流电机全速反转:0xFF 0X55 0x07 0x0 0x2 0x0A 0x0A short2bytes(-255)      
              自行实现short2bytes函数用于将short型转为字节数组

       获取超声波传感器数据:
              请求Port3超声波传感器的数据:0xFF 0X55 0x04 index 0x1 0x01 0x03
              返回数据:0xFF 0X55 index 0x2 byte byte byte byte (自行实现4个字节转为浮点值)     

  • 资源

       固件源代码:https://github.com/Makeblock-official/Makeblock-Firmware/blob/master/mbot_firmware/mbot_firmware.ino






1人收藏
7 条回帖
deadbot注册会员2017-3-1 15:59:24
这个很重要啊,应该置顶。要开发扩展的话,必须看。

M1口的直流电机全速正转:0xFF 0X55 0x07 0x0 0x2 0x0A 0x09 short2bytes(255)
M2口的直流电机全速反转:0xFF 0X55 0x07 0x0 0x2 0x0A 0x0A short2bytes(-255)   


这两个例子,前面三个字节应该是 0xFF 0x55 0x06吧?因为后面的数据是6个字节,所以第3个字节应该是0x06。
xblock新手会员2017-3-2 08:08:41
谢谢虎子哥,正好需要这个资料
xblock新手会员2017-3-2 08:10:13
不知道虎子哥有没有arduino固件的协议说明
需要登陆后才可进行回复 登录

返回顶部
现在加入我们,注册一个账号 账号登陆 QQ账号登陆 微博账号登陆