#define ADV_DATA_DEPTH 10 //10帧数据深度
#define ADV_DATA_LENGTH_MAX 128 //每帧数据最大长度为128字节
//结构体声明
typedef struct{
U8 ucHeadPtr; //头指针
U8 ucTailPtr; //尾指针
U8 ucAdvData[ADV_DATA_DEPTH][ADV_DATA_LENGTH_MAX];
}ADV_DATA_LIST;
ADV_DATA_LIST stAdvDataList;
//清消息队列
void Adv_Data_Clear(void)
{
stAdvDataList.ucHeadPtr = stAdvDataList.ucTailPtr =0;
}
//获取队列长度
U8 Adv_Data_GetLength()
{
U8 ucLen = 0;
if((stAdvDataList.ucHeadPtr >= ADV_DATA_DEPTH)||(stAdvDataList.ucTailPtr >= ADV_DATA_DEPTH)) //超过数组长度则清零
Adv_Data_Clear();
if( stAdvDataList.ucTailPtr >= stAdvDataList.ucHeadPtr) //如果尾指针大于头指针 则长度正常取 (尾位置 - 头位置)
ucLen = stAdvDataList.ucTailPtr - stAdvDataList.ucHeadPtr;
else //否则若头位置大于尾位置 则表明数据二次写入 头指针靠近消息队列出口 尾指针靠近消息队列入口 长度取(尾位置 + 数组深度 - 头位置)
ucLen = s

本文介绍了一个用C语言实现的简单消息队列,定义了数据结构和相关操作函数,包括清空队列、获取队列长度、添加消息及读取消息的方法。在`main`函数中展示了如何使用这些功能。
最低0.47元/天 解锁文章
607

被折叠的 条评论
为什么被折叠?



