框架的设计与落实,工业串口和互联网软件通信平台

目       录

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

第十二章     一遍开拓及应用… 2

1.1    开垦计划

把“开垦包”内的有着文件复制到项指标“bin”目录下,或项目下的专项使用生成目录。开垦包文件蕴涵如下图:

图片 1

  SuperIO.dll是软件平台的中坚模块,
SuperIO目录是软件平台的参数配制、数据存储的目录。

12.1        项目配制… 3

1.2    项目配制

1)目的框架选用Framework4.0

图片 2

2)生成的目的平台运用x86

图片 3

抱有事例程序的指标平台选取x86。首要考虑到叁九人操作系统与64操作系统的包容性。

12.2        引用相关组件… 4

1.3    假定通信协议

12.3        创设主程序… 5

1.3.1    发送读实时数据命令协议

微型计算机发送0x61命令为读实时数据命令,共发送6个字节,校验和为从“从机地址”开头的拉长和,不包涵“数据报头”、“校验和”和“协议结束”。

出殡指令数据帧如下:

图片 4

  

12.4        设备驱动的开拓… 6

1.3.2    深入分析实时数据协议

   
下位机接收到读实时数据命令后,并校验成功,重临实时数据,校验和为从“从机地址”开始的增进和,不包含“数据报头”、“校验和”和“协议截止”。

接受数据帧如下:

图片 5

 

12.4.1       假定通信协议… 6

1.3.3    发送和接收数据事例

发送(十六进制):0x55 0xaa 0x00 0x61 0x61 0x0d

接收(十六进制):0x55 0xaa 0x00 0x61 0x43 0x7a 0x00 0x00 0x43 0xb4 0x15
0x0d

流量数据为:250.00

能量信号数据为:360.00

12.4.1.1   发送读实时数据命令协议… 6

1.4    新建设施模块

如下图:

图片 6

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

图片 7

    项指标配制请参见:1.2项目配制。

12.4.1.2   解析实时数据协议… 6

1.5    营造筑组织商驱动

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

      MySendProtocol
和MyReceiveProtocol多少个类都重写(override)“Function61”函数,MySendProtocol类中的Function61函数落成打包发送命令操作,MyReceiveProtocol类中的Function61函数完结分析数据操作,FunctionXX在三个类中都会成对出现,首纵然为了好记。

    
在MySendProtocol实例中得以调用DriverFunction函数,传入相应的下令,比方:0x61。会活动调用“Function61”函数,作为调用相应命令函数的驱动接口。GetSendCmdBytes函数接口是在DriverFunction函数基础上包裹的,一样也得以接纳,不过要把“isbox“设置成false,不然会对出殡和埋葬的多少做非常的管理。

  
在MyReceiveProtocol实例中能够调用DriverFunction函数,传入相应的通令,举个例子:0x61。会自动调用“Function61”函数,作为调用相应命令函数的驱动接口。GetAnalysisData函数是在DriverFunction函数基础上包裹的,同样能够利用,只是多调用了一层GetCommand函数接口。

    具体代码请参见:DeviceDemo项目。

12.4.1.3   发送和接收数据事例… 7

1.6    构建参数和实时数据实例类

新建八个类:MyDeviceParameter和MyDeviceRTDataMyDeviceParameter承袭SCL.Device.DeviceParameter类,用于保存备参数,可以在此类中增添新的设施参数。

          
MyDeviceRTData继承SCL.Device.DeviceRealTimeData类,用于保存设备的实时数据,能够依附电视发表协议自定义设备的实时数据。

     
那五个类承继基类后会自动一连SaveSerialize和GetSerialize四个泛型函数,Save塞里alize函数是把当下目的种类化成XML,GetSerialize是把系列化的XML反向变化对象实例。

         
SCL.Device.DeviceParameter类和SCL.Device.DeviceRealTimeData类是持续自塞里alizeOperation类,他们的接口是IserializeOperation,SerializeOperation只是二个粗略的系列化XML操作类库。

    
假使开垦者想全盘自定义多个多少长久文件,那么能够连续IserializeOperation接口,重写相应的接口函数,自定义存款和储蓄数据的法子。

 

