多路温度采集控制系统(4)菜单界面

2024-04-18 04:18

本文主要是介绍多路温度采集控制系统(4)菜单界面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

嵌入式项目实践–多路温度采集控制系统(4)菜单界面

菜单界面

这里写图片描述

菜单显示

        printf("\nTC9000 湿温度控制系统V1.0");printf("\n    [1] 报警设置");printf("\n    [2] 输出控制设置"); printf("\n    [3] 湿度/温度查询");printf("\n    [4] 系统设置");printf("\n    [x] 退出系统");

接收命令行输入

        printf(shell_s);fflush(stdout);get_line(cmd);

输入选择处理

        switch(cmd[0]){case '1':menu_alarm(cmd);break;case '2':...}

消息队列

获取队列ID

id = msgget((key_t)4455,0666|IPC_CREAT);

向队列发送消息

    struct st_msg cmd;cmd.index = index;cmd.dat = dat;if((msgid=get_msgid_menu()) < 0)return -1;if(msgsnd(msgid,(void*)&cmd,sizeof(int),0)==-1)return -1;

消息类型处理

#define TEMP_SMG_INDEX_BASE 10
#define UPDATE_TIME_SMG_INDEX 4
msg_type = TEMP_SMG_INDEX_BASE+channel;
menu_send_update(msg_type,g_dev->temp_max[channel]);

消息队列相关命令

#ipcs -q //显示消息队列
#ipcrm -q <ID> //删除指定id队列

菜单界面代码

菜单程序头文件

#ifndef _TC9000_SYS_IPC_H
#define _TC9000_SYS_IPC_H#include "config.h"//消息队列接收时索引值
#define TEMP_SMG_INDEX_BASE 10
#define WEB_SMG_INDEX 2
#define WEB_UPDATE_SMG_INDEX 3
#define UPDATE_TIME_SMG_INDEX 4struct st_msg{long int index;int dat;
};struct st_msg_dev{long int index;struct st_sys dev;
};#endif

