# 灯光类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
>
> | /
>
> |
>
>