lv17 安防监控项目实战 3

代码目录

框架 

our_storage 编译最终生成的目标文件

obj 编译生成中间的.o文件
data_global.c 公共资源定义(使用在外extern即可)

        定义了锁

        定义了条件变量

        消息队列id、共享内存id、信号量id及key值

        发送短信、接收短信的号码

        向消息队列发送消息的函数(与cgi进程通信)

data_global.h 

        设备节点

        通信协议

        

 

 main.c

        引用data_global的互斥锁和条件变量,并初始化

        信号处理函数(捕获ctrl+c,线程回收处理函数,因为这个程序一但运行不会停止

        释放锁和条件变量,分离线程资源,进程退出后把线程清理)

        创建线程分配资源,线程处理函数在其他文件中实现

        配合创建使用,等待线程结束并收回线程资源(虽然不会执行)
pthread_buzzer.c 线程操作

        思路

        蜂鸣器驱动,向上提供接口,设备节点

        打开蜂鸣器,关闭蜂鸣器,通过ioctl控制设备节点

pthread_led.c

        思路

        led驱动,向上提供接口,设备节点

            5.    open(dev_led,  )
            6.    pthread_cond_wait (cond_led,  ); //等待条件表里
            7.    获取dev_led_mask(控制标志)//互斥锁
            8.    通过ioctl()控制led

pthread_sqlite.c 

        保存数据、更新数据

pthread_transfer.c

        zigbee向a9发送数据

        实现进程间通信

        实现线程间同步互斥

        从m0上把数据拿过来通知其他线程工作

 pthread_refresh.c

        把a9采集的数据和zigbee的采集的数据向网页上展示

pthread_client_request.c

        把网页当作客户端,a9当作服务端,客户端发送命令即向服务器进行请求

        通过消息队列机制

        通过拿到消息队列的id,实现读写

        拿到消息队列的消息,判断消息类型处理不同的事情(led、蜂鸣器等)

pthread_sms.c 

        gprs线程发短信、打电话

sem.c

        与其他进程间通信,CGI

        线程间通信、同步互斥

        

        
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/474499.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字人解决方案— SadTalker语音驱动图像生成视频原理与源码部署

简介 随着数字人物概念的兴起和生成技术的不断发展,将照片中的人物与音频输入进行同步变得越来越容易。然而,目前仍存在一些问题,比如头部运动不自然、面部表情扭曲以及图片和视频中人物面部的差异等。为了解决这些问题,来自西安…

Java面试题(Spring篇)

💟💟前言 ​ 友友们大家好,我是你们的小王同学😗😗 今天给大家打来的是 Java面试题(Spring篇) 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞👍 收藏⭐ 评论📄 小王的主页…

2024 年广西职业院校技能大赛高职组《云计算应用》赛项赛题第 1 套

#需要资源或有问题的,可私博主!!! #需要资源或有问题的,可私博主!!! #需要资源或有问题的,可私博主!!! 某企业根据自身业务需求&#…

Nettty(1) - 异步和事件驱动

1 Java网络编程 早期的Java API只支持由本地系统套接字提供的所谓的阻塞函数,下面将使用这些函数编写服务端的代码。 1.1 服务端 package com.socket.test;import lombok.extern.slf4j.Slf4j;import java.io.BufferedReader; import java.io.IOException; import…

C#,图论与图算法,图最短路径的迪杰斯特拉(Dijkstra)算法与源代码

1 图的最短路径 给定一个图和图中的源顶点,查找从源到给定图中所有顶点的最短路径。 Dijkstra的算法与Prim的最小生成树算法非常相似。像Prim的MST一样,我们生成一个以给定源为根的SPT(最短路径树)。我们维护两个集合,一个集合包含最短路径树中包含的顶点,另一个集合包…

实验2 E-R图

实 验 名 称 实验2 E-R图 实验目的 (1)通过绘制系统E-R图,熟练掌握系统E-R图的绘制,以及写出E-R图的关系模式。 实验内容 绘用Microsoft Visio绘制出某防疫管理系统的E-R图并写出关系模式。 在抗击新冠肺炎疫情中&#xff…

海外媒体发稿:如何通过海外媒体推广发稿平台提升知名度-华媒舍

