基于蓝牙、Zigbee的无线异构网络文件传输系统的设计与实现姓名:史锦山年级:2009级指导教师:李茹专业:计算机科学与技术完成时间:2012-9-9基于蓝牙、Zigbee的无线异构网络文件传输系统的设计与实现摘要:Bluetooth受通讯距离限制,不适合在大范围内传输数据。Zigbee作为无线传感器网络(WSN)的主流技术,可以在无基础设施的情况下,快速搭建大范围Mesh网络。但是目前手持终端普遍不支持Zigbee设备,故需要加入协议转换网关。文中论述了在已完成协议转换网关的基础上实现异构网络下的文件传输系统。矚慫润厲钐瘗睞枥庑赖。关键字:蓝牙Zigbee异构网络文件传输1引言蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。能在包括手机、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效[1]。聞創沟燴鐺險爱氇谴净。ZigBee是一种低速短距离传输的无线网络协定,底层是采用IEEE802.15.4标准规范的媒体存取层与实体层。它最大的特点就是低功耗、可组网,特别是带有路由的可组网功能,理论上可以使ZigBee覆盖的通讯面积无限扩展[2]。残骛楼諍锩瀨濟溆塹籟。像地震等自然灾害发生时,很可能造成通讯基础设施的损坏,使手机无法正常通信,影响救灾行动。这时可以利用Zigbee低耗电、低成本、支援大量网络节点、支援多种网络拓扑、低复杂度、快速、可靠、安全等特点,快速搭建Zigbee网络[3]。但是现在普通手机不支持Zigbee,却普遍拥有蓝牙功能,所以本文的主要内容是在已完成的蓝牙、Zigbee协议转换网关的基础上实现异构网络下的文件传输系统。使人们可以用手机通过蓝牙和在蓝牙传输范围以外的和人进行文件传输。酽锕极額閉镇桧猪訣锥。2国内外研究现状蓝牙技术日益成熟,其应用领域包括人们的手机蓝牙,蓝牙耳机,蓝牙鼠标、键盘等,涉及到人们的居家,工作,旅途等各个方面。而ZigBee的发展时间短,应用并不广泛,而且并不是用来与蓝牙或者其他已经存在的标准竞争,它的目标定位于现存的系统还不能满足其需求的特定的市场[2]。我校研究生任春雷2011年只完成了蓝牙、Zigbee协议转换网关,但是并没有实现手机上的蓝牙数据发送软件彈贸摄尔霁毙攬砖卤庑。我所实现的是在已完成的蓝牙、Zigbee协议转换网关的基础上实现异构网络下文件传输系统[3]。本系统运行在Android2.2以上版本,包括一个发送端和一个接收端,以及系统初始化模块。最终可以实现两个相距较远的手机之间可以通过蓝牙并利用Zigbee网络进行文件的远距离传输。謀荞抟箧飆鐸怼类蒋薔。3Bluetooth、Zigbee的无线异构网络文件传输系统的设计蓝牙与Zigbee的无线异构网络文件传输系统是在已完成的协议转换网关的基础上进行文件的传输。本系统运行在android系统2.2以上版本中,包括系统初始化模块、一个发送端模块和一个接收端模块。初始化模块将系统初始化,判断手机是否拥有蓝牙通讯功能、SD卡是否存在、以及设置可见性和搜索设备等功能;发送端选择文件并把选择的文件分割成Zigbee设备可以转发的大小,然后发送给Zigbee设备;接收端从Zigbee设备接收文件并将并把接收到的小文件重新组合成原始的大文件,把大文件存在SD卡中。厦礴恳蹒骈時盡继價骚。1.系统初始化模块设计与功能描述(1)确定手机是否提供蓝牙通讯功能:因为要通过蓝牙发送和接受文件,所以如果不支持蓝牙,则退出系统;如果支持蓝牙,则要申请蓝牙使用权限,使程序可以对蓝牙进行设置可见性、搜索设备、发送数据和接收数据等操作。茕桢广鳓鯡选块网羈泪。(2)判断SD卡是否存在:因为发送端要发送SD卡中的文件,接收端要把收到的文件保存在SD卡中,所以若SD卡不存在,则退出系统;若SD卡存在,则申请SD卡的使用权限,使程序有在SD卡中创建和删除文件和写入数据的功能。鹅娅尽損鹌惨歷茏鴛賴。(3)设置可见性:将本地蓝牙设为可见,可被其他设备搜索到。可见时间分别为60s、120s、180s、240s、300s,用户可以根据不同的需要自己选择。籟丛妈羥为贍偾蛏练淨。(4)搜索设备:使用蓝牙模块来搜索设备,搜索蓝牙传输范围内的所有可见设备,以便确定发送对象。2.发送端模块设计与功能描述:向蓝牙、Zigbee发送网关发送蓝牙数据包,因为Zigbee设备的局限性,发送端发送数据最大为73字节,间隔500毫秒。預頌圣鉉儐歲龈讶骅籴。发送端模块的主要功能有:(1)从SD卡中选择文件:首先将SD卡目录下的所有文件和文件夹都显示出来,以便用户选择文件。若选择的是文件,则直接选定;若选择到的是文件夹,则打开文件夹,显示文件夹中的内容,直到选择到文件为止[6]。渗釤呛俨匀谔鱉调硯錦。(2)读文件:根据选择到文件的地址,通过文件流的方式把文件从SD卡中读出到内存。(3)分割文件:因为Zigbee设备的局限性,只能传输不大于73字节的数据包,所以要实现文件分割,把大于73字节的文件分割为73字节或者小于73字节的的文件,所以把读入内存的文件以文件流的方式,每73字节写入一个新建的文件中。并将分割后文件的文件名改为”原文件名”+”_”+”分割后的序号i”。在合并文件时作为分片的序号区分各个文件。铙誅卧泻噦圣骋贶頂廡。(4)发送文件:使用蓝牙把分割后的小文件依次发送给Zigbee设备,并通过停止等待协议保证系统传输的正确性。擁締凤袜备訊顎轮烂蔷。(5)停止等待协议的实现:使用蓝牙把分割后的小文件依次发送给Zigbee设备,只有收到序号正确的确认报文后,才发送新的数据包。序号为分割后文件名下划线后的序号。若连续出现相同序号的确认报文,表明接收端收到了错误的数据包。说明刚才发送的数据包不正确,可能是重复、错序或丢失,这时将刚才发送的数据包再次发送,直到收到序号正确的确认报文。直到全部发送完,把SD卡中分割出的小文件全部删除[4]。贓熱俣阃歲匱阊邺镓騷。3.接收端模块设计与功能描述:实现同接收网关的蓝牙网络相连,并接收从接收网关传来的蓝牙数据包。接收端的主要功能:(1)确认接收文件:把对方手机发送端发来的小文件保存在SD卡中固定的文件夹中,并通过停止等待协议保证系统传输的正确性。坛摶乡囂忏蒌鍥铃氈淚。(2)停止等待协议的实现:接收端接收到数据包时,就要将发送序号与本地的接收状态变量相比较。若二者相等就表明是新的数据包,就收下,并发送确认报文。否则为重复数据包,直接删除数据包。但这时仍须向发送端发送确认报文,而接收状态变量和确认序号都不变。蜡變黲癟報伥铉锚鈰赘。(3)合并文件:将SD卡的文件夹中的文件根据其文件名中下划线”_”后的序号,合并成为一个完整的文件,文件名为下划线”_”前的部分。買鲷鴯譖昙膚遙闫撷凄。(4)保存文件:将合并后的文件保存在SD卡中。4Bluetooth、Zigbee的无线异构网络文件传输系统的实现无线异构网络文件传输系统的实现包括三部分:系统初始化模块的实现,发送端的实现和接收端的实现。本系统使用Eclipse程序开发环境进行开发,运行环境为Android2.2以上版本的手机中。綾镝鯛駕櫬鹕踪韦辚糴。1.系统初始化模块的实现首先在AndroidManifest.xml文件在申请蓝牙使用权限uses-permissionandroid:name=android.permission.BLUETOOTH_ADMIN/驅踬髏彦浃绥譎饴憂锦。uses-permissionandroid:name=android.permission.BLUETOOTH/猫虿驢绘燈鮒诛髅貺庑。检查手机是否支持蓝牙通讯功能,若支持蓝牙通讯功能,则继续程序,否则退出程序。在AndroidManifest.xml文件在申请SD卡的使用权限,使程序有在SD卡中创建和删除文件和写入数据的功能锹籁饗迳琐筆襖鸥娅薔。!--在SD卡中创建与删除文件的权限--uses-permissionandroid:name=android.permission.MOUNT_UNMOUNT_FILESYSTEMS/構氽頑黉碩饨荠龈话骛。!--往SD卡写入数据的权限--uses-permissionandroid:name=android.permission.WRITE_EXTERNAL_STORAGE/輒峄陽檉簖疖網儂號泶。通过语句Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)可判断手机中是否装有SD卡。尧侧閆繭絳闕绚勵蜆贅。通过调用蓝牙模块的系统函数,实现蓝牙设备可见性的设置。见时间分别为60s、120s、180s、240s、300s,用户可以根据不同的需要自己选择。识饒鎂錕缢灩筧嚌俨淒。通过调用蓝牙模块的系统函数,可实现蓝牙的搜索设备功能,搜索蓝牙传输范围内的其他可见设备。2.发送端的实现发送端的主要功能有选择文件、读文件、分割文件和发送文件。现在实现了文件的选择、读取、分割文件和发送文件,其中发送文件中的停止等待协议并没有实现。凍鈹鋨劳臘锴痫婦胫籴。其中分割文件的实现方法如下图在文件全部发送完之后,将分割出的小文件从SD卡中删除。3.接收端的实现将接收到的文件保存在SD卡中,将SD卡中的文件合并为一个大的文件,取小文件的文件名中下划线前的部分作为文件名。将合并后的文件保存在SD卡中,删除小文件。恥諤銪灭萦欢煬鞏鹜錦。5总结蓝牙与Zigbee的无线异构网络文件传输系统设计与实现的主要工作有:1.搭建开发环境Eclipse,并为其安装ADT和SDK。2.使用Android实现对蓝牙模块的控制,包括激活蓝牙,搜索设备,设置可见性等。3.通过Android实现了对手机SD卡中文件的的操作,包括创建文件、删除文件和写入文件等。4.实现了对大文件的分割与合并,将其分割为73字节的文件,再将其合并为原来的文件。5.实现了调用蓝牙的系统函数将分割后的小文件依次发出。并接收文件。但是整个文件传输系统的设计也有很多不足之处:使用停止等待协议使系统的传输效率变得很低;本系统并没有完全实现,现实中可能存在的其他情况并没有考虑到。鯊腎鑰诎褳鉀沩懼統庫。5展望本系统的还可以从设计方面进行改进:1.可以将停止等待协议改为滑动窗口协议,可以提高系统的传输效率。2.可以不调用蓝牙模块的系统函数,直接使用BluetoothSocket发送和接收数据。参考文献:[1]百度百科-蓝牙硕癘鄴颃诌攆檸攜驤蔹。[2]百度百科-Zigbee阌擻輳嬪諫迁择楨秘騖。[3]任春雷.基于蓝牙与ZigBee的异构无线网络传输系统的设计与实现[4]谢希仁.计算机网络[M].4版.北京:电子工业出版社,2003.[5]李仁发,何彦.基于虚拟实验方法的滑动窗口协议分析[J].系统仿真学报,2002,8(14):1026-1063.氬嚕躑竄贸恳彈瀘颔澩。[6]郝玉龙.Android程序设计基础.清华大学出版社.北京交通大学出版社.2011,11