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

📄 fish_notfinish.cpp

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

void Start()
{
 /**************初始化数据********************************/

 water=1.0;
 Hourtime=0;
 Daytime=0;
 Monthtime=0;
 S_Fish_Num=1;
 M_Fish_Num=2;
 B_Fish_Num=1;
 S_HungerNum=0;
 M_HungerNum=0;
 B_HungerNum=0;

 S_EatedFlag=0;
 M_EatedFlag=0;
 B_EatedFlag=0; 
 Food=10*B_Fish_Num+7*M_Fish_Num+2*S_Fish_Num;
 FoodNum=10*B_Fish_Num+7*M_Fish_Num+2*S_Fish_Num;
 
 /**************创建消息队列******************************/

 msgQIdServer=msgQCreate(MAX_MSG_Server,MAX_MSG_LEN,MSG_Q_PRIORITY);
 msgQIdS_Fish=msgQCreate(MAX_MSGS,MAX_MSG_LEN,MSG_Q_PRIORITY);
 msgQIdM_Fish=msgQCreate(MAX_MSGS,MAX_MSG_LEN,MSG_Q_PRIORITY);
 msgQIdB_Fish=msgQCreate(MAX_MSGS,MAX_MSG_LEN,MSG_Q_PRIORITY);
 //msgQIdChecktime=msgQCreate(MAX_MSGS,MAX_MSG_LEN,MSG_Q_PRIORITY);
 msgQIdAddFood=msgQCreate(MAX_MSGS,MAX_MSG_LEN,MSG_Q_PRIORITY);
 msgQIdDelete=msgQCreate(MAX_MSGS,MAX_MSG_LEN,MSG_Q_PRIORITY);
 msgQIdUpdate=msgQCreate(MAX_MSGS,MAX_MSG_LEN,MSG_Q_PRIORITY);
 msgQIdAddWater=msgQCreate(MAX_MSGS,MAX_MSG_LEN,MSG_Q_PRIORITY);

 /*StartSem=semBCreate(SEM_Q_FIFO,SEM_EMPTY);*/

 /**************创建任务**********************************/

 tidServer=taskSpawn("tServer",215,0,STACK_SIZE,(FUNCPTR)Server,0,0,0,0,0,0,0,0,0,0);
 //tidChecktime=taskSpawn("tchecktime",110,0,STACK_SIZE,(FUNCPTR)Checktime,0,0,0,0,0,0,0,0,0,0); 
 tidAddWater=taskSpawn("tAddWater",200,0,STACK_SIZE,(FUNCPTR)AddWater,0,0,0,0,0,0,0,0,0,0);
 tidAddFood=taskSpawn("tAddFood",200,0,STACK_SIZE,(FUNCPTR)AddFood,0,0,0,0,0,0,0,0,0,0);
 tidDelete=taskSpawn("tDelete",180,0,STACK_SIZE,(FUNCPTR)Delete,0,0,0,0,0,0,0,0,0,0);
 tidUpdate=taskSpawn("tUpdate",200,0,STACK_SIZE,(FUNCPTR)Update,0,0,0,0,0,0,0,0,0,0);
 tidS_Fish=taskSpawn("tS_Fish",198,0,STACK_SIZE,(FUNCPTR)S_Fish,0,0,0,0,0,0,0,0,0,0);
 tidM_Fish=taskSpawn("tM_Fish",196,0,STACK_SIZE,(FUNCPTR)M_Fish,0,0,0,0,0,0,0,0,0,0);
 tidB_Fish=taskSpawn("tB_Fish",194,0,STACK_SIZE,(FUNCPTR)B_Fish,0,0,0,0,0,0,0,0,0,0);


 /**************创建看门狗*****/

 hour_wdog=wdCreate();
 S_Fish_wdog=wdCreate();
 M_Fish_wdog=wdCreate();
 B_Fish_wdog=wdCreate();
 Update_wdog=wdCreate();
 AddFood_wdog=wdCreate();
 AddWater_wdog=wdCreate();


 
 MESSAGE txmsg;

 txmsg.mSendId=MID_Start;
 txmsg.mData=Apply;
 
 if(msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),WAIT_FOREVER,MSG_PRI_URGENT)==ERROR)
 {printf("Start msg failed\n");}

 printf("\nlength=%d",sizeof(txmsg));
 printf("\n%d",txmsg.mData);
 printf("\nhahaaha");
 return;

}


/****************Server任务******************************/

