基于Linux和Qt的智能家居系统的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《 电 子 技 术 应 用 》 2012 年 第 38 卷 第 4 期
光、窗帘、空调、电梯等设施的无线控制,并预设了情境 模式;安防报警模块支持对烟感、门磁、煤气泄漏检测等 的 自 动 报 警 , 并 可 通 过 GPRS/3G 技 术 将 报 警 信 息 传 送 到用户手机上;家庭娱乐模块支持常见格式的音视频文 件的播放(主要依靠硬件解码)以及对常见格式的图片 的浏览(电子相框)。
Abstract : By analyzing the features and functions of smart home , this paper proposes a design of family multi -function control system . The system uses Freescale's i.MX51 processor as the MCU , and builds a LTIB embedded environment on the Linux platform , a GUI interface ultimately displays on development board. This paper discusses multithread communication with TCP/IP Socket and synchronized transmission of audio /video between the client and the server. Test results show that the system is stable and reliable , easy to operate , and reaches the design goals.
1 系统的架构和功能
家庭智能控制系统主要由室内分机、 单元门口机、 小区围墙机、管理中心终端机、管理中心服务器以及附 件组成。 系统采用分布式网络结构,可以根据住户数量 对系统的容量进行扩充。
(1)室 内 机 是 用 户 在 室 内 进 行 操 作 的 主 要 平 台 ,其 功 能组成为:可视对讲、信息服务、家电控制、安防报警、 家庭娱乐等。 可视对讲模块主要实现双向可视通话、视 频 监 控 、留 言/留 影 、开 锁 等 功 能 ; 信 息 服 务 模 块 主 要 用 来收发物业信息和小区广播,支持文本、图片形式,并实 现与可视对讲模块的影音共享;家电控制模块包括对灯
Key words : smart home ; Linux ; Qt ; Freescale ; multithread communication ; synchronized transmission of audio /video
针对智能家居的特点及应用背景,设计了一种家庭 多 功 能 控 制 系 统 。 该 系 统 采 用 飞 思 卡 尔 公 司 ARM Cortex A8 系 列 的 i.MX51 处 理 器 作 为 MCU , 在 其 上 移 植 嵌 入 式 Linux 作 为 软 件 开 发 平 台 , 并 利 用 Qt 相 关 技 术 为 基 础 设 计 友 好 的 用 户 界 面 , 实 现 了 ARM 板 的 各 功 能 模 块 与服务器端的交互。 系统同时具备数字可视对讲、信息 收发、家电控制、安防报警、家庭娱乐等功能。
Linux 中 的 网 络 编 程 主 要 通 过 Socket 接 口 实 现 , 在 Qt 环 境 里 , 对 Socket 进 行 了 封 装 , 并 建 立 了 相 应 的 QTcpSocket 类 来 实 现 TCP 客 户 端 和 服 务 器 的 通 信 。 QTcpSocket 继 承 了 QIODevice , 所 以 QTcpSocket 可 以 使 用 QDataStream 进 行数据的读取和写入。
图 2 为数据库的查询操作流程。 首先在实体类里创 建 两 个 connect 连 接 , 分 别 用 于 发 送 和 接 收 查 询 结 果 , 并 生 成 SQL 语 句 向 QueryThread 提 交 查 询 请 求 信 号 。 QueryThread 收 到 请 求 后 为 其 创 建 一 个 线 程 , 并 交 由 Worker 类 进 行 具 体 数 据 库 查 询 操 作 。 Worker 类 得 出 查 询 结 果 后 , 先 传 递 给 QueryThread , 再 由 其 将 查 询 结 果 返 回 到实体类。
嵌入式技术 Embedded Technology
象 、 易 于 扩 展 且 允 许 真 正 的 组 件 编 程 。 Qt 的 C++ 类库封装了适应不同操作系统的访问细节,这 使得它能够快速地部署于各种桌面与嵌入式系 统 中 [1]。
信 号 / 槽 机 制 是 Qt 的 核 心 特 性 , 这 种 机 制 真 正实现了消息的封装, 完全可以取代原始的回 调 和 消 息 机 制 。 信 号 和 槽 的 连 接 通 过 connect () 函 数 完 成 ,connect () 函 数 是 QObject 类 中 的 静 态 函数,其函数原型如下:
Design and implementation of smart home system based on Linux and Qt
Liu Zhiguo ,Chen Xinhua
(College of Information Science and Engineering , Shandong University of Science and Technology , Qingdao 266590 , China )
可 扩 展 标 记 语 言 XML (eXtensible Markup Language) 是一种用于数据交换和数据存储的多用途文本格式。 对 于 XML 格 式 的 数 据 ,Qt 中 的 QtXml 模 块 提 供 了 DOM 和 SAX 两 种 处 理 方 式 。 本 文 采 用 的 DOM 方 式 把 XML 文 档 转 换 成 一 个 可 以 遍 历 的 树 形 结 构 , 这 样 便 可 以随意访问其中的节点,因此要明显简洁得多。
实体类 返回查询结果
Worker
进行查询操作, 返回查询结果
生 成 sql 语 句 , 提交查询请求
开启一个线程, 提交查询语句
QueryThread
图 2 数据库查询操作流程图
关键代码如下:
《 电 子 技 术 应 用 》 2012 年 第 38 卷 第 4 期
嵌入式技术 Embedded Technology
卡 尔 公 司 的 i.MX51 处 理 器 作 为 MCU , 在 Linux 平 台 上 搭 建 了 LTIB 开 发 环 境 , 实 现 了 开 发 板 上 的 GUI
界 面 显 示 。 详 细 论 述 了 客 户 端 与 服 务 器 的 Socket 多 线 程 通 信 和 音 视 频 同 步 传 输 的 设 计 过 程 。 测 试 结 果
表明,系统稳定可靠、易于操作,基本达到了设计目标。
关 键 词 : 智 能 家 居 ;Linux ;Qt ;Freescale ; 多 线 程 通 信 ; 音 视 频 同 步 传 输
中 图 分 类 号 : TP277
文献标识码: A
文 章 编 号 : 0258-7998(2012)04-0023-04
为 了 实 现 数 据 库 的 并 行 操 作 , 使 GUI 界 面 与 数 据 库 相分离, 从而让界面能更快地响应用户的一般操作,同
24 欢迎网上投稿 www.chinaaet.com
样 要 用 到 Qt 的 多 线 程 编 程 。 在 系 统 启 动 时 , 首 先 要 建 立 一 个 全 局 对 象 m_query , 以 便 于 各 个 实 体 类 与 数 据 库 类 进行连接。 这样,每当有数据库操作请求时便会实例化 一 个 m_query 来 创 建 一 个 线 程 用 于 处 理 该 请 求 。 m_query 对 象 中 包 含 两 个 类 : (1)QueryThread , 用 于 为 每 个 数 据 操 作 创 建 一 个 线 程 ; (2)Worker , 用 于 实 现 数 据 库 的 相 关 操 作,如加载数据库驱动、进行数据查询/插入/删除等。
室内机和中心机之间的通信采用多线程方式实现。 多线程方式具有降低内存、 提高程序响应速度等优点, 特 别 适 用 于 嵌 入 系 统 。 系 统 中 建 立 了 三 个 主 线 程 :(1) GUI 线 程 : 用 于 执 行 main () 主 函 数 , 响 应 用 户 的 界 面 操 作 ; (2)tcpServer 侦 听 线 程 : 用 于 对 指 定 端 口 进 行 监 听 ; (3)tcpSocket 传 输 线 程 : 负 责 消 息 的 接 收 和 回 复 。 下 面 以 用 户 主 动 更 新 小 区 广 播 为 例 详 细 说 明 Socket 通 信 的 流 程:(1)室内机首先启动一个线程 ,将用户的更新请求结 构 转 化 成 标 准 的 XML 格 式 ( 如 果 是 新 设 备 第 一 次 开 机 , 要 先 手 动 进 行 IP 的 设 置 ) , (2) 调 用 connectToHost () 函 数 请求与中心机建立连接,处于监听状态的中心机接到请 求 后 , 就 会 分 配 一 个 Socket 套 接 字 来 处 理 连 接 : 首 先 根 据 解 析 出 来 的 XML 的 Type 节 点 判 断 请 求 类 型 , 如 果 是 纯 文 本 则 从 数 据 库 的 Text 表 读 取 , 如 果 是 图 片 则 从 硬 盘 读 取 , 然 后 调 用 QIODevice::write () 函 数 发 送 ; (3) 室 内 机 接 到 应 答 信 号 readyRead () 后 就 开 始 进 行 信 息 的 收 取 , 根 据 消 息 的 Type 节 点 类 型 分 别 写 入 数 据 库 和 硬 盘 。 Socket 多 线 程 通 信 流 程 如 图 1 所 示 。 2.3 并行数据库设计
(4)百度文库 心 机 是 整 个 系 统 的 神 经 中 枢 ,管 理 人 员 通 过 管 理中心的控制设备管理各子系统的终端, 其功能包括: 可视对讲、视频监控、查看报警信息、排除设备故障、信 息服务、系统设置、远程管理等。 2 系统的实现方案 2.1 Qt 的 信 号 / 槽 机 制
Qt 是 一 个 跨 平 台 的 C++ 应 用 程 序 框 架 , 完 全 面 向 对 23
(2)单 元 门 口 机 的 主 要 功 能 是 完 成 与 所 在 单 元 楼 的 任 意住户以及管理中心机的可视通话,除了具备留言/留影 功 能外,还提供触摸屏校准、背光调节、密码设置等功能。
(3)围 墙 机 的 基 本 功 能 和 单 元 门 口 机 类 似 ,但 可 视 对 讲、留言/留影功能是针对小区内所有住户的。
Bool QObject::connect(const QObject* sender, const char*signal,const QObject* receiver,const char* member ) 其 中 ,sender 和 receiver 是 指 向 QObject 的 指 针 , signal 和 slot 是 不 带 有 参 数 的 函 数 名 。 2.2 基 于 XML 格 式 的 Socket 多 线 程 通 信
嵌入式技术 Embedded Technology
基于 Linux 和 Qt 的智能家居系统的设计与实现
刘治国,陈新华 ( 山 东 科 技 大 学 信 息 科 学 与 工 程 学 院 , 山 东 青 岛 266590 )
摘 要: 针对智能家居的特点及功能,提出一种家庭多功能控制系统的设计方案。 系统采用飞思
相关文档
最新文档