




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
物联网仓储系统项目组员:
董亚军
郝贤森
赵星达
姜兆勇
张超刘继琛张立东汇报人:
董亚军项目分工:主线程:董亚军
郝贤森系统移植:赵星达M0:张立东
姜兆勇Web、CGI:刘继琛张超物联网介绍物联网是新一代信息技术的重要组成部分。其英文名称是“TheInternetofthings”。由此,顾名思义,“物联网就是物物相连的互联网”。这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信。物联网就是“物物相连的互联网”。物联网通过智能感知、识别技术与普适计算、泛在网络的融合应用,被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。物联网是互联网的应用拓展,与其说物联网是网络,不如说物联网是业务和应用。因此,应用创新是物联网发展的核心,以用户体验为核心的创新2.0是物联网发展的灵魂。物联网定义最初在1999年提出:即通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器、气体感应器等信息传感设备,按约定的协议,把任何物品与互联网连接起来,进行信息交换和通讯,以实现智能化识别、定位、跟踪、监控和管理的一种网络。简而言之,物联网就是“物物相连的互联网”。
物联网定义
中国物联网校企联盟将物联网的定义为当下几乎所有技术与计算机、互联网技术的结合,实现物体与物体之间:环境以及状态信息实时的实时共享以及智能化的收集、传递、处理、执行。广义上说,当下涉及到信息技术的应用,都可以纳入物联网的范畴。项目总流程项目简介
通过web端远程访问服务器,达到对数据的采集,查看实时的仓库信息。发生异常时进行报警、做出相应的处理。通过web端远程控制,当货物的进出仓库时进行记录。
这个方案主要用到了下面的技术:物联网仓储系统设计的技术
●
Linux设备驱动●Zigbee无线技术与RFID技术●传感器技术(温度、光线、湿度、重力感应等)●Cortex-M0ARM微控制器技术●I2C、SPI、中断、单总线、A/D、PWM、UART等多种接口技术●监控及视频流处理技术●GPRS远程报警技术(未完成)●嵌入式Web服务器技术●处理客户请求(CGI)技术
●数据库技术(sqlite3)●wifi技术(sqlite3)(未完成)●html页面显示技术全局结构体定义/仓库货物信息structstorage_goods_info{ unsignedchargoods_type;//货物类型,用数字表示 unsignedintgoods_count;//货物数量};
全局结构体定义
//某个仓库的全部信息structstorage_info{ unsignedcharstorage_status; unsignedcharled_status; unsignedcharbuzzer_status; unsignedcharfan_status; unsignedcharseg_status; signedcharx; signedchary; signedcharz; floattemperature; floattemperatureMIN;
全局结构体定义
floattemperatureMAX; floathumidity; floathumidityMIN; floathumidityMAX; floatillumination; floatilluminationMIN; floatilluminationMAX; floatbattery; floatadc; structstorage_goods_infogoods_info[GOODS_NUM];};全局结构体定义//所有仓库的信息结构体structenv_info_clien_addr{ structstorage_infostorage_no[STORAGE_NUM]; };//消息队列结构体structmsg{ longtype;//从消息队列接收消息时用于判断的消息类型 longmsgtype;//具体的消息类型 unsignedchartext[QUEUE_MSG_LEN];//消息正文};用到的线程其中用到的线程如下:pthread_client_request():处理消息队列里请求的线程.pthread_refresh():更新共享内存里的实时数据.pthread_sqlite():数据库线程.pthread_transfer():接收M0数据线程.pthread_analysis():M0数据分析线程.pthread_sms():短信模块控制线程.(未使用)pthread_buzzer():A9蜂鸣器控制线程.pthread_led():A9LED模块线程.pthread_camera():摄像头模块控制线程.线程和进程的区别:线程:是一种轻量级进程,线程存在于进程中。线程和进程一样都会被操作系统调度(时间片)通常线程指的是共享相同地址空间的多个任务。线程优势:线程运行时,相互切换效率高;线程之间共享数据很方便。进程拥有独立的运行空间,一个进程崩溃后,在保护模式下并不会影响其他的进程。一个进程中可以包含有多个线程,而一个线程只能包含在进程中。一个线程拥有自己独有的局部变量栈,但是没有独立的空间,一个进程中多个线程共同共享一块资源,因此当一个线程崩溃后此进程也会崩溃。因此多进程要比多线程健壮性要好,但是,多进程效率比较低。当需要并行操作和共享某些变量最好使用多线程的模式。线程创建:创建一个线程intpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*routine)(void*),void*arg)参数:thread,线程的标识符(类似于进程的pid号)attr,用于指定创建的线程的属性,通常为NULL(不需要设置)routine,函数指针,该函数就是线程主体arg,就是传递给函数的参数。返回值:成功返回0,失败返回非负的错误号线程intpthread_exit(void*value_ptr)功能:只会导致当前线程的退出函数参数:就是传递的退出状态(指针)通常使用:pthread_exit(0);返回值:成功返回0,失败返回非负的错误号进程对已经退出的线程必须要做回收线程资源的操作(否则会产生僵尸线程)intpthread_join(pthread_tthread,void**value_ptr)功能:阻塞等待回收退出的线程的资源参数:thread,就是指定要回收的线程资源value_ptr,就是接收到线程的退出状态。返回值:成功返回0,失败返回非负的错误号线程的控制控制线程:互斥锁:主要用来保护临界资源(可是变量,后者是代码段)任何时刻最多只能有一个线程能访问该资源相关函数接口:intpthread_mutex_init(pthread_mutex_t*mutex,pthread_mutexattr_t*attr)功能:锁的初始化函数,即生成一把锁参数:mutex,是锁的标识符attr,设置锁的属性,通常为NULL。返回值:返回值:成功返回0,失败返回非负的错误号线程控制intpthread_mutex_lock(pthread_mutex_t*mutex)功能:阻塞等待直到这把锁申请成功为止,对临界资源进行上锁操作参数:mutex,就是指定的一把锁返回值:成功返回0,失败返回非负的错误号intpthread_mutex_unlock(pthread_mutex_t*mutex)功能:对临界资源进行解锁操作参数:mutex,就是指定要解开的锁返回值:成功返回0,失败返回非负的错误号intpthread_mutex_destroy(pthread_mutex_t*mutex);功能:销毁一把指定的锁参数:mutex,就是指定要销毁的锁返回值:成功返回0,失败返回非负的错误号注意:为了避免死锁:在申请多把锁时,所有的线程都按照同样的顺序去申请。线程之间的通信--条件变量
intpthread_cond_init(pthread_cond_t*restrictcond,constpthread_condattr_t*restrictattr);功能:初始化一个条件变量参数:cond,就是条件变量的标识符attr,通常为NULL即可返回值:成功返回0,失败返回非负的错误号intpthread_cond_wait(pthread_cond_t*restrictcond,pthread_mutex_t*restrictmutex);功能:条件睡眠,直到被指定的条件唤醒为止参数:cond,就是指定睡眠条件,将来被唤醒时也必须满足该条件mutex,该函数睡眠时必须提前加上一把锁注意:该睡眠函数调用之前必须先加上一把锁,然后进入睡眠,然后该函数内部将锁解开;当该函数被唤醒时,需要重新加上这把锁,如果发现这把锁被其他线程占用,那么该函数的唤醒操作就失败了,继续睡眠。返回值:成功返回0,失败返回非负的错误号
线程之间的通信--条件变量intpthread_cond_signal(pthread_cond_t*cond);功能:就是唤醒睡眠在cond条件上的线程,但是只能唤醒一个线程参数:cond,就是指定要唤醒的条件返回值:成功返回0,失败返回非负的错误号intpthread_cond_broadcast(pthread_cond_t*cond);功能:唤醒所有睡眠这个条件上的线程intpthread_cond_destroy(pthread_cond_t*cond);功能:就是销毁条件变量处理消息队列请求线程消息对列创建/打开消息队列对象intmsgget(key_tkey,intflag);参数:key,ftok()函数的返回值,用于确保多个进程操作同一个消息队列flag,IPC_CREATIPC_EXCL和共享内存一样返回值:成功返回消息队列的标识符,失败-1比如:msgget(key,IPC_CREAT|IPC_EXCL|0666);消息对列intmsgsnd(intmsqid,constvoid*msgp,size_tmsgsz,intmsgflg);参数:msgid,msgget的返回值msgp,要发送的数据的指针,有指定的数据格式。structmsgbuf{longmtype;/*messagetype,mustbe>0*/数据类型,可以自定义;/*messagedata*/inta;charb;floatf;};msgsz,发送的消息的正文的长度==sizeof(structmsgbuf)-sizeof(long)msgflg,IPC_NOWAIT以非阻塞方式发送消息,如果发送不成功,那么不会阻塞,立刻返回。0(常用),以阻塞方式发送消息,如果发送不成功,那么阻塞等待,直到发送成功为止。返回值:成功0,失败-1消息队列ssize_tmsgrcv(intmsqid,void*msgp,size_tmsgsz,longmsgtyp,intmsgflg);参数:msqid,msgget的返回值msgp,用于接收读取到的消息,固定格式,必须和发送的类型保持一致。msgsz,仍然要接收的消息的正文长度msgtyp,0,表示读取第一条消息>0,表示读取指定类型消息(最常用)<0,接收消息队列中类型值不小于msgtyp的绝对值且类型值又最小的消息msgflg,IPC_NOWAIT以非阻塞方式接收消息,如果接收不成功,那么不会阻塞,立刻返回。0(常用),以阻塞方式接收消息,如果接收不成功,那么阻塞等待,直到接收成功为止。返回值:实际接收到的消息的正文的字节个数,失败-1.消息对列消息队列的控制函数intmsgctl(intmsgqid,intcmd,structmsqid_ds*buf);参数:msgqid,就是控制的消息队列cmd:IPC_STAT(获取对象属性),属性保存在第三个参数上IPC_SET(设置对象属性),第三个参数保存的是要修改的属性IPC_RMID(删除对象),此时第三个参数为NULL即可返回值:返回值和cmd有关系,失败-1.共享内存共享内存共享内存:是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝注意:由于多个进程共享一段内存,因此也需要依靠某种同步机制来控制对它的写操作,如互斥锁和信号量等#include<sys/shm.h>key_tftok(constchar*pathname,intproj_id);功能:就是生成key值。参数:pathname,任意一个存在的路径都可以proj_id,只要低8位(二进制)不全为0的数都可以返回值:成功key值,失败-1.比如:key=ftok(".",'a');共享内存创建/打开共享内存:创建于当前系统上,保存到系统关闭为止。intshmget(key_tkey,intsize,intshmflg);参数:key,用于唯一的标识一块共享内存,将来其他进程需要使用一样的key值。IPC_PRIVATE,表示该物理空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑工程项目总包标前交底文件
- 答辩个人述职报告
- 寒假饮食安全
- 四年级数学(三位数乘两位数)计算题专项练习及答案
- 2025年医用中心供氧设备项目发展计划
- 城乡规划专业知识
- 仁爱英语九年级上册Unit 1 The Changing World Topic 2 The population in developing countries is growing faster
- 速录专业毕业论文
- dr9焊接母座安装规则
- c语言函数名最大长度
- 设计变更单表格
- 良性前列腺增生诊疗指南
- 中学生食品安全教育 主题班会课件(18张PPT) 上学期
- 《长方形和正方形》 完整版课件
- 《乘法交换律和结合律》教学课件数学四年级下册
- 趣味数学-高斯求和 完整版课件
- 花卉生产设施课件
- 高中体育与健康人教版高中必修全一册(新课标)第十章体操类运动-技巧模块计划
- 云南省主要矿产资源
- 临床试验疑难问题解答
- 光伏发电工程施工组织设计施工工程光伏发电工程光伏发电施工组织设计
评论
0/150
提交评论