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

📄 fish_notfinish.cpp

📁 在vxworks下开发的一个池塘生态环境系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:



/*加水***/
void AddWater()
{
		MESSAGE rxmsg;
		MESSAGE txmsg;
		txmsg.mSendId=MID_AddWater;

		while(1)
		{
			if(msgQReceive(msgQIdAddWater,(char*)&rxmsg,MAX_MSG_LEN,WAIT_FOREVER)==ERROR)
			{
				printf("rec failed\n");
			}
			//wdStart(AddWater_wdog,Water_Delay_Ticks,(FUNCPTR)Water_Timeout,0);
			if(rxmsg.mData==Apply)
			{
				printf("water=%f\n",water);
				water=1;
				//rxmsg.mData=Reset;
				txmsg.mData=Finish;
				msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}

		}  

}/**AddWater End**/




/**加Food***/

void AddFood()
{ 
		MESSAGE rxmsg;
		MESSAGE txmsg;
		txmsg.mSendId=MID_AddFood;

		while(1)
		{
			if(msgQReceive(msgQIdAddFood,(char*)&rxmsg,MAX_MSG_LEN,WAIT_FOREVER)==ERROR)
			{
				printf("recv failed!");
			}
			//wdStart(AddFood_wdog,Food_Delay_Ticks,(FUNCPTR)Food_Timeout,0);
			if(rxmsg.mData==Apply)
			{
				//printf("\nFoodNum=%d,FoodNum");
				FoodNum=10*B_Fish_Num+7*M_Fish_Num+2*S_Fish_Num;
				
				if(Food<FoodNum)
				{
					printf("\nFood left=%d",Food);
					Food=FoodNum;
					printf("\nFood has added,Food=%d",Food);
				}
				//rxmsg.mData=Reset;
				txmsg.mData=Finish;
				msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}

		}

}/*******AddFood End*******/



/****小鱼*****/

void S_Fish()
{ 
		MESSAGE rxmsg;
		MESSAGE txmsg;
		txmsg.mSendId=MID_S_Fish;

		while(1)
		{
			msgQReceive(msgQIdS_Fish,(char*)&rxmsg,MAX_MSG_LEN,WAIT_FOREVER);
			//wdStart(S_Fish_wdog,S_Delay_Ticks,(FUNCPTR)S_Timeout,0);
			if(rxmsg.mData==Apply)
			{
				if(S_EatedFlag==0)
				{
					if(Food<2*S_Fish_Num)
					{
						Food=0;
						txmsg.mData=Hunger;
						
					}
					else 
					{
						Food=Food-2*S_Fish_Num;
						S_EatedFlag=1;
						txmsg.mData=Finish;
						
					}
				}
				else
				{
					printf("[S_Fsih]:I have eated!\n");
				}

				msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}

		}

}/*****小鱼End****/


/*****中鱼*****/
void M_Fish()
{ 
		MESSAGE rxmsg;
		MESSAGE txmsg;
		txmsg.mSendId=MID_M_Fish;

		while(1)
		{
			msgQReceive(msgQIdM_Fish,(char*)&rxmsg,MAX_MSG_LEN,WAIT_FOREVER);
			//wdStart(M_Fish_wdog,M_Delay_Ticks,(FUNCPTR)M_Timeout,0);
			if(rxmsg.mData==Apply)
			{
				if(M_EatedFlag==0)
				{
					if(Food<7*M_Fish_Num)
					{
						Food=0;
						txmsg.mData=Hunger;
						
					}
					else
					{
						Food-=7*M_Fish_Num;
						M_EatedFlag=1;
						txmsg.mData=Finish;
						
					
					}
				}
				else
				{
					printf("[M_Fsih]:I have eated!\n");
				}

				msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}

		}

}/****中鱼End****/


/****大鱼****/
void B_Fish()
{ 
		MESSAGE rxmsg;
		MESSAGE txmsg;
		txmsg.mSendId=MID_B_Fish;

		while(1)
		{
			msgQReceive(msgQIdB_Fish,(char*)&rxmsg,MAX_MSG_LEN,WAIT_FOREVER);
			//wdStart(B_Fish_wdog,B_Delay_Ticks,(FUNCPTR)B_Timeout,0);
			if(rxmsg.mData==Apply)
			{ 
				if(B_EatedFlag==0)
				{
					if(Food<10*B_Fish_Num)
					{
						Food=0;
						txmsg.mData=Hunger;
						
					}
					else if(Food<=15*B_Fish_Num)
					{
						Food=0;
						B_EatedFlag=1;
						txmsg.mData=Finish;
						
					
					}
					else
					{
						Food-=15*B_Fish_Num;
						B_EatedFlag=1;
						txmsg.mData=Finish;
						
					
					}
				}
				else
				{
					printf("[B_Fsih]:I have eated!\n");
				}

				msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}

		}

}/*****大鱼End******/





