好的,欢迎来到:
第五讲:设备触发事件 S6F11,我该怎么处理?
关键词:S6F11 报文解析、事件驱动、CEID、VID 值提取、自动回应、业务逻辑绑定
本讲目标
这讲我们要做的是:
- 设备发来 S6F11,主机能自动接收
- 解析 CEID,判断触发了哪个事件
- 从报文里提取出关键变量(VID)
- 回复 S6F12 保持协议完整
- 执行业务逻辑,比如“记录日志”、“通知人”、“触发控制指令”
这部分是 EAP 或 Host 主机逻辑最核心的“反应机制”,掌握了这个,你的系统才有“感知设备”的能力。
一、S6F11 是什么?
S6F11 是 设备上报的“事件”,也是 Host 最常收到的一条报文。
格式一般是:
S6F11 W
<L
U2 CEID
<L
U2 RPTID
<L
... 多个 VID 和对应的值
>
>
>
也可能有多个 Report:
<L
U2 CEID
<L
<L U2 RPTID1 <L VID1 VAL1 VID2 VAL2>>
<L U2 RPTID2 <L VID3 VAL3>>
>
>
二、自动监听消息
你只要在启动程序时挂上这个事件:
gem.MessageReceived += OnSecsMessageReceived;
然后写:
private async void OnSecsMessageReceived(object sender, SecsMessage e)
{
if (e.Stream == 6 && e.Function == 11)
{
await HandleS6F11(e);
}
}
三、怎么解析 CEID?(事件码)
例子
ushort ceid = e.SecsItem[0].GetValue<ushort>();
Console.WriteLine($"触发事件:CEID = {
ceid}");
你可以用 switch 做事件分发:
switch (ceid)
{
case 1:
Console.WriteLine("批次开始");
break

最低0.47元/天 解锁文章
2766

被折叠的 条评论
为什么被折叠?



