《定义循环缓存》由会员分享,可在线阅读,更多相关《定义循环缓存(3页珍藏版)》请在金锄头文库上搜索。
1、 定义循环缓存:#define#define MAX_BUFF_LENMAX_BUFF_LEN 10241024 / 定义缓存大小typedeftypedef structstruct / 定义数据结构 uintuint data;data;DATA_BUFF_T;DATA_BUFF_T;typedeftypedef structstruct / 定义缓存结构 uintuint readPos;readPos;uintuint writePos;writePos;DATA_BUFF_TDATA_BUFF_T DATAMAX_BUFF_LEN;DATAMAX_BUFF_LEN;DATAS_BUF
2、F_T;DATAS_BUFF_T;staticstatic DATAS_BUFF_TDATAS_BUFF_T Buff0;Buff0; / 定义缓存(2)初始化循环缓存:Buff0.readPosBuff0.readPos = = 0;0;Buff0.writePosBuff0.writePos = = 0;0;(3)判断缓存中是否有数据:BOOLBOOL HaveData_Buff(void)HaveData_Buff(void) ifif (Buff0.readPos(Buff0.readPos !=!= Buff0.write.Pos)Buff0.write.Pos)returnretu
3、rn 1;1;elseelsereturnreturn 0;0; (4)向缓存中写数据:intint WriteData(uintWriteData(uint data)data) uintuint nextPos;nextPos;nextPosnextPos = = (Buff0.writePos(Buff0.writePos + + 1)1) % % MAX_BUFF_LEN;MAX_BUFF_LEN;ifif (nectPos(nectPos !=!= Buff0.readPos)Buff0.readPos) / 判断缓存是否满,需要写入数据 的位置等于读数据的位置时 Buff0.DAT
4、AwritePos.dataBuff0.DATAwritePos.data = = data;data;Buff0.writePosBuff0.writePos = = nextPos;nextPos;returnreturn 0;0; /成功 elseelsereturnreturn -1;-1; (5)从缓存中读数据:uintuint ReadData(void)ReadData(void) uintuint dataTemp;dataTemp;ifif (HaveData_Buff()(HaveData_Buff() = 0)0) printf(“bufferprintf(“buffer isis emptyn“);emptyn“);returnreturn -1;-1; dataTempdataTemp = = Buff0.DATAreadPos.data;Buff0.DATAreadPos.data;Buff0.readPosBuff0.readPos = = (Buff0.readPos(Buff0.readPos + + 1)1) % % MAX_BUFF_LEN;MAX_BUFF_LEN;returnreturn dataTemp;dataTemp;