OpenNETCF的动手实验——WIFI

最近,闲啊,看首页文章都看烦了(不是骂就是被骂,唉~~~),索性来鼓捣一下OpenNETCF这个玩意儿,这篇文章就从WIFI的控制开始说起吧。

首先,你可能会上网搜“.net cf msdn wifi"这个关键词,不管如何吧,肯定会看到MSDN的一篇介绍用OpenNETCF进行WIFI开发的一篇文章,我也看过那篇文章,说的的确不错,但是就是感觉怪怪的。

首先,那篇文章中使用的方法比较“老”,因为IDE总提示我有些类库太旧了,建议用新的替换掉。

其次,我只想获取本机的WIFI适配器而不需要像那篇文章获取了所有适配器。

所以,我亲自动手,和大家一起分享一下使用OpenNETCF来操作设备Wifi的经验吧。

在这篇文章中,你将学会使用OpenNETCF类库进行如下操作:

1、获取Wifi设备信息

2、控制Wifi设备的开启或关闭

3、搜索周围的接入点,并显示他们的信号强度及名称

好吧,下面,我们就来一步一步的开始动手实验:

1、首先,我们建立一个新的移动设备项目:SDF-Wifi,使用.netCF 2.0类库足够,然后平台嘛,我选择的是WM5 PPC。

2、引入OpenNETCF类库(添加引用——》OpenNETCF.Net、OpenNETCF.WindowsCE),至于这个类库大家可以到其官网下载:www.opennetcf.org 下载社区版就行了。再在程序主窗体的头部添加引用:

using OpenNETCF.Net.NetworkInformation;
using System.Runtime.InteropServices;
using OpenNETCF.WindowsCE;

3、进行UI界面的设计,这里不再赘述,我完全仿照MSDN那篇文章所描述的UI进行设计,这些内容将会在文章最后给出下载地址。

4、主要代码编写:

1)全局变量:

 


 #region 全局变量
        
private WirelessZeroConfigNetworkInterface m_wzc = null;//全局的WZC变量
        /// <summary>
        
/// 这个Timer用于定时更新临近节点
        
/// </summary>
        private Timer m_wifiTimer = new Timer();

        
private const int CONFIG_TAB = 0;//定义了Tab的Index
        private const int WIFI_TAB = 1;
        
private AccessPointCollection m_preferredAPs;//首选节点集合
        private AccessPointCollection m_nearbyAPs;//临近节点集合
        private const int POWER_NAME = 0x00000001;//用于操作Wifi设备的电源命令
        #endregion

 

2)Dll引用

 

DLL引用

 

这里给大家说明一下,“设备在注册表中的键值”为:{98C5250D-C29A-4985-AE5F-AFE5367E5006}/+设备名称,其中,键值不会变,至少我看过好多人,使用的键值都没有变,唯一变得是设备名称,这个设备名称是从何而来呢?大家先不急,待你看到代码,自然会明白,很简单的哦!呵呵

3) 其他代码:其他代码将放在下载中,供大家仔细查阅(有点多,放上来就是Code贴了)

5、核心功能代码:

