📄 fish_notfinish.cpp
字号:
#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 + -