目 录
摘 要 I
Abstract II
前 言 1
/* 各个模块线程函数的接口 */
void *temperature_thread(){voice_deal();
}
void *invade_thread(){invade_deal();
}
void *soil_thread(){soil_deal();
}
void *light_thread(){light_deal();
}
void *rain_thread(){rain_deal();
}
void process_info(int s)
{int recv_num;int send_num;char recv_buf[5];char send_buf[5];
/* 各个模块的线程ID */pthread_t temperature_pid;pthread_t soil_pid;pthread_t invade_pid;pthread_t light_pid;pthread_t rain_pid;int temperature_ret;int soil_ret;int invade_ret;int light_ret;int rain_ret;int *thread_ret = NULL;/* 主线程接收网络指令模块 */while(1){printf("begin recv:\n");recv_num = recv(s,recv_buf,sizeof(recv_buf),0);if(recv_num <0){perror("recv");exit(1);} else {recv_buf[recv_num] = '\0';printf("recv sucessful:%s\n",recv_buf);}if(!strcmp(recv_buf, temperatureOn)){ //温度相关模块操作temperature_ret = pthread_create(&temperature_pid,
NULL, (void*)temperature_thread, NULL); if(temperature_ret != 0){printf("tempetature create pthread error\n");return ;}printf("temperature pthread success\n");}else if(!strcmp(recv_buf, temperatureOff)){printf("temperature end work!\n");if(0 != pthread_cancel(temperature_pid)){printf("temperature cancel failed!\n");}}else if(!strcmp(recv_buf, invadeOn)){ //入侵检测模块操作printf("invade on!\n");invade_ret = pthread_create(&invade_pid, NULL,(void *)invade_thread, NULL);if(invade_ret != 0){printf("create invade pthread error\n");return ;}printf("invade pthread success\n");}else if(!strcmp(recv_buf, invadeOff)){printf("invade off!\n");if(0 != pthread_cancel(invade_pid)){printf("invade cancel failed!\n");}printf("invade cancel success!\n");}else if(!strcmp(recv_buf, soilOn)){ //土壤湿度检测模块操作printf("soil on!\n");soil_ret = pthread_create(&soil_pid, NULL, (void *)soil_thread, NULL);if(soil_ret != 0){printf("create soil pthread error!\n");return ;}printf("soil pthread success!\n");}else if(!strcmp(recv_buf, soilOff)){printf("soil off!\n");if(0 != pthread_cancel(soil_pid)){printf("soil canael failed!");}printf("soil cancel success!\n");}else if(!strcmp(recv_buf, rainOn)){ //降雨检测模块操作printf("rain on!\n");rain_ret = pthread_create(&rain_pid, NULL, (void *)rain_thread, NULL);if(rain_ret != 0){printf("create rain pthread error\n");return ;}printf("rain pthread success\n");}else if(!strcmp(recv_buf, rainOff)){printf("rain off!\n");if(0 != pthread_cancel(rain_pid)){printf("rain cancel failed\n");return ;}printf("rain cancel success\n");}else if(!strcmp(recv_buf, lightVoiceOn)){ //光控开关模块操作printf("light vodice on!\n");light_ret = pthread_create(&light_pid, NULL,
(void *)light_thread, NULL);if(light_ret != 0){printf("create light pthread error\n");return ;}printf("light pthread success\n");}else if(!strcmp(recv_buf, lightVoiceOff)){printf("light voice off!\n");if(0 != pthread_cancel(light_pid)){printf("light cancel failed\n");return ;}printf("light cancel success\n");}else{ continue;}}
}