千家信息网

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

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"C#的二次开发及应用举例分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C#的二次开发及应用举例分析"吧!二次开发及应用支持二次开发是
千家信息网最后更新 2026年11月02日C#的二次开发及应用举例分析

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

二次开发及应用

支持二次开发是框架的重要特点,作为设计者或架构师能使自己的作品广泛被使用是一件很荣幸的一件事。不管做过多少项目,能够有自己的代表作品是一件很不容易的一件事,能够通过一个作品广泛的结交一些朋友也是一件很庆幸的事。所以,一直努力让SuperIO更稳定、更好的支持二次开发、更快的构建一个通讯平台。

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

12.1 项目配制

1)目标框架选择Framework4.0

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

所有事例程序的目标平台采用x86。主要考虑到32位操作系统与64操作系统的兼容性。

12.2 引用相关组件

在"开发包"中引用相关组件。如下图:

12.3 构建主程序

通过继承SuperIO.UI.MainForm窗体类可以构建自己的宿主程序,这只是一个基本的界面框架,可以在此基础上进行扩展。构建好的宿主程序如下图:

12.4 设备驱动的开发

12.4.1假定通讯协议

12.4.1.1 发送读实时数据命令协议

计算机发送0x61指令为读实时数据命令,共发送6个字节,校验和为从"从机地址"开始的累加和,不包括"数据报头"、"校验和"和"协议结束"。

发送指令数据帧如下:

帧结构

数据报头

从机地址

指令代码

校验和

协议结束

0x55

0xAA

0x61

0x0D

字节数

1

1

1

1

1

1

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

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

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

12.8.2驱动挂载

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

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

数据 函数 接口 开发 设备 配置 驱动 命令 参数 实时 平台 两个 框架 组件 应用 实例 对象 信息 地址 报头 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技股 互联网金融与金融科技 互联网科技英文 互联网科技类展会 西藏七维空间互联网科技有限公司 来此购互联网科技有限公司 华夏互联网科技业 互联网5g黑科技有哪些 宜昌元轩互联网科技有限公司 洛阳昕诺飞互联网科技有限公司 互联网科技的全部知识 朱啸虎曾投资哪些互联网科技企业 中和天地互联网科技有限公司 伊宁互联网科技做什么的 互联网科技资金流入 互联网风格科技公司名称 福建互联网展示科技馆设计 科技互联网经济论坛 北京军民互联网科技公司 绵阳真晨互联网科技有限公司 万达互联网科技 撒么互联网科技公司 新华互联网科技校企合作 上海电发互联网科技有限公司 字节跳动和互联网科技 深圳市优智互联网科技有限公司 互联网科技扶贫时间 中和天地互联网科技有限公司 互联网领先科技活动 绵阳真晨互联网科技有限公司
0