void Server()
{



	MESSAGE rxmsg;
	MESSAGE txmsg;
	txmsg.mSendId=MID_Server;


	printf("guoshanshan");
 	   
       

	
	while(1)
	{
	
		
		msgQReceive(msgQIdServer,(char*)&rxmsg,MAX_MSG_LEN,WAIT_FOREVER);
		//printf("Do you run");
		//printf("nizenmy\n");
  
		/*printf("\n%d",rxmsg.mData);
		/****是否发给自己***/

		/****检查是否是某个任务的消息***/


		/******接收start的消息****/
		if(rxmsg.mSendId==MID_Start)
		{
			rxmsg.mSendId=Reset;
		 if(rxmsg.mData==Apply)
		 {
			wdStart(hour_wdog,Delay_Ticks,(FUNCPTR)Checktime,0);
			
			txmsg.mData=Apply;
			msgQSend(msgQIdS_Fish,(char*)&txmsg,4,NO_WAIT,MSG_PRI_NORMAL);
		 }
		}/*接收start end*/

		 /******接收小鱼的消息****/
		else if(rxmsg.mSendId==MID_S_Fish)
		{
				rxmsg.mSendId=Reset;
				
				if(rxmsg.mData==Finish)
				{
				printf("\n[S_Fish]:I am enough!");
				}
				else if(rxmsg.mData==T_Finish)
				{
				printf("\n[S_Fish]:Some Problem!");
				}
				else if(rxmsg.mData==Hunger)
			{
				printf("huanger\n");
				S_HungerNum++;
				if(S_HungerNum<S_Hunger_Deadline)
				{
					printf("\n[S_Fish]:I am hunger!");
				}
				else 
				{
					txmsg.mData=S_DeadForHunger;
					msgQSend(msgQIdDelete,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
				}
			}
   	   /*让中鱼进食*/
			txmsg.mData=Apply;
			msgQSend(msgQIdM_Fish,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
		}

  /******接收中鱼的消息*****/
		else if(rxmsg.mSendId==MID_M_Fish)
	{	printf("recv=%d",rxmsg.mData);
			rxmsg.mSendId=Reset;
		if(rxmsg.mData==Finish)
		{
			printf("\n[M_Fish]:I am enough!");
		}

		else if(rxmsg.mData==T_Finish)
		{
			printf("\n[M_Fish]:Some Problem!");
		}
		else if(rxmsg.mData==Hunger)
		{
			M_HungerNum++;
			if(S_HungerNum<M_Hunger_Deadline)
			{
				printf("\n[M_Fish]:I am hunger!");
			}
			else 
			{
				txmsg.mData=M_DeadForHunger;
				msgQSend(msgQIdDelete,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}
		}
       /*让大鱼进食*/
       txmsg.mData=Apply;
       msgQSend(msgQIdB_Fish,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
  }

  /******接收大鱼的消息*****/
		else if(rxmsg.mSendId==MID_B_Fish)
  {
			rxmsg.mSendId=Reset;
			if(rxmsg.mData==Finish)
			{
				printf("\n[B_Fish]:I am enough!");
			}

			else if(rxmsg.mData==T_Finish)
			{
				printf("\n[B_Fish]:Some Problem!");
			}
			else if(rxmsg.mData==Hunger)
			{
				B_HungerNum++;
				if(B_HungerNum<B_Hunger_Deadline)
				{
					printf("\n[B_Fish]:I am hunger!");
				}
				else 
				{
					txmsg.mData=B_DeadForHunger;
					msgQSend(msgQIdDelete,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
				}
			}
  }/*接收鱼end*/



/******接收Checktime****/
		else if(rxmsg.mSendId==MID_Checktime)
  {
			rxmsg.mSendId=Reset;
			if(rxmsg.mData==Hour)
			{
				txmsg.mData=Apply;
				msgQSend(msgQIdS_Fish,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
				printf("chichic");
			}
			else if(rxmsg.mData==Day)
			{   
				Daytime++;
				printf("\n[Checktime]:%d days later,fish number are following:",Daytime);
				printf("\nSmallfish are:%d.\nMidfish are:%d.\nBigfish are:%d",S_Fish_Num,M_Fish_Num,B_Fish_Num);
				printf("\nfood=%d",Food);
				water*=0.9;
				S_EatedFlag=0;
				M_EatedFlag=0;
				B_EatedFlag=0;
	   
			if(water<B_Water_Deadline) /*******?ì2é??1?2?1?****/
			{
				txmsg.mData=B_DeadForWater;
				msgQSend(msgQIdDelete,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}
			if(water<M_Water_Deadline)
			{
				txmsg.mData=M_DeadForWater;
				msgQSend(msgQIdDelete,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}
			if(water<S_Water_Deadline)
			{
				txmsg.mData=S_DeadForWater;
				msgQSend(msgQIdDelete,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}

			txmsg.mData=Apply;
			if(msgQSend(msgQIdAddWater,(char*)&txmsg,sizeof(txmsg),WAIT_FOREVER,MSG_PRI_NORMAL)==ERROR)
			{printf("msg send failed\n");}
			printf("\nare you ok\n");

			}
			else if(rxmsg.mData==Month)
			{
				printf("ruiruiruirui");
				water=water*0.9;
				S_EatedFlag=0;
				M_EatedFlag=0;
				B_EatedFlag=0;
				Daytime++;
				Monthtime++;
	
			if(water<B_Water_Deadline) /*******?ì2é??1?2?1?****/
			{
				txmsg.mData=B_DeadForWater;
				msgQSend(msgQIdDelete,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}
			if(water<M_Water_Deadline)
			{
				txmsg.mData=M_DeadForWater;
				msgQSend(msgQIdDelete,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}
			if(water<S_Water_Deadline)
			{
				txmsg.mData=S_DeadForWater;
				msgQSend(msgQIdDelete,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}
			printf("youbing");
			txmsg.mData=Apply;
			msgQSend(msgQIdUpdate,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			

			}
   	  

 }/*接收Checktime end*/
 

		  /****接收AddWater**/
		else if(rxmsg.mSendId==MID_AddWater)
  {
			rxmsg.mSendId=Reset;
	  
			if(rxmsg.mData==Finish)
			{
				
				txmsg.mData=Apply;
				msgQSend(msgQIdAddFood,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}
			else if(rxmsg.mData==T_Finish)
			{
				printf("\n[AddWater]:Some Problem!");
				txmsg.mData=Apply;
				msgQSend(msgQIdAddFood,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}


  }/*接收AddWater end*/
  /*****接收AddFood*****/

		else if(rxmsg.mSendId==MID_AddFood)
  {
			rxmsg.mSendId=Reset;
	  
			if(rxmsg.mData==Finish)
			{
				txmsg.mData=Apply;
				msgQSend(msgQIdS_Fish,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}
			else if(rxmsg.mData==T_Finish)
			{
				printf("\n[AddFood]:Some Problem!");
				txmsg.mData=Apply;
				msgQSend(msgQIdS_Fish,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}

  }/*接收AddFood end*/



		/*****接收Update****/
	   else if(rxmsg.mSendId==MID_Update)
  {
		   rxmsg.mSendId=Reset;
		   if(rxmsg.mData==Finish)
			{
				//printf("\n[Update]:Update Finish!");
				txmsg.mData=Apply;
				msgQSend(msgQIdAddWater,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			} 
			else if(rxmsg.mData==T_Finish)
			{
				printf("\n[Update]:Some Problem!");
				txmsg.mData=Apply;
				msgQSend(msgQIdAddWater,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}

  }/*接收Update end*/









	}/*while end*/
}/****Server End****/











void Update()
{ 
		MESSAGE rxmsg;
		MESSAGE txmsg;
		txmsg.mSendId=MID_Update;

		while(1)
		{
			msgQReceive(msgQIdUpdate,(char*)&rxmsg,MAX_MSG_LEN,WAIT_FOREVER);
			//wdStart(Update_wdog,Update_Delay_Ticks,(FUNCPTR)Update_Timeout,0);
			if(rxmsg.mData==Apply)
			{
	  
				B_Fish_Num=M_Fish_Num;
				M_Fish_Num=S_Fish_Num;
				if(S_Fish_Num<4)
				{
					S_Fish_Num=4;
				}
      

				printf("\n[Checktime]:%d months later,fish number are following:",Monthtime);
				printf("\nSmallfish are:%d.\nMidfish are:%d.\nBigfish are:%d",S_Fish_Num,M_Fish_Num,B_Fish_Num);
	   
				//rxmsg.mData=Reset;
				txmsg.mData=Finish;
				msgQSend(msgQIdServer,(char*)&txmsg,sizeof(txmsg),NO_WAIT,MSG_PRI_NORMAL);
			}

		}

}/****Update End*****/

⌨️ 快捷键说明

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