📄 team.c
字号:
/*****************************************************************
** 排队函数
**
**
** 文 件 名: Team.C
** 设 计 人: 林勇奇
** 日 期: 2003年7月9日
** 描 述: PC机向主控箱发送的每一组命令均为3个字节,命令队列可
** 容纳6组命令;
** 主控箱向PC机发送的节点数据每组均为3个字节,命令队列
** 可容纳6组数据;
**
** 修改日期:
**
******************************************************************/
#define ORDER_TEAM_MAX 18 //接收命令队列长度
unsigned char ORDER_TEAM[ORDER_TEAM_MAX]; //命令队列定义
unsigned char Order_Team_head,Order_total; //定义排首与命令总数变量
#define DATA_TEAM_MAX 15 //接收节点数据队列长度
unsigned char DATA_TEAM[DATA_TEAM_MAX]; //节点数据队列定义
unsigned char Data_Team_head,Data_total; //定义排首与数据总数变量
/******************************************************************/
/*函 数 名:Order_in_team(unsigned char c) */
/*功 能:命令进排队 */
/*入 口:要进入排队的一个字节 */
/*返 回:-1 ->失败、0 ->数据成功进入排队 */
/*全局变量:ORDER_TEAM[ORDER_TEAM_MAX],Order_Team_head,Order_total */
/*调用模块:无 */
/******************************************************************/
char Order_in_team(unsigned char c)
{
unsigned char Team_caoda; //定义排尾变量
if(Order_total>=ORDER_TEAM_MAX)
return -1;
if((Order_Team_head + Order_total)>ORDER_TEAM_MAX) //取得排尾
Team_caoda=Order_Team_head + Order_total - ORDER_TEAM_MAX - 1;
else
Team_caoda=Order_Team_head + Order_total+1;
ORDER_TEAM[Team_caoda]=c; //将数据存入队列
Order_total++; //数据总数加1
return 0;
}
/*****************************************************************/
/*函 数 名:order_out_team(void) */
/*功 能:命令出排队 */
/*入 口:无 */
/*返 回:-1 ->失败、其他 ->从排队中取出的一个字节 */
/*全局变量:ORDER_TEAM[TEAM_MAX],Order_Team_head,Order_total */
/*调用模块:无 */
/*****************************************************************/
char Order_out_team(void)
{
unsigned char c;
if(Order_total==0) //若排队为空,返回-1
return -1;
c=ORDER_TEAM[Order_Team_head]; //将数据队列中取出
Order_Team_head++; //调整排首
if(Order_Team_head > ORDER_TEAM_MAX) //若到顶则翻转
Order_Team_head=0;
Order_total--; //数据总数减1
return c;
}
/*****************************************************************/
/*函 数 名:Date_in_team(unsigned char c) */
/*功 能:数据进排队 */
/*入 口:要进入排队的一个字节 */
/*返 回:-1 ->失败、0 ->数据成功进入排队 */
/*全局变量:DATA_TEAM[DATA_TEAM_MAX],Data_Team_head,Data_total */
/*调用模块:无 */
/*****************************************************************/
char Data_in_team(unsigned char c)
{
unsigned char Team_caoda; //定义排尾变量
if(Data_total>=DATA_TEAM_MAX)
return -1;
if((Data_Team_head + Data_total) > DATA_TEAM_MAX) //取得排尾
Team_caoda=Data_Team_head + Data_total - DATA_TEAM_MAX - 1;
else
Team_caoda=Data_Team_head + Data_total+1;
DATA_TEAM[Team_caoda]=c; //将数据存入队列
Data_total++; //数据总数加1
return 0;
}
/*****************************************************************/
/*函 数 名:Date_out_team(void) */
/*功 能:数据出排队 */
/*入 口:无 */
/*返 回:-1 ->失败、其他 ->从排队中取出的一个字节 */
/*全局变量:DATA_TEAM[DATA_TEAM_MAX],Data_Team_head,Data_total */
/*调用模块:无 */
/*****************************************************************/
char Data_out_team(void)
{
unsigned char c;
if(Data_total==0) //若排队为空,返回-1
return -1;
c=DATA_TEAM[Data_Team_head]; //将数据队列中取出
Data_Team_head++; //调整排首
if(Data_Team_head > DATA_TEAM_MAX) //若到顶则翻转
Data_Team_head=0;
Data_total--; //数据总数减1
return c;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -