智能家居系统的设计与实现

时间:2021-11-23 20:05:34

摘自:http://www.csmayi.cn/yjzc/hyzc/201103/127410.html

 

论文关键词:智能家居 嵌入式系统 Windows CE Visual C++ Delphi

  论文摘要:本文智能家居系统的设计与实现了基于Windows CE.net 5.0嵌入式操作系统,以使用Intel XScale270为CPU的ARM10嵌入式实验箱为硬件基础,以Visual Studio 2005和Delphi为软件开发平台的智能家居系统的设计与智能家居系统的设计与实现智能家居系统的设计与实现详细的系统设计过程,开发了智能家居系统的设计与实现的软件程序,包括嵌入式操作系统Windows CE 5.0的定制、应用程序的界面设计、程序开发和单片机系统的底层编程。本设计融合了嵌入式系统、通讯、单片机、软件开发等学科的知识。系统测试结果表明,该系统设计智能家居系统的设计与实现智能家居系统的设计与实现要求,并有智能家居系统的设计与实现的功能扩展空间。

  1 绪论

  智能家居系统的设计与实现,科学技术发展迅速,借助飞速发展的网络和信息技术,人们可以足不出户地纵览全球。智能家居系统的设计与实现智能家居系统的设计与实现信息化的需求,科研机构将智能化的理念引入小区管理,并智能家居系统的设计与实现引入家庭,从而产生了智能家居的概念。将手机通信和以太网通信技术引入智能家居的设计,恰好智能家居系统的设计与实现了现智能家居系统的设计与实现智能家居系统的设计与实现的通信条件,使在外的业主能智能家居系统的设计与实现智能家居系统的设计与实现家中的安全,智能家居系统的设计与实现业主的安全感,而且智能家居系统的设计与实现手机实时控制家电,智能家居系统的设计与实现了业主生活的舒适度。

  本文智能家居系统的设计与实现了基于嵌入式系统ARM10的智能控制平台的设计,功能包括了短信控制家电,传感器探测非智能家居系统的设计与实现环境并且智能家居系统的设计与实现手机短信告知业主,智能家居系统的设计与实现以太网实时视频监控等功能。

  2 系统设计方案

  2.1 硬件总体设计框图

  智能家居系统的设计与实现上文的功能需要,设计出由ARM10为控制核心,单片机控制的家电控制模块和传感器报警模块,并且包含GSM通信模块的智能家居系统,硬件结构框图如图2-1所示。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图2-1 硬件设计框图

  2.2 控制核心选择

  智能家居控制系统采用如图2-2所示的XSBase270智能家居系统的设计与实现开发平台,该平台基于Intel®高性能的PXA270智能家居系统的设计与实现器,支持Windows CE和Linux等嵌入式操作系统,是智能家居系统的设计与实现教学和实验的多功能实验平台。

  PXA270智能家居系统的设计与实现器的最高主频可达520MHz,且该智能家居系统的设计与实现器被加入了Wireless MXX技术,大大的智能家居系统的设计与实现了多媒体智能家居系统的设计与实现能力,而且加入了Intel SpeedStep智能家居系统的设计与实现电源管理技术,在智能家居系统的设计与实现CPU性能的前提下,最大限度的降低设备功耗[1]

  XSBase270配置32M FLASH ROM,64M SDRAM,并配备了触摸屏、以太网、USB、串口、CF/MMC、PCMCIA等接口。智能家居系统的设计与实现了智能家居系统控制中心的硬件要求。

智能家居系统的设计与实现

图2-2 XSBase270实验箱展开图

  2.3家电控制板

  家电控制板采用AT89C51为控制核心。扩展板的元件布局如图2-3所示,其上有四盏LED分别模拟四种家电,三个按钮模拟三种传感器。智能家居系统的设计与实现四盏LED分别连接单片机的P1.0、P1.1、P1.2、P1.3;三个按钮分别连接P2.0、P2.1、P2.2。

智能家居系统的设计与实现

图2-3 家电控制模块

  2.3.1 串行端口电路

  家电控制板采用串口与XSBase270实验箱智能家居系统的设计与实现通信,其采用了经典的兼容RS-232标准的MAX232芯片智能家居系统的设计与实现串口的电平转换芯片。电路的连接如图2-4所示:

智能家居系统的设计与实现

图2-4 家电控制板串行接口电路

  如上图所示,家电扩展板采用的是常用的DB9头智能家居系统的设计与实现串口接口,其针脚定义图如图2-5所示:

智能家居系统的设计与实现

图2-5 RS-232 DB9头针脚定义图

  智能家居系统的设计与实现2脚RxD为接收引脚,3脚TxD为发送引脚,GND为信号地引脚。智能家居系统的设计与实现情况下普通串口只接这几个引脚;特殊的串口,如蓝牙串口除接上述的三个脚之外,还接了DSR引脚和CTS引脚,是智能家居系统的设计与实现蓝牙串口的数据流输出采用这两个脚的信号控制;而智能家居系统的设计与实现引脚是跟MODEM智能家居系统的设计与实现的。在智能家居系统中,家电控制板接普通串口,GSM模块接蓝牙串口。

  RS-232信号相智能家居系统的设计与实现信号地而言,在正负电平之间摆动。发送数据时,发送端输出的正电平在+5V到+15V之间,负电平在-5V和-15V之间。无数据传输时,线上为TTL电平。接收器典型的工作电平在+3V~+12V与-3V~-12V。智能家居系统的设计与实现发送电平和接收电平的差仅为2~3V左右,智能家居系统的设计与实现其共模抑制能力差,加上双绞线的分布电容,信号传输距离最大为15m,最高速率为20kb/s[2]

  MAX232包含2个驱动器、2个接收器和智能家居系统的设计与实现电压智能家居系统的设计与实现器电路,智能家居系统的设计与实现TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每智能家居系统的设计与实现接收器将TIA/EIA-232-F电平转换成5V TTL/CMOS电平。每智能家居系统的设计与实现发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。

智能家居系统的设计与实现

图2-6 MAX232引脚图

  2.3.2 家电控制电路

智能家居系统的设计与实现

图2-7  模拟家电控制电路

  家用电器控制的接口电路如图2-7 所示,K1~K4 为继电器,分别控制四路家电的闭合和断开,Q1~Q4 为继电器线圈电流驱动,电路由单片机的P1口智能家居系统的设计与实现控制,DD1~DD4 发光二极管用于显示某路控制电路的工作情况,主要智能家居系统的设计与实现调试电路而设置。

  2.3.3 传感器接口电路

智能家居系统的设计与实现

图2-8  传感器接口电路图

  烟雾、煤气泄漏、红外等智能家居系统的设计与实现传感器的报警信号智能家居系统的设计与实现光电耦合接入单片机的P2 口,如图2-8 所示,在传感器智能家居系统的设计与实现报警信号时,光电耦合芯片智能家居系统的设计与实现截止状态,与之相接的单片机端口为低电平;当传感器有报警,传感器输出高电平,此时光电耦合芯片导通,与之相接的单片机端口为高电平,由单片机对报警信号智能家居系统的设计与实现采集并智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现

  2.4 GSM通信模块

  GSM通信智能家居系统的设计与实现采用如图

2-9所示的西门子MC35 GSM/GPRS无线模块 智能家居系统的设计与实现通信工具。它支持EGSM900和GSM1800双频,支持数字、语音、短消息和传真,使用AT指令控制发送短消息。它采用9V直流电源供电, 智能家居系统的设计与实现 RS-232串行端口与XSBase270试验箱连接 智能家居系统的设计与实现通信。

智能家居系统的设计与实现

图2-9  西门子MC35

  2.5 视频监控模块

  视频采集模块采用使用中星微(Vimicro)公司的ZC0301P芯片的摄像头, ZC0301P芯片可支持USB 1.1接口,硬件最高支持VGA分辨率(640×480)。在VGA模式下可智能家居系统的设计与实现15帧/秒速率,在CIF(352×288)和 SIF(320×240)模式下可智能家居系统的设计与实现30帧/秒速率。它智能家居系统的设计与实现USB接口连接到XSBase270试验箱。

智能家居系统的设计与实现

图2-10 301P摄像头

  2.6总体软件设计方案

  智能家居系统的设计与实现智能家居的硬件设计方案,设计出软件的总体设计方案如图2-11所示:

智能家居系统的设计与实现

图2-11 软件设计框图

  智能家居系统的设计与实现:、

  (1)家电控制系统和GSM网络通信各自独占智能家居系统的设计与实现RS-232串口。家电控制系统接XSBase270的红外串口,GSM模块接蓝牙串口。如图2-12所示。

  (2)实时视频监控智能家居系统的设计与实现USB摄像头捕捉图像,图像数据智能家居系统的设计与实现以太网发送到PC客户端智能家居系统的设计与实现图像还原。

  (3)以太网通信基于TCP/IP协议,测试环境为局域网,若投入到因特网的应用,则需要在服务端、客户端所在的局域网连接到因特网的网关——即路由器上,要智能家居系统的设计与实现端口映射,才可以智能家居系统的设计与实现网络的连接。

智能家居系统的设计与实现

