购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 字节集合类ByteArray封装及应用

对于数据类型,我们在前面的11种常用数据类型的基础上,增加了一个ByteArray字节数组类型。我们针对这些数据类型创建一个枚举,包含bool、byte、short、ushort、int、uint、float、double、long、ulong、string、bytearray,后面针对各个类型进行具体说明。12种常用数据类型的枚举定义如下所示。

2.2.1 字节集合类ByteArray

首先介绍的是字节集合ByteArray,它在上位机开发过程中经常被使用,特别是在编写通信库或处理配方应用时。通信中的数据报文通常以字节数组的形式存在,但直接操作字节数组可能不够便捷,因此通常会选择使用字节List集合。然而,字节List集合本身可能存在一些操作上的不足。

ByteArray基于面向对象的设计思想,对字节List集合进行了封装,以提供更便捷的报文拼接、处理及配方应用等功能。

(1)初始化及相关属性:ByteArray的内部封装了一个List<byte>集合,所有的操作都是针对这个集合进行的。我们为这个类实现了一个索引器,可以通过ByteArray实例直接操作集合。此外,该类提供了两个只读属性,即Length和Array。Length属性返回集合的长度,而Array则将集合转换成数组返回。

(2)清空数据:清空数据就是清空字节List集合,这里直接重新实例化字节List集合。

(3)添加一个字节数组:添加字节数组的方法实际上是对AddRange方法的封装应用,它使我们可以直接调用Add方法来添加整个数组。这种设计使我们在后续的开发过程中能够方便地扩展支持不同的数据类型。

(4)添加若干个字节:一般情况下,若需要一次性添加多个字节,需先将其转换成字节数组,再进行添加。方法内部提供了一种途径,即将多个字节作为参数传入,并将其转换成字节数组后添加到集合中。尽管理论上可无限扩展参数数量,但为简化此过程,在ByteArrany中,我们提供了一方法,支持3个参数。如需增加参数数量,请自行调整。

(5)添加短整型数据:如果想要将一个短整型数据添加到集合中,并且希望处理大小端转换,我们可以直接封装这个过程,让用户传入相应的参数即可,这里用到的一些方法会在后面讲解到。

2.2.2 ByteArray实际应用

从代码中可以看出,ByteArray就是一个普通类,其内部封装了一个字节List集合,可以通过属性Array获取数组,同时提供了各种添加及清除数据的方法。下面是报文拼接实际使用案例。

这里是一个Modbus RTU通信协议的报文封装过程,依次按照顺序添加从站地址、功能码、起始寄存器地址、寄存器数量和CRC校验,代码如下所示。 wlEKxSn/2wiNswr6kuuRJbhVxKA0rttWoEEJSw2cJC7q2F0bcXCyg7BIQdtK1XbX

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开