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:
wangfq
2026-07-23 19:07:12 +08:00
parent ab469315bf
commit d50135c77b
3 changed files with 120 additions and 3 deletions
@@ -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);