JSON 协议
数据包格式
本协议所规定的所有数据包均采用标准 TLV(Type, Length, Value)格式,包含固定起始包头和 CRC 校验。
| 项目 | 长度 (Byte) | 说明 |
|---|---|---|
| SyncByte | 2 | 固定包头 0x4E66 |
| Length | 2 | 十六进制长度 0~2000;不包含数据头、命令字和 CRC 段 |
| Command | 2 | 命令字 |
| data | Length | 数据段(主要为 JSON 格式) |
| CRC | 4 | 对不含包头的所有数据做 CRC32 校验 |
data 数据段主要为 JSON 数据格式。
示例
设置机器人 1 伺服状态为 0,发送以下数据(十六进制):
text
4e 66 00 17 20 01 7b 22 72 6f 62 6f 74 22 3a 31 2c 22 73 74 61 74 75 73 22 3a 30 7d 0a 6b 92 6d ff数据段拆解说明:
| 字段 | 内容 |
|---|---|
4e 66 | 固定包头 |
00 17 | 数据段长度(23 字节) |
20 01 | 命令字 |
7b...7d 0a | 数据段,对应 ASCII 字符串 {"robot":1,"status":0}\n(0x0a 为换行符,可加可不加) |
6b 92 6d ff | CRC32 校验码 |
数据段 ASCII 码对照:
text
7b --> {
22 --> "
72 --> r
6f --> o
62 --> b
6f --> o
74 --> t
22 --> "
3a --> :
31 --> 1
2c --> ,
22 --> "
73 --> s
74 --> t
61 --> a
74 --> t
75 --> u
73 --> s
22 --> "
3a --> :
30 --> 0
7d --> }
0a --> 换行符(可选)如果不加最后的 0x0a 换行符,则发送的数据为:
text
4e 66 00 16 20 01 7b 22 72 6f 62 6f 74 22 3a 31 2c 22 73 74 61 74 75 73 22 3a 30 7d 53 dd eb 72控制器端口
| 端口 | 协议 | 用途 |
|---|---|---|
| 5000 | TCP | 文件传输(导入/导出作业文件、配置文件,升级软件) |
| 6000 | TCP | JSON 文本命令通信,一般用于示教器 |
| 6001 | TCP | JSON 文本命令通信,一般用于上位机 |
| 7000 | TCP/UDP | 上位机服务功能端口 |
5000/6000/6001 端口建立连接后需维持心跳机制以确保通讯正常。
心跳检查机制
5000/6000 通讯端口建立之后,需设计心跳模式以确保通讯状态正常。
流程:
- 示教器定期向控制器发送心跳检查包
- 控制器收到心跳包后,回复心跳回应包,包数据为检查包所携带的时间戳
- 示教盒收到回应包后检查数据是否正确
- 数据不正确或超时未收到回应,则认为连接可能中断
心跳超时时间:6 秒