Мониторинг подключения к радио WLAN в Windows Mobile 6/C#
-
22-08-2019 - |
Вопрос
В настоящее время я разрабатываю приложение, предназначенное для HP IPAQ 210. Часть этого приложения требует, чтобы радио WLAN было включено/включено для подключения к предварительно сконфигурированной точке доступа. В настоящее время я использую IPAQ SDK (через P/Invoke), чтобы включить радио WLAN, но у меня возникают проблемы с надежным определением, когда радио установило соединение с предпочтительной точкой доступа. В настоящее время я контролирую свойство microsoft.windowsmobile.status.systemstate.wifistateConned, но я бы предпочел подписаться на событие, которое будет уведомлено при установлении соединения.
Я немного оглянулся в библиотеке OpenNetCF, и, кажется, есть многообещающие вещи в 2.3, но мы на данный момент застряли на 2.2.
Есть ли надежный способ определить статус соединения?
Решение
Это уродливо, и это не событие, но если все остальное не удалось, вы можете попробовать проверить оборудование Wi -Fi, прочитав свой ключ реестра:
int key = (int)Registry.GetValue("HKEY_LOCAL_MACHINE\\System\\State\\Hardware", "WiFi", -1);
Другие советы
Таким образом, если кто -то еще произойдет, я обнаружил, что метод ключа реестра, описанный выше, в основном надежным, но мне нужен был более надежный метод. Я перешел на использование библиотеки NetworkInformation OpenNetCF 2.2 для мониторинга свойства CurrentIpAddress в WirelesszerOconfigInterface. Я все еще использую ipaqutils для управления радиоэлектростанцией WLAN (я обнаружил, что радиосвязь OpenNetCF 2.2 не имеет отсутствия, и у устройства будет только одна запись сети Wi -Fi), но вот как я контролирую IP -адрес интерфейса :
NetworkInterface[] netIntfs = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in netIntfs)
{
if (ni is WirelessZeroConfigNetworkInterface)
{
wzcni = (WirelessZeroConfigNetworkInterface)ni;
}
}
while (wzcni.CurrentIpAddress.ToString() == "0.0.0.0" && tryCount < 10)
{
wzcni.Refresh();
System.Threading.Thread.Sleep(3000);
tryCount++;
}
System.Windows.Forms.Button Btn = new System.Windows.Forms.Button();
if (flag == true)
{
for (int i = 0; i < node; i++)
{
Btn = new Button();
Btn.Height = 25;
Btn.Width =30;
Btn.ForeColor = Color.Blue;
Btn.BackColor = Color.Brown;
Btn.AutoSize = false;
x = rd.Next(130, 800);
y = rd.Next(130, 500);
Btn.Location = new Point(x, y);
Console.WriteLine(x + "," + y);
Btn.Text = "U" + i.ToString();
Btn.Name = "U" + i.ToString();
m_streamWriter.WriteLine("{0} {1} {2}",
Btn.Name.ToString(),
Btn.Location.X.ToString(),
Btn.Location.Y.ToString());
Btn.Click += new System.EventHandler(this.Btn_Click);
this.Controls.Add(Btn);
}
flag = false;
m_streamWriter.Dispose();
startConvert();
get_combo1();
}