1二.4        设备驱动的开发… 陆,二)生成的靶子平台接纳x八陆

12.四.4       创设参数和实时数据实例类… 八

1.七.四    高级应用

1)         void RunIODevice (SCL.CommunicateController.IDeviceIO io)

能够重写这么些函数,在此处改变设备运维的流程,依据CommunicationType属性内定的广播发表类型,能够把io参数转换为互连网通信接口ISocket或串口通信接口ICOM,之后方可有针对的对出殡和埋葬操作和收受操作进行3次开发。壹般不建议重写那一个函数。

 

2)         void Send(SCL.CommunicateController.IDeviceIO io, byte[]
sendbytes)

能够重写那一个函数,根据CommunicationType属性钦赐的通讯类型,能够把io参数转换为互联网通信接口ISocket或串口通信接口ICOM,举行发送数据操作。在不重写RunDevice函数的图景下,在适当的施用场景能够重写那几个函数。

 

3)         byte[] Receive(SCL.CommunicateController.IDeviceIO io)

能够重写那一个函数,依据CommunicationType属性钦赐的通信类型,能够把io参数转换为互连网通信接口ISocket或串口通讯接口ICOM,进行接收数据操作。在不重写RunDevice函数的情景下,在妥贴的施用场景能够重写这么些函数。

 

4)         void SaveBytes(byte[] data, string desc)

能够重写这几个函数,对发送的数据和收受的数量进行自定义保存。暗许保存在”d:软件平台
原始数据”目录下。

 

5)         void SocketConnect(string ip, int port)

能够重写那些函数,当网络通信的时候,有客户端连接到软件平台会调用这几个函数接口。

 

6)         void SocketDisconnect(string ip, int port)

能够重写那些函数,当网络通信的时候,有客户端与软件平台断开会调用那几个函数接口。

1二.四.一       假定通信协议… 6

1.五    营造协商驱动

    新建多个类:MySendProtocol
和MyReceiveProtocol,MySendProtocol继承SCL.Device.DeviceSendProtocol基类,MyReceiveProtocol类继承SCL.Device.DeviceReceiveProtocol。

      MySendProtocol
和MyReceiveProtocol多个类都重写(override)“Function陆壹”函数,MySendProtocol类中的Function陆一函数完结打包发送命令操作,MyReceiveProtocol类中的Function陆一函数达成解析数据操作,FunctionXX在七个类中都会成对出现,首假若为着好记。

    
在MySendProtocol实例中能够调用DriverFunction函数,传入相应的吩咐,例如:0x6一。会自动调用“Function陆1”函数,作为调用相应命令函数的驱动接口。GetSendCmdBytes函数接口是在DriverFunction函数基础上包裹的,同样也能够动用,然而要把“isbox“设置成false,不然会对出殡和埋葬的数额做越发的处理。

  
在MyReceiveProtocol实例中能够调用DriverFunction函数,传入相应的吩咐,例如:0x陆一。会自动调用“Function61”函数,作为调用相应命令函数的驱动接口。GetAnalysisData函数是在DriverFunction函数基础上包裹的,同样能够运用,只是多调用了1层GetCommand函数接口。

    具体代码请参见:Device德姆o项目。

12.三        营造主程序… 5

法定网站:http://www.bmpj.net

源小说地址:http://www.bmpj.net/index.php?m=article&f=view&id=4

1二.八     配置工具的使用

    
手动对框架平台的安顿文件进行修改,对布署新闻不简单理解,也不难影响配置文件的格式,所以写了一个配置工具“ConfigTool.exe”,对框架平台的大局参数和驱动消息进行挂载、删除等。

一.7    创设设备驱动

     
“营造筑协会谈商讨驱动”和“构建参数和实时数据实例类”两节都以为创设运维设备做的初期准备,将用作运营设备的性质。

      新建三个装备类:MyDevice,它继续自SCL.Device.RunSCLDevice壹。

