{
TAG_NODE data[MaxSize];
UINT8 front,rear;
UINT8 count;
}TAG_QUEUE;
typedef struct //tag_store
{
//UINT8 flag_store; //存储标签的标记:读取标记,发送次数等
UINT32 store_timer; //存储标签时间
//UINT8 store_len; //存储标签的信息长度
//UINT8 store_data[12]; //存储标签是数据
UINT16 codeCRC; //存储标签数据的CRC值
//struct tag_store *store_next;
}TAG_NODE;
#define SUCCESS 0
#define INT8U unsigned char
/*标签存储队列*/
TAG_QUEUE TAG_line;
void InitQueue(TAG_QUEUE *TQ)
{
TQ->front = TQ->rear = 0;
TQ->count = 0;
}
UINT8 Empty(TAG_QUEUE *TQ)
{
return (TQ->front == TQ->rear)?1:0;
}
UINT8 Full(TAG_QUEUE *TQ)
{
return ((TQ->rear+1)%MaxSize == TQ->front)?1:0;
}
UINT8 EnQueue(TAG_QUEUE *TQ, TAG_NODE x)
{
if((TQ->rear+1)%MaxSize == TQ->front)
{
return 1;
}
TQ->count++;
TQ->rear = (TQ->rear+1)%MaxSize;
TQ->data[TQ->rear] = x;
return 0;
}
UINT8 OutQueue(TAG_QUEUE *TQ,TAG_NODE *x)
{
if(Empty(TQ))
{
return 1;
}
TQ->front = (TQ->front+1)%MaxSize;
*x = TQ->data[TQ->front];
TQ->count--;
return 0;
}
UINT8 GetHead(TAG_QUEUE *TQ,TAG_NODE *x)
{
if(Empty(TQ))
{
return 1;
}
*x = TQ->data[(TQ->front+1)%MaxSize];
return 0;
}