欢迎来到天天文库
浏览记录
ID:52474542
大小:143.88 KB
页数:2页
时间:2020-03-28
《VC环境下的XBee通讯.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、随着无线技术的不断发展,基于无线技术的运用遍地开花,智能家居,智能公交,工业控制等各个领域都有无线技术的身影。在众多的无线产品中,XBee是一款很不错的选择,XBee模块是与ZigBee/IEEE802.15.4兼容的解决方案,可以满足低成本低功耗无线传输婀络的特殊要求。XBee模块工作在2.4GHz的国际免费频段。在XBee的配套产品中,提供了配套调试软件,用以对XBee进行调试,但没有提供编程控件。对于一股的无线解决方案,必定需要与之配套的上位机管理软件,没有提供编程接口的XBee,可以采用串口读写的方式来获取XBee中的数据和向模块写入参数以
2、达到控制的目的。XBee模块有自己的通讯帧格式,在上位机的操作中,通过向XBee模块发送通讯帧实现PC机和XBee模块间的交互。2.XBee中常用的帧在XBee咖中,包含了17种帧(新的产品中可能会有更多的帧类型),主要涉及到模块的状态,对本地设备发送AT命令,对远程设备发送AT命令,对远程模块发送数据以及相应的响应帧等。这些帧都有自己固定的格式,并按照自己的格式解析自己。在XBee当中,利用API帧进行通信有2种模式,一种是使用了转义字符,一种没有使用转义字符。转义字符即屏蔽掉XBee模块中的相关关键字,使用转义字符与其运算,用计算的结果替代以前
3、的值。在本文中只讨论没有使用转义字符的情况,其帧的具体格式如下图l所示:帧头定义符【字节1)冈I..............一长度‘字节2-3’MsBLsB_l醉节低字节p数据帧数据技验和一(字节4-n,(字节一1,.J圆圈圈1XBee的帧结构每个Ⅻee的帧以7E开始,占用一个字节,其后表示帧的长度,用2个字节表示,接着是帧的数据部分,最后是校验和,用以检验帧的真确性。帧的长度只表示帧图中第三部作者简介:刘继,男,湖北武汉人。硕士,研究方向:人工智能。在实际的使用中,对本地模块的操作和对远程模块进行控制的操作较多,本文主要实现对本地的操作和远程的操
4、作。这涉及到XBee的两种类型的帧,类型标示为0X08和OXl7。对本模块的操作只需要发送相应的AT命令,如读取或修改本地模块加入网络的时间,会用到的AT命令为NJ,则用到的帧如下:7Eoo0408524E4A0D7E表示为帧开始,0004表示帧的长度为4,08为帧的类型,52表示模块会返回回应帧,4E4A即AT命令的NJ,0D为帧的校验和。将此命令写入到XBee中,则会读出模块设置的加入网络的时间,如要修改模块入网时间,只需在AT之后加入参数。对远程的模块进行控制,显示了无线网络在控制当中的优势。对于远程的操作,和本地的区别在于要指明所发命令的对
5、象,即指明目标的地址。如给~个远程的模块发送一个命令设置广播跳跃数,用到的帧如下:7Eoo10170loo13A200401122FFFE024248OlF57E为帧开始,00lO表示帧的长度为16,17表示帧的类型,Ol表示会返回相应指示帧,0013A200401l22表示目标物理地址,FFFE为不清楚目标网络地址时的通用值,02表示设置后模块立即生效,4248表示AT命令中的BH,设置广播跳跃数,01为设置的值,F5为校验和。当将此帧写入到XBee模块后,会改变地址为oo13A200401122模块的广播跳跃数为l,并返回相应的指示帧。3.PC
6、机与XBee之间的串口通讯.在串口通讯时,最常用的有2种方式:一是利用微软提供的通用串口控件MSComm,一是利用API函数自己编写。两者的区别在于前者编稃简单,易于操作,而后者虽然较为麻烦,却具有很大的灵活性。本文采用API的方式实现串口通讯。在Windows系统中,串口和其它通讯设备一样作为文一37—件进行处理,故在串口通讯时主要的工作如下:(OOJ建串口并设置通讯参数:(2)读写串口;(3)关闭串口。创建串。口时,用CreateFileO函数打开串口,打开成功则返回~个句柄,打开串口2的代码如下:HANDLEmhComm;//定义一个句柄mh
7、Comm=CreateFile(COM2,//指明打开串口2GENERIC—READGENERIC—WRITE,//对串口2的权限为读和写0,//串口不能共享,设置为0NULL,//使用默认的安全属性OPENEXISTING,//对于串口的操作只能使用此参数FILEFLAGOVERLAPPED,//重叠操作指示01;在成功打开串口后,还需要设置串口的输入输出缓冲区的大小,设置通讯参数。用到的函数如下:SetupComm0;//设置输入输出缓冲区的大小:SetCommSmte0://设置通讯参数;完成好初始化工作后,就可以向串口读或者写数据。其用到的
8、函数分别为ReadFileO和w^tcFile();在用完串口之后,一定的关闭串口,其函数为CloseHandle0;4.
此文档下载收益归作者所有