从2D Array中提取数据块

时间:2015-04-23 23:34:24

标签: c queue

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

    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]) 

如何提取这些数据块?

1 个答案:

答案 0 :(得分:0)

一种方法是创建数据可以是MAX LENGTH的数组。

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

然后调用memcpy()函数,

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