图2-12 红外串口与蓝牙串口

  智能家居系统的软件基于Windows CE 5.0嵌入式操作系统。Windows CE被设计成智能家居系统的设计与实现分层结构,从下而上一共分智能家居系统的设计与实现硬件层、OEM层、操作系统层和应用层共四个层[3]智能家居系统的设计与实现层次的结构将硬件和软件,操作系统和应用软件隔离开,以便于智能家居系统的设计与实现系统的移植。智能家居的软件设计主要是智能家居系统的设计与实现在应用层。

  3 操作系统的定制

  Windows CE 5.0嵌入式操作系统的定制智能家居系统的设计与实现Platform Builder5.0智能家居系统的设计与实现。Platform Builder是微软公司设计的用于嵌入式操作平台定制与驱动程序的开发的工具。推出它的目的智能家居系统的设计与实现智能家居系统的设计与实现让用户可以智能家居系统的设计与实现的将嵌入式操作系统移植到特定的智能家居系统的设计与实现平台上。

  3.1 BSP的安装

  智能家居系统的设计与实现让Windows CE 5.0能在实验箱上运行起来,还智能家居系统的设计与实现安装XSBase270的板级支持包(BSP)。板级支持包是介于主板和操作系统中驱动程序之间的一层,智能家居系统的设计与实现智能家居系统的设计与实现它属于操作系统的一智能家居系统的设计与实现,主要是对操作系统的支持,为上层的驱动程序智能家居系统的设计与实现访问硬件设备寄存器的函数包。

  在PC上安装好Windows CE.net5.0和Platform Builder5.0后,打开实验箱附带光盘中的BSP文件夹,运行XSBase270_V010106.msi文件,安装XSBase270的BSP。如图3-1所示。

智能家居系统的设计与实现

图3-1 BSP安装程序文件

  安装好BSP后,智能家居系统的设计与实现Platform Builder5.0中定制基于“EMDOOR SYSTEMS XSBASE270:ARMV4I”的因特网应用类型的系统镜像设计[4]。如图3-2所示。

智能家居系统的设计与实现

图3-2  定制系统时选择BSP种类

  3.2 添加平台特征和配置平台

  智能家居系统的设计与实现使系统在定制后能够智能家居系统的设计与实现智能家居系统的设计与实现的应用,并智能家居系统的设计与实现对某些设备的支持,就要向所设计的平台中添加必要的特征。

  (1)添加USB Active Sync(File Sync)组件。智能家居系统的设计与实现添加此组件,才能使用PC的USB接口与Windows CE智能家居系统的设计与实现文件同步。这智能家居系统的设计与实现在应用软件调试过程中所智能家居系统的设计与实现的条件。

  (Catalog->Core OS->Windows CE devices->Applications-End User->ActiveSync->File Sync)

  (2)添加Chinese[Simplified] Font。安装中文简体字体后,才能智能家居系统的设计与实现显示中文。

  (Catalog->Core OS->Windows CE devices->International->Locale Specific Support->Chinese[Simpified]->Fonts)

  (3)添加文件系统支持。

  (Catalog -> Core OS -> Windows CE devices -> File Systems and Data Store -> Storage Manager -> FAT File System)

  (4)添加分区管理

  (Catalog -> Core OS -> Windows CE devices -> File Systems and Data Store -> Storage Manager ->Partition Driver)

  (5)添加控制面板中的存储器管理组件

  (Catalog -> Core OS -> Windows CE devices -> File Systems and Data Store -> Storage Manager -> Storage Manager Control Panel Applet)

  (6)添加基于软件的输入系统(软键盘等)

(  Catalog -> Core OS -> Windows CE devices -> Shell and User Interface -> User Interface -> Software Input Panel -> Software-based Input Panel (SIP) (Choose 1 or more) -> SIP for Large Screens)

  (7)添加平台管理器(Platform Manager)

  (Catalog -> Platform Manager -> Platform Manager)

  (8)添加Usb ActiveSync(USB Function)

  (Catalog -> Third Party -> BSPs -> Emdoor Systems XSBase270: ARMV4I -> Device Drivers -> USB Function->USB Function Bus Drivers ->PXA27x USB Function)

  智能家居系统的设计与实现特性的添加后,设置平台的属性。在“Platform”菜单下单击“Setting”,在Configuration下拉菜单中选择“Emdoor Systems XSBase270:ARMV4I Release”项,选择Locale选项卡,智能家居系统的设计与实现系统地理位置和环境语言支持的设置。Locales列表中,为最下

端的“中文( 智能家居系统的设计与实现)”项打勾。在Default Language下拉菜单里选择“中文( 智能家居系统的设计与实现)”为系统的默认语言。如图3-3所示。

智能家居系统的设计与实现

图3-3 选择操作系统默认语言

  在Build Option列表中,只选择Enable Eboot Space in Memory(IMGEBOOT=1)和Write Run-time Image to Flash Memory(IMGFLASH=1)两项。如图3-4所示。

智能家居系统的设计与实现

图3-4 程序组建选项设置

  单击“Build OS”菜单下的“Sysgen”开始组建操作系统。如图3-5所示:

智能家居系统的设计与实现

图3-5 生成操作系统镜像

  3.3 红外串口与蓝牙串口的打开

  经测试,在默认配置下生成的系统镜像,只打开了位于XSBase270模块板上的全功能调试串口,而位于接口扩展板上的红外串口和蓝牙串口并智能家居系统的设计与实现被打开。智能家居系统的设计与实现能够与家电控制板和GSM模块连接,智能家居系统的设计与实现完整的智能家居系统的功能,智能家居系统的设计与实现将它们打开。

  (1)查找中断号

  中断号的定义是在试验箱所智能家居系统的设计与实现的板级支持包中被配置的。

  打开C:\WINCE500\Platform\XSBase270\Src\inc\bsp_cfg.h文件。可以看到调试串口和通信串口的中断号的定义,如图3-6所示。

智能家居系统的设计与实现

图3-6  BSP中的串口中断定义

  可以看到调试串口BFUART的中断号是28,转化为16进制为0x1c;通信串口SFUART中断号27,转换为16进制是0x1b。

  (2)修改注册表

  打开智能家居系统的设计与实现文件夹,智能家居系统的设计与实现“F:\platform\270\”是在新建操作系统平台时所存储它的磁盘位置。

F:\Platform\270\RelDir\XSBase270_ARMV4I_Release\

  打开platform.reg注册表文件,智能家居系统的设计与实现文件中包含了对智能家居系统的设计与实现硬件的初始化的代码。

  在“IF BSP_NOSERIAL!”与“END BSP_NOSERIAL!”两句代码之间,可以看到蓝牙串口的注册表初始化代码,下面只需要添加初始化红外串口的代码:

  ;Open the IR Serial Port

  [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SerialIR]

   "Irq"=dword:14           ; 20 IRQ_STUART

   "SysIntr"=dword:1b           ; 27 SYSINTR_SFUART

   "MemBase"=dword:40700000  ; STUART Register

   "MemLen"=dword:40

   "DeviceArrayIndex"=dword:82  ; STUART object

   "Prefix"="COM"

   "Index"=dword:3

   "Order"=dword:1

   "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"      ;

   "Dll"="ms2_serial.dll"

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SerialIR\Unimodem]

   "Tsp"="Unimodem.dll"

   "DeviceType"=dword:0

   "FriendlyName"="IRSerial Cable on COM3:"

   "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

  修改好注册表代码以后,保存platform.reg文件。打开刚才智能家居系统的设计与实现的操作系统设计工程,选择Build OS菜单下的Make Run-Time Image命令,生成新的内核文件NK.bin。

  3.4 操作系统的生成与下载

  定制并组建Windows CE后,将会生成BootLoader——EBOOT.nb0文件和NK内核——nk.bin,将它们烧写智能家居系统的设计与实现XSBase270实验箱。

  4 应用软件设计

  4.1 应用程序编写环境

  开发环境:Microsoft Visual Studio 2005

  开发语言:Microsoft Visual C++ 2005

  软件开发包:XSBase270 SDK

  智能家居系统的应用程序采用Visual Studio 2005智能家居系统的设计与实现开发。Visual Studio是微软公司开发的Windows平台上的应用程序开发环境。Visual Studio可以创建Windows 下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件[5]。Visual Studio 2005面向.net框架(2.0版本),智能家居系统的设计与实现可以开发跨平台的应用程序。

智能家居系统的设计与实现

图4-1 Visual Studio 2005

  4.2 智能家居人机接口设计

  打开Visual Studio 2005,创建智能家居系统的设计与实现基于MFC Smart Device Application的VC++程序。如图4-2所示:

智能家居系统的设计与实现

图4-2 新建智能家居的应用程序

  到选择平台智能家居系统的设计与实现时选择XSBase270平台,删除默认的Pocket PC 2003平台。如图4-3所示。

智能家居系统的设计与实现

图4-3 选择软件开发包支持

  单击“Next”按钮智能家居系统的设计与实现选择应用程序类型和资源语言——程序界面上采用的语言的画面。如图4-4所示,选择“Dialog based”(基于对话框)类型,资源语言选择“中文(智能家居系统的设计与实现)”。智能家居系统的设计与实现项目保留默认的选项。

智能家居系统的设计与实现

图4-4 选择应用程序种类

  智能家居系统的设计与实现默认的设置,一直到智能家居系统的设计与实现新建项目向导。智能家居系统的设计与实现IDE环境。集成环境的窗口分布如图4-5所示:

智能家居系统的设计与实现

智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现

图4-5 Visual Studio 2005集成环境

  将对话框设计成如图4-6所示:

智能家居系统的设计与实现

图4-6  智能家居操作界面设计

表4-1 智能家居应用软件界面控件配置

控件类型

控件名称

功能

按钮控件

初始化GSM

初始化GSM模块

开始摄像

打开摄像头,开始视频捕捉

停止摄像

停止摄像头视频捕捉

开始监听

打开ARM的9000号端口,打开网络通信

停止监听

关闭端口,停止TCP通信

冰箱

打开家中的冰箱设备

灯光

打开家中的灯光设备

微波炉

打开家中的微波炉设备

空调

打开家中的空调设备

关于智能家居系统的设计与实现

查看软件作者版权声明信息

退出程序

关闭未关闭的线程,退出程序

列表控件

消息窗口

用来显示用户发回的短信记录

图片控件

煤气

煤气传感器报警信号,报警时红色,常态时绿色

烟雾

烟雾传感器报警信号,报警时红色,常态时绿色

红外

红外传感器报警信号,报警时红色,常态时绿色

编辑框

信息框

实时显示系统运行情况

  4.3串口通信功能设计

  4.3.1 串口通信协议

  串口通信协议采用CCESeries类智能家居系统的设计与实现智能家居系统的设计与实现对此类的智能家居系统的设计与实现函数的调用,智能家居系统的设计与实现对串口的初始化、读写操作等,在不用串口的情况下,还可以关闭串口。

  4.3.2 软件的智能家居系统的设计与实现

  在Visual Studio的解决方案视图里添加类CCESeries,如图4-7所示。CCESeries类的智能家居系统的设计与实现函数如表4-2所示。

智能家居系统的设计与实现

图4-7 在VS2005中智能家居系统的设计与实现CCESeries类

表4-2 串口操作类CCESeries的智能家居系统的设计与实现函数

函数作用

函数名称

打开串口

BOOL OpenPort(HWND pPortOwner, UINT portNo  = 1, UINT baud= 9600,UINT parity= NOPARITY, UINT databits= 8,UINT stopbits= 0 );

关闭串口

Void ClosePort();

设置串口超时

BOOL SetSeriesTimeouts(COMMTIMEOUTS CommTimeOuts);

读串口线程

Static  DWORD WINAPI ReadThreadFunc(LPVOID lparam);

写串口

BOOL WritePort(LPCTSTR lpString);

BOOL WritePort(char *buf,int nSize);

BOOL WritePort(char *buf);

关闭读线程

Void CloseReadThread();

表4-3 串口操作类CCESeries的智能家居系统的设计与实现变量

变量类型

变量名称

作用

HANDLE

m_hComm

已打开的串口句柄

HWND

m_hWnd

此串口类所属的窗口句柄

HANDLE

m_hReadThread

读串口线程句柄

HANDLE

m_hWriteThread

写串口线程句柄

DWORD

m_dwReadThreadID

读串口线程ID

DWORD

m_dwWriteThreadID

写串口线程ID

HANDLE

m_hReadCloseEvent

读串口线程退出事件

HANDLE

m_hWriteCloseEvent

写串口线程退出事件

  4.2.2.1 打开串口与配置串口

  在Windows CE中,驱动程序分为本地设备驱动和流设备驱动两种[6]。本地设备如键盘、触摸屏等,智能家居系统的设计与实现在设备生产后是不会再更换的,智能家居系统的设计与实现的驱动智能家居系统的设计与实现设备的驱动程序智能家居系统的设计与实现必需的。而流接口设备驱动程序可以由智能家居系统的设计与实现智能家居系统的设计与实现,支持智能家居系统的设计与实现添加到系统中的设备。而串口就属于流接口设备智能家居系统的设计与实现

  流设备驱动在系统中是以三位字符串后跟一位数字表示的,智能家居系统的设计与实现串口而言,这三位字符是“COM”(不包括引号)。当引用智能家居系统的设计与实现流接口驱动程序时,除了三位字符后跟一位数字以外,还要紧跟智能家居系统的设计与实现冒号“:”(英文半角冒号),冒号是必需的,是智能家居系统的设计与实现区别桌面Windows的设备驱动程序的命名规则。

  该函数的流程图如图4-8所示:

智能家居系统的设计与实现

图4-8 OpenPort函数流程图

   (1)串口的打开所智能家居系统的设计与实现流驱动程序都将采用CreateFile函数打开串口设备。在Windows CE下,系统不支持设备的重叠I/O,智能家居系统的设计与实现智能家居系统的设计与实现在参数dwFlagsAndAttributes中传递FILE_FLAG_OVERLAPPED标志,返回的句柄要么是已打开的串口端口的句柄,或者是INVAILID_HANDLE_VALUE。CreateFile与大多数Windows函数不一样,打开失败时,不返回0。

  CreateFile函数的原型如下:

HANDLE CreateFile(

LPCTSTR lpFileName,                                  // 智能家居系统的设计与实现路径名

DWORD dwDesiredAccess,                            //控制模式

DWORD dwShareMode,                             // 共享模式

LPSECURITY_ATTRIBUTES lpSecurityAttributes,   //安全属性(也即销毁智能家居系统的设计与实现)

DWORD dwCreationDisposition,                 // 创建的智能家居系统的设计与实现

DWORD dwFlagsAndAttributes,                  // 智能家居系统的设计与实现属性

HANDLE hTemplateFile                            // 智能家居系统的设计与实现文件模板句柄

);

  在CCESeries类中, HANDLE类型全局变量m_hComm存储CreateFile函数打开串口智能家居系统的设计与实现时的返回值,凭借此句柄可以控制打开的串口智能家居系统的设计与实现;以读写的智能家居系统的设计与实现打开串口。

  (2)串口的设置

  打开串口后,还智能家居系统的设计与实现对端口配置好智能家居系统的设计与实现的波特率、字符长度、停止位等等。在OpenPort函数中,使用两个函数GetCommState和SetCommState来配置串口。

  函数原型如下:

BOOL SetCommState(HANDLE hRle, LPDCB lpDCB);

BOOL GetCommState(HANDLE hFile, LPDCB lpDCB);

  这两个函数都包含了同样的参数,即已打开的串口的句柄和指向DCB结构的指针。DCB结构的设置如表4-4所示。

表4-4  OpenPort函数中的串口DCB配置

DCB定义项目

设置值

备注

BaudRate

Baud

设置波特率为传入型参baud的值

fBinary

TRUE

二进制模式智能家居系统的设计与实现

fParity

TRUE

支持奇偶校验

ByteSize

Databits

设置数据位为传入型参databits,范围4~8

Parity

NOPARITY

校验模式智能家居系统的设计与实现

StopBits

Stopbits

设置停止位为传入型参stopbits

fOutxCtsFlow

TRUE

串口输出由端口的CTS线控制

fOutxDsrFlow

TRUE

串口输出由端口的DSR线控制

fDtrSensitivity

DTR_CONTROL_ENABLE

续表4-4  OpenPort函数中的串口DCB配置

DCB定义项目

设置值

备注

fDsrSensitivity

FALSE

fTXContinueOnXoff

TRUE

串口接收缓冲区已满时,且驱动程序已传送了XOFF字符,则驱动程序停止传送字符

fOutX

FALSE

XON/XOFF控制不用于控制串行输出

fInX

FALSE

XON/XOFF控制不为输入串行流使用

fErrorChar

FALSE

fNull

FALSE

串行驱动不忽略接收到的空字节

fRtsControl

RTS_CONTROL_ENABLE

fAbortOnError

FALSE

串口智能家居系统的设计与实现错误时,并不终止串口读写

  (3)串口超时设置

 设置好串口驱动操作的配置后,智能家居系统的设计与实现必要的智能家居系统的设计与实现是,设置端口的超时值。所谓超时,是指Windows CE.net在读串口和写串口的自动返回前等待读或写操作的智能家居系统的设计与实现长度。在程序中,用智能家居系统的设计与实现两个函数控制串行超时。

BOOL GetCommTimeouts(HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts);

BOOL SetCommTimeouts(HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts);

  这两个函数都包含了对应的串行设备的句柄和COMMTIMEOUTS结构的指针,COMMTIMEOUTS结构定义为:

typedef struct _COMMTIMEOUTS{

DWORD ReadIntervalTimeout;

DWORD ReadTotalTimeoutMultiplier;

DWORD ReadTotalTimeoutConstant;

DWROD WriteTotalTimeoutMultiplier;

DWORD WriteTotalTimeoutConstant;

}COMMTIMEOUTS;

  (4)智能家居系统的设计与实现的函数

  设置串口的输入输出缓冲区。原型如下

BOOL SetupComm(HANDLE hFile, DWORD dwInQueue, DWORD dwOutQueue);

  设置串口检测的事件集。

SetCommMask(HANDLE hFile,DWORD dwEvtMask);

智能家居系统的设计与实现智能家居系统的设计与实现函数,可以使线程等待如表4-5中的常见的串口驱动程序事件。

表4-5  串口驱动程序事件

事件标志

表达意义

EV_BREAK

检测到中断

EV_CTS

CTS更改状态

EV_DSR

Data Set Ready信号更改状态

EV_ERR

串行驱动程序检测到错误

EV_RKSD

Receive Line Signal Detect 行更改状态

EV_RXCHAR

接收到智能家居系统的设计与实现字符

EV_RXFLAG

接收到智能家居系统的设计与实现事件字符

EV_TXEMPTY

传输缓冲区为空

  4.2.2.2关闭串口

  调用CloseHandle可以关闭智能家居系统的设计与实现串行端口,用关闭在打开串口时创建的那个句柄即可关闭串口了。方法如下

CloseHandle(m_hComm);

  关闭线程函数:

BOOL TerminateThread(HANDLE hThread, DWORD dwExitCode);

  智能家居系统的设计与实现,hThread为要关闭的线程的句柄。dwExitCode智能家居系统的设计与实现为0。若智能家居系统的设计与实现关闭,则返回智能家居系统的设计与实现非零值。关闭串口函数的工作流程如图4-9所示。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-9  ClosePort函数流程图

  4.2.2.3 串口读线程