菜单界面程序

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>#include "sys_ipc.h"
#include "config.h"int menu_alarm(char * cmd);//报警功能菜单
int get_line(char *cmd);//获取命令行输入struct st_sys g_dev[1];//全局变量char shell_s[]="\nG9000 shell>$: ";//命令行提示符号//同菜单进程通信的队列,key=4455
int get_msgid_menu(void)
{int id = -1;id = msgget((key_t)4455,0666|IPC_CREAT);if(id == -1){printf("msgget error\n");exit(1);}return id;
}//向主控程序发送设置的数据
/*============================================
函数名称:menu_send_update
功能:向主控程序发送设置的数据
参数:long int 消息类型 int 消息数据
返回值:return 0 返回主菜单
============================================*/
int menu_send_update(long int index,int dat)
{int msgid;struct st_msg cmd;cmd.index = index;cmd.dat = dat;if((msgid=get_msgid_menu()) < 0)return -1;if(msgsnd(msgid,(void*)&cmd,sizeof(int),0)==-1)return -1;return 0;
}/*============================================
函数名称:menu_alarm
功能:温湿度报警设置菜单
参数:char* cmd 用户输入的命令
返回值:return 0 返回主菜单
============================================*/
int menu_alarm(char* cmd)
{int channel;long int msg_type;while(1){printf("\n    [1] 检测间隔时间(5-300s)");printf("\n    [2] 温度上限报警值(40-90℃)");printf("\n    [3] 温度下限报警值(-20-5℃)");printf("\n    [4] 温度报警回差设置(1-10℃)");printf("\n    [x] 返回主菜单");printf(shell_s);fflush(stdout);get_line(cmd);switch(cmd[0]){case '1':printf("当前检测间隔时间:%d\n",g_dev->update_time);printf("请输入新值:");fflush(stdout);get_line(cmd);g_dev->update_time= atoi(cmd);msg_type = UPDATE_TIME_SMG_INDEXmenu_send_update(msg_type,g_dev->update_time);break;case '2':printf("\n    请选择传感器编号[1] [2] [3] [4] :");fflush(stdout);get_line(cmd);channel = atoi(cmd)-1;printf("当前温度上限报警值:%d\n",g_dev->temp_max[channel]);printf("请输入新值:");fflush(stdout);get_line(cmd);g_dev->temp_max[channel]= atoi(cmd);msg_type = TEMP_SMG_INDEX_BASE+channel;menu_send_update(msg_type,g_dev->temp_max[channel]);break;case 'x':return 0;break;              default:printf("输入选项错误!\n");break;}   }return 1;
}//命令行输入处理
int get_line(char *cmd)
{int i=0;char temp;memset(cmd,0,sizeof(cmd));  while (1) { temp = getchar();cmd[i]=temp;if(cmd[i]==13 || cmd[i] == 10){cmd[i]=0;break;}fflush(stdout);i++;}return 0;
}/*============================================
函数名称:main
功能:系统命令行处理菜单主程序,通过队列同后台程序通信
参数:void * arg
返回值:int
============================================*/int main(void)
{char cmd[16];//命令数据缓冲区load_dev(g_dev);while(1){system("clear");printf("\nTC9000 湿温度控制系统V1.0");printf("\n    [1] 报警设置");printf("\n    [2] 输出控制设置"); printf("\n    [3] 湿度/温度查询");printf("\n    [4] 系统设置");printf("\n    [x] 退出系统");printf(shell_s);fflush(stdout);get_line(cmd);switch(cmd[0]){case '1':menu_alarm(cmd);break;case '2'://menu_out_set(cmd);break;case '3'://menu_data_show(cmd);break; case '4'://menu_sys_set(cmd);break;                case 'x':exit(0);break;       default:printf("输入选项错误\n");break;}}}

这篇关于多路温度采集控制系统(4)菜单界面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913740

相关文章

vue同页面多路由懒加载-及可能存在问题的解决方式

先上图,再解释 图一是多路由页面,图二是路由文件。从图一可以看出每个router-view对应的name都不一样。从图二可以看出层路由对应的组件加载方式要跟图一中的name相对应,并且图二的路由层在跟图一对应的页面中要加上components层,多一个s结尾,里面的的方法名就是图一路由的name值,里面还可以照样用懒加载的方式。 页面上其他的路由在路由文件中也跟图二是一样的写法。 附送可能存在

WordPress网创自动采集并发布插件

网创教程:WordPress插件网创自动采集并发布 阅读更新:随机添加文章的阅读数量,购买数量,喜欢数量。 使用插件注意事项 如果遇到404错误,请先检查并调整网站的伪静态设置,这是最常见的问题。需要定制化服务,请随时联系我。 本次更新内容 我们进行了多项更新和优化,主要包括: 界面设置:用户现在可以更便捷地设置文章分类和发布金额。代码优化:改进了采集和发布代码,提高了插件的稳定

小红书商家电话采集软件使用指南

使用小红书商家电话采集软件可以提高商家电话的采集效率,以下是使用指南及附带代码。 步骤一:安装Python和相关库 首先,确保你的电脑已经安装了Python运行环境(建议安装Python3版本)。安装完成后,同样需要安装一些相关的库,如requests、beautifulsoup4等。在命令行窗口中输入以下命令进行安装: pip install requestspip install bea

温湿度采集及OLED显示

目录 软件I2C和硬件I2C每隔2秒钟采集一次温湿度数据,显示到OLED上,同时通过串口发送到上位机的“串口助手”软件 软件I2C和硬件I2C "I2C"代表Inter-Integrated Circuit,是一种用于在数字电路之间进行通信的串行通信协议。软件I2C和硬件I2C是两种实现这种协议的方式。 软件I2C是通过软件来模拟I2C通信协议的实现方式。在这种情况下,微控制

【Qt6.3 基础教程 17】 Qt布局管理详解:创建直观和响应式UI界面

文章目录 前言布局管理的基础为什么需要布局管理器? 盒布局:水平和垂直排列小部件示例:创建水平盒布局 栅格布局:在网格中对齐小部件示例:创建栅格布局 表单布局:为表单创建标签和字段示例:创建表单布局 调整空间和伸缩性示例:增加弹性空间 总结 前言 当您开始使用Qt设计用户界面(UI)时,理解布局管理是至关重要的。布局管理不仅关系到UI的外观,更直接影响用户交互的体验。本篇博

2_为MFC程序添加菜单

在MFC中添加菜单栏 1,双击资源文件,显示资源视图,点击Menu插入Menu菜单,编辑菜单的ID,自己取名字。 2,点击“请在此处键入”添加菜单选项,输入&E,E的下面就会产生下划线;在产生的弹出菜单中继续编辑,并且可以添加事件处理函数; 在弹出菜单的任意位置,鼠标右键,弹出的菜单中选择“插入分隔符”,即可产生分隔符 3,在你设计的Dialog窗口的属性栏,选择Menu后面的

物联网系统运维——移动电商应用发布,Tomcat应用服务器,实验CentOS 7安装JDK与Tomcat,配置Tomcat Web管理界面

一.Tomcat应用服务器 1.Tomcat介绍 Tomcat是- -个免费的开源的Ser Ivet容器,它是Apache基金会的Jakarta 项目中的一个核心项目,由Apache, Sun和其他一 些公司及个人共同开发而成。Tomcat是一一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。 在Tomcat中,应用程序的成部署很简

把Sublime Text 2 加入右键菜单(带图标), Edit with Sublime Text

Sublime Text 2 是现在很受大家欢迎的编辑器了,不仅是在web前端,在书定简单的php、Js等代码时,也是相当的好用,再配合多种的插件和新颖的界面,更是让人欲罢不能。 在使用时,我们通过喜欢打开一个文件的时候,右击再选择打开程序,比如会用记事本、Notedpad++之类的,这时如果把Sublime Text也加入到其中毕竟会方便不少,在找了一番后,实验成功,效果如下: 实现

【单片机毕业设计选题24024】-房间自动除湿控制系统

系统功能: 系统分为手动和自动模式,上电默认为自动模式。自动模式下如果获取到湿度 值大于设定的湿度值则自动打开风扇,手动模式下手动开关风扇。 系统上电后显示“欢迎使用除湿控制系统请稍后”,两秒钟后进入主页面显示。 第一行显示系统模式,手动或自动模式 第二行显示获取到的温湿度 第三行显示设置的湿度阈值 第四行显示风扇状态和系统报警状态,风扇状态有开关状态,系统状态和OK和 NG状态。

【STM32c8t6】AHT20温湿度采集

【STM32c8t6】AHT20温湿度采集 一、探究目的二、探究原理2.1 I2C2.1. 硬件I2C2.1. 软件I2C 2.2 AHT20数据手册 三、实验过程3.1 CubeMX配置3.2 实物接线图3.3 完整代码3.4 效果展示 四、探究总结 一、探究目的 学习I2C总线通信协议,使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集,并将采集的温