12.4.2       新建设施模块… 7

1.7    构建设备驱动

     
“创设筑组织商驱动”和“营造参数和实时数据实例类”两节皆认为营造运维设备做的最初打算,将作为运维设备的本性。

      新建二个设备类:MyDevice,它再三再四自SCL.Device.RunSCLDevice1。

开采者注意到还应该有二个SCL.Device.RunSCLDevice类,它是相比较早的运维设备类,思虑的阳台的包容性,未来还在后续使用,不过新开拓的配备模型不提议选择SCL.Device.RunSCLDevice类。

它们皆现在续自IRunSCLDevice接口。

12.4.3       创设筑协会谈商讨驱动… 8

1.7.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

把写好的实时数据类实例化之后,在此再次回到。举个例子:MyDeviceRTData类。

 

5)         public override void InitDevice(int devid)

开始化设备,能够在那边对出殡和埋葬协议、接收协议、设备参数和实时数据等消息实行初阶化。

 

6)         public override byte[] GetRealTimeCommand()

本条类是回到读实时数据命令,当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和导出数据。

 

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);

向运转监视器中呈现数据音讯

12.4.4       创设参数和实时数据实例类… 8

1.7.2    属性表达

     上面是设备具有的品质,请参考。

1)         UserLevel

用户等级属性,包蕴:未知用户、普通用户、低档用户和高等用户等八个品级。

 

2)         IsStartTimer

获得或设置是或不是展开当前设备的石英钟,私下认可不展开。

 

3)         TimerInterval

收获或设置当前设施石英钟的间隔时间,默感觉1秒。

 

4)         IsRegLicense

得到或配备当前器具是还是不是被注册,私下认可不登记。

 

5)         RunDevicePriority

获得或安装当前器材运维品级,分为:普通和先行。如若为优先等第,则先调用该进行发送和接收数据。

 

6)         CommunicationType

收获或设置当前设施的报纸发表类型。包涵:串口和网络两种。

 

7)         CommandCache

获得或设置当前设施命令缓冲,假诺有要发送的数目,则先行调用命令缓冲的数目开始展览发送。

 

8)         IsRunDevice

拿到或安装是还是不是运维业前设备,如果设置false,当前设置不列席运营(发送和接收数据)。

 

9)         DeviceParameter.IsSaveOriginBytes

标志是不是保存原有发送和抽取的字节数据,借使保留,暗中认可保存路线在D盘。

 

10)      object Tag

暂且标识属性。

 

11)      object SyncLock

同步锁对象

12.4.5       营造设备驱动… 9

1.7.3    事件作证

以下设备事件都以在本来事件的基础上进展包装的函数,开采者可以直

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

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();

去除设备事件

12.5        图形展现的开荒… 9

1.7.4    高等应用

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

能够重写这么些函数,在那边改变设备运行的流水生产线,根据CommunicationType属性钦点的广播发表类型,可以把io参数转换为互联网通信接口ISocket或串口通信接口ICOM,之后可以有指向的对发送操作和吸收接纳操作实行贰回开采。一般不建议重写这几个函数。

 

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)

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

12.6        数据导出的开荒… 9

1.8    设备调试

12.7        服务组件的开辟… 10

1.8.1    分界面情势调治

   界面情势测试首若是创设三个主程序,模拟真实的应用程序对器具进行

测试。推荐应用这种测试方法。

1)  引用组件

主要引用Device德姆o程序集。如下图:

 图片 8

测试设施

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

 图片 9

在Form_Load中发轫化实例,并且加载调节和测试设备模块,首假如开成立备实例、初叶化参数、进行设施调节和测试,如:this.DebugDevice((IRunDevice)_myDevice)语句。如下图:

图片 10

3)IO监测器,展现发送和接收的原来十六进制数据,便于调节和测试。如下图:

图片 11

4)用Virtual塞里alPortDriver在本机虚拟出来五个串口,七个串口达成了虚拟连接,比方:COM1和COM2;张开串口助手软件和平台软件(SuperIO平台),分别安装COM1和COM2,根据“1.3假如通信协议”发送和接收数据。相关软件在“帮衬理工程师具”目录里有。如下图:

图片 12

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

12.8        配置工具的应用… 10

1.8.2    调整台格局调节和测试

调整台测试,没有UI呈现分界面,部分功效只怕测试不全。供给经过

SCL.Device.IdebugDevice debug=
SCL.Device.DebugDevice.GetDebugInstance()得到调节和测试实例。别的代码与“分界面情势测试”同样。如下图:

图片 13

12.8.1       参数配置… 10

1.9    挂载设备模块

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

图片 14

12.8.2       驱动挂载… 11

1.10    在平台下运营设备

    
把器材驱动挂载好之后,运维“工业串口和网络软件通信平台_SuperIO”目录下的【SuperIO_Run.exe】应用程序,选用【用户管理】->【用户登入】菜单,采纳【程序猿】或【管理员】用户,输入私下认可的密码:123。

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

图片 15

付出的好的道具驱动模块相同的时候支持COM(串品)和TCP(互联网)三种简报方式,TCP(互联网)通信时帮助Client和Server二种职业方式。

 

作者QQ:504547114

交流QQ群:54256083

12.9        小结… 11

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

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

第十二章      一次开拓及利用

   
扶助一回开采是框架的首要特征,作为设计者或架构师能使协和的小说布满被运用是一件很荣幸的一件事。不管做过多少项目,能够有温馨的代表文章是一件很不易于的一件事,能够透过叁个创作广泛的交接一些仇敌也是一件很庆幸的事。所以,一向鼎力让SuperIO更平稳、越来越好的帮助三次开荒、更加快的塑造八个通信平台。

   那某个主要介绍利用SuperIO进行二回开采,开荒流程如下图:

 图片 16

 

12.1     项目配制

1)目的框架选用Framework4.0

 图片 17

2)生成的指标平台利用x86

 图片 18

    
全部事例程序的目的平台应用x86。首要挂念到三十二位操作系统与64操作系统的包容性。

12.2     引用相关组件

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

 图片 19

12.3     营造主程序

  
通过持续SuperIO.UI.MainForm窗体类可以创设筑组织调的宿主程序,那只是二个骨干的分界面框架,可以在此基础上拓展扩张。营造好的宿主程序如下图:

 图片 20

12.4     设备驱动的支付

12.4.1一旦通信协议

12.4.1.1 发送读实时数据命令协议

   
Computer发送0x61下令为读实时数据命令,共发送6个字节,校验和为从“从机地址”起始的增进和,不包涵“数据报头”、“校验和”和“协议停止”。

    发送指令数据帧如下:

帧结构

数据报头

从机地址

命令代码

校验和

协议停止

0x55

0xAA

 

0x61

 

0x0D

字节数

1

1

1

1

1

1

  

12.4.1.2 分析实时数据协议

  
下位机接收到读实时数据命令后,并校验成功,再次回到实时数据,校验和为从“从机地址”初阶的增加和,不包含“数据报头”、“校验和”和“协议结束”。

   接收数据帧如下:

帧结构

数量报头

从机地址

指令代码

流量

信号

校验和

商业事务截止

0x55

0xAA

 

0x61

浮点型

浮点型

 

0x0D

字节数

1

1

1

1

4

4

1

1

 

12.4.1.3 发送和接收数据事例

出殡(十六进制):0x55 0xaa 0x00 0x61 0x61 0x0d

收下(十六进制):0x55 0xaa 0x00 0x61 0x43 0x7a 0x00 0x00 0x43 0xb4 0x15
0x0d

