0

我正在为使用一系列不同 PDA:s 的 Windows Mobile 5.0、6.1、6.5 开发软件。但是我还没有找到一种可靠的方法来等待 WI-FI 正确唤醒。有时 WI-FI 设备只是挂起,您需要重新启动 pda,这显然不是您想要的。通常,如果您有足够的耐心并等待 pda 正确唤醒并访问网络,它就不会挂起。

在尝试使用之前,是否有适当的方法来检查 wi-fi 是否可用?最好是适用于一系列制造商(Intermec、Symbol、Datalogic 和 Opticon)的通用方法。

我们今天这样做的方式或多或少是尝试通过 DNS.GetHostName() 解析我们自己的名称并等待 127.0.0.1 响应。

非常感谢任何建议。阻塞或异步调用都是受欢迎的。

4

3 回答 3

1

如果您使用的是基于 SYMBOL 的设备,那么通过使用Symbol.WirelessLANSymbol.Fusion dll ,您可以检查您的 wifi 是否被唤醒。这些 dll 为您提供 wifi 的信号强度。未连接 wifi 时显示 none 或 0%。

于 2012-12-03T05:30:08.590 回答
0

我们所有的无线软件都使用网络服务。我们只是为每个名为 IsConnected 的 Web 服务构建了一个简单的方法,该方法返回 true。如果我们从这里得到异常,我们知道我们的 wifi 有问题。

于 2012-12-05T23:43:20.620 回答
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 通常会因暂停而关闭,您需要重新启动逻辑才能访问您的主机。

于 2012-11-28T07:24:29.310 回答