我正在为Windows Mobile 5.0,6.1,6.5开发一个使用各种不同PDA的软件。但我还没有找到一种强有力的方法来等待WI-FI正常唤醒。有时WI-FI设备只是挂起,你需要重新启动pda,这显然不是你想要的。通常,如果你只是耐心等待并等待pda正确唤醒并访问网络,它就不会挂起。
在尝试使用Wi-Fi之前,有没有正确的方法来检查wi-fi是否可用?最好是与一系列制造商合作的通用方法(Intermec,Symbol,Datalogic和Opticon)。
我们今天这样做的方式或多或少是试图通过DNS.GetHostName()来解析我们自己的名字,并等到127.0.0.1响应。
非常感谢任何建议。阻止或异步调用都是受欢迎的。
答案 0 :(得分:1)
如果您使用的是基于SYMBOL的设备, 然后使用 Symbol.WirelessLAN 或 Symbol.Fusion dll 你可以嘲笑你的wifi是否醒来。 这些dll为您提供无线网络信号。当wifi未连接时显示无或0%。
答案 1 :(得分:0)
因为所有OEM都使用不同的自定义WiFi驱动程序或安全请求者(如Odyssey或其他人而不是MS Security),并且并非都使用ZeroConfig,因此您需要一般方法。
一种选择是使用网络的系统状态通知。但在过去,我发现这些都不可靠。使用连接管理器(CM)也是如此。 CM有时会报告没有人的工作连接。必须对缓存等做一些事情。
使用ping可以检查工作连接。 ping验证堆栈是否可用以及主机是否可访问。其他选项,例如检查WiFi接入点关联或本地IP地址,并不意味着您可以访问所需的主机。
在我的网站上是一个易于使用的后台工作者类,它实现了ping作为阻塞函数的示例:http://www.hjgode.de/wp/2010/06/01/mobile-development-easy-to-use-background-thread-with-gui-update/
在您的主代码中,您启动后台线程,订阅其事件,并在ping完成后触发事件。然后,您可以检查响应(返回的ping数),然后开始或等待您的主机操作。
请记住包含一些暂停/恢复设备的逻辑。 WiFi通常会关闭以暂停,您需要重新启动逻辑才能访问主机。
答案 2 :(得分:0)
我们所有的无线软件都使用网络服务。我们只为每个名为IsConnected的Web服务构建一个简单的方法,返回true。如果我们从中获得异常,我们知道我们的wifi存在问题。