Tag: dmx512

将struct作为字节数组进行访问

我目前正在重写程序以处理使用RDM协议通过串行连接接收的数据,每个数据包由UART接收并具有特定结构但长度可能不同,数据包结构示例如下,假设数据包中的字节数为n(这可能会根据数据包的内容而改变) 我想要做的是在我的C代码中定义一个结构,该结构具有定义的各种参数,但是能够从UART读取和写入结构中的字节,就像结构只是uint8_t的数组一样。 我的问题是我已经读过结构可能并不总是存储在连续的内存部分中,因此采用&RDMPacket1并通过结构递增可能最终导致数据不在正确的位置。 我的另一个问题是,如果我有一个数组来存储结构内最大可能长度(220字节)的数据包数据,那么数据包末尾的校验和将被写入错误的位置。 可以使用哪些方法来接收数据并将其放入结构中? 数据包定义示例(从标准缩短) Byte | Description 0 | START Code – Constant, can be ignored 1 | Sub-Start Code – Contains command for device to process 2 | Message Length – Points to byte number of Checksum High (up to 255) 3-8 | Destination UID – Unique ID of packet Destination 9-14 […]