开发者注意到还有二个SCL.Device.RunSCLDevice类,它是比较早的运转设备类,考虑的阳台的包容性,现在还在持续使用,可是新开发的装置模型不提议利用SCL.Device.RunSCLDevice类。

它们都以往续自IRunSCLDevice接口。

12.四        设备驱动的开发… 陆

1.八    设备调节和测试

12.4.壹.1 发送读实时数据命令协议

   
总括机发送0x六一指令为读实时数据命令,共发送四个字节,校验和为从“从机地址”初步的增进和,不包含“数据报头”、“校验和”和“协议结束”。

    发送指令数据帧如下:

帧结构

数据报头

从机地址

一声令下代码

校验和

情商甘休

0x55

0xAA

 

0x61

 

0x0D

字节数

1

1

1

1

1

1

  

1.四    新建设施模块

如下图:

895959.com 1

增加对SuperIO.dll的引用,如下图:

895959.com 2

    项指标配制请参见:一.2类型配制。

12.肆.三创设筑组织商驱动

      新建四个类:MySendProtocol
和MyReceiveProtocol,MySendProtocol继承SuperIO.Device.DeviceSendProtocol基类,MyReceiveProtocol类继承SCL.Device.DeviceReceiveProtocol。

MySendProtocol 和MyReceiveProtocol八个类都重写(override)

     
“Function陆一”函数,MySendProtocol类中的Function陆一函数完结打包发送命令操作,MyReceiveProtocol类中的Function陆一函数完结解析数据操作,FunctionXX在七个类中都会成对出现,首借使为了好记。

 在MySendProtocol实例中得以调用DriverFunction函数,传入相应的授命,例如:0x陆一。会活动调用“Function陆1”函数,作为调用相应命令函数的驱动接口。GetSendCmdBytes函数接口是在DriverFunction函数基础上包裹的,同样也能够行使,不过要把“isbox“设置成false,不然会对出殡和埋葬的数码做特殊的处理。

     
在MyReceiveProtocol实例中得以调用DriverFunction函数,传入相应的命令,例如:0x陆壹。会自动调用“Function6一”函数,作为调用相应命令函数的驱动接口。GetAnalysisData函数是在DriverFunction函数基础上包裹的,同样能够应用,只是多调用了1层GetCommand函数接口。

      具体代码请参见:Device德姆o项目。

1.8.一    界面格局调度

   界面方式测试首倘若创设三个主程序,模拟真实的应用程序对装备举行

测试。推荐使用那种测试方法。

1)  引用组件

重点引用Device德姆o程序集。如下图:

 895959.com 3

测试设施

界面情势测试是有窗体界面包车型大巴,必须继承“SCL.UI
.MainForm”类,并用代码把软件平台设置成调节和测试格局“SuperIO.Device.DebugDevice.IsDebug
= true;”,如图:

 895959.com 4

在Form_Load中伊始化实例,并且加载调试设备模块,首要是开创建备实例、初始化参数、举办设备调试,如:this.DebugDevice((IRunDevice)_myDevice)语句。如下图:

895959.com 5

三)IO监测器,彰显发送和接收的原来十6进制数据,便于调节和测试。如下图:

895959.com 6

4)用VirtualSerialPortDriver在本机虚拟出来三个串口,五个串口完毕了虚拟连接,例如:COM1和COM二;打开串口帮手软件和平台软件(SuperIO平台),分别安装COM1和COM二,依照“一.三借使通信协议”发送和接收数据。相关软件在“帮助理工科程师具”目录里有。如下图:

895959.com 7

切切实实测试代码,请参见:FormTest项目。

12.四     设备驱动的付出

一.3.1    发送读实时数据命令协议

微型总计机发送0x6一发令为读实时数据命令,共发送5个字节,校验和为从“从机地址”最先的拉长和,不包含“数据报头”、“校验和”和“协议结束”。

出殡指令数据帧如下:

