C#的二次开发及应用举例分析

技术C#的二次开发及应用举例分析本篇内容主要讲解“C#的二次开发及应用举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#的二次开发及应用举例分析”吧!二次开发及应用

本文主要讲解“C#的二次开发及应用分析”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习《C#的二次开发与应用分析》!

二次开发和应用

支持二次开发是框架的一个重要特征,能够让自己的作品得到广泛应用的设计师或架构师是一种莫大的荣誉。无论你做过多少项目,想要有自己的代表作都不容易,通过一部作品结交到广泛的朋友也是一件非常幸运的事情。因此,努力使SuperIO更加稳定,更好地支持二次开发,更快地搭建通信平台。

这部分主要介绍用SuperIO进行二次开发,开发过程如下:

C#的二次开发及应用举例分析

00-1010 1)目标框架选择Framework4.0

C#的二次开发及应用举例分析

2)生成的目标平台采用x86。

C#的二次开发及应用举例分析

所有案例程序的目标平台都是x86。主要考虑32位操作系统和64位操作系统的兼容性。

00-1010参考开发包中的相关组件。下图:

C#的二次开发及应用举例分析

12.1 项目配制

可以通过继承SuperIO来构建自己的宿主程序。UI.MainForm表单类,只是一个基本的接口框架,可以在此基础上进行扩展。构建的主机程序如下:

C#的二次开发及应用举例分析

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新建设备模块

   如下图:

 C#的二次开发及应用举例分析

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

C#的二次开发及应用举例分析 

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     图形显示的开发

  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参数配置

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

 C#的二次开发及应用举例分析

12.8.2驱动挂载

    配置工具也可以挂载驱动和插件,配置好之后,启动框架平台可以对其进行操作,以挂载设备驱动为例如下图:

 C#的二次开发及应用举例分析

到此,相信大家对“C#的二次开发及应用举例分析”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/118932.html

(0)

相关推荐

  • 体表面积计算公式,人体体表面积的计算公式是什么

    技术体表面积计算公式,人体体表面积的计算公式是什么(一)计算人体表面积的公式较多,但大多数可写成(1)或(2)的形式.SA=cHα1Wα2
    (1) 这里SA为人体表面积(m2);H为身高(cm);W为体重(kg);c,α

    生活 2021年10月27日
  • 罐装奶粉打开了多久不能吃,婴儿奶粉开封后多久不能吃

    技术罐装奶粉打开了多久不能吃,婴儿奶粉开封后多久不能吃很多宝妈跟题主一样罐装奶粉打开了多久不能吃,对奶粉的保质期有疑问——奶粉吃不完是不是就不能吃了呢?是不是就变质了呢?众所周知,婴幼儿奶粉营养丰富,蛋白质含量高,而丰富

    生活 2021年10月31日
  • spark快速入门菜鸟教程(大数据spark入门教程)

    技术Spark该怎样入门本篇文章为大家展示了Spark该怎样入门,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. Spark简介2009年,Spark诞生于伯克利大学的AMPL

    攻略 2021年12月17日
  • 饮料瓶,饮料瓶为什么是圆柱形的

    技术饮料瓶,饮料瓶为什么是圆柱形的1.从安全角度考虑饮料瓶,圆柱体没有凸起部分,由于酒瓶是用玻璃制成,所以很容易造成意外伤害,做成圆柱体,会使整体比较圆滑,不容易划伤人。2.从容量方面考虑,当高度一定时,底面积是圆的物体

    生活 2021年10月21日
  • jquery如何增加一个style属性

    技术jquery如何增加一个style属性本篇内容主要讲解“jquery如何增加一个style属性”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery如何增加一个sty

    攻略 2021年11月17日
  • java语言软件开发工具包是什么(使用java语法的脚本语言)

    技术四种Java脚本语言对比的示例分析小编给大家分享一下四种Java脚本语言对比的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在一些

    攻略 2021年12月20日