您好,欢迎访问三七文档
定位技术及其应用设计说明书(封面)学院名称:计算机与信息工程学院班级名称:13级物联网学生姓名:学号:2题目:基于WiFi的定位系统设计指导教师姓名:日期:2015年11月10日第一部分:正文部分一、选题背景随着当前移动通信技术的发展以及无线网络的逐渐普及,对于基于定位服务的需求也迅速增加,例如,商场购物车定位和顾客消费习惯的收集;再者是医院重症患者的跟踪监护;以及还有学生上课期间的对所在的位置的收集等。所以定位的计算和服务在人们的日常生活中扮演者越来越重要的角色。尽管基于GPS技术的室外定位已经达到很高的定位精度,但是由于GPS无法在室内进行定位,所以室内定位也就成为目前研究的焦点。现在的室内定位有技术主要有红外定位、超声波定位、WiFi定位等。其中WiFi定位最受人们的关注,因为WiFi定位网络广泛存在于室内的环境中,信息传输的速度比较快,而且硬件成本低,耗能也比较少。有利于在现在普及的WIFI热点的室内实现,极大的弥补了GPS在建筑密集或者室内应用的限制,扩大了室内定位服务的应用行业和范围。二、方案论证2.1WiFi定位的网络成员与结构IEEE802.11主要规定了两种不同类型的基本架构:有基础架构的无线局域网络(InfrastructureWirelessLAN)和无基础架构的无线局域网络(AdHocWirelessLAN)。在Wi-Fi定位中常用的架构是有基础架构,如下图2-1所示:图2-12.2WiFi定位的流程(1)首先通过编写程序用来获取该移动设备周边的WiFi的物理地址。(2)提取WiFi的物理地址并进行相应的解析。(3)通过使用了NativeWiFi,可以获取到当前WiFi信号的RSSI值,并将其记录便可连续采集当前网卡所采集到所有WiFi信号的RSSI。(4)添加MAP.html文件将采集到的信息加载到百度地图。图2-2定位流程图DS分配系统STA4STA1BSS1BSS2ESSSTA3AP接入点AP接入点STA2移动终端获取WiFiWeb服务器WiFi数据平台进行WiFi的解析加载到百度地图三、过程论述3.1界面设计(如下图)图3-1界面设计图3.2控件的设计3.2.1Label的使用:在工具箱中找到Label,拖放至设计界面中,如图3-2、图3-3所示,可以对其属性进行修改,以及在界面中移动其位置。图3-2工具箱图3-3属性3.2.2TextBox的使用:在工具箱中找到TextBox,拖放至设计界面中,如图3-4、图3-5所示,可以对其属性进行修改,在界面中移动其位置。图3-4TextBox工具图图3-5TextBox属性图3.2.3Button的使用在工具箱中找到Buttton,拖放至设计界面中,如图3-6、图3-7所示,可以对其属性进行修改,以及在界面中移动其位置。图3-6Button工具图图3-7Button属性图3.2.4实现基于WebBrowser加载Baidu地图,如图3-8所示。图3-8WebBrowser工具图3.2.5在bin/Bebug路径下,新建文本文件,输入以下内容,并重命名为Map.html,保存并退出,如图3-9所示。图3-9Map.html嵌入图3.3功能设计3.3.1加载百度地图的代码实例新建一个txt文件,输入代码后将该文件改为Map.html,以下是代码:htmlheadmetahttp-equiv=Content-Typecontent=text/html/metaname=viewportcontent=initial-scale=1.0,user-scalable=no/styletype=text/cssbody,html{width:100%;height:100%;margin:0;font-family:微软雅黑;}#allmap{height:500px;width:100%;}#r-result{width:100%;font-size:14px;}/stylescripttype=text/javascriptsrc==2.0&ak=0uWHTjb5Ld12cSZoN9tkGXxu/scripttitle城市名定位/titlestyletype=text/css.anchorBL{display:none;}/style/headbodydivid=allmap/divdivid=r-result经度:inputid=longitudetype=textstyle=width:100px;margin-right:10px;/纬度:inputid=latitudetype=textstyle=width:100px;margin-right:10px;/inputtype=buttonvalue=查询onclick=theLocation()//div/body/htmlscripttype=text/javascript//百度地图API功能varmap=newBMap.Map(allmap);map.centerAndZoom(newBMap.Point(116.331398,39.897445),11);map.enableScrollWheelZoom(true);//用经纬度设置地图中心点functiontheLocation(){if(document.getElementById(longitude).value!=&&document.getElementById(latitude).value!=){map.clearOverlays();varnew_point=newBMap.Point(document.getElementById(longitude).value,document.getElementById(latitude).value);varmarker=newBMap.Marker(new_point);//创建标注map.addOverlay(marker);//将标注添加到地图中map.panTo(new_point);}}/script完成上述操作之后选中Form1,在事件选项中选择Load,并双击打开相应代码:privatevoidForm1_Load(objectsender,EventArgse){stringstr_url=Environment.CurrentDirectory+/Map.html;Uriurl=newUri(str_url);this.webBrowser1.Navigate(url);}此时运行程序界面上会出现加载到WebBrowser的百度地图。3.3.2获取AP的相关信息(1)下载ManagedWiFi:加入到工程中并添加引用,如下图3-10所示图3-10添加AP并申请命名空间为:usingNativeWifi;(2)获取WIFI的名称以及MAC地址,代码如下:privatevoidbutton3_Click(objectsender,EventArgse){WlanClientclient=newWlanClient();foreach(WlanClient.WlanInterfacewlanIfaceinclient.Interfaces){Wlan.WlanBssEntry[]WBE=wlanIface.GetNetworkBssList();for(inti=0;iWBE.Length-1;i++){for(intj=i;jWBE.Length-1;j++){Wlan.WlanBssEntryindex;if(WBE[i].rssi=WBE[j].rssi){index=WBE[i];WBE[i]=WBE[j];WBE[j]=index;}}}for(inti=0;i3;i++){STR[i]=newinfo(GetStringForMACAddress(WBE[i].dot11Bssid),WBE[i].rssi.ToString());}foreach(Wlan.WlanBssEntrysub_wbeinWBE){stringSSID=GetStringForSSID(sub_wbe.dot11Ssid);stringMAC=GetStringForMACAddress(sub_wbe.dot11Bssid);stringRSSI=sub_wbe.rssi.ToString();stringLinkQuality=sub_wbe.linkQuality.ToString();textBox1.AppendText(SSID:+SSID++MAC:+MAC++RSSI:+RSSI++LQ:+LinkQuality+System.Environment.NewLine);}}JavaScriptSerializerSerializer=newJavaScriptSerializer();strings=Serializer.Serialize(STR);StringS=3.3.3提取MAC地址privatevoidbutton4_Click(objectsender,EventArgse){string_StringURL=textBox2.Text;try{HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(_StringURL);request.Method=GET;request.Accept=*/*;request.KeepAlive=false;HttpWebResponseresponse=(HttpWebResponse)request.GetResponse();StreamdataStream=response.GetResponseStream();StreamReaderreader=newStreamReader(dataStream);stringresponseFromServer=reader.ReadToEnd();response.Close();reader.Close();dataStream.Close();this.textBox2.Text=responseFromServer;}catch(Exceptionex){MessageBox.Show(ex.ToString());}}=+s+&type=1&key=5888d456644a4d8eb92cf9bc92fa8c85;textBox2.Text=S;textBox2.Show();}3.3.4解析MAC和SSIDprivatestringGetStringForMACAddress(byte[]macAddr){uintnum=(uint)macAddr.Length;string[]array=newstring[num];intnum2=0;while((long)num2(long)((ulong)num)){array[num2]=macAddr[num2].ToString(x2).ToUpper();//ToString(x2):X为十六进制,2为每次都是两位数.num2++;}returnstring.Join(:,array);//Join()方法:串联数组里所有字符串,并用指定分隔符连接}privatestringGetStringForSSID(Wlan.Dot11Ssidssid){returnEncoding.UTF8.GetString(ssid.SSID,0,(int)ssid.SSIDLength);//
本文标题:无线定位课程设计
链接地址:https://www.777doc.com/doc-5527539 .html