代码目录
框架
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
线程间通信、同步互斥