开源免费的上位机数据转换库

一、前言

大家好!我是付工。

我们在进行上位机开发时,从设备端获取到的数据之后,需要进行一定的数据处理及转换,才能生成我们需要用的数据。

这其中就涉及到了各种数据类型之间的相关转换,很多非科班出身的电气工程师,经常会因为弄不清楚各种数据类型之间的转换关系,导致无法获取到自己想要的数据。

因此,我开源了一个数据转换库的项目,放在Gitee上,希望对大家有所帮助。

二、网络架构

整个数据转换库总共包含15个类,包含了各种常用各种数据类型之间的互相转换,每个转换类中的方法都增加了注释,使用起来会很方便。

复制代码
/// <summary>
/// 根据起始地址和长度自定义截取字节数组
/// </summary>
/// <param name="data">字节数组</param>
/// <param name="start">开始字节</param>
/// <param name="length">截取长度</param>
/// <returns>字节数组</returns>
[Description("根据起始地址和长度自定义截取字节数组")]
public static byte[] GetByteArrayFromByteArray(byte[] data, int start, int length)
{
    if (start < 0) throw new ArgumentException("开始索引不能为负数");
    if (length <= 0) throw new ArgumentException("长度必须为正数");
    if (data.Length < (start + length)) 
    throw new ArgumentException("字节数组长度不够或开始索引太大");
    byte[] result = new byte[length];
    Array.Copy(data, start, result, 0, length);
    return result;
}

三、项目应用

在项目上进行应用,可以通过以下两种方式:

1、Nuget安装

通过Nuget包管理器中年搜索xbd.DataConvertLib,点击安装即可,如下所示:

2、Gitee下载

Gitee下载链接:

https://gitee.com/fujiajin/xbd.DataConvertTool

下载之后即包含完整源码,可以集成到项目中或将dll文件和xml文件添加到项目中。

四、使用方法

虽然转换库包含了不同的类,每个类中又包含了很多方法,但是不用担心,只要掌握了以下几个原则,使用起来会很简单。

原则一:首先要确定使用哪个类,类的命名是根据返回值来决定的,这个返回值就是你希望得到的类型。

  • 如果返回布尔值或布尔数组,使用BitLib
  • 如果返回字节数组,使用ByteArrayLib
  • 如果返回短整型或短整型数组,使用ShortLib
  • 以此类推。

原则二:确定好类之后,接下来就是确定方法。

  • 绝大多数方法的命名是按照 Get...From... 来定义的
  • 要明确知道需要什么类型,有什么类型的数据

示例:我们希望从一个字节数组中,某个索引开始截取转换成一个浮点数。

我们希望得到一个浮点数,因此类名选择FloatLib

我们有的是一个字节数组,因此方法名选择GetFloatFromByteArray。

在实际应用中,Visual Studio会有智能提示,我们只需要选择即可。

五、软件工具

大家下载的源码中,运行的界面是基于这个转换库开发的一个测试工具,主要是使用反射和特性来实现的。

这上面罗列了通信库的所有的类和每个类对应的方法,每个类和方法都有对应的注释,然后通过表格输入正确的数据,点击执行结果,即可得到对应的结果。

比如:我们想要将2.5浮点数转成一个字节数组,那么选择ByteArrayLib的GetByteArrayFromFloat方法,第一个参数填写2.5,第二个参数填写大小端,即可得到结果为64,32,0,0

开源不易,希望大家多多点赞分享。

相关推荐
熬夜苦读学习26 分钟前
Qt-- 系统相关
开发语言·qt
弹简特27 分钟前
【Java项目-企悦抽】11-用户与认证模块-实现用户登录03(结束登录功能)-完成测试+对接前端+登录拦截器
java·开发语言
haolin123.28 分钟前
类和对象(下)
c语言·开发语言·c++
大尚来也1 小时前
用 Python 自动整理文件、重命名、分类电脑文件夹
开发语言·python
CVer儿1 小时前
c++二级指针
开发语言·c++
mlidongfeng2 小时前
[AI][C++26] SIMD 编程模型思考
开发语言·c++·人工智能
j7~2 小时前
【Linux】二十七.线程篇四《Linux多线程编程:线程互斥(互斥量的底层到封装)、线程安全和冲入、死锁》---详解
linux·开发语言·c++·线程安全·死锁·线程互斥·重入
刘名喜2 小时前
第09篇-协程基础-Kotlin异步编程
开发语言·kotlin·springboot
其实防守也摸鱼2 小时前
HackBar 工具完全指南:信息探测、漏洞验证与安全测试实战
开发语言·人工智能·学习·安全·网络安全·安全威胁分析·安全性测试
会博通·代码搬运工2 小时前
会博通API对接实战:工程企业文档分布式采集系统的技术实现与Python SDK详解
开发语言·分布式·python·线性代数·矩阵·架构·电子档案合规