当前位置: 首页 > news >正文

网站排版设计欣赏一个服务器可以备案几个网站

网站排版设计欣赏,一个服务器可以备案几个网站,建站公司服务,公司网站设目录 简单的喷淋实验(2)#xff1a; #xff08;1#xff09;根据土壤湿度自动控制喷淋开关#xff1b; #xff08;2#xff09;根据光照强度控制风扇以及灯的开关---嵌入式实训 任务2#xff1a; 具体过程#xff1a; 所用的头文件#xff1a; data_global.h …目录 简单的喷淋实验(2) 1根据土壤湿度自动控制喷淋开关 2根据光照强度控制风扇以及灯的开关---嵌入式实训 任务2 具体过程 所用的头文件 data_global.h mqtt.h 主程序mian.c 运行结果 运行过程视频 上述程序存在问题 初步破局 继续探讨 简单的喷淋实验(2) 1根据土壤湿度自动控制喷淋开关 2根据光照强度控制风扇以及灯的开关---嵌入式实训 任务2 在所给的 irrigate-1 文件夹中创建一个main.c 完成以下内容 1根据土壤湿度自动控制喷淋开关 2根据光照强度控制风扇以及灯的开关 参考 #include stdio.h #include unistd.h #include mqtt.h #include parse_config.h#define SUB_TOPIC 1703161172612/AIOTSIM2APP //定阅的主题 #define PUB_TOPIC 1703161172612/APP2AIOTSIM //发布主题#define IRRIGATED_ON {\irrigated\:true} #define IRRIGATED_OFF {\irrigated\:false}#define FAN_ON {\fan\:true} #define FAN_OFF {\fan\:false}#define LAMP_ON {\lamp\:true} #define LAMP_OFF {\lamp\:false}#define ALARM_ON {\alarm\:true} #define ALARM_OFF {\alarm\:false}int main(int argc, const char *argv[]) {ENV msg_env{};//1.初始化mqtt协议if(mqtt_init()!0){printf(mqtt init err.\n);return -1;}//订阅别人发布的消息if(mqtt_subscribe(SUB_TOPIC) 0){printf(sub err.\n);return -1;}//循环获取温湿度//当大于阈值关闭灌溉小于就打开while(1){sleep(1);//获取值msg_envget_virtual_env();if(msg_env.ill 20000){mqtt_publish(PUB_TOPIC,FAN_OFF);mqtt_publish(PUB_TOPIC,LAMP_ON);}else if(msg_env.ill 50000){mqtt_publish(PUB_TOPIC,FAN_ON);mqtt_publish(PUB_TOPIC,LAMP_OFF);}printf(ill:%f\n,msg_env.ill);if(msg_env.soil 30){mqtt_publish(PUB_TOPIC,IRRIGATED_ON);}else if(msg_env.soil 50){mqtt_publish(PUB_TOPIC,IRRIGATED_OFF);}printf(soilhum:%f\n,msg_env.soil);// if(msg_env.infrared 1)// {// mqtt_publish(PUB_TOPIC,ALARM_ON);// }else {// mqtt_publish(PUB_TOPIC,ALARM_OFF);// }// printf(infrared:%d\n,msg_env.infrared);}exit_mqtt();return 0; } 具体过程 所用的头文件 data_global.h #ifndef __DATA_GLOBAL__H__ #define __DATA_GLOBAL__H__#include stdio.h #include string.h #include stdlib.h #include errno.h #include unistd.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include netinet/in.h #include time.h #include termios.h #include signal.h #include sys/stat.h #include fcntl.h #include pthread.h #include stdbool.h struct env_info {float soil; //土壤湿度float light; //光照强度float temp; //空气温度uint8_t gas; //有害气体 };extern struct env_info env_msg;//设备编号 #define FAN 0x00 #define BEEP 0x10 #define LED 0x20 #define PUMP 0X30#define DATA_ARRIVE SIGUSR1 //数据到达信号//订阅、发布主题 #define ENV_PUB_TOPIC FS_VRJJ/control//虚拟仿真硬件协议 #define LAMP_ON {\lamp\:true} #define LAMP_OFF {\lamp\:false}#define ALARM_ON {\alarm\:true} #define ALARM_OFF {\alarm\:false}#define SUNSHADE_FOR {\sunshade\:\forward\} #define SUNSHADE_REV {\sunshade\:\reverse\} #define SUNSHADE_STOP {\sunshade\:\stop\}#define VIR_FAN_ON {\fan\:true} #define VIR_FAN_OFF {\fan\:false}#define IRRIGATED_OFF {\irrigated\:false} #define IRRIGATED_ON {\irrigated\:true} #endifmqtt.h #ifndef __MQTT_SMART_H_ #define __MQTT_SMART_H_typedef struct env {float soil;//土壤湿度float ill;//光照int smog;//烟雾int infrared;//人体红外 }ENV; int mqtt_init(); void exit_mqtt(); int mqtt_subscribe(const char*topic); int mqtt_publish(const char *topic, char *msg); ENV get_virtual_env();#endif主程序mian.c #includestdio.h #includemqtt.h #includeunistd.h #includedata_global.h#define subscribe 1703503856299/AIOTSIM2APP #define publish 1703503856299/APP2AIOTSIM int main(int argc, char *argv[]){//1-连接服务器mqtt_init();//2-订阅元宇宙平台主题获得数据串//通过目标节点的发布主题才能的得到发布的内容mqtt_subscribe(subscribe);//4.循环获取数据下发控制指令while (1){sleep(1);ENV env get_virtual_env();if (env.soil60){mqtt_publish(publish, IRRIGATED_OFF);printf(关闭喷淋。。。。\n);}else if (env.soil30){mqtt_publish(publish, IRRIGATED_ON);printf(打开喷淋\n);}printf(当前土壤湿度%.2f\n, env.soil);if (env.ill27000){mqtt_publish(publish, VIR_FAN_ON);mqtt_publish(publish, LAMP_OFF);printf(打开风扇关闭灯。。。。\n);}else if (env.ill25000){mqtt_publish(publish, VIR_FAN_OFF);mqtt_publish(publish, LAMP_ON);printf(关闭风扇,打开灯。。。。。。\n);}sleep(1);printf(当前光照强度%.2f\n, env.ill);printf(\n);}exit_mqtt();return 0; } 运行结果 元宇宙未运行时 元宇宙运行后 运行过程视频 嵌入式实训2023-12-25 20-19-53 上述程序存在问题 初步破局 在元宇宙实验平台还没开始运行时各种数据都是0就会导致程序通过if、else if判断语句来控制各种机器运作这是不正确的。为了避免这种情况可以添加一些额外的判断来解决这个问题。 首先我们可以在while循环之前添加一个延时等待让实验平台有足够的时间来获取和发送数据。例如我们可以使用sleep函数来等待5秒钟 sleep(5); // 等待5秒钟让实验平台有足够的时间来获取和发送数据然后我们可以在if、else if判断语句之前添加一个判断检查所需的数据是否已经被正确地获取。例如我们可以检查土壤湿度是否为0来确定是否成功获取了土壤湿度数据 ENV env get_virtual_env(); if (env.soil 0) {printf(未成功获取到土壤湿度数据等待下一次获取...\n);sleep(1);continue; // 跳过本次循环等待下一次循环 }// 在此之后添加if、else if判断语句进行控制同样我们可以添加类似的判断来检查光照强度等数据是否已经被正确获取。这样做可以避免在数据未准备好时误操作机器保证程序的正确性。 完整代码 #includestdio.h #includemqtt.h #includeunistd.h #includedata_global.h#define subscribe 1703503856299/AIOTSIM2APP #define publish 1703503856299/APP2AIOTSIM int main(int argc, char *argv[]){//1-连接服务器mqtt_init();//2-订阅元宇宙平台主题获得数据串//通过目标节点的发布主题才能的得到发布的内容mqtt_subscribe(subscribe);//3.等待数据准备就绪printf(等待数据准备就绪...\n);sleep(5); // 等待5秒钟让实验平台有足够的时间来获取和发送数据//4.循环获取数据下发控制指令while (1){ENV env get_virtual_env();if (env.soil 0) {printf(未成功获取到土壤湿度数据等待下一次获取...\n);sleep(1);continue; // 跳过本次循环等待下一次循环}if (env.soil60){mqtt_publish(publish, IRRIGATED_OFF);printf(关闭喷淋。。。。\n);}else if (env.soil30){mqtt_publish(publish, IRRIGATED_ON);printf(打开喷淋\n);}printf(当前土壤湿度%.2f\n, env.soil);if (env.ill 0) {printf(未成功获取到光照强度数据等待下一次获取...\n);sleep(1);continue; // 跳过本次循环等待下一次循环}if (env.ill27000){mqtt_publish(publish, VIR_FAN_ON);mqtt_publish(publish, LAMP_OFF);printf(打开风扇关闭灯。。。。\n);}else if (env.ill25000){mqtt_publish(publish, VIR_FAN_OFF);mqtt_publish(publish, LAMP_ON);printf(关闭风扇,打开灯。。。。。。\n);}printf(当前光照强度%.2f\n, env.ill);printf(\n);sleep(1);}exit_mqtt();return 0; }继续探讨 还是有点问题如果等待5秒后实验平台运行了但是土壤湿度和光照强度又恰好是0呢这样是没有错误的呀 上述提出了一个很好的问题。确实在等待5秒后如果土壤湿度和光照强度仍然是0那么程序就会继续执行而不会等待数据准备就绪。为了解决这个问题可以使用一个循环来判断数据是否已经准备就绪并设置一个最大等待时间。 下面是修改后的代码示例 #includestdio.h #includemqtt.h #includeunistd.h #includedata_global.h#define subscribe 1703503856299/AIOTSIM2APP #define publish 1703503856299/APP2AIOTSIM int main(int argc, char *argv[]){//1.连接服务器mqtt_init();//2.订阅元宇宙平台主题获得数据串//通过目标节点的发布主题才能的得到发布的内容mqtt_subscribe(subscribe);//3.等待数据准备就绪printf(等待数据准备就绪...\n);int max_wait_time 10; // 最大等待时间为10秒int wait_time 0; // 已等待的时间ENV env;while (1){env get_virtual_env();if (env.soil ! 0 env.ill ! 0) {break; // 数据已准备就绪跳出循环}sleep(1);wait_time;if(wait_time max_wait_time){printf(超过最大等待时间未成功获取到数据\n);exit_mqtt();return 0;}}//4.循环获取数据下发控制指令while (1){if (env.soil60){mqtt_publish(publish, IRRIGATED_OFF);printf(关闭喷淋。。。。\n);}else if (env.soil30){mqtt_publish(publish, IRRIGATED_ON);printf(打开喷淋\n);}printf(当前土壤湿度%.2f\n, env.soil);if (env.ill27000){mqtt_publish(publish, VIR_FAN_ON);mqtt_publish(publish, LAMP_OFF);printf(打开风扇关闭灯。。。。\n);}else if (env.ill25000){mqtt_publish(publish, VIR_FAN_OFF);mqtt_publish(publish, LAMP_ON);printf(关闭风扇,打开灯。。。。。。\n);}printf(当前光照强度%.2f\n, env.ill);printf(\n);sleep(1);}exit_mqtt();return 0; }
http://www.zqtcl.cn/news/57021/

