我在将一条消息解析成结构体时遇到了一些问题。我知道这条消息被分成了字节,并且这条消息始终是11个字节长的。有人告诉我,一个非常优雅的解决方案是将传入的缓冲区强制转换为字节的结构体来解析数据。我的问题是如何执行该功能。我听说通过将缓冲区强制转换为char *,您应该能够在一两行内执行转换。
typedef struct tStateMsg {
uint8_t reportID;
uint8_t ctrlName1;
uint8_t State1;
uint8_t ctrlName2;
uint8_t State2;
uint8_t ctrlName3;
uint8_t State3;
uint8_t ctrlName4;
uint8_t State4;
uint8_t ctrlName5;
uint8_t State5;
} StateMsg;
void SetState(uint8 msgBuffer[], uint8 bufferSize) //BufferSize is always 11
{
//Parse the message to the struct.
}
我知道需要额外的错误检查来确保消息始终为11个字节,并且所有我期望的数据都存在,但是我现在会暂时忽略它。
谢谢你的帮助!
sizeof(tStateMsg) >= 11
。 - NathanOliver