注意:函数名是项目中的,未修改
#define TX_MSG_LIST_MAX 128 // 发送队列缓存最大数量
typedef struct{
int a;
}T;
/*********************************** 队列 START ****************************************/
/* FB MODBUS DATA FIFO定义 */
typedef struct {
T t_msg[TX_MSG_LIST_MAX]; //消息数组
U32_T u32_read_index; //读索引
U32_T u32_write_index; //写索引
}TX_MSG_LIST_T;
static TX_MSG_LIST_T protocol_tx_msg; //modbus发送FIFO
/*************************************************************
函数名称: inc_rect_msg_queue_init
函数功能: 整流模块通信消息队列初始化
输入参数: pt_msg -- 指向返回的消息
输出参数: 无
返回值 :无
**************************************************************/
void inc_rect_msg_queue_init(void)
{
protocol_tx_msg.u32_read_index = protocol_tx_msg.u32_write_index = 0;
memset(protocol_tx_msg.t_msg, 0, sizeof(protocol_tx_msg.t_msg));
}
/*************************************************************
函数名称: inc_rect_msg_queue_empty
函数功能: 判断整流模块通信消息队列是否为空
输入参数: 无
输出参数: 无
返回值 :0:非空
1:空
**************************************************************/
BOOL_T inc_rect_msg_queue_empty(void)
{
if(protocol_tx_msg.u32_read_index == protocol_tx_msg.u32_write_index)
{
return 1;
}
return 0;
}
/*************************************************************
函数名称: inc_rect_msg_queue_init
函数功能: 写入整流模块通信消息队列数据
输入参数: pt_msg -- 指向要写入到队列的消息
输出参数: 无
返回值 :0:成功;1:失败,缓冲区没有空间了,应用程序可以稍后重试
**************************************************************/
U32_T inc_rect_msg_queue_write(const T *pt_msg)
{
U32_T u32_ret = 0;
if (((protocol_tx_msg.u32_write_index+1)%TX_MSG_LIST_MAX) == protocol_tx_msg.u32_read_index)
{
u32_ret = 1;
}
else
{
u32_ret = 0;
protocol_tx_msg.t_msg[protocol_tx_msg.u32_write_index] = *pt_msg;
protocol_tx_msg.u32_write_index = ((protocol_tx_msg.u32_write_index+1)%TX_MSG_LIST_MAX);
}
return u32_ret;
}
/*************************************************************
函数名称: inc_rect_msg_queue_init
函数功能: 读取整流模块通信消息队列数据
输入参数: 无
输出参数: pt_msg -- 指向读取的消息
返回值 :0:成功,pt_msg指向返回的消息;1:失败,无消息可读
**************************************************************/
U32_T inc_rect_msg_queue_read(T *pt_msg)
{
U32_T u32_ret = 0;
if (protocol_tx_msg.u32_write_index == protocol_tx_msg.u32_read_index)
{
u32_ret = 1;
}
else
{
u32_ret = 0;
*pt_msg = protocol_tx_msg.t_msg[protocol_tx_msg.u32_read_index];
protocol_tx_msg.u32_read_index = ((protocol_tx_msg.u32_read_index+1)%TX_MSG_LIST_MAX);
}
return u32_ret;
}
/*********************************** 队列 END ****************************************/
653

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