流量数据为:250.00

模拟信号数据为:360.00

12.4.2新建设备模块

   如下图:

 图片 21

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

图片 22 

12.4.3创设协商驱动

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

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

     
“Function61”函数,MySendProtocol类中的Function61函数达成打包发送命令操作,MyReceiveProtocol类中的Function61函数完毕分析数据操作,FunctionXX在多少个类中都会成对出现,重若是为着好记。

 在MySendProtocol实例中得以调用DriverFunction函数,传入相应的一声令下,举个例子:0x61。会活动调用“Function61”函数,作为调用相应命令函数的驱动接口。GetSendCmdBytes函数接口是在DriverFunction函数基础上包裹的,同样也得以行使,可是要把“isbox“设置成false,不然会对殡葬的数额做非常的管理。

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

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

12.4.4营造参数和实时数据实例类

   
新建多个类:MyDeviceParameter和MyDeviceRTDataMyDeviceParameter承继SuperIO.Device.DeviceParameter类,用于保存备参数,能够在此类中加进新的配备参数。

   
MyDeviceRTData承接SuperIO.Device.DeviceRealTimeData类,用于保存设备的实时数据,能够根据广播发表协议自定义设备的实时数据。

   
那三个类继承基类后会自动三番五次SaveSerialize和GetSerialize三个泛型函数,SaveSerialize函数是把当前指标连串化成XML,GetSerialize是把系列化的XML反向变化对象实例。SuperIO.Device.DeviceParameter类和SuperIO.Device.DeviceRealTimeData类是继续自SerializeOperation类,他们的接口是IserializeOperation,SerializeOperation只是贰个简约的连串化XML操作类库。

假使开荒者想完全自定义二个数量长久文件,那么能够一连IserializeOperation接口,重写相应的接口函数,自定义存款和储蓄数据的法子。

12.4.5营造设备驱动

   
“营造筑组织商驱动”和“创设参数和实时数据实例类”两节都以为创设运转设备做的最初计划,将作为运维设备的习性。

     新建三个设施类:MyDevice,它三番五次自SuperIO.Device. RunDevice1。

     开辟者注意到还会有三个SuperIO.Device.
RunDevice类,它是相比早的运营设备类,思考的平台的包容性,以后还在后续使用,可是新开采的装置模型不提议接纳SuperIO.Device.
RunDevice1类。它们都以承袭自IRunDevice接口。

12.5     图形彰显的支出

  1. 扩张对SuperIO组件的引用。
  2. 新建Form窗体,承接SuperIO.Show.IGraphicsShow接口,并且达成接口功效。
  3. 透过UpdateDevice接口完结分析对象,并出示分析对象后的数据。

12.6     数据导出的开销

  1. 日增对SuperIO组件的引用。
  2. 新建类,承袭SuperIO.Export.IExportData接口,并且完毕接口功效。
  3. 通过UpdateDevice接口实现深入分析对象,并出口格式化后的数码。

12.7     服务组件的开垦

  1. 扩展对SuperIO组件的引用。
  2. 新建类,承继SuperIO.Services.AppService抽象类,并且实现接口成效。
  3. 能够经过UpdateDevice接口函数更新配备的缓存数据。

12.8     配置工具的施用

    
手动对框架平台的配备文件举办退换,对配置新闻不便于领悟,也易于影响配置文件的格式,所以写了三个布局工具“ConfigTool.exe”,对框架平台的全局参数和驱动音讯实行挂载、删除等。

12.8.1参数配置

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

 图片 23

12.8.2驱动挂载

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

 图片 24

12.9     小结

   
对器材驱动的付出张开了详实的牵线,对于其他插件请依照实际的状态开展付出,实际情况请参见《三回开拓手册》。

 

笔者:唯笑志在

Email:504547114@qq.com

QQ:504547114

.NET开采技艺缔盟:54256083

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

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