相关文章:

  • 百度搜索不到网站中国建设银行邢台分行网站
  • 滁州市建设银行网站网站备案核验点
  • 天津品牌网站建设公司排名网站地图怎么做XML
  • 网站开发 问题解决网站栏目建设需求的通知
  • 网站建设作为博客个人目录wordpress
  • 网站建设 成功案例跨境电商运营平台
  • 网站一键生成appwordpress的登录
  • 麟游做网站河北邢台重大新闻
  • 虚拟主机建立网站推广是干什么工作的
  • 外国语学院英文网站建设中国建筑装修网
  • 做慧聪网站多少钱企业宣传册制作
  • 重庆响应式网站建设费用wordpress 速度优化
  • 网站开发需要什么服务器贵州专业网站建设公司
  • 长沙手机网站设计php值班系统 wordpress
  • 提供衡水网站建设抖音代运营文员是干嘛的
  • 网站及app开发湖南做网站问磐石网络专业
  • 网站后台管理界面代码页游网站如何做推广
  • 网站制作内容个人做外贸网站违法吗
  • 网站输入一级域名自动跳转二级域名wordpress被提权
  • html简单网站建设代码wordpress文章详情模版替换
  • 网站建设甲方原因造成停工做网站6个月心得
  • 百度推广 帮做网站吗乌海品牌网站建设
  • 重庆江津网站设计公司电话wordpress 二维码
  • 用什么做网站河南网站备案系统短信
  • 做招聘网站需要营业执照吗针对315老坛酸菜企业解决方案
  • 网站开发用php好吗如果在网上接网站建设项目
  • 手机响应式网站中小型网站建设与管理总结
  • 漳州商城网站建设如何做app推广
  • 网站开发研究方法建设摩托车是名牌吗
  • 网站排名优化手机天元建设集团有限公司总工程师