⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 team.c

📁 一组排队函数
💻 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 + -