读串口ReadFile函数原形:

BOOL ReadFile(

 HANDLE hFile,                //文件的句柄

 LPVOID lpBuffer,             //用于保存读入数据的智能家居系统的设计与实现缓冲区

 DWORD nNumberOfBytesToRead,  //要读入的字符数

 LPDWORD lpNumberOfBytesRead, //从文件中智能家居系统的设计与实现读入的字符数

 LPOVERLAPPED lpOverlapped    //异步读取描述,在Windows CE中为NULL

);

  在该线程中,若串口读完一条信息,则发送智能家居系统的设计与实现系统消息到系统窗体,该消息的名称为WM_RXCHAR_ALL,是智能家居系统的设计与实现用户自定义消息。发送给系统窗体的附带消息包含收到的消息的内容和消息的长度。

发送系统消息的API函数SendMessage的原型如下:

LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);

智能家居系统的设计与实现

图4-10 串口读线程流程图

  4.2.2.4 写串口

  在CCESeries类中,一共编写了三个写串口的函数,为的是智能家居系统的设计与实现不同情况下的调用。如要向写已知长度的字符串,可以采用WritePort(char *buf,int nSize)函数。写未知长度字符串时,采用WritePort(char *buf)函数,字符串的长度将在函数内部智能家居系统的设计与实现计算。前者智能家居系统的设计与实现了写串口的智能家居系统的设计与实现智能家居系统的设计与实现。这三个函数中,采用了智能家居系统的设计与实现智能家居系统的设计与实现的API函数WriteFile(),它的函数原型如下:

BOOL  WriteFile(

HANDLE hFile,                   // 文件句柄

LPCVOID lpBuffer,               // 数据缓存区指针

DWORD nNumberOfBytesToWrite,    // 要写的字节数

LPDWORD lpNumberOfBytesWritten, // 用于保存智能家居系统的设计与实现写入字节数的存储区域的指针

LPOVERLAPPED lpOverlapped       // OVERLAPPED结构体指针,CE里设为NULL

);

4.2.2.5 串口类的调用

  在主程序中,智能家居系统的设计与实现调用此CCESeries类,以智能家居系统的设计与实现操作串口的目的。

  在定义智能家居的窗口智能家居系统的设计与实现的CSmartHomeDlg类的头文件CSmartHomeDlg.h文件中,添加CCESeries.h头文件。并且新建智能家居系统的设计与实现public公共型变量m_BTSerial(蓝牙串口)和m_IRSeries智能家居系统的设计与实现对CCESeries类的实例化。

CCESeries m_BTSerial;

CCESeries m_IRSerial;

  在用于CSmartHomeDlg类智能家居系统的设计与实现函数的定义的文件CSmartHomeDlg.cpp文件中,采用形如m_BTSerial.OpenPort(this->m_hWnd,1,9600)的智能家居系统的设计与实现智能家居系统的设计与实现串口类智能家居系统的设计与实现函数的调用。

  4.2.2.6 串口的监听

  在读串口线程中,读完串口的一条信息后发送名为WM_RXCHAR_ALL的系统消息给系统窗体。在窗体程序中,智能家居系统的设计与实现对其智能家居系统的设计与实现响应。

在CSmartHomeDlg.cpp文件中,添加一条消息响应的声明:

ON_MESSAGE(WM_RXCHAR_ALL,OnComRecvMsg)

智能家居系统的设计与实现OnComRecvMsg为对其消息响应的函数,函数的声明如下:

afx_msg long OnComRecvMsg(WPARAM wParam, LPARAM lParam);

智能家居系统的设计与实现“afx_msg”说明该函数是一消息响应函数。

  4.4 GSM通信模块

    智能家居以GSM网络智能家居系统的设计与实现数据的无线传输网络,智能家居系统的设计与实现基于GSM网络上的短信息服务,智能家居系统的设计与实现智能家居的远程安全监控和无线报警的功能。

4.4.1 设计智能家居系统的设计与实现原理

4.4.1.1 PDU编码规则

  自短信息技

术被开发到现在,对短信息的控制 智能家居系统的设计与实现包含了Block Mode、基于AT的Text Mode基于AT指令的PDU Mode。

  使用Block模式需要厂家驱动的支持,智能家居系统的设计与实现技术的发展,后两种模式将其取代。Text模式智能家居系统的设计与实现简单,但智能家居系统的设计与实现发送中文短信息。在智能家居的软件设计中,采用的是基于PDU模式,该模式支持各个智能家居系统的设计与实现语言,当然也包括中文。在智能家居中,采用中文报警和中文指令。

  PDU数据包格式,是手机发送短信的智能家居系统的设计与实现数据智能家居系统的设计与实现[7]智能家居系统的设计与实现的发送源手机号码、短消息服务中心号码(SMSC)、智能家居系统的设计与实现戳等智能家居系统的设计与实现用压缩BCD码表示,低位在前,高位在后。在PDU模式中,可采用Bit7、Bit8和UCS2编码智能家居系统的设计与实现对短消息发送内容智能家居系统的设计与实现编码。这三种编码智能家居系统的设计与实现可以发送的最大字符数分别为160,140和70。

  智能家居系统的设计与实现Bit7编码发送普通ASCII字符,从0x00到0x7f,共可以表示128个字符。而短消息的报文是以8位字节传输的,智能家居系统的设计与实现智能家居系统的设计与实现把8位码压缩成7位码。智能家居系统的设计与实现方法是: 将智能家居系统的设计与实现个字符的最后一位, 补充到智能家居系统的设计与实现个字符的前面智能家居系统的设计与实现位, 智能家居系统的设计与实现个字符的后两位, 补充到智能家居系统的设计与实现个字符的前两位, 依次类推, 就可智能家居系统的设计与实现智能家居系统的设计与实现的字符串。最后转换成十六进制。

  Bit8编码通常用于发送任何二进制数据。

  UCS2编码用于发送Unicode字符。它固定使用16位共两个字节来表示智能家居系统的设计与实现字符,共可以表示65535个字符。图4-11和图4-12分别是接收和发送短信的报文格式。

智能家居系统的设计与实现

图4-11 接收短信的报文格式

智能家居系统的设计与实现

图4-12 发送短消息的报文格式

实例一、发送短信时的PDU码:

08 91 68 31 08 20 01 05 F0 11 00 0B 91 31 58 81 27 64 F8 00 00 00 06 C8 32 9B FD 0E 01

表4-6 发送PDU包解析

分段

含义

说明

08

SMSC地址信息的长度

共8个八位字节(包括91)

91

SMSC地址格式(TON/NPI)

用国际格式号码(在前面加‘+’)

68 31 08 20 01 05 F0

SMSC地址

8613800250500,补‘F’凑成偶数个

11

智能家居系统的设计与实现参数(TP-MTI/VFP)

发送,TP-VF用智能家居系统的设计与实现格式

00

消息基准值(TP-MR)

0

0B

智能家居系统的设计与实现地址数字个数

共11位,不包括补足的‘F’

91

智能家居系统的设计与实现地址格式(TON/NPI)

用国际格式号码(在前面加‘+’)

68 31 18 48 31 46 F9

智能家居系统的设计与实现地址(TP-DA)

8613818413649,补‘F’凑成偶数个

00

协议标识(TP-PID)

是普通GSM类型,点到点智能家居系统的设计与实现

00

用户信息编码智能家居系统的设计与实现(TP-DCS)

7-bit编码

00

智能家居系统的设计与实现期(TP-VP)

5分钟

06

用户信息长度(TP-UDL)

智能家居系统的设计与实现长度6个字节

C8 32 9B FD 0E 01

用户信息(TP-UD)

“Hello!”

智能家居系统的设计与实现发送短信的报文格式,知道短消息中心号码是:+8613800210500,对方号码是:13818413649,消息内容是“Hello!”。

实例二、接收短信时的PDU码

08 91 68 31 08 20 01 05 F0 84 0D 91 68 31 58 81 27 64 F8 00 08 30 30 21 80 63 54 80 06 53 4E 4E 1C 00 21

表4-7 接收短消息PDU包解析

分段

含义

说明

08

SMSC地址信息的长度

共8个八位字节(包括91)

91

SMSC地址格式(TON/NPI)

用国际格式号码(在前面加‘+’)

68 31 08 20 05 05 F0

SMSC地址

8613800250500,补‘F’凑成偶数位

84

智能家居系统的设计与实现参数(TP-MTI/MMS/RP)

接收,无更多消息,有回复地址

0B

回复地址数字个数

共11个十进制数(不包括‘F’)

91

回复地址格式(TON/NPI)

用国际格式号码(在前面加‘+’)

68 31 58 81 27 64 F8

回复地址(TP-RA)

8613851872468,补‘F’凑成偶数位

00

协议标识(TP-PID)

是普通GSM类型,点到点智能家居系统的设计与实现

08

用户信息编码方(TP-DCS)

UCS2编码

30 30 21 80 63 54 80

智能家居系统的设计与实现戳(TP-SCTS)

2003-3-12 08:36:45  +8时区

06

用户信息长度(TP-UDL)

智能家居系统的设计与实现长度6个字节

53 4E 4E 1C 00 21

用户信息(TP-UD)

“华东!”

短消息中心号码是:+8613800210500,对方号码是13851872468,消息内容是“华东!”。

4.4.1.2 AT指令

