我正在使用队列来存储来自远程传感器节点的实时传入数据包。队列看起来像这样。
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);
每次我将传入的数据包(ie.aRxBuf)存储到多维数组中的一行中。我也从多维数组Rx_Buffer中提取了几个块数据。例如,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])
如何提取这些数据块?
答案 0 :(得分:0)
一种方法是创建数据可以是MAX LENGTH的数组。
然后创建一个指向char的指针并将其设置为 &amp;(rx_queue.Rx_buffer [rx_queue.front] [15])
然后调用memcpy()函数,
将当前长度复制为第三个参数 -