【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动

news/2024/7/5 2:04:55

SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf

1.1    服务接口的作用

 围绕着设备驱动模块采集的数据,根据需求提供多种应用服务,例如:数据上传服务、数据请求服务、4-20mA服务、短信服务、LED服务以及OPC服务等。保障数据实时性、稳定性的前提下,服务接口可以提供丰富的功能服务机制,方便开发者进行二次开发。

1.2    接口功能说明

开发设备输出接口,主要考虑到在集成项目中,集成过程中或被集成过程的各种数据格式的输出。需要继承SuperIO.Export.IExportData接口,接口包括:

1)         StartService

当服务的启动方式(IsAutoStart)为"自动启动"的时候,平台加载服务的时候,会自动调用这个接口函数。

2)         ReleaseService

释放服务资源接口。

3)         OnClick

当服务类型(ServiceType)为“显示模式“的时候,服务的名称会显示在”服务“菜单里,当单击服务菜单项的时候,会调用这个单击接口函数,可以在这个接口函数里调用窗体。

4)         WriteLogHandler

日志事件接口,可以通过此事件,把日志信息显示在”运行监视器“里。

5)         ServiceType

服务类型,分为:显示模式和隐藏模式。显示模块的服务会在”服务“菜单中显示服务名称;隐藏模式在”菜单“菜单中不会显示,可以把此类服务设置为自动启动,软件在加载过程中会自动启动服务。

6)         IsAutoStart

服务启动类型,标识是否自动启动。

7)         ThisKey

返回窗体ID,且唯一,如果有相同的窗体存在,不会再次显示该窗体了。

8)         ThisName

窗体名称。

9)         UpdateDevice

更新设备数据,接收设备OnDeviceObjectChangedHandler事件传入的对象实例。

10)     RemoveDevice

移除设备,当删除设备的时候会调用这个函数接口。

11)     Dispose

释放资源函数。

1.3    开发服务驱动

1)增加对SuperIO组件的引用。

2)新建类,继承SuperIO.Services.AppService抽象类,并且实现接口功能。

3)可以通过UpdateDevice接口函数更新设备的缓存数据。

1.4    调试服务驱动

界面方式测试是有窗体界面的,必须继承“SuperIO.UI .MainForm”类,并用代码把软件平台设置成调试模式“SuperIO.Device.DebugDevice.IsDebug = true;”,如图:


在Form_Load中初始化实例,并且加载调试图形显示模块,主要是创建实例,如:this.DebugAppService((SuperIO.Services.IAppService)_service)语句。如下图:


1.5    挂载服务驱动

在“工业串口和网络软件通讯平台_SuperIO”目录下找到【ConfigTool.exe】应用程序,选择【服务配置】选卡,单击【挂载服务】按钮,把刚才开发的服务驱动模块挂载到平台下。如下图:


1.6    在软件平台下运行

服务类型和启动类型配合使用,服务类型为显示模式,手动启动和自动启动模式均可以;服务类型为隐藏模式,设置为自动启动模式,以便在程序在加载过程中自动启动服务。

如下图:

 

作者QQ:504547114

交流QQ群:54256083

官方网址:http://www.bmpj.net

源文章地址:http://www.bmpj.net/index.php?m=article&f=view&id=7


http://lihuaxi.xjx100.cn/news/244580.html

相关文章

Work with Alexa :Echo匹配连接到Alexa

背景: 通过蓝牙可以让你的智能家居设备和Echo设备连接起来,从而达到Echo通过语音控制智能家居设备。 什么事Alexa Gadgets? 我的理解Alexa Gadgets是智能家居设备的一部分,包含硬件和软件。硬件:蓝牙模块;软…

http://www.cnblogs.com/youfan/articles/3216816.html

我对 CodeFirst 的理解,与之对应的有 ModelFirst与 DatabaseFirst ,三者各有千秋,依项目实际情况自行选择。 1、开发过程中先行设计数据库并依此在项目中生成 *.dbml 或是 *.edmx 文件的,就是DatabaseFirst; 2、开发时…

求逆元 - HNU 13412 Cookie Counter

Cookie Counter Problems Link: http://acm.hnu.cn/online/?actionproblem&typeshow&id13412&courseid0 Mean: 将N分为D份,每份不超过X,有多少种分法? analyse: 首先我们想到的是迭代,但是数据太大,…

js实现表格动态数据展示在其他页面上

1.需求&#xff1a; 这个表格可以动态的添加&#xff0c;添加完毕后可以在另一个页面显示指定数据 实现&#xff1a; <!DOCTYPE HTML> <html xmlns"http://www.w3.org/1999/xhtml"> <head> <#include "/head.ftl"/> …

07 分支管理 —— Feature分支

2019独角兽企业重金招聘Python工程师标准>>> 07 分支管理 —— Feature分支 软件开发中&#xff0c;总有无穷无尽的新的功能要不断添加进来。添加一个新功能时&#xff0c;你肯定不希望因为一些实验性质的代码&#xff0c;把主分支搞乱了&#xff0c;所以&#xff0…

几个流行移动前端框架的比较评分

2019独角兽企业重金招聘Python工程师标准>>> 框架名总分UI全面性JS功能全面性更新程度帮助文档帮助文档详情特色Demo官网性质Jingle115402帮助文档基本方法属性用法UI丰富&#xff0c;仿原生UI与功能组件丰富http://vycool.com/Jingle/demo/index.html#index_sectio…

SpringBoot项目打成war包部署到外部Tomact运行

需求&#xff1a;使用SpringBoot自带的Tomact在线上环境部署特别不方便&#xff0c;尤其是只更改几个文件就得全部打包部署&#xff0c;所以需要把SpringBoot打成war包部署到Tomact 1.在pom.xml中 由原来的jar包改成war <dependency> <groupId>org.s…

组合与继承之重写方法和字段

为什么80%的码农都做不了架构师&#xff1f;>>> 接上篇blog&#xff0c;scala里的字段和方法属于相同的命名空间&#xff0c;这让字段可以重写无参数方法。例如&#xff0c;你可以通过改变ArrayElement类中contents的实现将其从一个方法变为一个字段&#xff0c;而…