灯光类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为灯光使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
灯光类设备的大类ID为 04
灯光控制器指令总表
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
设备对象 |
命令内容 |
大类 ( 00~1F) |
型号 (00~FF) |
编号 ( 00~FF) |
功能 ( 00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
灯光控制器 |
控制器状态设置 |
04 |
xx |
xx |
11 |
04 |
xx |
xx |
B1 |
控制器状态信息 |
周期反馈 |
必备 |
||
单点灯光状态设置 |
04 |
xx |
xx |
12 |
/ |
/ |
/ |
/ |
/ |
/ |
必备 |
|||
呼吸模式设置 |
04 |
xx |
xx |
13 |
04 |
xx |
xx |
B3 |
设置成功 |
单次反馈 |
必备 |
1. 控制器状态设置 / 控制器状态信息
控制器状态设置 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
外部 |
本设备 |
0x 04 XX XX 11 |
3 |
/ |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
工作模式 |
unsigned int8 |
查看工作模式表 |
|
byte[1] |
亮度倍率 |
unsigned int8 |
1~100(最大亮度百分比,用于总控) |
|
byte[2] |
灯光数量 |
unsigned int8 |
控制的灯光LED数量 |
|
byte[3~7] |
/ |
/ |
/ |
控制器状态信息 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 04 XX XX B1 |
8 |
500 |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
工作模式 |
unsigned int8 |
查看工作模式表 |
|
byte[1] |
亮度倍率 |
unsigned int8 |
1~100 |
|
byte[2] |
灯光数量 |
unsigned int8 |
控制的灯光LED数量 |
|
byte[3~7] |
/ |
/ |
/ |
触碰开关表 |
||
位 |
值 |
说明 |
byte[0] |
0x00 |
待机模式(蓝色呼吸灯) |
0x01 |
警报模式(红色快闪) |
|
0x02 |
单点控制 |
|
0x03 |
呼吸模式 |
举例: 型号0x02 编号0x03 的灯光使用警报模式 100亮度 50个led,发送CANID:0x04 02 03 11 数据:01 64 32 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x04 02 03 11
数据帧
扩展帧
3
01 64 32
上位机
0x04 02 03 B1
数据帧
扩展帧
3
01 64 32
2. 单点灯光状态设置
用于单一LED的控制,可以每个LED都有不同颜色
控制器状态设置 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
外部 |
本设备 |
0x 04 XX XX 12 |
8 |
/ |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
灯光ID |
unsigned int8 |
ID从1开始,0为空 |
|
byte[1] |
R值 |
unsigned int8 |
RGB的R值 |
|
byte[2] |
G值 |
unsignedint8 |
RGB的G值 |
|
byte[3] |
B值 |
unsigned int8 |
RGB的B值 |
|
byte[4] |
灯光ID |
unsigned int8 |
ID从1开始,0为空 |
|
byte[5] |
R值 |
unsigned int8 |
RGB的R值 |
|
byte[6] |
G值 |
unsignedint8 |
RGB的G值 |
|
byte[7] |
B值 |
unsigned int8 |
RGB的B值 |
每次至多设置两个LED,可以连续发送,单个LED可以设置另一个ID为0
需要工作模式为单点控制才有效
举例: 型号0x02 编号0x03 的灯光设置第一个LED 白色,发送CANID:0x04 02 03 12 数据:01 FF FF FF 00 00 00 00。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x04 02 03 12
数据帧
扩展帧
8
01 FF FF FF 00 00 00 00
上位机
/
/
/
/
/
3. 呼吸模式设置 / 设置成功
呼吸模式是所有灯以一种颜色渐变
呼吸模式设置 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
外部 |
本设备 |
0x 04 XX XX 13 |
4 |
/ |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
呼吸周期 |
unsigned int8 |
单位:S |
|
byte[1] |
R值 |
unsigned int8 |
RGB的R值 |
|
byte[2] |
G值 |
unsigned int8 |
RGB的G值 |
|
byte[3] |
B值 |
unsigned int8 |
RGB的B值 |
|
byte[4~7] |
/ |
/ |
/ |
设置成功 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 04 XX XX B3 |
0 |
/ |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0~7] |
/ |
/ |
/ |
需要工作模式为呼吸模式才有效
举例: 型号0x02 编号0x03 的灯光设置LED 白色1s呼吸,发送CANID:0x04 02 03 13 数据:01 64 32 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x04 02 03 13
数据帧
扩展帧
4
01 FF FF FF
上位机
0x04 02 03 B3
数据帧
扩展帧
0
/