895959.com 8

  

1二.八.二使得挂载

   
配置工具也得以挂载驱动和插件,配置好今后,运维框架平台能够对其开始展览操作,以挂载设备驱动为例如下图:

 895959.com 9

一.六    创设参数和实时数据实例类

新建八个类:MyDeviceParameter和MyDeviceEvoqueTDataMyDeviceParameter继承SCL.Device.DeviceParameter类,用于保存备参数,能够在此类中追加新的装备参数。

          
MyDeviceHummerH贰TData继承SCL.Device.DeviceRealTimeData类,用于保存设备的实时数据,能够遵照电视发表协议自定义设备的实时数据。

     
那三个类继承基类后会自动一而再Save塞里alize和GetSerialize八个泛型函数,SaveSerialize函数是把近来目的类别化成XML,GetSerialize是把种类化的XML反向变化对象实例。

         
SCL.Device.DeviceParameter类和SCL.Device.DeviceRealTimeData类是一而再自SerializeOperation类,他们的接口是IserializeOperation,SerializeOperation只是二个粗略的体系化XML操作类库。

    
假如开发者想全盘自定义2个数码持久文件,那么能够一而再IserializeOperation接口,重写相应的接口函数,自定义存款和储蓄数据的不2法门。

 

12.伍        图形显示的开发… 九

1.⑦.叁    事件作证

以下设备事件都以在本来事件的基本功上进行李包裹装的函数,开发者能够直

接调用以下触发事件的函数,软件平台在起步的时候曾经私下认可加载了这个事件。

1)         void OnReceiveDataHandler(byte[] revdata);

接触接收数据事件

 

2)         void OnSendDataHandler(byte[] senddata);

接触发送数据事件,当网络通信的时候,应用Self方式的时候,能够经过这些事件自主发送数据。

 

3)         void OnDeviceRuningLogHandler(string statetext);

把设备运营日志输出到运转监视器

 

4)         void OnUpdateContainerHandler();

接触更国民党的新生活运动行监视器事件

 

5)         void OnCOMParameterExchangeHandler(int oldcom, int oldbaud,
int newcom, int newbaud);

串口改变事件。

 

6)         void OnDeviceObjectChangeHandler(object obj);

对象数据变动事件,用于驱动展现、导出、服务等模块。

 

7)         void OnDeleteDeviceHandler();

去除设备事件

1二.二     引用相关组件

     在“开发包”中援引相关组件。如下图:

 895959.com 10

一.壹    开发准备

把“开发包”内的全体文件复制到项指标“bin”目录下,或项目下的专用生成目录。开签发承包合约文件包罗如下图:

895959.com 11

  SuperIO.dll是软件平台的主导模块,
SuperIO目录是软件平台的参数配制、数据存款和储蓄的目录。

12.八.一参数配置

   
参数配置首要涉嫌到:软件音讯、安装操作、互联网和串口通信等新闻。配置内容如下图

 895959.com 12

一.三.2    解析实时数据协议

   
下位机接收到读实时数据命令后,并校验成功,再次回到实时数据,校验和为从“从机地址”早先的足够和,不包涵“数据报头”、“校验和”和“协议甘休”。

接受数据帧如下:

895959.com 13

 

1二.1     项目配制

壹)目的框架接纳Framework肆.0

 895959.com 14

2)生成的靶子平台应用x八陆

 895959.com 15

    
全数事例程序的靶子平台运用x八陆。首要思念到33人操作系统与6四操作系统的包容性。

一.二    项目配制

1)目标框架采纳Framework肆.0

895959.com 16

二)生成的对象平台运用x八陆

895959.com 17

装有事例程序的对象平台接纳x八六。首要考虑到3几人操作系统与6四操作系统的兼容性。

1二.四.三       营造筑组织商驱动… 八

