gpt4 book ai didi

c - 从二维数组中提取数据 block

转载 作者:行者123 更新时间:2023-11-30 17:15:54 25 4
gpt4 key购买 nike

我正在使用队列来存储来自远程传感器节点的实时传入数据包。队列看起来像这样。

    unsigned char aRxBuf[100]; //Buffer to receive incoming packet

typedef struct queue
{
unsigned char front;
unsigned char rear;
unsigned char Rx_buffer[5][128]; //Buffer to store incoming packets
}QUEUE;

Queue rx_queue;

每次数据包到达时,我都会插入到队列中。

  in_queue(aRxBuf);

此外,每次我将传入数据包(即 aRxBuf)存储到多维数组中的一行中。我还从多维数组 Rx_Buffer 中提取一些 block 数据。例如,RX_PACKET_LENGTH 将驻留在这些索引中,并且始终是固定的。因此使用以下方式很容易提取。

  #define RX_PACKET_LENGTH   (rx_queue.Rx_buffer[rx_queue.front][2]<<8 | rx_queue.Rx_buffer[rx_queue.front][3]) 

现在我的问题是,我需要提取大小始终变化的数据的某些部分。也就是说,如果我想从 Rx_buffer 中提取数据,其起始索引始终为 15,但结束索引始终变化。举个例子吧

  rx_queue.Rx_buffer[rx_queue.front][15])
to
rx_queue.Rx_buffer[rx_queue.front][30])

 rx_queue.Rx_buffer[rx_queue.front][15])
to
rx_queue.Rx_buffer[rx_queue.front][44])

如何提取这些数据 block ?

最佳答案

一种方法是创建一个数据最大长度的数组。

然后创建一个指向 char 的指针并将其设置为&(rx_queue.Rx_buffer[rx_queue.front][15])

然后调用memcpy()函数,

将要复制的当前长度作为第三个参数 -

关于c - 从二维数组中提取数据 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29836197/

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