回 帖 发 新 帖 刷新版面

主题:[讨论]如何解决这样的问题?

我现在从串口接收到一组返回值存放在数组中:
Byte[] mbyte = new Byte[23];
serialPort.Read(mbyte, 0, 23);
mbyte中的内容是(16进制表示):
AA F1 89 1 0 0 0 0 0 0 0 0 0 0 0 0 3F 31 EB 85 13 A0 FF

现在定义一个结构:
struct retu
        {
            public byte a;//数据头1
            public byte b;//下位机地址
            public byte c;//命令
            public byte d;//状态1
            public float e;//力4
            public float f;//电压
            public float g;//电流
            public float h;//运动时间
            public byte i;//数据长度
            public byte Verify;//校验
            public byte j;//数据尾
        }
就够大小也为23个字节(byte占1字节,float占4字节)。

数组与结构的对应关系是:
public byte a;//数据头1    AA
public byte b;//下位机地址    F1
public byte c;//命令        89
public byte d;//状态        1
public float e;//力        0 0 0 0
public float f;//电压        0 0 0 0
public float g;//电流        0 0 0 0
public float h;//运动时间    3F 31 EB 85 
public byte i;//数据长度    13 
public byte Verify;//校验    A0 
public byte j;//数据尾    FF

请问使用什么方法可以使mbyte和retu对应起来,在程序中直接使用retu.e得出力,retu.f得出电压及其他数据。使用指针可以么?怎么实现?

回复列表 (共1个回复)

沙发

既然存在这种对应关系,你写个方法把数组中的内容依次赋值给struct的各个字段之后再使用不就可以了

我来回复

您尚未登录,请登录后再回复。点此登录或注册