• lv17 安防监控项目实战 3


    代码目录

    框架 

    1. our_storage 编译最终生成的目标文件
    2. obj 编译生成中间的.o文件
    1. data_global.c 公共资源定义(使用在外extern即可)
    2.         定义了锁
    3.         定义了条件变量
    4.         消息队列id、共享内存id、信号量id及key
    5.         发送短信、接收短信的号码
    6.         向消息队列发送消息的函数(与cgi进程通信)
    7. data_global.h 
    8.         设备节点
    9.         通信协议
    10.         

     

    1.  main.c
    2.         引用data_global的互斥锁和条件变量,并初始化
    3.         信号处理函数(捕获ctrl+c,线程回收处理函数,因为这个程序一但运行不会停止
    4.         释放锁和条件变量,分离线程资源,进程退出后把线程清理)
    5.         创建线程分配资源,线程处理函数在其他文件中实现
    6.         配合创建使用,等待线程结束并收回线程资源(虽然不会执行)
    7. pthread_buzzer.c 线程操作
    8.         思路
    9.         蜂鸣器驱动,向上提供接口,设备节点
    10.         打开蜂鸣器,关闭蜂鸣器,通过ioctl控制设备节点
    11. pthread_led.c
    12.         思路
    13.         led驱动,向上提供接口,设备节点
    14.             5.    open(dev_led,  )
    15.             6.    pthread_cond_wait (cond_led,  ); //等待条件表里
    16.             7.    获取dev_led_mask(控制标志)//互斥锁
    17.             8.    通过ioctl()控制led
    18. pthread_sqlite.c 
    19.         保存数据、更新数据
    20. pthread_transfer.c
    21.         zigbee向a9发送数据
    22.         实现进程间通信
    23.         实现线程间同步互斥
    24.         从m0上把数据拿过来通知其他线程工作
    25.  pthread_refresh.c
    26.         把a9采集的数据和zigbee的采集的数据向网页上展示
    27. pthread_client_request.c
    28.         把网页当作客户端,a9当作服务端,客户端发送命令即向服务器进行请求
    29.         通过消息队列机制
    30.         通过拿到消息队列的id,实现读写
    31.         拿到消息队列的消息,判断消息类型处理不同的事情(led、蜂鸣器等)
    32. pthread_sms.c 
    33.         gprs线程发短信、打电话
    34. sem.c
    35.         与其他进程间通信,CGI
    36.         线程间通信、同步互斥
    37.         

            
     

  • 相关阅读:
    TracerLPM_V_B2_9
    数据分析常见的业务面试题
    什么是电感?
    企业数据分析的维度一般有哪些?
    中移OneOS开发板学习入门
    在word中将latex格式的公式转化为带有编号的mathtype公式
    SaaS系统用户权限设计
    15 DOM 扩展
    Java基础面试,ArrayList和LinkedList的区别
    中国能源统计年鉴面板数据-分省市主要污染物排放指标(包含ECXEL2020年中国统计年鉴)
  • 原文地址:https://blog.csdn.net/m0_60718520/article/details/136778074