一.拾    在阳台下运作设备

    
把设备驱动挂载好未来,运维“工业串口和网络软件通信平台_SuperIO”目录下的【SuperIO_Run.exe】应用程序,采纳【用户管理】->【用户登6】菜单,选取【工程师】或【管理员】用户,输入暗中同意的密码:1二3。

登陆到软件平台后,选拔【设备管理】->【扩大设备】菜单,选用刚刚挂载的配备驱动模块。如下图:

895959.com 18

开发的好的装置驱动模块同时补助COM(串品)和TCP(互联网)三种简报情势,TCP(互联网)通信时支持Client和Server三种工作方式。

 

作者QQ:504547114

交流QQ群:54256083

1二.四.一.三 发送和接收数据事例

发送(十陆进制):0x55 0xaa 0x00 0x陆壹 0x陆一 0x0d

收起(十陆进制):0x55 0xaa 0x00 0x六一 0x4三 0x七a 0x00 0x00 0x四三 0xb4 0x15
0x0d

流量数据为:250.00

功率信号数据为:360.00

一.七.1    常用接口

1)         public override SCL.ProtocolDriver.ISendProtocol SendProtocol

把写好的出殡和埋葬协议类实例化之后,在此再次回到。例如:MySendProtocol类。

 

2)         public override SCL.ProtocolDriver.IReceiveProtocol
ReceiveProtocol

把写好的收取协议类实例化之后,在此重返。例如:MyReceiveProtocol类。

 

3)         public override SCL.Device.IDeviceParameter DeviceParameter

把写好的装置参数类实例化之后,在此再次来到。例如:MyDeviceParameter类。

 

4)         public override SCL.Device.IDeviceRealTimeData
DeviceRealTimeData

把写好的实时数据类实例化之后,在此再次回到。例如:MyDevice奇骏TData类。

 

5)         public override void InitDevice(int devid)

初始化设备,能够在此处对殡葬协议、接收协议、设备参数和实时数据等信息举行开端化。

 

6)         public override byte[] GetRealTimeCommand()

其1类是回去读实时数据命令,当CommandCache命令缓冲区中有可发送命令的时候,优先读、发送取命令缓冲区中的命令数据;若是CommandCache命令缓冲区未有数量的时候,软件平台会活动调用GetRealTimeCommand函数接口,再次来到读实时数据命令,举办发送。

 

7)         public override void DealData(byte[] data)

当电视发表不荒谬时,软件平台会把吸收到的数额自动传入到那些函数,能够调用ReceiveProtocol属性进行分析数据以及处理、分析、保存。通信符合规律与否和收受协议类中CheckData函数接口有关。

 

8)         public override void UnRegDevice()

当软件平台没有注册的时候,软件平台会调用那么些函数。

 

9)         public override void UnknownIO()

当电视发表链路为null的时候,软件平台会调用这么些函数。例如:串口未打开、网络尚未连接等。

 

10)     public override void CommunicateChanged(SCL.Device.IOState
ioState)

当报纸发表状态发送改变的时候,软件平台会调用那个函数。通信状态蕴含:通信平常、通信中断和报导干扰。

 

11)     public override void CommunicateError()

当电视发表干扰的时候,软件平台会调用那几个函数。通信平常与否和接收协议类中CheckData函数接口有关。

 

12)     public override void CommunicateInterrupt()

当报道中断的时候,软件平台会调用这些函数。通讯正常与否和收取协议类中CheckData函数接口有关。

 

13)     public override void CommunicateNone()

当未知通信状态的时候,软件平台会调用这些函数。一般景色下不见面世此类意况。

 

14)     public override void SaveData()

对处理的数码开始展览封存。

 

15)     public override void Alert()

判定数据是还是不是足够,若是现身分外数据,在进展报警处理。

 

16)     public override void ShowData()

呈现数据处理,用于更新设备运营器,以及自定义UI和导出数据。

895959.com, 

17)     public override void DeviceTimer()

