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

智能家居(4)---火灾报警线程封装

封装火灾报警线程实现智能家居中的火灾报警功能
mainPro.c(主函数)

#include <stdio.h>
#include "controlDevice.h"
#include "inputCommand.h"#include <pthread.h>struct Devices        *pdeviceHead  = NULL;         //设备工厂链表头struct Devices* findDeviceByName(struct Devices *phead,char *name)          //在设备链表中查找设备(语音和socket均可使用)
{struct Devices *tmp = phead;if(tmp == NULL){printf("The devicesLink is NULL");return NULL;}else{while(tmp != NULL){if(strcmp(tmp->deviceName,name) == 0){return tmp;}tmp = tmp->next;}return NULL;   }}void* fire_pthread(void *data)					//火灾报警线程处理函数
{struct Devices *fire;struct Devices *beep;int status;fire = findDeviceByName(pdeviceHead,"fire");        //从设备链表找出火灾检测和蜂鸣器beep = findDeviceByName(pdeviceHead,"beep");fire->deviceInit(fire->pinNum);                     beep->deviceInit(beep->pinNum);while(1){                                           //检测到火灾通过蜂鸣器报警status = fire->readStatus(fire->pinNum);if(status == 0){beep->open(beep->pinNum);printf("fire warning\n");delay(20000);}elsebeep->close(beep->pinNum);} int main()
{pthread_t fire_pth;if(wiringPiSetup()<0){//初始化wiringPi外设库printf("wiringPi Init failed\n");return -1;}//1.指令工厂初始化//2.设备控制工厂初始化pdeviceHead = addFireToDeviceLink(pdeviceHead);                 //将火灾检测加入设备链表pdeviceHead = addBeepToDeviceLink(pdeviceHead);                 //将蜂鸣器加入设备链表//3.线程池建立//3.3火灾线程ret = pthread_create(&fire_pth,NULL,fire_pthread,NULL);if (ret != 0) {printf("Failed to create firethread.\n");return -1;}//等待线程退出pthread_join(fire_pth,NULL);return 0;
}
http://www.lryc.cn/news/128467.html

相关文章:

  • C#语音播报问题之 无法嵌入互操作类型SpVoiceClass,请改用适用的窗口
  • C语言实例_获取文件MD5值
  • Win11环境下 Unity个人版无法激活
  • C++:模拟实现list及迭代器类模板优化方法
  • k8s整合istio配置gateway入口、配置集群内部服务调用管理
  • 工程监测振弦采集仪采集到的数据如何进行分析和处理
  • (三)行为模式:2、命令模式(Command Pattern)(C++示例)
  • 微信小程序 蓝牙设备连接,控制开关灯
  • Python 矢量数据库和矢量索引:构建 LLM 应用程序
  • -Webkit-Box 在 Safari 中出现的兼容性问题
  • 后端项目打包上传服务器记录
  • ubuntu部署haproxy
  • vue利用 sortable 完成表格拖拽
  • CNN简介3
  • 新能源电动车充电桩控制主板安全特点
  • 公路桥梁有哪些安全隐患?
  • 【C语言】每日一题(错误的集合)
  • [JavaWeb]【四】web后端开发-SpringBootWeb入门
  • 前端css
  • vb+sql医院门诊管理系统设计与系统
  • bootstrap-modal调用ajax后不经过回调函数
  • 【【典型电路设计之片内存储器的设计之RAM的Verilog HDL描述一】】
  • 食品行业案例 | 燕千云助力头部食品企业搭建数智化 IT服务管理体系及平台
  • SpringBoot的日志信息及Lombok的常用注解
  • Genoss GPT简介:使用 Genoss 模型网关实现多个LLM模型的快速切换与集成
  • 淘宝API接口的实时数据和缓存数据区别
  • excel统计函数篇1之average系列
  • 数学建模(二)线性规划
  • 小白到运维工程师自学之路 第七十三集 (kubernetes应用部署)
  • 联合仿真 ADAMS 和 SIMULINK步骤