|
(QueueOut(&Send_Queue,&Byte) == QueueOperateOk
从Send_Queue队列中处于队首位置取出一个byte,放到Byte变量的地址上。并返回:成功,失败(队列已取空).
.h:
#define ElemType unsigned char
#define QueueSize 62
#define QueueFull 0
#define QueueEmpty 1
#define QueueOperateOk 2
struct FifoQueue
{
unsigned char front;
unsigned char rear;
unsigned char count;
ElemType dat[QueueSize];
};
//Queue Initalize
extern void QueueInit(struct FifoQueue *Queue);
// Queue In
extern unsigned char QueueIn(struct FifoQueue *Queue,ElemType sdat);
// Queue Out
extern unsigned char QueueOut(struct FifoQueue *Queue,ElemType *sdat);
#endif
.c:
//Queue Init
void QueueInit(struct FifoQueue *Queue)
{
Queue->front = Queue->rear;
Queue->count = 0;
}
// Queue In
unsigned char QueueIn(struct FifoQueue *Queue,ElemType sdat)
{
if((Queue->front == Queue->rear) && (Queue->count == QueueSize))
{ // full
return QueueFull;
}
else
{ // in
Queue->dat[Queue->rear] = sdat;
Queue->rear = (Queue->rear + 1) % QueueSize;
Queue->count = Queue->count + 1;
return QueueOperateOk;
}
}
// Queue Out
unsigned char QueueOut(struct FifoQueue *Queue,ElemType *sdat)
{
if((Queue->front == Queue->rear) && (Queue->count == 0))
{ // empty
return QueueEmpty;
}else
{ // out
*sdat = Queue->dat[Queue->front];
Queue->front = (Queue->front + 1) % QueueSize;
Queue->count = Queue->count - 1;
return QueueOperateOk;
}
}
|
|