基于ARM9的家居无线通信系统设计与实现(4)
时间:2016-12-26 13:00 来源:毕业论文 作者:毕业论文 点击:次
4.1 ZigBee通信模块的实现 4.1.1 网络拓扑结构 ZigBee主要采用了3种组网方式:星型网、网状网和簇状网。本系统采用行型网络拓扑结构。在星型网中,一个功能强大的主器件位于网络的中心,作为网络协调者,其它的主器件或从器件分布在其覆盖范围内。由于网络协调者定义了整个网络的时分复用和多址接人方式,因此星型网的控制和同步都比较简单,通常用在设备数量比较少的场合。 4.1.2 ZigBee模块通信实验的主要步骤 (1)准备实验环境。将mini270核心子板插到主板接口槽上,将实验平台上电运行。 (2)将对应驱动ZGB添加到系统映像NK.bin中。将此映像烧写到Min270中。 (3)将两个Zigbee模块分别插到两个试验箱的Extern B区,打开主板电源,等待Windows CE 6.0系统运行起来。启动后,将Embest_Zigbee.exe(通过编译Embest_Zigbee.exe应用程序工程得到)通过SD卡拷贝到已经运行了Windows CE 6.0的EduKit-IV实验平台中运行(也可以通过同步软件ActiveSync将程序直接传送到实验平台)。双击运行。 在单击Configure按钮进入配置界面,如图7所示。界面左边为默认配置选项,可以改变成自己希望的配置。 图4 Zigbee模块配置参数输入界面 7)依次配置网内的每个Zigbee模块,配置完成后,各模块之间就可以相互通信了。此出将各Zigbee模块都设置成对等网的终端设备。如下演示地址分别为0001和为0002的两个Zigbee模块之间的通信。 8)首先地址为0001的Zigbee模块给地址为0002的Zigbee模块发送3344。方法为在发送文本框中输入00023344,然后单击Send按钮,也就将数据发送出去了。如图所示。 图5 Zigbee模块发送数据界面 9)在地址0001向0002数据后,0002会收到数据,如图11所示。 图优尔 Zigbee模块接收数据界面 4.2 GPRS通信模块的实现 本小节通过GSM/GPRS模块用AT指令发送和接受短消息。 GPRS的TCP/IP数据包有固定的格式,用户必须按照GPRS的TCP/IP数据包有固格式发送和解析数据包。GPRS在TCP/IP通信时数据帧格式为:“AT%IPSEND=“DATA””,其中,“%IPSEND=”是启动TCP/IP发送命令字符串,双引号里面的DATA是用户发送的数据GPRS接收端接收IP数据包格式为:“%IPDATA:<LEN>,“DATA””,其中,“%IPDATA:”为接收数据帧包头,LEN为接收到用户发送过来的字节数,一共占用两个字节,DATA是用户发送过来的数据。[8] (1)配置串口 设置串口为每秒位数设为115200,数据位为8,关闭奇偶校验,数据流控制采用硬件方式,停止位为1。[9] WinCE 的串口驱动不支持重叠,如果这样收和发就要分开. 要接收串口数据就必须创建一个线程专门用于接收数据. 串口的配置不需要设置很多参数,默认的配置大部分是不需要修改的. 一般改动就是波特率、位数、奇偶校检等几项. 超时值是需要改动的. ReadInterval Timeout 是指两个字符传送之间的超时时间. 一次写操作的超时时间等于Write Total TimeoutMultiplier 乘以要发送的字符数加上Write Total TimeoutConstant ,单位是毫秒. 读操作的超时和写类似,所以设置超时是一个关键,设置太小可能丢失数据。[10] (2)发送数据 发送数据的流程设计如图所示: 图7 发送数据流程图 主要代码如下: hwndSText = GetDlgItem(hWnd , ID_SENDTEXT) ; GetDlgText = (hwndSText ,szText ,dim( szText) ) ; WriteFile (hSerial , / / 句柄 szText , / / 数据缓冲区地址 lstrlen(szText ) 3 sizeof (TCHAR) , / / 数据大小 &cBytes , / / 返回发送出去的字节数 (责任编辑:qin) |