控制协议
我们将各控制设备与小龟小车之间交互的控制指令称为控制协议,小车支持两类控制协议,Python控制协议和JSON控制协议。任何外部设备可以基于自身的通讯能力来实现控制协议的收发,诸如HTTP通讯、蓝牙通讯、串口通讯、云推送通讯等等。
Python控制协议
该控制协议将标准Python3.4语法做为协议规范,外部设备仅需以Python语法规范提交控制数据即可。
Python控制协议支持流式通讯协议,因此也采用流式协议具备的数据帧的方式进行请求应答,规范如下:
帧头帧尾:都使用字符 "\x00"做为标识符。如果是两个连帧,可以省略共用一位"\x00"字符做为前帧的结束符和后帧的起始符。
帧编号:在Python代码的第一行,按以下格式书写,以“###”打头
###999283<回车>
协议会自动把本行###之后,回车换行之前的999283视为帧编号
答复帧也会带上本编号。
###00001
car.go()
JSON控制协议
该控制协议以JSON4规范进行控制数据的交互,外部设备也仅需以JSON4语法规范提交控制数据即可。
JSON控制协议同样支持流式通讯协议,因此也采用流式协议具备的数据帧方式进行请求应答,规范如下:
帧头帧尾:都使用字符 "\x00"做为标识符。如果是两个连帧,可以省略共用一位"\x00"字符做为前帧的结束符和后帧的起始符。
帧编号:在请求的JSON内,加入stamp字段,会自动被视为帧编号,答复帧也会带上相同的帧编号。
本文的JSON协议请求部分,都采用无引号的JSON5简写方式,但实际上是标准的JSON4,编写的时候,请注意这一转换。
稍晚些,新的固件将会支持JSON5规范。
p=/hw/i2c/scan&v={param:1}
本字符串头尾都有"\x00",p=接口API&v=JSON参数
关于支持JSON5:小龟的团队正在加紧开发支持JSON5标准。
接口分类
我们将小车所有的API按功能分成以下几大部分:
- 系统接口:与小车系统相关的所有接口,代号system(sys)。
- 硬件接口:与小车硬件相关的所有接口,代号hardware(hw)。
- 运动接口:与小车运动相关的所有接口,代号driver(drv)。
- 用户接口:与个人数据相关的所有接口,代号my。
- 云端接口:与云服务器相关的所有接口,代号cloud。
- 智能接口:AI方面的所有接口,代号ai。