各样设备会分配二个定时器,暗中同意1分钟调用三次这些函数。能够通信IsStartTimer属性运转、结束定时器,通过TimerInterval属性设置定时器执行间隔。

 

18)     public override SCL.Device.DeviceType DeviceType

回到设备档次,设备档次包含:普通设备、虚拟设备以及别的。

 

19)     public override s y s t e m.Windows.Forms.Control DeviceGraphics

回来设备图形化界面。

 

20)     public override void ShowContextMenu()

显示上下文菜单函数。

 

21)     public override string ModelNumber

回去设备模块编号,也正是设备的型号,那一个号码尽量供给无法重新。

 

24)public void ShowMonitorIODialog();

展现通道监视器窗口

 

25)public void ShowMonitorIOData(byte[] data, string desc);

向运维监视器中浮现数据音信

1二.八.二       驱动挂载… 1壹

一.柒.贰    属性表达

     上面是装备具备的习性,请参见。

1)         UserLevel

用户级别属性,包涵:未知用户、普通用户、低级用户和高等用户等多个级别。

 

2)         IsStartTimer

取得或安装是不是打开当前装备的钟表,暗中同意不打开。

 

3)         TimerInterval

赢得或设置当前装备石英钟的间隔时间,暗中同意为一秒。

 

4)         IsRegLicense

取得或配备当前配备是或不是被注册,私下认可不注册。

 

5)         RunDevicePriority

获取或安装当前配备运行级别,分为:普通和优先。假如为事先级别,则先调用该进行发送和接收数据。

 

6)         CommunicationType

赢得或设置当前装备的简报类型。包蕴:串口和网络二种。

 

7)         CommandCache

获得或设置当前装备命令缓冲,若是有要发送的多寡,则优先调用命令缓冲的数据开展发送。

 

8)         IsRunDevice

取得或安装是或不是运维当前设施,假诺设置false,当前设置不到位运转(发送和接收数据)。

 

9)         DeviceParameter.IsSaveOriginBytes

标识是不是保存原有发送和接到的字节数据,假如保留,默认保存路径在D盘。

 

10)      object Tag

一时标记属性。

 

11)      object SyncLock

同步锁对象

1二.六     数据导出的支付

  1. 日增对SuperIO组件的引用。
  2. 新建类,继承SuperIO.Export.IExportData接口,并且完成接口成效。
  3. 通过UpdateDevice接口达成解析对象,并出口格式化后的数量。

1.9    挂载设备模块

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

895959.com 19

1二.四.一.二 解析实时数据协议

  
下位机接收到读实时数据命令后,并校验成功,再次来到实时数据,校验和为从“从机地址”起始的足够和,不包含“数据报头”、“校验和”和“协议截止”。

   接收数据帧如下:

帧结构

数量报头

从机地址

命令代码

流量

信号

校验和

磋商结束

0x55

0xAA

 

0x61

浮点型

浮点型

 

0x0D

字节数

1

1

1

1

4

4

1

1

 

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

1二.四.1.二   解析实时数据协议… 陆

一.八.2    控制台格局调节和测试

控制台测试,未有UI呈现界面,部分机能大概测试不全。须要通过

SCL.Device.IdebugDevice debug=
SCL.Device.DebugDevice.GetDebugInstance()得到调试实例。别的代码与“界面格局测试”1样。如下图:

895959.com 20

1二.肆.二新建设备模块

   如下图:

 895959.com 21

     增加对SuperIO.dll的引用,如下图:

895959.com 22 

壹.3    假定通信协议

1二.四.5       创设设备驱动… 九

壹.三.3    发送和接收数据事例

发送(十六进制):0x5伍 0xaa 0x00 0x六一 0x6一 0x0d

收下(十6进制):0x55 0xaa 0x00 0x陆一 0x四三 0x七a 0x00 0x00 0x四三 0xb四 0x15
0x0d

流量数据为:250.00

功率信号数据为:360.00

