feat(rs485): 0x3D DIP查询从BLE配置实时映射灵敏度/输出/延时
- rs485_700bs.c: handle_query_dip() 从 g_loop_cng_unit 读取 sensitvity/output_mode/exist_mode/delay_time,映射为 DIP1-5 位 - rs485_700bs.h: 恢复 CMD_QUERY_DIP / RSP_DIP 常量 - docs: 添加 DLD-700BS V1.15 使用说明书 MD 版 - DLD154Pro 无物理拨码,所有配置通过 BLE 管理,0x3D 返回当前有效参数
This commit is contained in:
@@ -135,10 +135,16 @@ static void handle_reset_init(uint8_t addr)
|
||||
PRINT("RS485: coil reset init\n");
|
||||
}
|
||||
|
||||
/* 0x3D — 查询拨码 DIP1-5 (DLD154Pro 无物理拨码, 返回虚拟值=0) */
|
||||
/* 0x3D — 查询拨码 DIP1-5 (DLD154Pro 无物理拨码, 从 BLE 配置映射) */
|
||||
static void handle_query_dip(uint8_t addr)
|
||||
{
|
||||
uint8_t data = 0; // DIP1-5 全部 OFF (DLD154Pro 无 DIP)
|
||||
uint8_t data = 0;
|
||||
uint8_t sens = g_loop_cng_unit.sensitvity & 0x0F; // 灵敏度 0-3
|
||||
data |= (sens & 0x01); // DIP1 = bit0
|
||||
data |= ((sens >> 1) & 0x01) << 1; // DIP2 = bit1
|
||||
if (g_loop_cng_unit.output_mode & 0x01) data |= 0x04; // DIP3 = bit2 (1=脉冲)
|
||||
if (g_loop_cng_unit.exist_mode == 0) data |= 0x08; // DIP4 = bit3 (0=永久→ON=1)
|
||||
if (g_loop_cng_unit.delay_time > 0) data |= 0x10; // DIP5 = bit4 (>0=启用延时)
|
||||
uint8_t buf[4] = { RSP_DIP, data, (uint8_t)(addr & 0x1F),
|
||||
(uint8_t)(RSP_DIP ^ data ^ (addr & 0x1F)) };
|
||||
rs485_send(buf, 4);
|
||||
|
||||
Reference in New Issue
Block a user