如何使用Expect将解码得到的数字编码替换为对应消防站名称
基于Expect实现STQC编码转消防站名称方案
核心功能
- 自动捕获multimon-ng输出的数字编码
- 匹配预设映射关系后自动输出对应消防站名称
- 进程持续运行,无需重启即可持续监听新的解码结果
完整实现代码
#!/usr/bin/expect -f # 自定义数字编码与消防站的映射关系,按格式新增即可 array set station_map { 12345678 "OSP 示例消防站1" 87654321 "OSP 示例消防站2" } # 替换为你实际运行multimon-ng的完整启动命令,确保可正常输出STQC解码后的数字串 spawn multimon-ng -a stqc [你的其他运行参数] # 持续监听输出内容 expect { # 匹配8位数字编码,若实际编码长度不同可修改{8}为对应数值 -re {(\d{8})} { set code $expect_out(1,string) if {[info exists station_map($code)]} { puts $station_map($code) } else { puts "未登记编码:$code" } exp_continue } eof { puts "解码进程已终止" exit 0 } }
使用步骤
- 将代码中的
station_map数组内容替换为你实际的数字编码与消防站对应关系 - 将
spawn行的multimon-ng启动参数替换为你日常使用的参数,保证解码功能正常 - 保存代码为
stqc_alert_convert.exp,执行chmod +x stqc_alert_convert.exp赋予执行权限 - 直接运行
./stqc_alert_convert.exp即可实现自动转换
可选调整
- 若需要同时展示原始编码与对应名称,将输出行修改为
puts "$code -> $station_map($code)" - 若不需要输出未登记的编码,删除
else分支的puts语句即可
内容的提问来源于stack exchange,提问作者Bubeqq
相关产品推荐
相关产品推荐

