gpt4 book ai didi

c - 如何正确地将接收到的数据放置到结构(C)中?

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:11 26 4
gpt4 key购买 nike

<分区>

问题只针对C。 vector 、列表和 C++ 求解。

我有接收数据的缓冲区:(从那里开始,U8 就是 uin8_t(unsigned char)等等)

buffer_pic

数据被打包(它总是有关于开始、结束和长度的信息)。

数据示例(十六进制):

(1 包)

24 0C 00 02 00 00 00 11 AA 0D 78 C8

(2 包)

24 0F 00 02 00 00 00 14 D0 07 00 00 0D 7D 53

这里:

  • '24' - 包的开始

  • 2 个字节的完整数据包 len(粗体)

  • 4字节-特殊ID(这里是02 00 00 00)

  • 1字节逗号

  • 数据 block (标记为粗体)

  • '0D' - 数据包结束

  • 最后 2 个字节 - CRC

我想使用结构来处理这些数据。

这是我做的:

typedef __packed struct FM_Packet_s
{
U8 head;
U16 len;
U32 uid;
U8 cmd;
U8 data;
U8 end;
U16 crc;
} FM_Packet_t, *FM_Packet_p;


U8 RX_buff[255];


FM_Packet_t *pFM_Packet = (FM_Packet_t *) &RX_buf;

handlerData()
{

// check received CRC

if(pFM_Packet->uid == ID_NUMBER)
{
if(pFM_Packet->cmd == NEEDED_COMMAND)
{
// command received, make actions

if (pFM_Packet->data == SPECIAL_DATA)
{
// do stuff
}
}
}
}

一切都很好,直到我收到第二个数据包,它在 DATA 字段中有超过 1 个字节。 Now data is blended

当然,“data”字段可能有不同的长度,不仅仅是这两个数据包中显示的。

我如何处理(正确放入结构中)收到的数据?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com