无线定位课程设计.doc

上传人:xin****828 文档编号:6607671 上传时间:2020-02-29 格式:DOC 页数:15 大小:559KB
返回 下载 相关 举报
无线定位课程设计.doc_第1页
第1页 / 共15页
无线定位课程设计.doc_第2页
第2页 / 共15页
无线定位课程设计.doc_第3页
第3页 / 共15页
点击查看更多>>
资源描述
定位技术及其应用 设计说明书(封面)学院名称: 计算机与信息工程学院 班级名称: 13级物联网 学生姓名: 学 号: 2 题 目:基于WiFi的定位系统设计 指导教师姓 名: 日 期: 2015年11月10日 第一部分:正文部分一、选题背景随着当前移动通信技术的发展以及无线网络的逐渐普及,对于基于定位服务的需求也迅速增加,例如,商场购物车定位和顾客消费习惯的收集;再者是医院重症患者的跟踪监护;以及还有学生上课期间的对所在的位置的收集等。所以定位的计算和服务在人们的日常生活中扮演者越来越重要的角色。尽管基于GPS技术的室外定位已经达到很高的定位精度,但是由于GPS无法在室内进行定位,所以室内定位也就成为目前研究的焦点。现在的室内定位有技术主要有红外定位、超声波定位、WiFi定位等。其中WiFi定位最受人们的关注,因为WiFi定位网络广泛存在于室内的环境中,信息传输的速度比较快,而且硬件成本低,耗能也比较少。有利于在现在普及的WIFI热点的室内实现,极大的弥补了GPS在建筑密集或者室内应用的限制,扩大了室内定位服务的应用行业和范围。2、 方案论证2.1 WiFi定位的网络成员与结构IEEE 802.11主要规定了两种不同类型的基本架构:有基础架构的无线局域网络 (Infrastructure Wireless LAN) 和无基础架构的无线局域网络 (Ad Hoc Wireless LAN) 。在Wi-Fi定位中常用的架构是有基础架构,如下图2-1所示: 图2-12.2 WiFi定位的流程(1) 首先通过编写程序用来获取该移动设备周边的WiFi的物理地址。(2) 提取WiFi的物理地址并进行相应的解析。(3) 通过使用了NativeWiFi,可以获取到当前WiFi信号的RSSI值,并将其记录便可连续采集当前网卡所采集到所有WiFi信号的RSSI。(4) 添加MAP.html文件将采集到的信息加载到百度地图。移动终端获取WiFi Web服务器WiFi数据平台进行WiFi的解析加载到百度地图 图2-2定位流程图三、过程论述 3.1界面设计(如下图) 图3-1界面设计图 3.2 控件的设计3.2.1 Label的使用:在工具箱中找到Label,拖放至设计界面中,如图3-2、图3-3所示,可以对其属性进行修改,以及在界面中移动其位置。 图3-2工具箱 图3-3属性3.2.2 TextBox的使用:在工具箱中找到TextBox,拖放至设计界面中,如图3-4、图3-5所示,可以对其属性进行修改,在界面中移动其位置。 图3-4 TextBox工具图 图3-5 TextBox属性图3.2.3 Button的使用在工具箱中找到Buttton,拖放至设计界面中,如图3-6、图3-7所示,可以对其属性进行修改,以及在界面中移动其位置。 图3-6 Button工具图 图3-7 Button属性图 3.2.4实现基于WebBrowser加载Baidu地图,如图3-8所示。 图3-8 WebBrowser工具图 3.2.5在bin/Bebug路径下,新建文本文件,输入以下内容,并重命名为Map.html,保存并退出,如图3-9所示。 图3-9 Map.html嵌入图3.3功能设计3.3.1加载百度地图的代码实例 新建一个txt文件,输入代码后将该文件改为Map.html,以下是代码:body, htmlwidth: 100%;height: 100%;margin:0;font-family:微软雅黑;#allmapheight:500px;width:100%;#r-resultwidth:100%; font-size:14px;城市名定位 .anchorBL display:none; 经度: 纬度: / 百度地图API功能var map = new BMap.Map(allmap);map.centerAndZoom(new BMap.Point(116.331398,39.897445),11);map.enableScrollWheelZoom(true);/ 用经纬度设置地图中心点function theLocation()if(document.getElementById(longitude).value != & document.getElementById(latitude).value != )map.clearOverlays(); var new_point = new BMap.Point(document.getElementById(longitude).value,document.getElementById(latitude).value);var marker = new BMap.Marker(new_point); / 创建标注map.addOverlay(marker); / 将标注添加到地图中map.panTo(new_point); 完成上述操作之后选中Form1,在事件选项中选择Load,并双击打开相应代码:private void Form1_Load(object sender, EventArgs e) string str_url = Environment.CurrentDirectory + /Map.html; Uri url = new Uri(str_url); this.webBrowser1.Navigate(url); 此时运行程序界面上会出现加载到WebBrowser的百度地图。3.3.2 获取AP的相关信息(1) 下载ManagedWiFi:http:/managedwifi.codeplex.com/加入到工程中并添加引用 ,如下图3-10所示 图3-10添加AP并申请命名空间为: using NativeWifi;(2) 获取WIFI的名称以及MAC地址,代码如下: private void button3_Click(object sender, EventArgs e) WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) Wlan.WlanBssEntry WBE = wlanIface.GetNetworkBssList(); for (int i = 0; i WBE.Length - 1; i+) for (int j = i; j WBE.Length - 1; j+) Wlan.WlanBssEntry index; if (WBEi.rssi = WBEj.rssi) index = WBEi; WBEi = WBEj; WBEj = index; for (int i = 0; i 3; i+) STRi = new info(GetStringForMACAddress(WBEi.dot11Bssid), WBEi.rssi.ToString(); foreach (Wlan.WlanBssEntry sub_wbe in WBE) string SSID = GetStringForSSID(sub_wbe.dot11Ssid); string MAC = GetStringForMACAddress(sub_wbe.dot11Bssid); string RSSI = sub_wbe.rssi.ToString(); string LinkQuality = sub_wbe.linkQuality.ToString(); textBox1.AppendText(SSID: + SSID + + MAC: + MAC + + RSSI: + RSSI + + LQ: + LinkQuality + System.Environment.NewLine); JavaScriptSerializer Serializer = new JavaScriptSerializer(); string s = Serializer.Serialize(STR); String S = http:/api.haoservice.com/api/LocationByWifiData?requestdata= + s + &type=1&key=5888d456644a4d8eb92cf9bc92fa8c85; textBox2.Text = S; textBox2.Show(); 3.3.3提取MAC地址 private void button4_Click(object sender, EventArgs e) string _StringURL = textBox2.Text; try HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_StringURL); request.Method = GET; request.Accept = */*; request.KeepAlive = false; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); response.Close(); reader.Close(); dataStream.Close(); this.textBox2.Text = responseFromServer; catch (Exception ex) MessageBox.Show(ex.ToString(); 3.3.4解析MAC和SSID private string GetStringForMACAddress(byte macAddr) uint num = (uint)macAddr.Length; string array = new stringnum; int num2 = 0; while (long)num2 (long)(ulong)num) arraynum2 = macAddrnum2.ToString(x2).ToUpper();/ToString(x2):X为十六进制,2为每次都是两位数. num2+; return string.Join(:, array);/Join()方法:串联数组里所有字符串,并用指定分隔符连接 private string GetStringForSSID(Wlan.Dot11Ssid ssid) return Encoding.UTF8.GetString(ssid.SSID, 0, (int)ssid.SSIDLength);/0表示索引,ssid.SSIDlength表示解码字节数 3.3.5将解析的数据定位到百度地图 private void button1_Click(object sender, EventArgs e) HtmlElement HE_longitude = webBrowser1.Document.GetElementById(longitude); HE_longitude.SetAttribute(value, location0); HtmlElement HE_latitude = webBrowser1.Document.GetElementById(latitude); HE_latitude.SetAttribute(value, location1); webBrowser1.Document.InvokeScript(theLocation); 四、结果分析4.1 WiFi定位分析图如下图: 图4-1 WiFi定位图由上图可知通过用C#软件编写程序实现了WiFi的定位的基本功能,通过点击获取按钮搜索到周边的WiFi,点击请求和解析的按钮然后得到对应的具体地址。然后点击定位按钮并能将其成功的定位到百度地图上。尽管界面比较简单,但是基本上能获取WiFi定位条件下所需要的数据。经过多次的测试,程序还是比较稳定的,每次都能顺利的运行。总体来说,该WiFi定位系统还是相对完善的,是可执行的。五、结论(或总结)通过本次WiFi定位系统的课程设计,我们了解了WiFi定位的基本原理以及它的实现过程。尽管遇到过很多的问题,但是最终都能够得到解决。同时这也是对个人能力的锻炼,使我们以后能很好的把理论应用于实践。除了个人能力得到很好的锻炼之外,同时我也意识到自己有很多的不足之处,比如编写代码能力还不是那么熟练,好多编程思想不够成熟,希望能够在今后的学习中多多去改善这些不足,努力把自己的编程水平提升上去。同时感谢老师的耐心指导、细心讲解,希望以后的学习中老师能够多多纠正我们学习之中的不足。第二部分:参考文献学生签名: 填表日期: 年 月 日第四部分: 指导教师评语 第五部分:成绩评定
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!