3.基于ZigBee无线传感器智能家居综合实例实验.pdfVIP

3.基于ZigBee无线传感器智能家居综合实例实验.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ZigBee ZigBee 基于ZZiiggBBeeee的智能家居综合样例 1. 实验环境 ♦ 硬件:UP-CUP IOT-6410-II型嵌入式物联网综合实验系统, PC机。 ♦ 软件:Vmware Workstation +Fedora Core 8 + MiniCom/Xshell + ARM-LINUX交叉编 译开发环境 2. 实验内容 ♦ 基于嵌入式网关系统,进行基于Zigbee无线传感器网络的智能家居的简单图形界面显 示设计 ♦ 基于嵌入式网关系统,了解掌握Linux 系统下socket编程 3. 实验原理 针对GUI的综合实例,具体实现都是通络网络层对底层Zigbee(传感器、控制设备)、 蓝牙、RFID 等功能进行封装,提供给GUI上层界面统一的调用接口。 功能框图如下所示: ♦ 网络服务层实现(Socket通信) 套接口(Socket)为目前Linux上最为广泛使用的一种的进程间通信机制,与其他的 Linux通信机制不同之处在于除了它可用于单机内的进程间通信以外,还可用于不同机器之 间的进程间通信。但是由于Socket本身不支持同时等待和超时处理,所以它不能直接用来 多进程之间的相互实时通信。本实验采用事件驱动库libev 的方式构建我们的服务器模型。 Socket服务器端 Libev 是一种高性能事件循环 / 事件驱动库。作为 libevent 的替代作品,其第一个 版本发布与 2007 年 11 月。Libev 的设计者声称 libev 拥有更快的速度,更小的体积, 更多功能等优势,这些优势在很多测评中得到了证明。正因为其良好的性能,很多系统开始 使用libev 库。libev 同样需要循环探测事件是否产生,其循环体用 ev_loop结构来表达, 并用 ev_loop( ) 来启动。 void ev_loop( ev_loop* loop, int flags ) Libev 支持八种事件类型,其中包括 IO 事件。一个 IO 事件用 ev_io 来表征,并用 ev_io_init() 函数来初始化:voidev_io_init(ev_io*io,callback,intfd,intevents) 初始化内容包括回调函数 callback,被探测的句柄 fd 和需要探测的事件,EV_READ 表“可 读事件”,EV_WRITE 表“可写事件”。 用户需要做的仅仅是在合适的时候,将某些 ev_io 从 ev_loop 加入或剔除。一旦加入, 下个循环即会检查 ev_io 所指定的事件有否发生;如果该事件被探测到,则 ev_loop会自 动执行 ev_io 的回调函数 callback();如果 ev_io 被注销,则不再检测对应事件。无论 某 ev_loop 启动与否,都可以对其添加或删除一个或多个 ev_io,添加删除的接口是 ev_io_start() 和 ev_io_stop()。 void ev_io_start( ev_loop *loop, ev_io* io ) void ev_io_stop( EV_A_* ) 由此,可以容易得出如下的“一问一答”的服务器模型。由于没有考虑服务器端主动终 止连接机制,所以各个连接可以维持任意时间,客户端可以自由选择退出时机。 上述模型可以接受任意多个连接,且为各个连接提供完全独立的问答服务。借助 libev 提供的事件循环 / 事件驱动接口,上述模型有机会具备其他模型不能提供的高效率、低资 源占用、稳定性好和编写简单等特点。 服务器主要实现流程是:首先开启一个Zigbee后台线程(底层)监听服务器调用信息, 接着利用ev_io_start(loop,ev_io_watcher);启动一个接收线程,专门用来接收客户端发 送过来的命令信息,然后按照相应的协议进行解析,跳转到相应的接口,进一步调用底层 Zigbee等信息并返回正确的信息给客户端。 封装接口:(libev_test.c) bool Server_GetZigBeeNwkInfo(int fd); bool Server_GetZigBeeNwkTopo(int fd); bool Server_GetTempHum(int fd); bool Server_SetSensorStatus(int fd,unsigned int addr,unsigned int state); int Server_GetRfidId(int fd); i

文档评论(0)

0520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档