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)

相关推荐

  • 图像边缘检测:Canny算子、Prewitt算子和sobel算子

    技术图像边缘检测:Canny算子、Prewitt算子和sobel算子 图像边缘检测:Canny算子、Prewitt算子和sobel算子边缘检测是检测图像中的一些像素点,它们周围的像素点的灰度发生了急剧的

    礼包 2021年10月27日
  • 使用rpm删除包的正确姿势是怎样的

    技术使用rpm删除包的正确姿势是怎样的这篇文章给大家介绍使用rpm删除包的正确姿势是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、使用rpm指令3秒删除PHP所有包在安装所有的框架和安装包

    攻略 2021年11月9日
  • java的开发工具有哪些(java开发工具用什么比较好)

    技术Java开发工具有哪些本篇内容介绍了“Java开发工具有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1、C

    攻略 2021年12月22日
  • 数据库性能优化

    技术数据库性能优化 数据库性能优化数据库性能相关1,查看每个客户端IP过来的连接消耗了多少资源。 mysql select * from sys.x$host_summary;2,查看某个数据文件上发生

    礼包 2021年10月27日
  • 推荐一下我的angular ui模版之我的daming-core-ui更新到angular12了

    技术推荐一下我的angular ui模版之我的daming-core-ui更新到angular12了 推荐一下我的angular ui模版之我的daming-core-ui更新到angular12了前言

    礼包 2021年11月9日
  • Python中的小知识总结,1)

    技术Python中的小知识总结,1) Python中的小知识总结(1)学习Python过程中,整理得到小知识(1),如果有误,真心希望指出,相互学习,相互进步~~
    1.同步赋值:
    python中从键盘输

    礼包 2021年11月20日