使用特性方式实现上位机软件命令拼接
扫描二维码随身看资讯
使用手机 二维码应用 扫描右侧二维码,您可以
1. 在手机上细细品读~
2. 分享给您的微信好友或朋友圈~
在编写上位机软件时,经常需要处理命令拼接与其他设备进行通信。通常对不同的命令封装成不同的方法,扩展稍显麻烦。本次拟以特性方式实现,以兼顾维护性与扩展性。
思想:
一种命令对应一个类,其类中的各个属性对应各个命令段,通过特性的方式,实现其在这包数据命令中的位置、大端或小端及其转换为对应的目标类型;然后通过反射对其进行拼包,从而得到一包完整数据。
场景:
将一个轴移动到对应的X,Y,Z位置,为了演示,对其共用一个速度。这个移动到指定位置的命令假设按以下顺序构成(为了展示,草率的命令结构):
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
字节 | 2 | s32 | u16 | u16 | u32 | s32 | s32 | s32 | 2 |
说明 | 包头 | 步骤号(ID) | 功能码 | 轴 | 速度 | X位置 | Y位置 | Z位置 | 包尾 |
实现:
创建特性 CmdPropertyAttribute
参数类,每一种命令对应一个参数类,它们继承于参数基类
创建参数基类 ParamBase ,每种数据都是步骤号处于第一位,特把其放入到基类中
创建轴枚举 Axis
创建功能码枚举 FunctionCode
创建移动类 MoveParam ,为了更好展示高低位转换,特对 Speed 属性进行反转
对参数对象进行反射解析,生成对应的数据命令集合
创建扩展类 ParamBaSeextensions
将数据命令与包头,包尾拼接,从而组合成一包完整数据
创建类 CmdHelper
调用:
最后的打印结果为:如果后续在写其他命令,只需继承于 ParamBase 类,在对应的属性上使用 CmdProperty 特性即可
- 1
企鹅岛 官方正版中文版
- 2
情商天花板 2024最新版
- 3
一战到底游戏
- 4
大富翁go 官网版
- 5
一只鱼 安卓版
- 6
我是大校长
- 7
狩猎吧原始人
- 8
坏蛋冰淇淋
- 9
Poppy Playtime 2024最新版
- 10
city lovin 官方正版