在数字时代,传统媒体受到了前所未有的冲击。海外媒体推广发稿平台成为了一种有效的方式,可以帮助个人、公司或组织提升在全球范围内的知名度。本文将介绍如何通过海外媒体推广发稿平台来实现这一目标,并给出一些建议和注意事项。 一、海外媒体…

使用 GTSAM 进行曲线拟合的示例

GTSAM介绍 GTSAM(通用因子图优化库)是一种用于状态估计和传感器数据融合的开源C++库。它提供了强大的工具,用于在机器人和自主系统领域进行感知、决策和控制。 功能和特点 状态估计与优化: GTSAM 提供了灵活且高效的状态估计框架,能够处理从传感器获取的数据,并…

支持普通表单+收费在线支付活动 自定义表单系统源码 带完整的安装代码包以及搭建教程

在当前信息化社会中,表单作为数据收集和信息交互的重要工具,被广泛应用于各类网站和平台。然而,市面上的表单系统大多功能单一,无法满足用户多样化的需求。特别是对于一些需要实现在线支付功能的收费活动,更是缺乏一套…

固定资产管理系统|基于JSP技术+ Mysql+Java+ B/S结构的固定资产管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

flask+ flask_socketio HTTP/1.1“ 400 公网IP 问题解决方案

很经典的一个跨域问题 在服务端改成socketio SocketIO(app, cors_allowed_origins"*")就可以了

文心一言 VS 讯飞星火 VS chatgpt (219)-- 算法导论16.3 1题

一、请解释,在引理 16.2 的证明中,为什么若x.fregb.freg,则有a.fregb.fregx.freqy.freq。如果要写代码,请用go语言。 文心一言: 首先,看起来引理 16.2 的描述中有些混淆,因为 x.freg 和 x.fre…

分巧克力---第八届蓝桥杯省赛c++A,B组

题目描述如下 对于满足某个条件的单调最值问题,我们应该下意识考虑二分,我们分析本题的条件,要找一个边长最大值使得我们所有的巧克力切出该边长的正方形的数量大于等于人数,由于我们的边长一定在1到1e5之间,我们要在这…

jmx_prometheus_javaagent-0.19.0.jar+Prometheus+Grafana 监控Tongweb嵌入式(by lqw)

文章目录 1.思路2.部署准备3.应用jar包修改配置和导入tw嵌入式的依赖(参考)4.Prometheus部署5.Prometheus配置6.安装和配置Grafana 1.思路 Tongweb嵌入式最终是把依赖打入到java应用(也就是jar包里),然后启动jar包进行…

【工具使用】VScode配置gcc开发环境

一,简介 本文主要介绍如何在VScode中配置gcc环境,方便开发调试。 二,配置步骤 2.1 gcc环境配置 2.1.1 安装gcc环境 这里我使用的是msys2,具体安装步骤可以参考我另外一篇文章《史上最全msys2下载配置操作步骤》,这…

武汉星起航电子商务有限公司:引领中国跨境电商迈向全球舞台

在数字技术的浪潮下,跨境电商已成为推动经济持续增长和稳定外贸的关键力量。作为这一领域的领军者,武汉星起航电子商务有限公司正以其卓越的能力和经验,积极引领中国跨境电商走向世界舞台。 武汉星起航电子商务有限公司的崛起,不…

《由浅入深学习SAP财务》:第2章 总账模块 - 2.4 会计凭证处理

2.4.1 会计凭证处理的基本概念 会计凭证是企业经济业务在会计上的反映,它是用会计语言表达的一种单据。 典型生产企业的财务凭证创建方式: 企业在实施SAP的过程中,大部分凭证都是自动生成的。要保证这些凭证能准确地生成,必须要满…

Docker启动失败,报错Is the docker daemon running? Is the docker daemon running?

问题: docker没有正常启动 解决方法: systemctl daemon-reload systemctl restart docker.service

【嵌入式——QT】QThread创建多线程

【嵌入式——QT】QThread创建多线程 概述主要函数图示代码示例 概述 QThread类提供不依赖于平台的管理线程的方法,一个QThread类的对象管理一个线程,一般从QThread继承一个自定义类,并重定义虚函数run(),在run()函数里实现线程需…

java多线程使用与踩坑

SpringBoot使用多线程简单方法:地址 线程安全查阅资料参考:地址 背景: 经过上述资料查看,我想写个方法(依靠notify()唤醒,依靠wait()等待)实现两个线程轮流打印。 实现: 1.线程池配…