1)获取适配器信息:

 


        void FindWirelessAdapter()
        {
            cboAdapters.Items.Clear();
            
foreach (INetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
            {
                
//通过下面的代码将不能在Wifi关闭状态下获取其设备名称,所以注释掉了
                
//if (ni is WirelessNetworkInterface)//ni.NetworkInterfaceType==NetworkInterfaceType.Wireless80211,我手机上的无线设备类型居然为:Ethernet?!不解!
                
//{
                
// will be true for wireless or WZC
                cboAdapters.Items.Add(ni);
                
if (ni is WirelessZeroConfigNetworkInterface)//如果符合WZC标准
                {
                    m_wzc 
= ni as WirelessZeroConfigNetworkInterface;
                }
                
//}
            }
        }

 

如果阅读过MSDN那篇“老文章”的朋友就能明显开出区别了,这里使用了INetworkInterface接口代替了Adapter类,用NetworkInterface.GetAllNetworkInterfaces()代替了AdapterCollection。而这个INetworkInterface是什么呢?你可以参照OpenNETCF的文档:点击查看

WirelessNetworkInterface这个类以及WirelessZeroConfigNetworkInterface这个类对我们取得无线适配器、接入点的信息比较重要,所以,大家也要看看哦。

在取得了设备上的适配器后,我们就要来查看这些适配器的信息了,具体信息很多,都集中在了WirelessZeroConfigNetworkInterface类中,它的属性多到爆,你慢慢看吧,取出的属性就是我们将要的信息,具体请大家看代码。

2)开启/关闭Wifi功能:

 


 try
            {
                
//先通知系统,更改Wifi状态图标,在设置Wifi电源状态
                DevicePowerNotify("{98C5250D-C29A-4985-AE5F-AFE5367E5006}//" + ((NetworkInterface)cboAdapters.SelectedItem).Name, DevicePowerState.FullOn, POWER_NAME);
                SetDevicePower(
"{98C5250D-C29A-4985-AE5F-AFE5367E5006}//" + ((NetworkInterface)cboAdapters.SelectedItem).Name, POWER_NAME, DevicePowerState.LowPower);
                Application.DoEvents();
                FindWirelessAdapter();
            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

 

这里看到了吧,是不是很简单,就传入无线设备的键值+设备名,电源状态以及电源命令,其他的由程序自动完成,具体的DevicePowerNotify函数可查阅这里:http://msdn.microsoft.com/en-us/library/ms896927.aspx

SetDevicePower则可以查看这里:http://msdn.microsoft.com/en-us/library/ms889493.aspx

关闭Wifi的代码雷同,只需修改状态参数。

好了,到此为止,这个动手实验就接近尾声了,下面是一些在我的机器上的实验截图:我手机是HTC Touch Viva

打开程序,进入主界面,从下拉菜单中选择搜索到的设备

由于我的Wifi模块暂未开启(用代码进行了InterfaceOperationalStatu的判断),弹出提示!

我们打开Wifi

 

可以看到正在打开:

最后,重新从下拉列表中选中刚才的无线适配器,获取到适配器现在的状态属性如下:

可以到Wifi选项卡查看更多信息:

我们关闭Wifi吧:挺费电滴(囧~)

至此,整个实验工程结束。你可以在:点击下载,下载到本实验的全部源码,其中已经包含了OpenNETCF引用的类库Dll文件,在项目的Bin/Debug文件夹下。

本实验的环境为:VS2008 TeamSuit,Windows Mobile 6.1,.net CF 2.0框架,在真机HTC T2222上测试通过。

下一次的文章,我将继续扩充这个程序的功能:

1、管理首选节点网络

2、连接到搜索到的临近节点

第1部分OPNET Modeler简介 第1章OPNET仿真概述............................................................................... 1.1网络仿真简介 1.2 OPNET简介 1.3 OPNET网络环境 1.4 OPNET编辑器简介 1.5配置一个简单的网络 1.5.1定义问题................................................................................. 1.5.2建立网络拓扑结构................................................................. 1.5.3收集统计量............................................................................. 1.5.4保存项目................................................................................. 1.5.5运行仿真................................................................................. 1.5.6查看结果................................................................................. 1.5.7复制场景并扩展网络............................................................. 1.5.8再次运行................................................................................. 1.5.9比较结果................................................................................. 第2章OPNET Modeler环境变量的设置及文件管理................................. 2.1 OPNET Modeler环境变量的设置.................................................... 2.1.1 Windows 2000下环境变量的设置........................................ 2.1.2 Unix下环境变量的设置........................................................ 2.2 OPNET常用文件格式......................................................................OPNET网络仿真–陈敏 2.3 OPNET文件管理 第2部分OPNET Modeler使用(基本篇) 第3章OPNET的通信仿真机制................................................................... 3.1离散事件仿真机制............................................................................ 3.1.1 OPNET中的事件推进机制................................................... 3.1.2同一时刻事件优先级的界定................................................. 3.2基于包的通信.................................................................................... 3.3使用接口控制信息进行通信............................................................ 3.4点对点和总线管道阶段 5章收集、查看、导出以及发布仿真结果......................................................... 5.1收集统计量........................................................................................ 5.1.1收集矢量统计量..................................................................... 5.1.2收集标量统计量..................................................................... 5.2查看和导出仿真结果........................................................................ 5.3发布仿真结果 第6章OPNET Modeler编程基础................................................................ 6.1从例程开始——创建一个包交换网络............................................ 6.1.1概述......................................................................................... 6.1.2开始建立................................................................................. 6.1.3创建新的包格式..................................................................... 6.1.4创建新的链路模型................................................................. 6.1.5创建中心交换节点模型......................................................... 6.1.6创建hub进程模型................................................................. 6.1.7创建周边节点模型................................................................. 6.1.8创建网络模型......................................................................... 6.1.9收集统计量并分析结果......................................................... 6.1.10配置仿真............................................................................... 6.1.11运行仿真............................................................................... 6.2 OPNET Modeler核心函数介绍....................................................... 6.2.1动画类核心函数..................................................................... 6.2.2分布类核心函数..................................................................... 6.2.3事件类核心函数..................................................................... 6.2.4接口控制类核心函数............................................................. 6.2.5标识类核心函数.....................................................................第1章OPNET仿真概述 6.2.6内部模型访问类核心函数..................................................... 6.2.7中断类核心函数..................................................................... 6.2.8包类核心函数......................................................................... 6.2.9进程类核心函数..................................................................... 6.2.10队列类核心函数................................................................... 6.2.11分割与组装类核心函数....................................................... 6.2.12统计类核心函数................................................................... 6.2.13队列和子队列类核心函数................................................... 6.2.14表格类核心函数................................................................... 6.2.15传输类核心函数................................................................... 6.2.16拓扑结构类核心函数........................................................... 6.2.17编程类核心函数................................................................... 6.3子进程...................................................................................... 6.3.1有关进程的几个概念............................................................. 6.3.2子进程的初始化..................................................................... 6.3.3仿真核心使用权的管理模式................................................. 6.3.4进程对仿真核心控制权获取方式的识别............................. 6.3.5进程间的内存共享机制......................................................... 6.3.6使用子进程可能出现的几种错误 第3部分OPNET Modeler使用(高级篇)186 第7章OPNET的调试................................................................................... 7.1查看OPNET日志文件 7.2使用OPNET Debugger调试..................................................... 7.2.1 ODB调试概述........................................................................ 7.2.2针对结构错误(Structural Error)的ODB调试实例 7.2.3针对逻辑错误的ODB调试实例 7.2.4针对进程模块的ODB调试................................................... 7.2.5调整ODB窗口缓存大小......................................................... 7.3 OPNET与Visual C++联合调试............................................... 7.3.1 VC的安装及环境变量的设置............................................... 7.3.2修改OPNET有关与VC联合调试的属性........................... 7.3.3仿真时OPNET与VC联合调试的步骤............................... 7.4常见错误及其说明 第8章业务建模 8.1 ON/OFF业务建模 8.2配置标准端对端业务OPNET网络仿真–陈敏 8.2.1设定应用参数 8.2.2设定业务主询 8.2.3配置服务器支持的应用 8.2.4设定客户端业务主询 8.3自定义多端业务 8.4流业务建模技巧 8.4.1针对话音和视频业务背景流的设置 8.4.2应用流背景流建模 8.4.3网络层背景流建模 8.4.4 Micro-Simulation技术 8.5链路背景业务建模 8.6混合业务建模 第9章无线信道建模..................................................................................... 9.1无线模拟简介 9.2无线移动方式 9.2.1分段移动方式 9.2.2设置向量轨迹的方式 9.2.3修改节点的位置属性 9.2.4使用移动配置器(Mobility Config) 9.3无线收发机管道建模........................................................................ 9.3.1接收主询................................................................................. 9.3.2传输时延................................................................................. 9.3.3物理可达性............................................................................. 9.3.4信道匹配................................................................................. 9.3.5发射机天线增益..................................................................... 9.3.6传播延时................................................................................. 9.3.7收信机天线增益..................................................................... 9.3.8接收功率................................................................................. 9.3.9干扰噪声功率......................................................................... 9.3.10背景噪声功率....................................................................... 9.3.11信噪比................................................................................... 9.3.12误比特率............................................................................... 9.3.13错误分布............................................................................... 9.3.14错误纠正............................................................................... 9.4加快无线仿真的速度 9.4.1采用优化的仿真核心 9.4.2在仿真中动态删减接收主询成员第1章OPNET仿真概述 9.4.3简化无线封包的复制 9.4.4动态更新接收主询 9.4.5通过无线区域划分接收主询 9.4.6过滤无关的管道阶段 9.4.7采用并行仿真 9.5创建一个移动无线网络...................................................................... 9.2.1概述......................................................................................... 9.2.2开始建立................................................................................. 9.2.3创建天线模型......................................................................... 9.2.4创建指向处理器..................................................................... 9.2.5创建节点模型......................................................................... 9.2.6创建网络模型......................................................................... 9.2.7收集统计量并运行仿真......................................................... 9.2.8查看并分析结果..................................................................... 第10章OPNET标准模块介绍..................................................................... 10.1 IEEE 802.11模块内部结构及仿真................................................. 10.1.1 IEEE 802.11无线局域网概述.............................................. 10.1.2无线局域网的协议行为建模............................................... 10.1.3 IEEE 802.11无线局域网MAC的输入接口...................... 10.1.4 IEEE 802.11无线局域网MAC的输出接口...................... 10.1.5仿真和实验........................................................................... 10.2 X.25模块介绍................................................................................. 10.2.1引言....................................................................................... 10.2.2基于X.25传输控制协议的应用会话建立流程................. 10.2.3基于X.25数据链路的建立和包交换流程......................... 10.3干扰机模型...................................................................................... 10.4 OPNET IPv6模块介绍及仿真........................................................ 13.1 ICMPv6 Route Print场景....................................................... 13.2 Manual Tunnel......................................................................... 10.5小区系统模型 10.5.1模型的导入 10.5.2模型的适用范围和限制 10.5.3模型包含的文件 10.5.4模型的属性 10.5.5模型的接口OPNET网络仿真–陈敏 第4部分OPNET Modeler的高级应用186 第11章自定义动画编程的运用................................................................... 11.1动态队列计量器...................................................................... 11.1.1设置探针属性 11.1.2动态队列计量器动画程序讲解 11.2无线包传输.............................................................................. 11.2.1设置探针属性 11.2.2无线包传输动画初始化程序 11.2.3在接收功率阶段加入动画程序 11.2.4在干扰噪声功率计算阶段加入动画程序 11.2.5在错误纠正阶段加入动画程序 第12章自定义流媒体协议的实现............................................................... 12.1 OPNET应用层建模构架........................................................ 12.2自定义的应用协议.................................................................. 12.3修改头文件“gna_mgr.h”....................................................... 12.4在应用配置进程模型中增加应用属性.................................. 第13章自定义IP协议的实现 13.1自定义IP协议接口 13.2 IP包的创建和高层数据包的封装 13.3 IP路由表初始化 13.4路由表的查找 第14章图形化建模和文本方式建模EMA................................................. 14.1 EMA配置网络模型................................................................ 14.2 EMA与外部数据的接口 14.2.1 EMA设置对象的固有属性 14.2.2 EMA设置对象的自定义属性 第15章高级体系架构(HLA)........................................................................ 15.1 RTI的安装及其环境变量设置 15.2建立控制联邦成员 15.3 OPNET HLA仿真实例 15.3.1准备所需的文件 15.3.2运行HLA仿真环境 15.3.3实现HLA交互 15.3.4多个OPNET联邦成员联机仿真 附录A本书中英文术语对照表271 附录B参考文献271第1章OPNET仿真概述 附录C关于本书存在的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值