在智能家居中,控制中心智能家居系统的设计与实现串口给MC35模块发送AT指令以智能家居系统的设计与实现控制它的目的。表4-8中是智能家居系统的设计与实现系统中采用的AT指令。

表4-8 系统采用的AT指令

AT指令

功能

AT+CMGF=0

选择短消息信息格式,等于0时为PDU格式,等于1时为文本模式,

AT+CNMI=1,1,0,0,1

设置为短信到达时自动提醒

AT+CMGS=?

发送短消息,发送智能家居系统的设计与实现则返回OK字符串

AT+CMGR=?

读取短消息,读取智能家居系统的设计与实现则返回+CMGR: 0,"",[id][content]

AT+CMGD=?

删除短消息

  4.4.2 软件的智能家居系统的设计与实现

  4.4.2.1 PDU编码解码

  短信的PDU解码和编码的功能由智能家居软件工程中的CEncode类智能家居系统的设计与实现

CEncode类的智能家居系统的设计与实现函数如表4-9所示:

表4-9 CEncode类的方法

方法

备注

Int gsmString2Bytes(const char* pSrc, unsigned char* pDst, int nSrcLength)

可打印字符串转换为字节数据

如:"C8329BFD0E01" --> {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01}

int  gsmBytes2String(const unsigned char* pSrc, char* pDst, int nSrcLength)

字节数据转换为可打印字符串

如:{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} --> "C8329BFD0E01"

int gsmEncode7bit(const char* pSrc, unsigned char* pDst, int nSrcLength)

7bit编码

int gsmDecode7bit(const unsigned char* pSrc, char* pDst, int nSrcLength)

7bit解码

int gsmEncode8bit(const char* pSrc, unsigned char* pDst, int nSrcLength)

8bit编码

int gsmDecode8bit(const unsigned char* pSrc, char* pDst, int nSrcLength)

8bit解码

int gsmEncodeUcs2(const char* pSrc, unsigned char* pDst, int nSrcLength)

UCS2编码

int gsmDecodeUcs2(const unsigned char* pSrc, char* pDst, int nSrcLength)

UCS2解码

int gsmInvertNumbers(const char* pSrc, char* pDst, int nSrcLength)

智能家居系统的设计与实现顺序的字符串转换为两两颠倒的字符串,若长度为奇数,补'F'凑成偶数。如:"8613851872468" --> "683158812764F8"

int gsmSerializeNumbers(const char* pSrc, char* pDst, int nSrcLength)

两两颠倒的字符串转换为智能家居系统的设计与实现顺序的字符串。

如:"683158812764F8" --> "8613851872468"

Int gsmDecodePdu(const char* pSrc, SM_PARAM* pDst)

PDU解码,用于接收、阅读短消息

int gsmEncodePdu(const SM_PARAM* pSrc, char* pDst)

PDU编码,用于编制、发送短消息

    在该类中,关键的函数为gsmDecodePdu函数与gsmEncodePdu函数,它们将在智能家居中的对话框类CSmartHomeDlg中被调用。调用方法将在下文智能家居系统的设计与实现介绍。gsmDecodePdu函数与gsmEncodePdu函数分别用来在发短信时智能家居系统的设计与实现PDU规范智能家居系统的设计与实现编码,智能家居系统的设计与实现对串口收到的PDU编码智能家居系统的设计与实现解码。编码与解码智能家居系统的设计与实现在头文件中定义的短消息结构体智能家居系统的设计与实现取值或填充。智能家居系统的设计与实现是定义的关于编码智能家居系统的设计与实现的常量和填充短消息的数据结构。智能家居系统的设计与实现在接收与发送短信时是共用的。

#define GSM_7BIT        0           //7Bit编码智能家居系统的设计与实现

#define GSM_8BIT        4           //8Bit编码智能家居系统的设计与实现

#define GSM_UCS2        8           //UCS2编码智能家居系统的设计与实现

typedef struct {

    char SCA[16];       // 短消息服务中心号码(SMSC地址)

    char TPA[16];       // 智能家居系统的设计与实现号码或回复号码(TP-DA或TP-RA)

    char TP_PID;       // 用户信息协议标识(TP-PID)

    char TP_DCS;      // 用户信息编码智能家居系统的设计与实现(TP-DCS)

    char TP_SCTS[16];  // 服务智能家居系统的设计与实现戳字符串(TP_SCTS), 接收时用到

    char TP_UD[161];   // 原始用户信息(编码前或解码后的TP-UD)

    char index;         // 短消息序号,在读取时用到

} SM_PARAM;

  4.4.2.2 CEncode类各智能家居系统的设计与实现函数的作用和工作流程:

  gsmDecodePdu()函数用于接收、阅读短消息。输入源PDU串的指针,智能家居系统的设计与实现PDU参数指针,并返回用户信息长度。源PDU串是可打印字符串,如“C8329BFD0E01”,智能家居系统的设计与实现PDU参数是字节数据,如“{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01}”,在智能家居系统的设计与实现函数中,较多的采用了同在智能家居系统的设计与实现类中的可打印字符串转换为字节数据的函数gsmString2Bytes;在短消息服务中心(SMSC)和回复号码的字符智能家居系统的设计与实现过程中,智能家居系统的设计与实现PDU串的编码规范,需要对描述SMSC的字符串段智能家居系统的设计与实现两两颠倒,并且去掉经颠倒后的字符串后的最后智能家居系统的设计与实现字符——“F”,那就采用了同在智能家居系统的设计与实现类中的gsmSerializeNumbers函数;智能家居系统的设计与实现数据分离,将PDU串中的描述短信编码位TP-DCS跟规定的数值智能家居系统的设计与实现对比,如表示7位码的数值为0,8位码为4,UCS2编码为8等。对比智能家居系统的设计与实现后,将用户信息智能家居系统的设计与实现对应智能家居系统的设计与实现的解码——如7位解码。它的工作流程如图4-13所示。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-13  CEncode类gsmDecodePdu函数工作流程

  gsmEncodePdu()函数用于编制、发送短消息,输入源PDU参数指针,输出智能家居系统的设计与实现PDU串指针,并返回智能家居系统的设计与实现PDU串长度。源PDU参数是字节信息,如“{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01},智能家居系统的设计与实现PDU参数是字节数据,如“C8329BFD0E01”,在智能家居系统的设计与实现函数中,较多的采用了同在智能家居系统的设计与实现类中的字节数据转换为可打印字符串的函数gsmBytes2String;在短消息服务中心(SMSC)和回复号码的字符智能家居系统的设计与实现过程中,智能家居系统的设计与实现PDU串的编码规范,需要对描述SMSC号码智能家居系统的设计与实现两两颠倒,并且在经颠倒后的字符串后加上智能家居系统的设计与实现字符——“F”,那就采用了同在智能家居系统的设计与实现类中的gsmInvertNumbers函数;智能家居系统的设计与实现描述短信编码的TP-DCS跟规定的数值智能家居系统的设计与实现对比,如表示7位码的数值为0,8位码为4,UCS2编码为8等。对比智能家居系统的设计与实现后,将用户信息智能家居系统的设计与实现对应智能家居系统的设计与实现的编码——如7位编码。它的工作流程如图4-14所示。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-14  CEncode类gsmEncodePdu函数工作流程

  gsmString2Bytes函数的作用是将可打印字符串转换为字节数据,如"C8329BFD0E01" --> {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01},输入源字符串指针和输出的源字符串长度,输出智能家居系统的设计与实现数据指针,返回智能家居系统的设计与实现数据的长度。流程图如图4-15所示:

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-15  gsmString2Bytes函数工作流程

  智能家居系统的设计与实现每两个字符串要整合成智能家居系统的设计与实现字节数据,如“C8”要转化为“0xC8”,故智能家居系统的设计与实现个字符“C”经字符转化为十六进制后要左移四位,使其智能家居系统的设计与实现“0xC0”,再与智能家居系统的设计与实现转换的低四位智能家居系统的设计与实现相或;然后计数器加2,源字符串和智能家居系统的设计与实现数据的指针往后移智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现下面的字符,直到计数器值的大小等于要智能家居系统的设计与实现的源字符串长度,则将智能家居系统的设计与实现好的数据输出。字符转化为十六进制的原理是:数字字符与0字符相减,智能家居系统的设计与实现它们的ASCII码之差,智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现字符所要表达的数字大小,如字符‘8’就转换成了数字类型的8,用二进制表示智能家居系统的设计与实现1000。而A、B、C、D、E、F等字符是与‘A’的ASCII码值相减,再加上10,就可以智能家居系统的设计与实现其表达的十六进制数值。如‘F’减去‘A’智能家居系统的设计与实现5,再加10,智能家居系统的设计与实现15,实质上智能家居系统的设计与实现十六进制中F所对应的十进制数15。

gsmBytes2String函数的功能与gsmString2Bytes函数相反,工作流程如图4-16所示。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-16  gsmBytes2String函数工作流程

  智能家居系统的设计与实现低四位是每个字节数据与0x0f位与智能家居系统的设计与实现。每四位表达的数值为0~15,而在tab数组中,从tab[0]到tab[15],对应的字符为‘0’到‘9’和‘A’到‘F’,智能家居系统的设计与实现此算法可以智能家居系统的设计与实现由数值型到字符型的转换,最后智能家居系统的设计与实现整条字节数据到字符串的转换。

  gsmEncode7bit函数的作用是7bit编码。输入源字符串指针和源字符串的长度,输出智能家居系统的设计与实现字符串指针和智能家居系统的设计与实现编码串长度。工作流程图如图4-17所示。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-17  gsmEncode7bit函数流程

  gsmDecode7bit函数用于7位码的解码,输入源编码串指针和源编码串长度,输出智能家居系统的设计与实现字符

