基于WiFi的定位系统设计.docx
- 文档编号:5852732
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:13
- 大小:466.18KB
基于WiFi的定位系统设计.docx
《基于WiFi的定位系统设计.docx》由会员分享,可在线阅读,更多相关《基于WiFi的定位系统设计.docx(13页珍藏版)》请在冰豆网上搜索。
基于WiFi的定位系统设计
定位技术及其应用设计说明书
(封面)
学院名称:
计算机与信息工程学院
班级名称:
13级物联网
学生姓名:
学号:
2
题目:
基于WiFi的定位系统设计
指导教师
姓名:
日期:
2015年11月10日
第一部分:
正文部分
一、选题背景
随着当前移动通信技术的发展以及无线网络的逐渐普及,对于基于定位服务的需求也迅速增加,例如,商场购物车定位和顾客消费习惯的收集;再者是医院重症患者的跟踪监护;以及还有学生上课期间的对所在的位置的收集等。
所以定位的计算和服务在人们的日常生活中扮演者越来越重要的角色。
尽管基于GPS技术的室外定位已经达到很高的定位精度,但是由于GPS无法在室内进行定位,所以室内定位也就成为目前研究的焦点。
现在的室内定位有技术主要有红外定位、超声波定位、WiFi定位等。
其中WiFi定位最受人们的关注,因为WiFi定位网络广泛存在于室内的环境中,信息传输的速度比较快,而且硬件成本低,耗能也比较少。
有利于在现在普及的WIFI热点的室内实现,极大的弥补了GPS在建筑密集或者室内应用的限制,扩大了室内定位服务的应用行业和范围。
2、方案论证
2.1WiFi定位的网络成员与结构
IEEE802.11主要规定了两种不同类型的基本架构:
有基础架构的无线局域网络(InfrastructureWirelessLAN)和无基础架构的无线局域网络(AdHocWirelessLAN)。
在Wi-Fi定位中常用的架构是有基础架构,如下图2-1所示:
图2-1
2.2WiFi定位的流程
(1)首先通过编写程序用来获取该移动设备周边的WiFi的物理地址。
(2)提取WiFi的物理地址并进行相应的解析。
(3)通过使用了NativeWiFi,可以获取到当前WiFi信号的RSSI值,并将其记录便可连续采集当前网卡所采集到所有WiFi信号的RSSI。
(4)添加MAP.html文件将采集到的信息加载到XX地图。
图2-2定位流程图
三、过程论述
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加载XX地图的代码实例
新建一个txt文件,输入代码后将该文件改为Map.html,以下是代码:
body,html{width:
100%;height:
100%;margin:
0;font-family:
"微软雅黑";}
#allmap{height:
500px;width:
100%;}
#r-result{width:
100%;font-size:
14px;}
.anchorBL{
display:
none;
}
经度:
100px; margin-right: 10px;"/> 纬度: 100px;margin-right: 10px;"/>
//XX地图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);
}
}
完成上述操作之后选中Form1,在事件选项中选择Load,并双击打开相应代码:
privatevoidForm1_Load(objectsender,EventArgse)
{
stringstr_url=Environment.CurrentDirectory+"/Map.html";
Uriurl=newUri(str_url);
this.webBrowser1.Navigate(url);
}
此时运行程序界面上会出现加载到WebBrowser的XX地图。
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;i { for(intj=i;j { Wlan.WlanBssEntryindex; if(WBE[i].rssi<=WBE[j].rssi) { index=WBE[i]; WBE[i]=WBE[j]; WBE[j]=index; } } } for(inti=0;i<3;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="+s+"&type=1&key=5888d456644a4d8eb92cf9bc92fa8c85"; textBox2.Text=S; textBox2.Show(); } 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()); } } 3.3.4解析MAC和SSID privatestringGetStringForMACAddress(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);//0表示索引,ssid.SSIDlength表示解码字节数 } 3.3.5将解析的数据定位到XX地图 privatevoidbutton1_Click(objectsender,EventArgse) { HtmlElementHE_longitude=webBrowser1.Document.GetElementById("longitude"); HE_longitude.SetAttribute("value",location[0]); HtmlElementHE_latitude=webBrowser1.Document.GetElementById("latitude"); HE_latitude.SetAttribute("value",location[1]); webBrowser1.Document.InvokeScript("theLocation"); } 四、结果分析 4.1WiFi定位分析图如下图: 图4-1WiFi定位图 由上图可知通过用C#软件编写程序实现了WiFi的定位的基本功能,通过点击获取按钮搜索到周边的WiFi,点击请求和解析的按钮然后得到对应的具体地址。 然后点击定位按钮并能将其成功的定位到XX地图上。 尽管界面比较简单,但是基本上能获取WiFi定位条件下所需要的数据。 经过多次的测试,程序还是比较稳定的,每次都能顺利的运行。 总体来说,该WiFi定位系统还是相对完善的,是可执行的。 五、结论(或总结) 通过本次WiFi定位系统的课程设计,我们了解了WiFi定位的基本原理以及它的实现过程。 尽管遇到过很多的问题,但是最终都能够得到解决。 同时这也是对个人能力的锻炼,使我们以后能很好的把理论应用于实践。 除了个人能力得到很好的锻炼之外,同时我也意识到自己有很多的不足之处,比如编写代码能力还不是那么熟练,好多编程思想不够成熟,希望能够在今后的学习中多多去改善这些不足,努力把自己的编程水平提升上去。 同时感谢老师的耐心指导、细心讲解,希望以后的学习中老师能够多多纠正我们学习之中的不足。 第二部分: 参考文献 学生签名: 填表日期: 年月日 第四部分: 指导教师评语 第五部分: 成绩评定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 WiFi 定位 系统 设计