SuperIO目录是软件平台的参数配制、数据存款和储蓄的目录,1贰澳门永利网上娱乐.四        设备驱动的开发… 6

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

目       录

一.壹    开发准备

把“开发包”内的装有文件复制到项目标“bin”目录下,或项目下的专用生成目录。开发包文件蕴含如下图:

澳门永利网上娱乐 1

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

第八二章     2次开发及应用… 2

一.贰    项目配制

1)目的框架选用Framework四.0

澳门永利网上娱乐 2

二)生成的对象平台利用x8陆

澳门永利网上娱乐 3

具备事例程序的对象平台应用x八六。首要怀念到31位操作系统与6四操作系统的包容性。

1二.一        项目配制… 叁

壹.三    假定通信协议

1二.2        引用相关组件… 4

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

电脑发送0x陆一发令为读实时数据命令,共发送多少个字节,校验和为从“从机地址”起先的丰裕和,不包罗“数据报头”、“校验和”和“协议停止”。

出殡指令数据帧如下:

澳门永利网上娱乐 4

  

1二.三        营造主程序… 五

一.3.二    解析实时数据协议

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

接收数据帧如下:

澳门永利网上娱乐 5

 

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

一.3.叁    发送和接收数据事例

出殡(十陆进制):0x55 0xaa 0x00 0x六一 0x陆一 0x0d

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

流量数据为:250.00

时限信号数据为:360.00

12.四.一       假定通信协议… 陆

一.四    新建设施模块

如下图:

澳门永利网上娱乐 6

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

澳门永利网上娱乐 7

    项目标配制请参见:一.二门类配制。

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

一.5    创设筑组织商驱动

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

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

    
在MySendProtocol实例中得以调用DriverFunction函数,传入相应的命令,例如:0x陆1。会自动调用“Function陆一”函数,作为调用相应命令函数的驱动接口。GetSendCmdBytes函数接口是在DriverFunction函数基础上包裹的,同样也足以选择,不过要把“isbox“设置成false,不然会对发送的数据做特殊的处理。

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

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

1贰.4.一.2   解析实时数据协议… 陆

1.陆    塑造参数和实时数据实例类

新建三个类:MyDeviceParameter和MyDevice途观TDataMyDeviceParameter继承SCL.Device.DeviceParameter类,用于保存备参数,能够在此类中追加新的装置参数。

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

     
那多少个类继承基类后会自动再三再四SaveSerialize和GetSerialize七个泛型函数,Save塞里alize函数是把当前指标连串化成XML,GetSerialize是把连串化的XML反向变化对象实例。

         
SCL.Device.DeviceParameter类和SCL.Device.DeviceRealTimeData类是继续自SerializeOperation类,他们的接口是IserializeOperation,SerializeOperation只是贰个简易的体系化XML操作类库。

    
倘使开发者想全盘自定义三个数量持久文件,那么能够继承IserializeOperation接口,重写相应的接口函数,自定义存款和储蓄数据的措施。

 

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

1.七    营造设备驱动

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

      新建3个装备类:MyDevice,它继续自SCL.Device.RunSCLDevice1。

开发者注意到还有3个SCL.Device.RunSCLDevice类,它是比较早的运维设备类,考虑的平台的包容性,今后还在此起彼伏使用,不过新开发的设备模型不提议选用SCL.Device.RunSCLDevice类。

它们都以一而再自IRunSCLDevice接口。

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

1.7.一    常用接口

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

把写好的实时数据类实例化之后,在此重返。例如:MyDeviceHighlanderTData类。

 

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

当未知通讯状态的时候,软件平台会调用那一个函数。1般景观下不会油不过生此类境况。

 

14)     public override void SaveData()

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

 

15)     public override void Alert()

判定数据是还是不是丰裕,假若出现很是数据,在进展报告警察方处理。

 

16)     public override void ShowData()

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

 

17)     public override void DeviceTimer()

种种设备会分配三个定时器,暗中认可一分钟调用叁遍这么些函数。能够通信IsStartTimer属性运营、截至定时器,通过提姆erInterval属性设置定时器执行间隔。

 

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贰.四.三       创设筑协会谈商讨驱动… 8

一.柒.二    属性表明

     下面是设备拥有的品质,请参考。

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

