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

fun状态上传,并可手动控制

文章目录

  • 引言
    • 上传原因:
    • 矛盾点:
    • 基础工程源码:
  • 代码实操
    • fun状态上传
    • fun状态下发控制

引言

上传原因:

续上一节, 我们把fun像小灯一样, 加入了预警工程, 但是我们fun其实还有其他用处, 比如我们人工手动开风扇, 排风, 所以我们需要把fun的状态上传, 然后也可以通过服务器手动控制fun的打开.

矛盾点:

预警工程, 会把正常状态下的fun关闭, 那如何区分是预警工程在环境从异常-> 正常, 关闭风扇, 还是人工手动打开的风扇呢?

我们其实就告诉系统, 这次是人工开启的, 你不要关闭风扇, 就可以了. 所以我们在服务器下发fun开启的时候, 赋予一个管理员变量, 当fun底层, 判断管理员变量开启的时候, 就不去关风扇.

当且仅当 , 管理员变量关闭的时候, 预警系统, 才会关风扇, 那么我们就可以人工的正常开风扇, 而不会被预警系统自动关闭风扇了, 实现了一扇多用.

基础工程源码:

https://wwyz.lanzoul.com/iIprx2764l9a

本博客构建完成的工程源码:

https://wwyz.lanzoul.com/ieFtH277kble

本博客测试视频:

加入手动风扇变量,并上传onenet_哔哩哔哩_bilibili

加入手动风扇变量,并上传onenet

代码实操

fun状态上传

(1)打开基础工程

image-20240812101631737

(2)在main里面, 找到OneNet_SendData(); 然后f12进入

image-20240812101727867

(3)接着f12进入

image-20240812101755112

(4)在上传变量这里, 添加

	memset(text, 0, sizeof(text));sprintf(text, "\"fun\":{\"value\":%s},", fun_info.fun_Status ? "true":"false");strcat(buf, text);		
image-20240812101845964

(5)我们接着去Onenet服务器, 去配置这个fun, 布尔变量

image-20240812102004072

(6)因为这里我们调用了fun_info.fun_Status , 所以我们要在onenet.c里面, 包含 fun.c

#include "fun.h"
image-20240812102125435

fun状态下发控制

(1)还是在main.c里面 , f12进入

image-20240812102223422

(2)然后, 比葫芦画瓢, 添加 cJSON *fun_jason;

image-20240812102309819

(3)这里的fun就是刚才配置的服务器标识符

fun_jason = cJSON_GetObjectItem(params_jason,"fun");

image-20240812102328980

(4)然后, 我们拿到字符串, 进行根据cjson的规则, 进行处理判断就可以了

				if(fun_jason != NULL){if(fun_jason->type == cJSON_True){hand  = 1;//宣示主权Fun_Set(FUN_ON);}else {hand  = 0;//关闭的话,主动权就交给了智能系统Fun_Set(FUN_OFF);}}

image-20240812102439043

(5)这里我们会观察到, 我们人工开启风扇的时候, 需要给一个管理员变量赋值为1 , 当人工关闭风扇后, 才把管理员权限收回.

image-20240812102552218

(6)所以, 为了当管理员权限开启的时候, fun不把风扇关掉, 我们在关闭风扇的底层函数里面, 添加 hand != 1 (没有管理员权限)的时候, 我们才能关闭风扇

image-20240812102730844

(7)同时, 不要忘了, 我们这个hand变量, 要定义在fun.c的全局变量, 并且可以被外界访问

image-20240812102818152

(8)同时在fun.h头文件里面, 也加入extern _Bool hand

image-20240812102849435

(9)接下来,就是烧录测试了, 请看如下视频

加入手动风扇变量,并上传onenet_哔哩哔哩_bilibili

http://www.lryc.cn/news/425389.html

相关文章:

  • 【Canvas与艺术】四扇叶结
  • 基于DVWA-Brute Force(LowMedium)的渗透测试
  • 水库大坝安全预警系统的作用
  • 容器化部署ES集群
  • 使用排名前三的华为解锁工具来绕过忘记的华为锁屏密码
  • 战神之父和前暴雪总裁都很期待《黑神话》:太酷想玩
  • 用户体验的优化:观测云在用户行为分析中的应用
  • ModelScope 部署 Flux 模型
  • ArkTs基础语法-声明式UI-基本概念
  • Day26 线程学习
  • eNSP 华为三层交换机实现VLAN间通信
  • 【多模态大模型】LLaMA in arXiv 2023
  • (转)java中restful接口和普通接口的区别
  • 灵办AI免费ChatGPT4人工智能浏览器插件快速便捷(多功能)
  • VulnHub:BlueMoon
  • 处理filter里抛出的异常
  • IndexedDB深度解析:JavaScript的客户端数据库
  • C语言中的函数指针和返回值为数组的函数指针对比
  • 根据字符串的长度和字符值的大小来对字符串切片进行排序
  • RabbitMQ 的工作原理
  • WPF 资源、引用命名空间格式、FrameworkElement、Binding、数据绑定
  • vue3-03-创建响应式数据的几种方法
  • stm32智能颜色送餐小车(openmv二维码识别+颜色识别+oled显示)
  • 对接的广告平台越多,APP广告变现的收益越高?
  • LINUX原始机安装JDK
  • MR400D工业级带网口4G DTU:RS232/RS485 TO LTE深度测评
  • 第四范式发布AI+5G视频营销产品 助力精准获客与高效转化
  • DVWA-IDS测试(特殊版本)
  • 轻度自闭症的温柔启航:星启帆的康复之旅
  • 一、OpenTK简介