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)

相关推荐

  • excel引用,Excel怎么引用整个工作表

    技术excel引用,Excel怎么引用整个工作表①相同工作簿不同工作表间相互引用,在引用单元格前加Sheetn!(Sheetn为被引用工作表的名称)举例excel引用:如工作表Sheet1中的A1单元格内容等于Sheet

    生活 2021年10月22日
  • nginx内存池源码分析

    技术nginx内存池源码分析本篇内容主要讲解“nginx内存池源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nginx内存池源码分析”吧!内存池概述 内存池是在

    攻略 2021年11月19日
  • JVM内存查看的三种途径分别是什么

    技术JVM内存查看的三种途径分别是什么本篇文章给大家分享的是有关JVM内存查看的三种途径分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通常情况下可

    攻略 2021年10月23日
  • sysbench 0.5有什么用

    技术sysbench 0.5有什么用这篇文章主要介绍sysbench 0.5有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 一 前言 因为在准备做压力测试方面

    攻略 2021年11月7日
  • JVM的艺术之如何使用类加载器

    技术JVM的艺术之如何使用类加载器这篇文章主要讲解了“JVM的艺术之如何使用类加载器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM的艺术之如何使用类加载器”吧!正式

    攻略 2021年10月23日
  • 抖音点赞3元100个,抖音刷点赞最低价?

    技术抖音点赞3元100个,抖音刷点赞最低价?抖音点赞量的价钱和你选的平台是不一样的,有些平台点赞100条可能需要15元,有些可能只需要10元,这其中的价格差是很大的,但是点赞量的质量是一样的。
    抖音点赞量的价格是由你购买

    测评 2021年10月22日