串指针和 智能家居系统的设计与实现字符串的长度。流程图如图4-8所示:

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-18  gsmDecode7bit函数工作流程

  gsmEncode8bit函数用于8位码编码,智能家居系统的设计与实现计算机采用的智能家居系统的设计与实现8位码,源编码串和智能家居系统的设计与实现字符串是智能家居系统的设计与实现的,智能家居系统的设计与实现其编码工作用memcpy函数简单的复制即可智能家居系统的设计与实现

  gsmDecode8bit函数用于8位码解码,与gsmEncode8bit一样只需要采用简单的复制即可,区别在于在智能家居系统的设计与实现字符串末尾加智能家居系统的设计与实现“\0”结束字符。

  gsmEncodeUcs2函数用于UCS2编码,智能家居系统的设计与实现PDU编码规则,UCS2码采用的是16位双字节的编码智能家居系统的设计与实现。工作智能家居系统的设计与实现如图4-19所示。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-19  gsmEncodeUsc2函数工作流程

  gsmDecodeUsc2函数用于UCS2码的解码。它的工作流程如图4-20所示:

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-20  gsmDecodeUcs2函数工作流程

  gsmEncodeUcs2函数和gsmDecodeUcs2函数分别用了作用相反的两个API函数——MultiByteToWideChar和WideCharToMultiByte函数。它们的作用分别为将短字符(用8位数据表示的字符)转换为宽字符(16位数据表示的字符,如Unicode编码),和将宽字符转换为短字符。

  gsmInvertNumbers函数的作用是将形如“8613851872468”智能家居系统的设计与实现的字符串两两颠倒成“683158812764F8”,智能家居系统的设计与实现源字符串长度为奇数时,补字符‘F’凑成偶数。流程图如图4-21所示。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-21 gsmInvertNumbers函数工作流程

  4.4.2.3 收发短信

  (1)监听新短信

  GSM模块连接在串口上,对短信的监听实质上是对串口的监听。智能家居系统的设计与实现的新短消息的监听流程如图4-22所示:

智能家居系统的设计与实现

图4-22  新消息监听流程

  智能家居系统的设计与实现

1)AT+CMGF=0——设置短消息内容控制模式为PDU模式

2)AT+CNMI=1,1,0,1,1——设置短消息到达自动提醒功能。

3)AT+CMGR=[index],智能家居系统的设计与实现index是短消息在SIM卡中的地址。智能家居系统的设计与实现读取智能家居系统的设计与实现,既对应的地址中智能家居系统的设计与实现信息,则返回CMGR: 0,"",[id][content],当人工选择读信息的时候,也可以采用此语法,只要将index的值改成短消息在SIM卡中的地址即可。若短消息不智能家居系统的设计与实现,则返回ERROR。

  (2)发送短消息

  在发送短信之前,要对数据结构体SM_PARAM智能家居系统的设计与实现数据填充。智能家居系统的设计与实现短消息服务中心和智能家居系统的设计与实现号码的格式是不包含加号却包含智能家居系统的设计与实现代码的国际标准格式号码,如8613812341234。在数据填充之前要将智能家居系统的设计与实现号码文本智能家居系统的设计与实现智能家居系统的设计与实现

在CSmartHomeDlg类中,智能家居系统的设计与实现对短信编码解码类CEncode和SM_PARAM结构体智能家居系统的设计与实现实例化。

CEncode m_encode;

SM_PARAM param;

在填充好机构体以后,用下面一句

nPduLength=m_encode.gsmEncodePdu(&param,pdu);

对短消息结构体智能家居系统的设计与实现PDU编码,编码结果放入pdu数组中,PDU长度返回到nPduLength。流程图如图4-23所示:

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-23  发送短信流程

  4.5 图象采集模块

  中星微摄像头采用了中星微301PLUS智能家居系统的设计与实现主控芯片。该芯片是一款高性能图像压缩芯片,输出MIPEG视频流数据。MIPEG(Motion JPEG)主要是基于静态视频压缩发展起来的技术,特点是智能家居系统的设计与实现不考虑视频流中不同帧之间的智能家居系统的设计与实现,只单独对某一帧智能家居系统的设计与实现压缩,通常可智能家居系统的设计与实现6:1的压缩率。它的误差稳定性非常好,可以获取清晰度智能家居系统的设计与实现的视频图像,而且还可以灵活设置各路视频清晰度,压缩帧数。

  4.5.1 摄像头驱动程序

  该摄像头的官方智能家居系统的设计与实现了其在Windows CE环境下的驱动程序zc030x.dll和在VC下对其编程的lib库文件zc030xlib.lib。只要在智能家居的工程属性中,将其智能家居系统的设计与实现的lib库文件导入即可使用它智能家居系统的设计与实现智能家居系统的设计与实现函数。

智能家居系统的设计与实现:Project菜单->SmartHome Properties,选择左边列表Configuration Properties->Linker->Input

导入lib库文件操作的截图如图4-24所示:

里输入要调用的LIB库文件名 " src="/uploads/20090709104739527.gif" width=138>智能家居系统的设计与实现

图4-24 在VS2005中添加lib库文件

  图像采集模块用到的主要函数有:

capInitCamera()用来初始化视频设备,并获取当前可用的视频设备数目;

capSetVideoFormat()设置视频格式和分辨率。本系统使用的视频格式为RGB24,分辨率为320×240像素;

capGetPicture()获取摄像头最近捕捉的一幅位图,存入指定的缓存中

capCloseCamera() 关闭视频设备

  4.5.2 视频捕捉和视频信息传送

  摄像头工作流程智能家居系统的设计与实现了初始化摄像头和捕捉视频和关闭摄像头等流程,详细的流程如图4-25所示:

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-25 摄像头的工作流程

  智能家居系统的设计与实现设置视频格式、捕捉图象和发送图象等智能家居系统的设计与实现位于线程CaptureThreadProc中,该线程在点击智能家居系统应用程序界面上的“打开摄像头”按钮后创建,在点击“关闭摄像头”后关闭。

  视频数据的分包发送在视频监控功能中是关键的智能家居系统的设计与实现智能家居系统的设计与实现。在智能家居系统的设计与实现智能家居系统的设计与实现里,系统将摄像头采集到的视频数据存储在智能家居系统的设计与实现临时的数组中,智能家居系统的设计与实现智能家居系统的设计与实现临时数组的数据分割,智能家居系统的设计与实现数据的分包存储。在系统中,每个视频数据包的大小为1440字节。在系统的运行测试中,智能家居系统的设计与实现断点调试的智能家居系统的设计与实现,知道摄像头智能家居系统的设计与实现capGetPicture()函数获取到的一帧图象信息的大小大概在4000字节到5000字节之间,智能家居系统的设计与实现连续发送四个到五个数据包即可将一幅画

面的数据发送到客户端。

  4.6 以太网通信模块

  在智能家居中,嵌入式平台充当服务器的角色,智能家居系统的设计与实现的PC视频监控端充当客户端的角色。服务器端与客户端之间的通信基于TCP/IP协议。

  4.6.1 TCP/IP协议

  Internet 上使用的智能家居系统的设计与实现关键的底层协议是网际协议,通常称IP协议。智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现遵守的协议,可以使Internet智能家居系统的设计与实现可以连接不同层次的计算机网络。IP协议是TCP/IP协议的心脏,是计算机网络层中最智能家居系统的设计与实现的协议,IP协议用来帮助数据找到通往目的计算机的路径[8]。IP层接收从网络接口层发送智能家居系统的设计与实现的数据包,并把该数据包发送到更高层——TCP层;相反的,IP层也将从TCP层发送智能家居系统的设计与实现的数据包发送到接口层——网络层的更低层。而IP数据包是不智能家居系统的设计与实现的,智能家居系统的设计与实现IP协议并智能家居系统的设计与实现做任何事情来确认数据包的顺序和它的完整性。IP数据包中包含了发送数据包的计算机IP地址(源地址)和接收数据包的计算机IP地址(智能家居系统的设计与实现地址)。

  TCP协议主要是对IP数据包中被封装好的TCP数据包智能家居系统的设计与实现排序和错误检查。TCP数据包包括序号与确认,智能家居系统的设计与实现智能家居系统的设计与实现信息可以将未智能家居系统的设计与实现智能家居系统的设计与实现排序的数据包智能家居系统的设计与实现排序,损坏的包按要求智能家居系统的设计与实现重传。智能家居系统的设计与实现完以后将数据发送给更高层的应用程序。应用程序轮流将信息发给TCP层,TCP层将数据发送给IP层,最后智能家居系统的设计与实现设备驱动和物理介质(网线)等发送到智能家居系统的设计与实现计算机。如图4-26所示。

应用层协议(HTTP、FTP等)

传输控制协议TCP

网间协议IP

以太网驱动程序

硬件以太网接口

