本文主要讲解“C#的二次开发及应用分析”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习《C#的二次开发与应用分析》!
二次开发和应用
支持二次开发是框架的一个重要特征,能够让自己的作品得到广泛应用的设计师或架构师是一种莫大的荣誉。无论你做过多少项目,想要有自己的代表作都不容易,通过一部作品结交到广泛的朋友也是一件非常幸运的事情。因此,努力使SuperIO更加稳定,更好地支持二次开发,更快地搭建通信平台。
这部分主要介绍用SuperIO进行二次开发,开发过程如下:
00-1010 1)目标框架选择Framework4.0
2)生成的目标平台采用x86。
所有案例程序的目标平台都是x86。主要考虑32位操作系统和64位操作系统的兼容性。
00-1010参考开发包中的相关组件。下图:
12.1 项目配制
可以通过继承SuperIO来构建自己的宿主程序。UI.MainForm表单类,只是一个基本的接口框架,可以在此基础上进行扩展。构建的主机程序如下:
12.2 引用相关组件
12.3 构建主程序
12.4 设备驱动的开发
计算机发送0x61命令作为读取实时数据命令,总共6个字节。校验和是从从机地址开始的累计总和,不包括数据头、校验和和协议端。
发送命令数据帧,如下所示:
帧结构
数据报头
从机地址
指令代码
校验和
协议结束
0x55
0xAA
0x61
0x0D
字节数
一个
一个
一个
一个
一个
一个
table>
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新建设备模块
如下图:
增加对SuperIO.dll的引用,如下图:
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函数接口。
具体代码请参见:DeviceDemo项目。
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 图形显示的开发
-
增加对SuperIO组件的引用。
-
新建Form窗体,继承SuperIO.Show.IGraphicsShow接口,并且实现接口功能。
-
通过UpdateDevice接口实现解析对象,并显示解析对象后的数据。
12.6 数据导出的开发
-
增加对SuperIO组件的引用。
-
新建类,继承SuperIO.Export.IExportData接口,并且实现接口功能。
-
通过UpdateDevice接口实现解析对象,并输出格式化后的数据。
12.7 服务组件的开发
-
增加对SuperIO组件的引用。
-
新建类,继承SuperIO.Services.AppService抽象类,并且实现接口功能。
-
可以通过UpdateDevice接口函数更新设备的缓存数据。
12.8 配置工具的应用
手动对框架平台的配置文件进行修改,对配置信息不容易理解,也容易影响配置文件的格式,所以写了一个配置工具“ConfigTool.exe”,对框架平台的全局参数和驱动信息进行挂载、删除等。
12.8.1参数配置
参数配置主要涉及到:软件信息、安装操作、网络和串口通讯等信息。配置内容如下图
12.8.2驱动挂载
配置工具也可以挂载驱动和插件,配置好之后,启动框架平台可以对其进行操作,以挂载设备驱动为例如下图:
到此,相信大家对“C#的二次开发及应用举例分析”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/118932.html