同步锁对象

1二.4.四       营造参数和实时数据实例类… 八

一.七.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();

删去设备事件

1二.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)

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

1二.伍        图形展现的开发… 9

一.8    设备调节和测试

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

一.八.一    界面形式调度

   界面方式测试主借使创设二个主程序,模拟真实的应用程序对设施进行

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

1)  引用组件

第3引用Device德姆o程序集。如下图:

 澳门永利网上娱乐 8

测试设施

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

 澳门永利网上娱乐 9

在Form_Load中初步化实例,并且加载调节和测试设备模块,首如若创设设备实例、起始化参数、举行配备调节和测试,如:this.DebugDevice((IRunDevice)_myDevice)语句。如下图:

澳门永利网上娱乐 10

三)IO监测器,展现发送和收受的本来面目十陆进制数据,便于调节和测试。如下图:

澳门永利网上娱乐 11

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

澳门永利网上娱乐 12

切切实实地度量试代码,请参见:FormTest项目。

1二.七        服务组件的开发… 10

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

控制台测试,未有UI显示界面,部分效能恐怕测试不全。须求通过

SCL.Device.IdebugDevice debug=
SCL.Device.DebugDevice.GetDebugInstance()获得调节和测试实例。别的代码与“界面形式测试”壹样。如下图:

澳门永利网上娱乐 13

1二.8        配置工具的应用… 10

壹.9    挂载设备模块

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

澳门永利网上娱乐 14

1二.8.一       参数配置… 拾

1.十    在凉台下运作设备

    
把装备驱动挂载好以往,运维“工业串口和互连网软件通讯平台_SuperIO”目录下的【SuperIO_Run.exe】应用程序,采纳【用户管理】->【用户登6】菜单,采用【工程师】或【管理员】用户,输入私下认可的密码:1二三。

登6到软件平台后,选用【设备管理】->【扩充设备】菜单,接纳刚刚挂载的装置驱动模块。如下图:

澳门永利网上娱乐 15

开发的好的设备驱动模块同时支持COM(串品)和TCP(网络)三种简报格局,TCP(互联网)通信时接济Client和Server三种工作情势。

 

作者QQ:504547114

交流QQ群:54256083

12.八.二       驱动挂载… 1一

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

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

12.9        小结… 11

第72章      一回开发及应用

   
扶助二次开发是框架的重中之重特点,作为设计者或架构师能使自个儿的创作广泛被采纳是一件很光荣的壹件事。不管做过多少项目,能够有协调的代表文章是一件很不便于的一件事,能够通过三个小说广泛的交接1些情侣也是1件很庆幸的事。所以,一直着力让SuperIO更平稳、越来越好的支撑2回开发、越来越快的塑造贰个报导平台。

   这某个重点介绍利用SuperIO进行三回开发,开发流程如下图:

 澳门永利网上娱乐 16

 

1贰.一     项目配制

一)目的框架选取Framework肆.0

 澳门永利网上娱乐 17

2)生成的对象平台利用x八六

 澳门永利网上娱乐 18

    
所有事例程序的指标平台应用x86。主要思索到三十二个人操作系统与6四操作系统的包容性。

1二.二     引用相关组件

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

 澳门永利网上娱乐 19

1二.三     营造主程序

  
通过持续SuperIO.UI.MainForm窗体类能够构建筑协会调的宿主程序,那只是三个为主的界面框架,能够在此基础上拓展扩充。营造好的宿主程序如下图:

 澳门永利网上娱乐 20

1二.四     设备驱动的开发

1二.四.2头要通讯协议

1贰.4.一.一 发送读实时数据命令协议

   
总结机发送0x六一命令为读实时数据命令,共发送四个字节,校验和为从“从机地址”伊始的充足和,不包蕴“数据报头”、“校验和”和“协议结束”。

    发送指令数据帧如下:

帧结构

数量报头

从机地址

命令代码

校验和

协商停止

0x55

0xAA

 

0x61

 

0x0D

字节数

1

1

1

1

1

1

  

1二.4.1.2 解析实时数据协议

  
下位机接收到读实时数据命令后,并校验成功,重临实时数据,校验和为从“从机地址”开头的丰盛和,不包罗“数据报头”、“校验和”和“协议甘休”。

   接收数据帧如下:

帧结构

数量报头

从机地址

指令代码

流量

信号

校验和

商量甘休

0x55

0xAA

 

0x61

浮点型

浮点型

 

0x0D

字节数

1

1

1

1

4

4

1

1

 

1贰.四.一.叁 发送和接收数据事例

出殡(十陆进制):0x55 0xaa 0x00 0x陆1 0x61 0x0d

收起(十6进制):0x55 0xaa 0x00 0x陆1 0x肆叁 0x柒a 0x00 0x00 0x43 0xb四 0x15
0x0d

流量数据为:250.00

时域信号数据为:360.00

12.四.二新建设备模块

   如下图:

 澳门永利网上娱乐 21

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

澳门永利网上娱乐 22 

1二.四.3营造协商驱动

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

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

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

 在MySendProtocol实例中能够调用DriverFunction函数,传入相应的通令,例如:0x6一。会活动调用“Function六一”函数,作为调用相应命令函数的驱动接口。GetSendCmdBytes函数接口是在DriverFunction函数基础上包裹的,同样也得以动用,但是要把“isbox“设置成false,不然会对发送的数量做特其他拍卖。

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

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

1二.四.4营造参数和实时数据实例类

   
新建七个类:MyDeviceParameter和MyDeviceLacrosseTDataMyDeviceParameter继承SuperIO.Device.DeviceParameter类,用于保存备参数,能够在此类中扩大新的设施参数。

   
MyDevice本田CR-VTData继承SuperIO.Device.DeviceRealTimeData类,用于保存设备的实时数据,能够依据报导协议自定义设备的实时数据。

   
那多个类继承基类后会自动延续SaveSerialize和GetSerialize八个泛型函数,SaveSerialize函数是把当下目的种类化成XML,GetSerialize是把序列化的XML反向变化对象实例。SuperIO.Device.DeviceParameter类和SuperIO.Device.DeviceRealTimeData类是持续自SerializeOperation类,他们的接口是IserializeOperation,SerializeOperation只是1个简易的种类化XML操作类库。

若是开发者想完全自定义2个数据持久文件,那么能够继续IserializeOperation接口,重写相应的接口函数,自定义存款和储蓄数据的方法。

1二.四.5营造设备驱动

   
“营造筑组织商驱动”和“营造参数和实时数据实例类”两节都以为营造运转设备做的早期准备,将用作运维设备的品质。

     新建3个配备类:MyDevice,它三番陆次自SuperIO.Device. RunDevice一。

     开发者注意到还有二个SuperIO.Device.
RunDevice类,它是比较早的运维设备类,思虑的阳台的包容性,今后还在后续使用,但是新开发的设施模型不提出选拔SuperIO.Device.
RunDevice一类。它们都以三番四回自IRunDevice接口。

1二.伍     图形展现的支付

  1. 增添对SuperIO组件的引用。
  2. 新建Form窗体,继承SuperIO.Show.IGraphicsShow接口,并且实现接口功用。
  3. 经过UpdateDevice接口实现解析对象,并出示解析对象后的多寡。

1二.陆     数据导出的花费

  1. 追加对SuperIO组件的引用。
  2. 新建类,继承SuperIO.Export.IExportData接口,并且达成接口作用。
  3. 因此UpdateDevice接口实现解析对象,并出口格式化后的数目。

1二.七     服务组件的付出

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

1贰.八     配置工具的使用

    
手动对框架平台的配备文件举办修改,对配置音讯不便于明白,也易于影响配置文件的格式,所以写了八个布局工具“ConfigTool.exe”,对框架平台的全局参数和驱动消息实行挂载、删除等。

1二.8.一参数配置

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

 澳门永利网上娱乐 23

1二.八.二使得挂载

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

 澳门永利网上娱乐 24

12.9     小结

   
对设施驱动的开发进行了详细的介绍,对于别的插件请依照现实的景况展开开发,详情请参见《二回开发手册》。

 

小编:唯笑志在

Email:504547114@qq.com

QQ:504547114

.NET开发技术联盟:5425608叁

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

合法兰西网球国际赛(French Open)址:http://www.bmpj.net