void Delete()
{ 
 MESSAGE rxmsg;
 MESSAGE txmsg;
 txmsg.mSendId=MID_Delete;

 while(1)
 {
  msgQReceive(msgQIdDelete,(char*)&rxmsg,MAX_MSG_LEN,WAIT_FOREVER);
  if(rxmsg.mData==S_DeadForHunger)
  {
	  S_Fish_Num=0;
	  S_HungerNum=0;
	  printf("\n[Delete]:SmallFishes are dead for Hunger!");
  }
  if(rxmsg.mData==M_DeadForHunger)
  {
	  M_Fish_Num=0;
	  M_HungerNum=0;
	  printf("\n[Delete]:MidFishes are dead for Hunger!");
  }
  if(rxmsg.mData==B_DeadForHunger)
  {
	  B_Fish_Num=0;
	  B_HungerNum=0;
	  printf("\n[Delete]:BigFishes are dead for Hunger!");
  }
	  if(rxmsg.mData==S_DeadForWater)
	  {
		  S_Fish_Num=0;
		  printf("\n[Delete]:Water is too little,SmallFishes are dead!");

	  }
	  if(rxmsg.mData==M_DeadForWater)
	  {
		  M_Fish_Num=0;
		  printf("\n[Delete]:Water is too little,MidFishes are dead!");

	  }
	  if(rxmsg.mData==B_DeadForWater)
	  {
		  B_Fish_Num=0;
		  printf("\n[Delete]:Water is too little,BigFishes are dead!");

	  }
 }
}/*****Delete End*****/

/****每天的检查,检查时间****/

void Checktime()
{ 
 MESSAGE rxmsg;
 MESSAGE txmsg;
 txmsg.mSendId=MID_Checktime;

 Hourtime++;
 if(Hourtime%18==0)
 {
	 
	 txmsg.mData=Month;
	 msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
 }
 
 
 else if(Hourtime%3==0)
	 {
	 
	 txmsg.mData=Day;
	 msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
	 }
 

     else 
	 {
	 txmsg.mData=Hour;
	 msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
	 }

 
 wdStart(hour_wdog,Delay_Ticks,(FUNCPTR)Checktime,0);
}/***Checktime End****/

//////////////////各任务的中断程序/////////////////////
/*void S_Timeout()
{
	//logMsg("\n[S_Fish]:Some problem happened!",0,0,0,0,0,0);
	wdStart(S_Fish_wdog,S_Delay_Ticks,(FUNCPTR)B_Timeout,0);
	MESSAGE rxmsg;
	MESSAGE txmsg;
	txmsg.mSendId=MID_S_Fish;
	txmsg.mData=T_Finish;
	msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
}


void M_Timeout()
{
	//logMsg("\n[M_Fish]:Some problem happened!",0,0,0,0,0,0);
	wdStart(M_Fish_wdog,M_Delay_Ticks,(FUNCPTR)B_Timeout,0);
	MESSAGE rxmsg;
	MESSAGE txmsg;
	txmsg.mSendId=MID_M_Fish;
	txmsg.mData=T_Finish;
	msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
}



void B_Timeout()
{
	//logMsg("\n[B_Fish]:Some problem happened!",0,0,0,0,0,0);
	wdStart(B_Fish_wdog,B_Delay_Ticks,(FUNCPTR)B_Timeout,0);
	MESSAGE rxmsg;
	MESSAGE txmsg;
	txmsg.mSendId=MID_B_Fish;
	txmsg.mData=T_Finish;
	msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
}


void Water_Timeout()
{
	//logMsg("\n[AddWater]:Some problem happened!",0,0,0,0,0,0);
	wdStart(AddWater_wdog,Water_Delay_Ticks,(FUNCPTR)Water_Timeout,0);
	MESSAGE rxmsg;
	MESSAGE txmsg;
	txmsg.mSendId=MID_AddWater;
	txmsg.mData=T_Finish;
	msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
}


void Food_Timeout()
{
	//logMsg("\n[AddFood]:Some problem happened!",0,0,0,0,0,0);
	wdStart(AddFood_wdog,Food_Delay_Ticks,(FUNCPTR)Food_Timeout,0);
	MESSAGE rxmsg;
	MESSAGE txmsg;
	txmsg.mSendId=MID_AddFood;
	txmsg.mData=T_Finish;
	msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
}



void Update_Timeout()
{
	//logMsg("\n[Update]:Some problem happened!",0,0,0,0,0,0);
	wdStart(Update_wdog,Update_Delay_Ticks,(FUNCPTR)Update_Timeout,0);
	MESSAGE rxmsg;
	MESSAGE txmsg;
	txmsg.mSendId=MID_Update;
	txmsg.mData=T_Finish;
	msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
}*/


void Stop()
{
 /*MESSAGE rxmsg;
 MESSAGE txmsg;
 txmsg.mSendId=MID_Stop;
 txmsg.mData=Finish;*/
 printf("\n bye!");
 //msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_URGENT);

 wdDelete(hour_wdog);
 wdDelete(S_Fish_wdog);
 wdDelete(M_Fish_wdog);
 wdDelete(B_Fish_wdog);
 wdDelete(AddWater_wdog);
 wdDelete(AddFood_wdog);
 wdDelete(Update_wdog);

 //taskDelete(tidChecktime);
 taskDelete(tidServer);
 taskDelete(tidAddFood);
 taskDelete(tidAddWater);
 taskDelete(tidDelete);
 taskDelete(tidS_Fish);
 taskDelete(tidM_Fish);
 taskDelete(tidB_Fish);
 taskDelete(tidUpdate);


 msgQDelete(msgQIdServer);
 msgQDelete(msgQIdS_Fish);
 msgQDelete(msgQIdM_Fish);
 msgQDelete(msgQIdB_Fish);
 //msgQDelete(msgQIdChecktime);
 msgQDelete(msgQIdAddFood);
 msgQDelete(msgQIdUpdate);
 msgQDelete(msgQIdDelete);

 return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -