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)

相关推荐

  • utxo数据模型是什么(什么是utxo账户模型)

    技术比原链扩展性UTXO模型是什么本篇内容主要讲解“比原链扩展性UTXO模型是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“比原链扩展性UTXO模型是什么”吧!用户模型是

    攻略 2021年12月20日
  • css中position属性设置(css中position的属性)

    技术css定位position属性怎么使用这篇文章主要介绍“css定位position属性怎么使用”,在日常操作中,相信很多人在css定位position属性怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年12月20日
  • 草房子第一章主要内容,草房子第一篇的感想300字

    技术草房子第一章主要内容,草房子第一篇的感想300字最近,我读了《草房子》这本书,它里面的内容深深地感动了我. 一个叫作油麻地的乡村小学校给男孩桑桑留下了快乐又难忘的童年记忆——天生秃顶的秃鹤出于对尊严的执著坚守,而演出

    生活 2021年10月30日
  • 笔记本键盘失灵怎么办,笔记本电脑键盘失灵怎么办

    技术笔记本键盘失灵怎么办,笔记本电脑键盘失灵怎么办笔记本键盘按键失灵可分为2种情况笔记本键盘失灵怎么办:比较常见的按字母键会显示成数字的情况发生,遇到最多的就是这种情况了;另外一种情况是笔记本键盘出现了问题,具体解决方法

    生活 2021年10月20日
  • test6

    技术test6 test6#include stdio.h
    #define N 5int binarySearch(int *x, int n, int item); // 函数声明int main()

    礼包 2021年12月20日
  • ELK安装是怎样的

    技术ELK安装是怎样的这篇文章给大家介绍ELK安装是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一:安装环境: 1. VMware Workstation Pro 15 下载及安装

    攻略 2021年10月20日