『参考』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)全局变量:

 

全局变量

 

2)Dll引用

 

DLL引用

 

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

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

5、核心功能代码:

1)获取适配器信息:

 

Code

 

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

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

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

2)开启/关闭Wifi功能:

 

开启Wifi

 

这里看到了吧,是不是很简单,就传入无线设备的键值+设备名,电源状态以及电源命令,其他的由程序自动完成,具体的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、连接到搜索到的临近节点

posted @ 2009-10-25 21:31  Jack Fan  阅读(6217)  评论(13编辑  收藏  举报
TOP