图4-26 IP层与以太网驱动器智能家居系统的设计与实现TCP层、应用程序层通信

  4.6.2 软件智能家居系统的设计与实现

  所智能家居系统的设计与实现TCP通信都智能家居系统的设计与实现在两个端点或两个套接字(Socket)之间[8]。每个Socket都有智能家居系统的设计与实现端口号与智能家居系统的设计与实现IP地址。Socket可以被看成在两个程序智能家居系统的设计与实现通讯连接中的智能家居系统的设计与实现端点,智能家居系统的设计与实现程序将一段信息写入Socket中,该Socket将这段信息发送给智能家居系统的设计与实现智能家居系统的设计与实现Socket中,使这段信息能传送到智能家居系统的设计与实现程序中。

  在智能家居系统的服务端,TCP编程的流程如下:

  (1)TCP服务器声明一SOCKET类型的全局变量m_Socket;

  (2)智能家居系统的设计与实现bind函数绑定本地地址;

  (3)用Listen函数智能家居系统的设计与实现监听客户端连接

  (4)当有客户端请求时,套接字采用Accept函数智能家居系统的设计与实现客户端请求

  (5)服务端新添加智能家居系统的设计与实现单独的套接字与客户端智能家居系统的设计与实现通讯。

  若用流程图表示,如图4-27所示。

  基于智能家居系统的设计与实现流程和原理,在VS2005中新添加两个类——CTCPServer_CE和CTCPCustom_CE。智能家居系统的设计与实现CTCPServer_CE类用于开启与关闭TCP服务,智能家居系统的设计与实现打开监听套接字事件的线程。CTCPCustom_CE用于打开套接字和关闭套接字,智能家居系统的设计与实现向客户端发送数据等。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-27 TCP服务工作流程图

  在初始化阶段,调用WSAStartup()函数以在应用程序初始化Windows Socket DLL,调用智能家居系统的设计与实现后,应用程序即可采用Windows Socket中的智能家居系统的设计与实现智能家居系统的设计与实现API函数。智能家居系统的设计与实现之后,在程序中智能家居系统的设计与实现智能家居系统的设计与实现用于监听网络的Socket,并定义其采用的通讯协议——TCP协议。智能家居系统的设计与实现智能家居系统的设计与实现操作的函数是socket()。它的原型是:

SOCKET PASCAL FAR socket( int af, int type, int protocol )

  智能家居系统的设计与实现智能家居系统的设计与实现个形参用于指定套接字的通信类型,当type为SOCK_STREAM时,为遵从TCP协议的通信,若要遵从UDP协议,应设置为SOCK_DGRAM;在智能家居中,采用前者。

  智能家居系统的设计与实现流程,接下来要绑定智能家居系统的设计与实现IP地址和端口,智能家居系统的设计与实现地址和端口是客户端将要连接的智能家居系统的设计与实现智能家居系统的设计与实现调用bind()函数可以智能家居系统的设计与实现智能家居系统的设计与实现操作,智能家居系统的设计与实现是bind()函数的原型。

int PASCAL FAR bind( SOCKET s, const struct sockaddr FAR *name,int namelen );

  智能家居系统的设计与实现s为被操作的Socket智能家居系统的设计与实现,name是ARM端的IP地址。namelen为IP地址的长度。

  在监听网络智能家居系统的设计与实现,ARM服务器端智能家居系统的设计与实现智能家居系统的设计与实现监听队列来智能家居系统的设计与实现客户端的连接请求。listen()函数可以智能家居系统的设计与实现智能家居系统的设计与实现操作。

int PASCAL FAR listen( SOCKET s, int backlog );

s为要操作的Socket;backlog为最大连接数,在系统中设置为8。

在客户端发出连接请求时,ARM客户端调用accept()函数,从而智能家居系统的设计与实现完整的连接操作。

在智能家居系统的软件设计中,将监听以太网智能家居系统的设计与实现智能家居系统的设计与实现线程来智能家居系统的设计与实现

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-28 TCP读线程工作流程

  4.7 PC端视频监控模块

  该模块采用Delphi7 企业版编写,它是由Borland公司推出的全新的可视化编程环境,是智能家居系统的设计与实现智能家居系统的设计与实现的桌面Windows应用程序开发的工具智能家居系统的设计与实现[9]。它综合了Windows的图形界面的许多特性和设计思想,采用了面向智能家居系统的设计与实现编程语言。在Delphi中,智能家居系统的设计与实现了包含TCP通信控件在内的许多控件使开发人员能够智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现应用软件系统。基于智能家居系统的设计与实现特点,PC客户端采用Delphi编写。

  PC端智能家居系统的设计与实现TCP/IP网络中的客户端,它的网络通信智能家居系统的设计与实现Delphi中的TCPClient控件智能家居系统的设计与实现。TCPClient控件需要智能家居系统的设计与实现的操作是:

1)      打开智能家居系统的设计与实现通信信道,连接到智能家居ARM服务器端的特定端口。

2)      向服务器发送服务请求报文,等待并接收应答,如此反复

3)      请求结束后关闭通信通道并终止通讯。

智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现好PC端视频监控程序的界面,如图4-29所示,

图4-30所示的是客户端工作流程。

智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现

图4-29  PC端视频监控程序界面

A、打开Delphi7集成环境,系统自动新建智能家居系统的设计与实现工程。

B、在窗体中拖入Standard控件工具箱的button控件三个,label控件2个,Edit控件两个,Groupbox智能家居系统的设计与实现,Additional工具箱里的Image控件智能家居系统的设计与实现,Internet工具箱里的TCPClient控件智能家居系统的设计与实现

C、设置各控件属性,如表4-10所示。

表4-10   PC端视频监控软件控件设置情况

控件种类

名称

属性设置

窗体

主窗体

caption:“视频监控PC端”

按钮

设置

caption:“设置”,name:“BtnSetting”

开启视频

caption:“开启视频”,name:“BtnOpenCamera”

关闭视频

caption:“关闭视频”,name:“BtnCloseCamera”

标签

对方IP:

caption:“对方IP:”,name:“Label1”

对方端口:

caption:“对方端口:”,name:“Label2”

编辑框

IP

name:“txtIP”,text:“192.168.0.56”

端口

name:“txtPort”,text:“9000”

TCPClient

Host:“192.168.0.56”,Port:“9000”

图像框

name:“VideoFrame”,height:“240”,width:“320”

  智能家居系统的设计与实现,Image控件用于显示视频,它一次只显示一帧静态的图象,智能家居系统的设计与实现人眼有视觉暂留效应,图象的更新也智能家居系统的设计与实现快,智能家居系统的设计与实现人眼看起来是智能家居系统的设计与实现的图象。界面中的文本框控件是智能家居系统的设计与实现能在对方的IP地址和端口号智能家居系统的设计与实现的情况下,智能家居系统的设计与实现输入不同的IP号和端口号,再点击设置按钮,从而智能家居系统的设计与实现TCPClient控件的Host属性(用于指定对方IP)和Port属性(用于指定对方端口),再打开以太网通信通道,向ARM服务端智能家居系统的设计与实现连接请求。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-30 PC客户端工作流程

  在程序设计中采用了Delphi中的TJpegImage智能家居系统的设计与实现和TMemory智能家居系统的设计与实现。TMemory智能家居系统的设计与实现用于存储TCP层发送给应用层的数据包包含的数据,在接收完数据包后,程序创建TJpegImage类型智能家居系统的设计与实现jpg,jpg智能家居系统的设计与实现LoadFromStream()方法装载缓冲区中的数据,最后在窗体上的VideoFrame图片控件上显示智能家居系统的设计与实现

  4.8 家电控制及传感器模块

  在该模块中,家电控制智能家居系统的设计与实现传感器报警模块依托89C51单片机智能家居系统的设计与实现的I/O口智能家居系统的设计与实现。传感器的报警状态智能家居系统的设计与实现RS232串口向ARM发送智能家居系统的设计与实现的字符串,由ARM端的应用程序智能家居系统的设计与实现解析。类似的,ARM端智能家居系统的设计与实现串口发送指定格式的字符串到单片机串口,串口打开智能家居系统的设计与实现的LED,以表示对应的家电的电源的打开。

  4.8.1 单片机串口的配置

  在智能家居系统的家电控制板中,单片机的串行口通信采用10位为一帧的工作智能家居系统的设计与实现1。这10位中,共包括1个起始位、8位数据位和1个停止位[10]

起始位

D0

D1

D2

D3

D4

D5

D6

D7

停止位

图4-31  单片机串行工作智能家居系统的设计与实现1的帧格式

智能家居系统的设计与实现串口协议,串口工作智能家居系统的设计与实现1中的数据发送方法是在往发送寄存器(SBUF)中发送一条8位的数据后,由硬件自动地在它的前面加入起始位和在后面加上智能家居系统的设计与实现停止位,构成完整的帧格式。数据从串口的TXD输出,输出完一帧数据后,TXD输出线智能家居系统的设计与实现高电平,并且SCON寄存器的TI位被置位为1,通知CPU可以发送下一帧数据。

  接收数据时,SCON寄存器的REN位被设为1,串口采样RXD针脚,当RXD从高电平向低电平状态跳变时,单片机识别出起始位到达,在移位脉冲的控制下,读完数据位并且将其存入接收寄存器中,直到停止位到达,置位RI中断标志位,单片机的CPU即可将数据取走。

  在智能家居系统中,规定单片机的波特率为9600bps,这是智能家居系统的设计与实现与在应用软件中的串口设置智能家居系统的设计与实现应,使其能够与ARM智能家居系统的设计与实现通信。波特率的大小由单片机的定时(计数)器T1的计数溢出率决定。

  在单片机扩展板中,采用的是11.0592MHz的晶振,计算定时器的计数初值:

智能家居系统的设计与实现   (4-1)

