通过USB(虚拟UART)的协议
本章的整洁、易读HTML版本。
本页是《接口与协议》中“通过USB(虚拟UART)的协议”一章的HTML版本。如有不清楚之处,请打开 本章的原始PDF(第56-85页)(中文) (左上角也有固定链接)。总览: 全部章节.
用于数据流输出的“Marvelmind”协议
所有在 相应章节 (UART部分)中描述的数据包,也均可通过USB(虚拟UART)获取。
注意:这些数据同样适用于Mini-TX,以及未配“UART Cable for Mini-Rx”的Mini-RX。
Marvelmind设备收到任何请求时,数据流将中断5秒。相关请求见 该协议.
用户设备数据读写协议
所有在 相应章节 (UART部分)中描述的数据包,也均可通过USB(虚拟UART)获取。
注意:这些数据同样适用于Mini-TX,以及未配“UART Cable for Mini-Rx”的Mini-RX。
NMEA0183通信协议
所有在 相应章节 (UART部分)中描述的数据包,也均可通过USB(虚拟UART)获取。
注意:这些数据同样适用于Mini-TX,以及未配“UART Cable for Mini-Rx”的Mini-RX。
Marvelmind设备收到任何请求时,数据流将中断5秒。相关请求见 该协议.
通过USB接口与调制解调器交换数据的协议
Dashboard软件以及下一章介绍的Marvelmind API均使用此协议。
调制解调器作为CDC类USB设备连接到USB主机(Windows下为虚拟COM端口,Linux下为ttyUSB或ttyACM)。
由于该接口并未使用真正的RS-232,主机上设置的串口参数(波特率、数据位数、校验等)可任意设置
数据为二进制格式
通过USB连接的设备的“网络地址”为 0xff
多字节数从低字节开始传输(小端格式)
读取最新坐标包(固件V5.13+)
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x4110 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 2 | uint16_t | CRC-16(见附录1) | 0xc004 |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 1 | uint8_t | 传输的数据字节数 | 0x64 |
3 | 100 (0x64) | 100字节 | 数据结构(见下文) | |
103 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
数据字段格式(100字节)
偏移量 | 大小(字节) | 说明 |
0 | 96 (6*16) | 调制解调器最近收到的6个坐标结构(见下文) |
96 | 1 | 标志字节: 位0…1:保留 位2:1 = 有用户数据(见第12节) 位3…7:保留 |
97 | 3 | 保留 |
坐标结构格式(16字节)
偏移量 | 大小(字节) | 说明 |
0 | 1 | 设备地址 |
1 | 4 | X坐标,毫米(int32_t) |
5 | 4 | Y坐标,毫米(int32_t) |
9 | 4 | Z坐标,毫米(int32_t) |
13 | 1 | 标志字节: 位0:1 – 无有效坐标(Dashboard中显示为红色模式) 位1:1 – 冻结地图上的临时移动信标(蓝色模式) 位2:1 – 该信标用于移动信标定位 |
14 | 2 | 保留(0) |
读取/写入调制解调器配置 - 读取调制解调器配置(固件V5.30+)
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x5000 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 2 | uint16_t | CRC-16(见附录1) | 0x0550 |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 1 | uint8_t | 传输的数据字节数 | 0x30 |
3 | 0x30 | 结构 | 数据结构(见下文) | |
0x33 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
写入调制解调器配置
警告!写入调制解调器配置时,必须先读取配置,设置下一节所述的数据字段,然后再写入。不要更改结构中的其他任何字节,否则可能影响调制解调器的工作
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x5000 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 1 | uint8_t | 传输的数据字节数 | 0x30 |
7 | 0x30 | 结构 | 数据结构(见下文) | |
0x37 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据代码 | 0x5000 |
4 | 2 | uint16_t | 保留 | |
6 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
调制解调器配置数据结构
数据结构中的许多字段未作说明。请勿更改这些字段!它们用于通过Dashboard程序调整系统;擅自更改可能影响调制解调器的工作
偏移量 | 大小(字节) | 类型 | 说明 |
0 | 20 | 20字节 | 未说明 |
20 | 1 | int8_t | 空气温度设置值Vt(有符号)。 温度 =(Vt+23)°C |
21 | 1 | uint8_t | 在地图中坐标应为X=0, Y=0的信标地址 |
22 | 4 | 4字节 | 未说明 |
26 | 1 | uint8_t | 在地图中坐标应为X>0, Y=0的信标地址 |
27 | 1 | uint8_t | 在地图中坐标应满足Y>0的信标地址 |
28 | 1 | uint8_t | 控制标志: 位0:未说明 位1:1 – 启用移动信标运动滤波 位2:未说明 位3:1 – 高分辨率模式(以毫米而非厘米输出坐标) 位4:未说明 位5:1 = 镜像整个地图 位6:1 = 省电模式(仅当所有子地图都已冻结时省电模式才生效) 位7:未说明 |
29 | 2 | 2字节 | 未说明 |
31 | 1 | uint8_t | N,决定获取移动信标坐标的最大频率 F(N)= 2^(N-1) Hz,N= 0…4, F(5)= 12 Hz,F(6)= 16 Hz,F(7)= 16+(最大) |
32 | 16 | 16字节 | 未说明 |
读取/写入子地图配置
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
读取子地图配置(固件V5.30+)
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x60XX,其中XX为子地图编号 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 1 | uint8_t | 传输的数据字节数 | 0x50 (80) |
3 | 80 | 结构 | 数据结构(见下文) | |
83 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
写入子地图配置(固件V5.30+)
警告!写入子地图配置时,必须先读取配置,设置下一节所述的数据字段,然后再写入。不要更改结构中的其他任何字节,否则可能影响调制解调器的工作
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x60XX,其中XX为子地图编号 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 1 | uint8_t | 传输的数据字节数 | 0x50 (80) |
7 | 80 | 结构 | 数据结构(见下文) | |
87 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据代码 | 0x5000 |
4 | 2 | uint16_t | 保留 | |
6 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
子地图配置数据结构
数据结构中的许多字段未作说明。请勿更改这些字段!它们用于通过Dashboard程序调整系统;擅自更改可能影响调制解调器的工作
偏移量 | 大小(字节) | 类型 | 说明 |
0 | 1 | uint8_t | 构建子地图的起始信标地址 |
1 | 1 | uint8_t | 控制字: 位0:1 – 子地图已冻结(冻结子地图) 位1:1 – 固定信标高于移动信标 位2…4:未说明 位5:1 – 镜像子地图 位6…7:未说明 |
2 | 1 | uint8_t | 距离限制: 位0…6:手动距离限制值(当位7 = 1时) 位7:0 – 自动限制,1 = 手动 |
3 | 13 | 13字节 | 未说明 |
16 | 2 | int16_t | 子地图X方向偏移,厘米 |
18 | 2 | int16_t | 子地图Y方向偏移,厘米 |
20 | 2 | uint16_t | 子地图旋转角度,单位0.01度 |
22 | 58 | 58字节 | 未说明 |
设备休眠/唤醒
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 设备地址 | 0x01…0xfe |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0xb006 |
4 | 2 | uint16_t | 访问模式 | 唤醒:0x0002 其他:0x0001 |
6 | 1 | uint8_t | 传输的数据字节数 | 0x08 |
7 | 1 | uint8_t | 密码,字节0 | 0x2d |
8 | 1 | uint8_t | 密码,字节1 | 0x94 |
9 | 1 | uint8_t | 密码,字节2 | 0x5e |
10 | 1 | uint8_t | 密码,字节3 | 0x81 |
11 | 1 | uint8_t | 命令: 0 – 标准休眠 1 – 深度休眠(仅硬件复位可唤醒) 2 – 从标准休眠中唤醒 3…255 – 保留 | 0…2 |
12 | 3 | 3字节 | 保留 | |
15 | 2 | uint16_t | CRC-16(见附录1) |
唤醒命令的应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 设备地址 | 0x01…0xfe |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据代码 | 0xb006 |
4 | 2 | uint16_t | 保留 | |
6 | 2 | uint16_t | CRC-16(见附录) |
休眠命令的应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 设备地址 | 0x01…0xfe |
1 | 1 | uint8_t | 数据包类型(调制解调器应答) | 0x7f |
2 | 2 | uint16_t | 数据代码 | 0xb006 |
4 | 2 | uint16_t | 保留 | |
6 | 2 | uint16_t | 字节0…5的CRC-16(见附录1) | |
8 | 1 | uint8_t | 设备地址 | 0x01…0xfe |
9 | 1 | uint8_t | 数据包类型 | 0x10 |
10 | 2 | uint16_t | 数据代码 | 0xb006 |
12 | 2 | uint16_t | 保留 | |
14 | 2 | uint16_t | 字节8…13的CRC-16(见附录) |
错误应答的格式见附录2。
设置设备地址
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 设备地址 | 0x01…0xfe |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x0101 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 1 | uint8_t | 传输的数据字节数 | 0x02 |
7 | 1 | uint8_t | 数据项代码(地址) | 0x00 |
8 | 1 | uint8_t | 设备新地址 | |
9 | 2 | uint16_t | CRC-16(见附录1) |
读取测得的原始距离
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
此命令有两种使用模式:
- 数据代码0x4000:读取最近8个距离。应答帧包含截至请求时刻最近测得的8个距离
- 数据代码0x4001:逐帧读取全部距离。每次后续请求的应答帧包含接下来的8个已保存的测量距离。整个距离表传输完毕后,从头开始
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x4000或 0x4001 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 1 | uint8_t | 传输的数据字节数 | 0x28 |
3 | 40 (0x28) | 40字节 | 数据结构(见下文) | |
43 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
数据字段格式(40字节)
偏移量 | 大小(字节) | 说明 |
0 | 32 (8*4) | 8个原始距离结构(见下文) |
32 | 8 | 保留 |
距离结构格式(4字节)
偏移量 | 大小(字节) | 说明 |
0 | 1 | 超声波接收器地址 |
1 | 1 | 超声波发射器地址 |
2 | 2 | 设备间测得的距离,毫米(uint16_t) |
读取信标状态(固件V5.33+)
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 设备地址 | 0x01…0xfe |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x0003 |
4 | 2 | uint16_t | 访问模式 | 0x0002 |
6 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 设备地址 | 0x01…0xfe |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 1 | uint8_t | 传输的数据字节数 | 0x20 |
3 | 32 | 32字节 | 数据结构(见下文) | |
35 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
数据字段格式:
偏移量 | 大小(字节) | 类型 | 说明 |
0 | 4 | uint32_t | 自复位或唤醒起的工作时间(秒) |
4 | 1 | uint8_t | R,无线电RSSI寄存器值(接收信号强度指示)。 若R>128,RSSI(dBm)= ( (R-256)/2) – 74 若R<=128,RSSI(dBm)= (R/2) – 74 |
5 | 1 | uint8_t | 未说明 |
6 | 1 | int8_t | 测得的温度Vt(有符号)。温度 =(Vt+23)°C |
7 | 2 | uint16_t | 位0…11:电源电压,毫伏 位12…13:未说明 位14:1:电量低,设备将在短时间后进入休眠 位15:1:电量极低,设备将在短时间后进入深度休眠 |
9 | 23 | 23字节 | 未说明 |
Marvelmind机器人控制命令
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
机器人控制命令
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 机器人地址 | 0x01…0xfe |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x1000 |
4 | 2 | uint16_t | 访问模式 | 0x0001 |
6 | 1 | uint8_t | 传输的数据字节数 | 0x10 |
7 | 16(0x10)字节 | uint8_t | 机器人控制数据(见下文) | |
23 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型(调制解调器应答) | 0x7f |
2 | 2 | uint16_t | 数据代码 | 0x1000 |
4 | 2 | uint16_t | 保留 | |
6 | 2 | uint16_t | 字节0…5的CRC-16(见附录1) | |
8 | 1 | uint8_t | 机器人地址 | 0x01…0xfe |
9 | 1 | uint8_t | 数据包类型(机器人应答) | 0x10 |
10 | 2 | uint16_t | 数据代码 | 0x1000 |
12 | 2 | uint16_t | 保留 | |
14 | 2 | uint16_t | 字节8…13的CRC-16(见附录1) |
错误应答的格式见附录2。
机器人控制数据格式:
偏移量 | 大小(字节) | 类型 | 说明 |
0 | 1 | uint8_t | 控制模式: 0 – 无控制(等待模式) 1 – 电机功率控制 2 – 速度控制 3 – 写入运动程序 4 – 暂停运动程序 5 – 暂停后继续运动 |
1 | 1 | uint8_t | 操作代码: 0 – 前进 1 – 后退 2 – 顺时针旋转 3 – 逆时针旋转 4 – 暂停指定时间(模式3) 5 – 从头重复运动程序(模式3) 6 – 按坐标移动到指定点(模式3) 7 – 设置运动速度(模式3) |
2 | 1 | uint8_t | 控制字节1: 模式1:电机功率,% 模式2:运动速度,% 模式3:程序步骤编号(从0开始) |
3 | 2 | Int16_t | 程序数据(模式3): 操作代码0或1:运动距离,厘米 操作代码2或3:旋转角度,度 操作代码4:暂停时间,毫秒 操作代码6:运动目标X坐标,厘米 操作代码7:运动速度,% |
5 | 1 | uint8_t | 模式3:程序的总步骤数。 |
6 | 2 | int16_t | 程序附加数据(模式3): 操作代码6:运动目标Y坐标,厘米 |
8 | 2 | int16_t | 操作代码6:运动目标Z坐标,厘米 |
10 | 6 | 6字节 | 保留(0) |
关于这一复杂命令的几点说明。
机器人控制结构的字节0指定了三种主要的机器人控制模式:
- 功率控制(模式1)
- 速度控制(模式2)
- 按程序运动(模式3)
模式1和模式2通常用于测试。在模式1下,机器人以选定的电机功率前进、后退、左转或右转。在模式2下,机器人执行同样的动作,但会调节功率以保持选定的速度。功率或速度在结构的字节2中设置,运动类型在字节1中设置。
模式4和模式5是特殊命令,用于在程序执行过程中暂停运动,以及在暂停后继续运动。
沿复杂轨迹运动的主要模式是模式3。
它允许为机器人编写一系列基本动作,这些动作组合起来构成轨迹。序列中的每一项都应通过一条此类命令发送。每条命令应在机器人控制结构的字节2中包含当前步骤编号,在字节5中包含总步骤数。
机器人控制结构的字节1指定基本运动的类型。基本运动的参数在“程序数据”(字节3…4)和“程序附加数据”(字节6…7)字段中指定。
因此,可用的基本动作如下:
- 前进指定距离;
- 后退指定距离;
- 顺时针旋转指定角度;
- 逆时针旋转指定角度;
- 暂停指定时间;
- 从首项重新开始运动程序(用于循环运动);
- 移动到Marvelmind导航系统坐标中的指定点(X, Y);
- 改变运动速度。
机器人收到基本动作序列后开始执行程序,程序执行完毕后停止。但如果程序中包含操作代码为5(从头重复)的项,程序将无限循环执行,直到收到停止命令或上传新程序。
停止机器人
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 机器人地址 | 0x01…0xfe |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x403 |
4 | 2 | uint16_t | 访问模式 | 0x0001 |
6 | 1 | uint8_t | 传输的数据字节数 | 0x04 |
7 | 4字节 | 4字节 | 保留(0) | 0 |
11 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型(调制解调器应答) | 0x7f |
2 | 2 | uint16_t | 数据代码 | 0x403 |
4 | 2 | uint16_t | 保留 | |
6 | 2 | uint16_t | 字节0…5的CRC-16(见附录1) | |
8 | 1 | uint8_t | 机器人地址 | 0x01…0xfe |
9 | 1 | uint8_t | 数据包类型(机器人应答) | 0x10 |
10 | 2 | uint16_t | 数据代码 | 0x403 |
12 | 2 | uint16_t | 保留 | |
14 | 2 | uint16_t | 字节8…13的CRC-16(见附录1) |
错误应答的格式见附录2。
此命令直接终止任何机器人运动或运动程序的执行。机器人停止并等待新命令。
读取/写入设备控制设置(固件V6.01+)
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
读取设备控制设置
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 设备地址(信标/调制解调器) | 0x01…0xfe或0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x1201 |
4 | 2 | uint16_t | 访问模式 | 0x0001 |
6 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 请求发往调制解调器时为0x03 请求发往信标时为0x7f |
2 | 1 | uint8_t | 传输的数据字节数 | 0x10 |
3 | 16 | 结构 | 数据结构(见第9.3节)。 仅当请求发往调制解调器(0xff)时有效 | |
11 | 2 | uint16_t | 字节0…10的CRC-16(见附录1) | |
如果请求发往信标,将收到以下数据 | ||||
13 | 1 | uint8_t | 设备地址 | 0x01…0xfe |
14 | 1 | uint8_t | 数据包类型 | 0x03 |
15 | 1 | uint8_t | 传输的数据字节数 | 0x08/0x10 |
16 | 16 | 结构 | 数据结构(见下文)。 | |
32 | 2 | uint16_t | 字节12…22的CRC-16(见附录1) | |
错误应答的格式见附录2。
写入设备控制设置
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 设备地址(信标/调制解调器) | 0x01…0xfe或0xff |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x1201 |
4 | 2 | uint16_t | 访问模式 | 0x0001 |
6 | 1 | uint8_t | 传输的数据字节数 | 0x10 |
7 | 16 | 结构 | 数据结构(见下文) | |
23 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 请求发往调制解调器时为0x03 请求发往信标时为0x7f |
2 | 2 | uint16_t | 数据代码 | 0x1201 |
4 | 2 | uint16_t | 保留 | |
6 | 2 | uint16_t | 字节0…5的CRC-16(见附录1) | |
如果请求发往信标(地址0x01…0xfe),将收到以下数据 | ||||
8 | 1 | uint8_t | 设备地址 | 0x01…0xfe |
9 | 1 | uint8_t | 数据包类型 | 0x10 |
10 | 2 | uint16_t | 数据代码 | 0x1201 |
12 | 2 | uint16_t | 保留 | |
14 | 2 | uint16_t | 字节8…13的CRC-16(见附录1) | |
错误应答的格式见附录2。
控制设置有效载荷数据格式
偏移量 | 大小(字节) | 类型 | 说明 |
0 | 1 | uint8_t | 标志: 位0…5:未说明,必须始终为0! 位6:0 – 固定信标模式,1 – 移动信标模式 位7:保留(0) |
1 | 1 | uint8_t | UART波特率设置: 0:500000 bps(默认值) 1:4800 bps 2:9600 bps 3:19200 bps 4:38400 bps 5:57600 bps 6:115200 bps 7…255:保留 |
2 | 1 | uint8_t | 保留(0) |
3 | 1 | uint8_t | 位0…3:无线电配置: 0:38.4 kbps 1:150 kbps 2:500 kbps 3…7:保留 位4…6:无线电频段: 0:433 MHz 1:868 MHz 2:915 MHz 3:315 MHz 4…7:保留 位7:保留 |
4 | 1 | uint8_t | UART/USB输出类型: 0:Marvelmind协议 1:NMEA0183 |
5 | 1 | uint8_t | NMEA0183模式下发送的NMEA帧掩码: 位0:1 – 发送$GPRMC帧 位1:1 – 发送$GPGGA帧 位2:1 – 发送$GPVTG帧 位3:1 – 发送$GPZDA帧 位4…7:保留(0) |
6 | 1 | uint8_t | 由该移动信标发送到调制解调器的用户有效载荷数据字节数(0…32) |
7 | 1 | uint8_t | “IMU via modem”模式下发送到调制解调器的IMU数据掩码: 位0:IMU融合位置 位1:四元数 位2:速度 位3:加速度 位4:加速度计原始数据 位5:陀螺仪原始数据 位6:罗盘原始数据 位7:0 = 发送IMU融合数据,1 = 发送IMU原始数据 |
8 | 1 | uint8_t | 位0…6:遥测数据输出间隔(0 = 不输出) 位7:保留(0) |
9 | 1 | uint8_t | 位0:使用IMU计算速度 位1…7 – 保留(0) |
10 | 6 | 6字节 | 保留(0) |
警告! 如果更改通过无线电连接的信标的无线电配置,无线电连接将会中断。如需切换配置,请先逐个切换所有信标的无线电配置,然后再切换调制解调器的无线电配置。几秒钟后,所有信标应可在新的无线电配置下连接。
读取网络中的设备列表(固件V6.01+)
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x31xx,其中xx为设备组编号 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 1 | uint8_t | 传输的数据字节数 | 0x72 |
3 | 1 | uint8_t | 网络中的设备总数(K) | |
4 | 112 | 112字节 | 0…16个网络设备信息结构,说明见下文 | |
116 | 1 | uint8_t | 保留 | 0x00 |
117 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
网络设备数据格式(7字节)
偏移量 | 大小(字节) | 说明 |
0 | 1 | 设备地址(0x01…0xfe) |
1 | 1 | 固件主版本号 |
2 | 1 | 固件次版本号 |
3 | 1 | 位0…5:设备类型: 10:轮式机器人 12:履带式机器人 22:Beacon HW V4.5 23:Beacon HW V4.5(移动信标模式) 24:调制解调器(HW V4.5/4.9) 30:Beacon HW V4.9 31:Beacon HW V4.9(移动信标模式) 32:Mini-RX信标 36:Mini TX信标(HW V5.07) 37:Industrial-TX信标 41:Industrial-RX信标 42:Super-Beacon 43:Super-Beacon(移动信标模式) 44:Industrial Super-Beacon 45:Industrial Super-Beacon(移动信标模式) 位6:1 – 存在多个使用此地址的设备 位7:1 – 休眠模式 |
4 | 1 | 固件第二次版本号 |
读取固件版本
支持的硬件:
Super-Beacon:支持
Industrial Super-Beacon:支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):支持
Mini-TX:支持
Mini-TX-2:支持
Modem HW4.9:支持
Beacon HW4.9:支持
Beacon HW4.5:支持
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 设备地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0xfe00 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 1 | uint8_t | 传输的数据字节数 | 0x08 |
3 | 1 | uint8_t | 固件次版本号 | |
4 | 1 | uint8_t | 固件主版本号 | |
5 | 3 | 3字节 | 保留 | |
8 | 1 | uint8_t | 设备类型ID | |
9 | 2 | uint16_t | 保留 | |
11 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
读取用户数据
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x0004 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x03 |
2 | 1 | uint8_t | 传输的数据字节数 | 0x84 |
3 | 1 | uint8_t | 用户数据总大小 | |
4 | 3 | 3字节 | 保留(0) | |
7 | 128 | uint8_t | 来自移动信标的用户数据 | |
135 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
来自移动信标的用户数据是一系列记录,结构如下:
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 移动信标地址 | H |
1 | 1 | uint8_t | 来自移动信标的用户数据字节数 | M |
2 | M | uint8_t | 来自移动信标H的M字节数据 |
写入手动设定的设备位置
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 信标地址 | 0x01…0xfe |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x5003 |
4 | 2 | uint16_t | 访问模式 | 0x0002 |
6 | 1 | uint8_t | 传输的数据字节数 | 0x20 |
7 | 32 | 结构 | 数据结构(见下文) | |
39 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据代码 | 0x5003 |
4 | 2 | uint16_t | 保留 | |
6 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
数据结构格式:
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 4 | int32_t | X坐标,毫米 | |
4 | 4 | int32_t | Y坐标,毫米 | |
8 | 4 | int32_t | Z坐标,毫米 | |
12 | 1 | uint8_t | 未说明 | 0xff |
13 | 4 | int32_t | 未说明 | 0 |
17 | 4 | int32_t | 未说明 | 0 |
21 | 4 | int32_t | 未说明 | 0 |
25 | 1 | uint8_t | 未说明 | 0x02 |
26 | 6 | 6字节 | 保留 | 0 |
写入手动设定的信标间距离
支持的硬件:
Super-Beacon:不支持
Industrial Super-Beacon:不支持
Modem HW5.1:支持
Super-Modem:支持
Mini-RX(胸牌、头盔等):不支持
Mini-TX:不支持
Mini-TX-2:不支持
Modem HW4.9:支持
Beacon HW4.9:不支持
Beacon HW4.5:不支持
请求帧格式(主机发往调制解调器)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据包中的数据代码 | 0x4003 |
4 | 2 | uint16_t | 访问模式 | 0x0000 |
6 | 1 | uint8_t | 传输的数据字节数 | 0x10 |
7 | 16 | 结构 | 数据结构(见下文) | |
23 | 2 | uint16_t | CRC-16(见附录1) |
应答帧格式(调制解调器发往主机)
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 调制解调器地址 | 0xff |
1 | 1 | uint8_t | 数据包类型 | 0x10 |
2 | 2 | uint16_t | 数据代码 | 0x4003 |
4 | 2 | uint16_t | 保留 | |
6 | 2 | uint16_t | CRC-16(见附录1) |
错误应答的格式见附录2。
数据结构格式:
偏移量 | 大小(字节) | 类型 | 说明 | 值 |
0 | 1 | uint8_t | 第一个信标的地址 | |
1 | 1 | uint8_t | 第二个信标的地址 | |
2 | 4 | uint32_t | 信标间距离,毫米 | |
6 | 10 | 10字节 | 保留 | 0 |