12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /*********************************************************************
- File Name : LoopQueue.c
- Description : 循环队列
- 此循环队列元素为 unsigned char类型。
- *********************************************************************/
- #include "LoopQueue.h"
- #include "string.h"
- /*********************************************************************
- *UCQueueInit
- 初始化UCQueue队列
- **********************************************************************/
- void UCQueueInit(UCQueue *queue,unsigned char *pBuf, unsigned short BufLen)
- {
- queue->buf=pBuf;
- queue->size=BufLen;
- queue->in=0;
- queue->out=0;
- }
- /*********************************************************************
- *UCQueueOut
- 出队列
- 返回-1标识队列已空,返回0~255为出队列元素值
- **********************************************************************/
- int UCQueueOut(UCQueue *queue)
- {
- unsigned char data;
- if(queue->in==queue->out)return -1;
- data=queue->buf[queue->out];
- if(++queue->out>=queue->size)queue->out=0;
- return (int)data;
- }
- /*********************************************************************
- *UCQueueIn
- 入队列
- 返回-1标识队列已满,返回0入成功
- **********************************************************************/
- int UCQueueIn(UCQueue *queue,unsigned char data)
- {
- unsigned short out=queue->out;
- unsigned short in=queue->in;
- if(++in>=queue->size)in=0;
- if(in==out)return -1;
- queue->buf[queue->in]=data;
- queue->in=in;
- return 0;
- }
- /*********************************************************************
- *USQueueInit
- 初始化USQueue队列
- **********************************************************************/
- void USQueueInit(USQueue *queue,unsigned short *pBuf, unsigned short BufLen)
- {
- queue->buf=pBuf;
- queue->size=BufLen;
- queue->in=0;
- queue->out=0;
- }
- /*********************************************************************
- *USQueueOut
- 出队列
- 返回-1标识队列已空,返回0~65535为出队列元素值
- **********************************************************************/
- int USQueueOut(USQueue *queue)
- {
- unsigned short data;
- if(queue->in==queue->out)return -1;
- data=queue->buf[queue->out];
- if(++queue->out>=queue->size)queue->out=0;
- return (int)data;
- }
- /*********************************************************************
- *USQueueIn
- 入队列
- 返回-1标识队列已满,返回0入成功
- **********************************************************************/
- int USQueueIn(USQueue *queue,unsigned short data)
- {
- unsigned short out=queue->out;
- unsigned short in=queue->in;
- if(++in>=queue->size)in=0;
- if(in==out)return -1;
- queue->buf[queue->in]=data;
- queue->in=in;
- return 0;
- }
- /********************************FILE END*****************************/
|