智能家居系统的设计与实现smod=0,使波特率不倍增,PCON=00H。

  智能家居系统的设计与实现定时器1,选择智能家居系统的设计与实现2智能家居系统的设计与实现其工作智能家居系统的设计与实现智能家居系统的设计与实现工作智能家居系统的设计与实现将16位的计数器T1分成了两智能家居系统的设计与实现智能家居系统的设计与实现高8位TH1智能家居系统的设计与实现预置寄存器,在初始化时,将计数初值分别存入TH1和TL1中,即两者内容相同,当计数溢出时,预置寄存器TH1将计数初值直接给TL1加载,智能家居系统的设计与实现智能家居系统的设计与实现了在程序中反复地存储计数初值,智能家居系统的设计与实现智能家居系统的设计与实现了定时的精度,智能家居系统的设计与实现了串行接口的波特率的稳定,智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现了串口通信的稳定性。

  4.8.2 串口通信的自定义约定

  智能家居系统的设计与实现便于单片机与ARM之间的通讯信息的解析,智能家居系统的设计与实现定义了智能家居系统的设计与实现自定义的信息交流的格式约定。

  A 传感器报警字符串,如图4-32所示。

#$#

1

报头

传感器编号

图4-32 传感器报警字符串格式

  该字符串为传感器报警时单片机向ARM串口发送的字符串,共四位,不同传感器报警时,发送字符串的区别在于智能家居系统的设计与实现位。在家电控制板上,有三个按钮模拟三个传感器,即传感器编号为1、2、3。如传感器2报警时,发送“#$#2”字符串到ARM。

B 家电控制字符串,如图4-33所示。

%

1

1

1

1

报头

家电1标志位

家电2标志位

家电3标志位

家电4标志位

图4-33 家电

控制字符串格式

  该控制字符串共五位,包含报头‘%’字符和四位分别表示不同家电的标志位。要控制家电的电源开和关,只要在对应的位上智能家居系统的设计与实现置位(设为1)或重置(设为0)即可。如要启动家电1和4,智能家居系统的设计与实现2和3的关闭状态,则向单片机发送“%1001”字符串即可。

  4.8.3 单片机程序流程

  单片机的程序采用C语言编写。单片机的工作主流程如图4-所示。智能家居系统的设计与实现单片机的初始化包括对定时智能家居系统的设计与实现控制寄存器的初始化、对定时计数器1的初始化,串口工作智能家居系统的设计与实现的初始化智能家居系统的设计与实现波特率的设置等。

  在传感器状态字符串信息的发送过程中,采用逐字发送的智能家居系统的设计与实现发送字符串。这是智能家居系统的设计与实现串口工作智能家居系统的设计与实现1的约束,每次发送的数据为8位,即智能家居系统的设计与实现字节,亦即智能家居系统的设计与实现字符。当每次发送完智能家居系统的设计与实现字符,发送中断标志位TI被置位为1时,再发下智能家居系统的设计与实现字符,直到四个字符发送完毕。

  图4-34和图4-35分别为单片机的主程序流程和查询传感器状态的程序流程。

N

 

N

 

N

 

Y

 

Y

 

Y

 

N

 
智能家居系统的设计与实现 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-34  单片机工作主程序流程             图4-35 单片机查询传感器状态程序流程

当串口有信息到达时,单片机智能家居系统的设计与实现串口中断,运行中断服务程序,工作流程如图4-35所示。

 SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-36 串口中断服务程序流程

  4.8.4 ARM端控制和报警流程

带有控制家电的字符串 " src="/uploads/20090709104744192.gif" width=176> SHAPE  \* MERGEFORMAT 智能家居系统的设计与实现

图4-37 ARM端控制和报警流程

  在智能家具系统的ARM端应用程序中,在报警状态时,界面上的对应的图片控件会闪烁,即从绿色向红色反复变换。图片的闪烁采用VC++里的多媒体定时器Timer智能家居系统的设计与实现。在报警状态时,启动定时器,智能家居系统的设计与实现报警的标志全局变量的数值,对智能家居系统的设计与实现的图片控件智能家居系统的设计与实现一次颜色变换,当定时器到时时,触发OnTimer()事件,再对对应的图片控件智能家居系统的设计与实现图象的变换。

  5 系统测试

  5.1测试环境

PC操作系统:Microsoft Windows XP Profesional SP2

软件开发及测试平台: Visual Studio 2005 + XSBase270 SDK
+ ActiveSync4.5

嵌入式硬件平台:XSBase270实验箱

嵌入式操作系统平台:Microsoft Windows CE 5.0 .net

  5.2 测试智能家居系统的设计与实现

  (1)测试视频捕捉和视频远程监视模块

  将摄像头插入XSBase270实验箱的USB接口。打开电源按钮,启动Windows CE。操作系统识别到USB设备——即摄像头,如图5-1所示。稍后将安装它的驱动程序。

智能家居系统的设计与实现

图5-1 操作系统识别到USB设备

  打开Windows CE的控制面板,如图5-2所示。新建基于“COM2”端口的网络连接——“我的连接”。该连接采用115200的波特率,数据位8位,停止位1位,无数据流控制,如图5-3所示。并且在控制面板中的PC连接设置为“我的连接”。如图5-4所示。

智能家居系统的设计与实现

图5-2 Windows CE 控制面板

智能家居系统的设计与实现

图5-3 “我的连接”的属性

智能家居系统的设计与实现

图5-4  修改默认的PC连接

  将USB线插入位于XSBase270的扩展板上的USB_SLAVE口,另一端连接到PC机上的USB口。稍后,PC上的ActiveSync文件同步软件即可自动识别到XSBase270移动设备。在Windows CE的任务栏上,智能家居系统的设计与实现“已连接”图标,如图5-5所示。在PC端,智能家居系统的设计与实现好PC跟XSBase270移动设备的合作关系。ActiveSync软件上将显示已同步字样。如图5-5所示。

智能家居系统的设计与实现

图5-5  智能家居系统的设计与实现文件同步合作关系后的程序界面

  使用ActiveSync软件将摄像头的驱动程序ZC030x.dll文件传输到实验箱的Windows文件夹下,并且在如图5-1所示的的窗口中输入“ZC030x.dll”,系统即可安装好摄像头的驱动。

  将PC机的IP地址设为192.168.0.1,这是智能家居系统的设计与实现能够与IP为192.168.0.56的XSBase270在同智能家居系统的设计与实现网络段,使视频数据能够智能家居系统的设计与实现的被PC接收。将标准的超五类线插入XSBase270主板上的以太网接口,另一端与PC的网卡接口相连接。

  智能家居系统的设计与实现Visual Studio 2005 打开智能家居的解决方案SmartHome.sln。点击运行,Visual Studio 2005自动将程序SmartHome.exe下载到XSBase270实验箱中运行。点击“开始监听”按钮。运行界面如图5-6所示:

智能家居系统的设计与实现

图5-6 智能家居软件界面

  在PC端打开视频监视工具。输入智能家居系统的设计与实现的ARM端的IP和智能家居系统的设计与实现的端口,点击“设置”按钮,智能家居系统的设计与实现在ARM端点击“打开摄像头”,在PC端点击“开始监视”。即可在PC端看到ARM端上摄像头捕捉到的图象。如图5-7所示。

智能家居系统的设计与实现

图5-7 PC端视频监控画面

  (2)验证CEncode类的可行性。

  将属于CEncode类的两个文件——Encode.h和Encode.cpp文件移植到PC机平台上使用,智能家居系统的设计与实现VC++ 6.0编写智能家居系统的设计与实现采用该类智能家居系统的设计与实现PDU编码解码的测试程序。智能家居系统的设计与实现该程序往手机发送短信,智能家居系统的设计与实现读取手机SIM卡里的信息,以验证CEncode类程序对PDU码的解码与编码的可行性。测试程序的界面如图5-8所示。

  将手机SIM卡插入GSM模块的卡槽,使用全功能串口线连接GSM模块与PC机,插入模块附带的9V变压器给模块供电。

  启动测试软件,设置好服务中心号码和智能家居系统的设计与实现号码,智能家居系统的设计与实现发送短信测试和读取短信测试,结果证实该软件与GSM模块协同工作智能家居系统的设计与实现,CEncode类可用。

智能家居系统的设计与实现

图5-8 PDU编码

解码测试程序

  (3)验证家电控制板的可用性

  使用标准串口线连接家电控制板与PC机。使用“串口调试助手”软件智能家居系统的设计与实现对串口的读写操作。往家电控制板输入形如“%0001”的字符串,观察智能家居系统的设计与实现能启动对应的LED。同样的,按对应的“传感器”按钮,观察PC机智能家居系统的设计与实现能收到智能家居系统的设计与实现的字符串。智能家居系统的设计与实现测试,家电控制板能够智能家居系统的设计与实现运行。

  6 总结与展望

  智能家居系统的设计与实现毕业设计,我智能家居系统的设计与实现到了嵌入式开发的智能家居系统的设计与实现流程,智能家居系统的设计与实现编写众多的程序,强化了智能家居系统的设计与实现的编程能力,智能家居系统的设计与实现了对计算机语言理论的理解。

  智能家居系统的设计与实现智能家居系统的设计与实现智能家居系统的设计与实现和精力智能家居系统的设计与实现的原因,智能家居系统的功能设计还智能家居系统的设计与实现智能家居系统的设计与实现,在未来智能家居系统的设计与实现充裕、技术更成熟的情况下,功能设计可以智能家居系统的设计与实现智能家居系统的设计与实现,如:

(1)GSM模块、家电控制板与ARM的协同合作

(2)图象捕捉算法的优化,以太网数据传输的优化。

(3)用户界面友好度的强化,用户访问权限和控制权限的设计。

(4)系统的运行信息实时保存。如传感器报警的记录,用户的登陆和控制的记录等。