第9二章     二回开发及应用… 2

12.9     小结

   
对配备驱动的支付进行了详细的介绍,对于别的插件请遵照现实的情事展开开发,详情请参见《一次开发手册》。

 

笔者:唯笑志在

Email:504547114@qq.com

QQ:504547114

.NET开发技术结盟:542560八三

文书档案下载:http://pan.baidu.com/s/1pJ7lZWf

合法国网球国际竞赛址:http://www.bmpj.net

12.9        小结… 11

1贰.肆.4创设参数和实时数据实例类

   
新建三个类:MyDeviceParameter和MyDevice宝马X三TDataMyDeviceParameter继承SuperIO.Device.DeviceParameter类,用于保存备参数,能够在此类中扩展新的装置参数。

   
MyDevice福睿斯TData继承SuperIO.Device.DeviceRealTimeData类,用于保存设备的实时数据,能够依照报导协议自定义设备的实时数据。

   
那三个类继承基类后会自动再三再四Save塞里alize和GetSerialize四个泛型函数,SaveSerialize函数是把近期指标连串化成XML,GetSerialize是把类别化的XML反向变化对象实例。SuperIO.Device.DeviceParameter类和SuperIO.Device.DeviceReal提姆eData类是持续自SerializeOperation类,他们的接口是IserializeOperation,SerializeOperation只是叁个粗略的系列化XML操作类库。

假使开发者想完全自定义二个数据持久文件,那么能够几次三番IserializeOperation接口,重写相应的接口函数,自定义存款和储蓄数据的方式。

1二.1        项目配制… 3

1二.肆.一.三   发送和接收数据事例… 柒

目       录

12.二        引用相关组件… 四

1二.三     创设主程序

  
通过一连SuperIO.UI.MainForm窗体类能够塑造筑组织调的宿主程序,那只是一当中坚的界面框架,能够在此基础上进展扩张。营造好的宿主程序如下图:

 895959.com 23

1二.柒        服务组件的开发… 十

1二.捌.一       参数配置… 十

1贰.4.一倘使通信协议

1二.伍     图形显示的支付

  1. 增添对SuperIO组件的引用。
  2. 新建Form窗体,继承SuperIO.Show.IGraphicsShow接口,并且达成接口成效。
  3. 经过UpdateDevice接口达成解析对象,并出示解析对象后的数量。

第92章      二回开发及应用

   
帮助一次开发是框架的最重要特点,作为设计者或架构师能使自身的著述广泛被使用是壹件很光荣的1件事。不管做过多少项目,能够有温馨的代表小说是一件很不便于的1件事,能够通过1个文章广泛的交接壹些情人也是一件很庆幸的事。所以,一向着力让SuperIO更稳定、越来越好的支持一次开发、越来越快的构建1个广播发表平台。

   那一部分重要介绍利用SuperIO进行2次开发,开发流程如下图:

 895959.com 24

 

1二.七     服务组件的付出

  1. 扩充对SuperIO组件的引用。
  2. 新建类,继承SuperIO.Services.App瑟维斯抽象类,并且达成接口作用。
  3. 能够经过UpdateDevice接口函数更新配备的缓存数据。

1贰.陆        数据导出的开发… 九

1二.四.一.一   发送读实时数据命令协议… 6

1二.4.二       新建设施模块… 七

1贰.四.5构建设备驱动

   
“创设筑协会谈商讨驱动”和“塑造参数和实时数据实例类”两节都以为创设运转设备做的最初准备,将作为运转设备的性质。

     新建3个装备类:MyDevice,它两次三番自SuperIO.Device. RunDevice1。

     开发者注意到还有3个SuperIO.Device.
RunDevice类,它是相比早的运行设备类,思虑的平台的包容性,今后还在后续使用,不过新开发的设备模型不提出采纳SuperIO.Device.
RunDevice一类。它们都是后续自IRunDevice接口。

12.捌        配置工具的应用… 10