# 灯光类CAN协议标准 为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为灯光使用的专用CAN协议。

请先确保阅读了[CAN协议构架说明](https://docs.hexmove.cn/books/hexmove/page/can-Zxd)再开始以下内容

请注意使用设备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 > > / > >
> >