首页 > 其他分享 >Sensor代码框架

Sensor代码框架

时间:2024-05-02 10:34:02浏览次数:21  
标签:状态 框架 Sensor 代码 SwitchState SWITCH OPEN sensor stableCount

#include <stdio.h>

// 定义一个枚举类型来表示光电开关的状态
typedef enum {
    SWITCH_OPEN,
    SWITCH_CLOSED
} SwitchState;

// 定义一个结构体来记录光电开关传感器的状态
typedef struct {
    SwitchState currentState;   // 当前状态
    SwitchState lastState;      // 上次获取的状态
    unsigned int stateChangeTime; // 获取状态的时间(例如,可以使用滴答定时器的计数值)
} SwitchSensor;

// 函数声明
SwitchState readSwitchState();   // 假设这是一个读取当前开关状态的函数
void delayMs(unsigned int ms);   // 延时函数

int main(void) {
    // 初始化传感器状态结构体
    SwitchSensor sensor = {SWITCH_OPEN, SWITCH_OPEN, 0};
    SwitchState stableState = SWITCH_OPEN; // 初始化稳定状态
    int stableCount = 0; // 用于计数连续相同的读数

    // 主循环
    while(1) {
        // 读取当前状态
        sensor.currentState = readSwitchState();
        
        // 如果状态改变,重置稳定计数器,并记录时间
        if (sensor.currentState != sensor.lastState) {
            stableCount = 0;
            sensor.stateChangeTime = // 获取当前时间,例如使用HAL_GetTick();
        } else {
            // 如果状态未改变,增加稳定计数器
            stableCount++;
            
            // 如果连续3次读数相同,我们认为它已经稳定
            if (stableCount >= 3) {
                stableState = sensor.currentState;
                printf("Switch is stable: %s\n", stableState == SWITCH_OPEN ? "Open" : "Closed");
                // 这里可以执行进一步的操作,例如设置标志位等
                
                // 重置稳定计数器以继续监控状态变化
                stableCount = 0;
            }
        }
        
        // 更新上次状态
        sensor.lastState = sensor.currentState;
        
        // 延时,以便不会过快地读取状态
        delayMs(100);
    }
}

// 假设的读取状态函数,需要根据实际硬件连接进行实现
SwitchState readSwitchState() {
    // 这里应该有读取传感器状态的代码
    // 比如读取GPIO的输入状态
    // 返回 SWITCH_OPEN 或 SWITCH_CLOSED
}

// 延时函数,需要根据系统时钟进行适配
void delayMs(unsigned int ms) {
    // 使用HAL库或者直接操作SysTick定时器来实现延时
}

 

标签:状态,框架,Sensor,代码,SwitchState,SWITCH,OPEN,sensor,stableCount
From: https://www.cnblogs.com/icaowu/p/18169995

相关文章

  • Unity游戏框架设计之背包管理器
    Unity游戏框架设计之背包管理器简单介绍背包系统通常分为两个部分,第一个部分是背包的UI界面,第二个部分是对背包进行逻辑操作的管理器。在下述代码中,实现了对背包的基本逻辑操作,包括向背包添加物品,从背包中取出物品,移动背包中的物品和使用背包中的物品的基本操作,并将这些操作......
  • docker之旅 10.容器实战-部署tars微服务框架
    参考地址:https://doc.tarsyun.com/#/installation/docker.mdhttps://github.com/TarsCloud/Tarshttps://hub.docker.com/r/tarscloud/base-deploy https://tarscloud.gitbook.io/tarsdocs/kuang-jia-bu-shu/docker 前提:假设你已经安装好了docker,docker-compose。如......
  • 51单片机程序框架之跑马灯练习
    /******************************************************************************此程序是依据吴坚鸿程序框架,在普中51A2单片机开发板上的程序练习程序目标:LED以1HZ的频率闪烁*******************************************************************************/#include<......
  • 51单片机程序框架之LED闪烁_方法1
    /******************************************************************************此程序是依据吴坚鸿程序框架,在普中51A2单片机开发板上的程序练习程序目标:LED以1HZ的频率闪烁*******************************************************************************/#include<......
  • SAP 事务代码CU71报错 - 特性LOBM_LWEDT不存在 -
    SAP事务代码CU71报错-特性LOBM_LWEDT不存在 -  1,在事务代码CU71或者如下配置里。    定义排序规则,   试图使用SAP标准特性LOBM_LWEDT, SAP报错说:’特性LOBM_LWEDT不存在’。这是SAP系统上的一个标准的特性,怎么能不存在SAP系统上呢?  2,解决方法:......
  • Unity游戏框架设计之存档管理器
    Unity游戏框架设计之存档管理器存档管理器的主要功能是实现游戏进度的查询、存储(存档)、读取(读档)和删除(删档)。存档主要有三种实现方案。(一)PlayerPrefs。PlayerPrefs类用于在游戏中存储、删除、修改和访问玩家的数据。存储的数据是持久化的,即使玩家关闭游戏或重新启动设备,数据也......
  • 五个重要的编程原则让你写出高质量代码
    Therearefiveprinciplesthatyoushouldconform.1:Singleresponsibilityprinciple.各司其职,一个对象不要封装的太复杂,设计的时候要考虑好哪些功能属于这个对象,不要将一个对象弄得太复杂,当你意识到一个对象承担了太多责任的时候,尝试分开它,减小耦合度,以便维护。2:Open-Clo......
  • Unity游戏框架设计之UI管理器
    Unity游戏框架设计之UI管理器简单介绍在游戏开发过程中,我们通常需要管理UI游戏对象的加载、打开和销毁等操作,同时也需要管理游戏数据和游戏数据在UI上的显示,因此我们需要一个UI管理器来统一实现上述基础功能。我们可以基于MVC模式编写UI管理器,此时UI管理器将分为模......
  • 代码
     #-*-coding:utf-8-*-"""@author:14931@file:deletlie.py@time:2024/05/01@desc:"""importnumpyasnpimportpandasaspdfile_path='D:/NM004-20230627224400-20230627224859-0.txt'#读整个txt文件读取到单个字符串wit......
  • html,js代码编译,加密,代码一键打包软件,HTML转exe程序
    个人软件注意杀毒软件会报毒,,放行便可小尘web打包程序可以将整个web工程项目打包成一个exe程序运行不是打包浏览器内核应用,是代码打包软件,打包后和原来一样放在nginx类软件里运行下载地址https://download.csdn.net/download/rllmqe/88789653链接:https://pan.baidu.com/s/1HTql......