接着前面的五篇SECS/GEM协议开发的系列文章,继续讲本SECS SDK的以下几个功能
- 怎么触发警报、解除警报(EQP端)
- 怎么定义Trace(Host端),怎么触发Trace数据(EQP端)
- 怎么触发事件(EQP端)
- 怎么定义报表/查询报表(Host端)
1、怎么触发警报,解除警报
在第2篇基于SECS协议开发的简明教程(2)-怎么编辑交换数据的ID,Editor的第一部分就是定义ALID的部分,要把这部分报警的定义信息,及其SVID、DVVAL, ECID等文件放置在INI目录下面,都会被secs.dll自动加载进去,至于警报的使能/禁用等相关SnFn消息都被secs库底下帮忙处理了,对于EQP端的软件,还需要处理一点点事情的,那就是报警的触发和解除。只需要PostMesage一个WM_S5F1_ALARMREPORT消息即可,字参指明是触发还是解除,长参指明ALID,在头文件的声明如下:
//触发和解除报警,发送 WM_S5F1_ALARMREPORT给你的主窗体类即可
//wParam = 1 报警触发,0=报警清除
//lParam = ALID 报警ID;
LRESULT OnAlarmReport(WPARAM w, LPARAM l);
在SDK提供的Demo里面也已经有了。
2、怎么定义Trace(Host端)、怎么触发Trace数据(EQP端)
Trace数据是时间驱动的数据周期性上传一组Report数据的,而Report又由N个Item项构成,这些Item项其实就是Editor编辑定义的那些Id了。这部分工作secs.dll已经在底下全部做好了。设备软件什么也不用做也已经支持了。没看错!就是什么也不用做。当然了你定义的那些ID量肯定要保持值最新。
讲讲具体实现的过程吧,首先HOST端需要发S2F23定义好TRACE的格式,比如采样周期,以及需要关注的SVID项,告知EQP端周期性上传的采样时间间隔、传哪些数据。然后EQP端就会利用S6,F1消息周期性的上报了。HOST定义,EQP上传,角色对应。
3、怎么触发事件(EQP端)
同样,采集事件也是需要先定义的,当然也是HOST端自行发送S2F33下来定义Report,然后发送S2F35将EventID与Report关联。EQP收到这两个消息后当然是要记住的,这部分工作secs.dll也已经在底下全部做好了。然后当EQP触发这个事件的时候,Eqp端软件需要调用一下S6F11EventReport上报一下即可,参数就是CEID了。也就是说Eqp端需要在事件触发时主动去调一下,仅此而已。也是HOST定义,EQP上传,角色对应。
virtual void S6F11EventReport(short CEID);
4、怎么定义报表,怎么查询报表
这部分也是HOST端的事情,而且主要是HOST的事情了。HOST发送S2F33下来定义Report,当然根据不同SnFn消息,有的需要S2F15关联事件,比如上面,HOST可发S6F15查询。有的不需要关联事件,单独查询报表,HOST发送 S6F19,只需要指定ReportID即可。那怎么应答呢?记住:还是那句话,这部分工作secs.dll也已经在底下全部做好了,EQP端啥也不用管就对了。
说白了,这四部分工作,EQP端软件只需要几行代码即可。
只要是你想做但是不知道怎么做的时候,你就想:“这部分secs库底下都帮忙做好了”就对了。事实也正是如此。
这部分功能SDK附带的Demo都基本上覆盖全了,只需要下载SECS SDK复制粘贴即可。
如有疑问或咨询,请评论留言或在CSDN站内消息联系。