Windows Mobile 6/C#でのWLAN無線接続の監視
-
22-08-2019 - |
質問
現在、HP IPAQ 210を対象としたアプリを開発しています。このアプリの一部では、WLAN無線を有効/電源オンにして、事前に構成されたアクセスポイントに接続する必要があります。現在、WLAN無線を有効にするためにIPAQ SDK(P/Invokeを介して)を使用していますが、ラジオが優先アクセスポイントとの接続を確立した時期を確実に判断するのに苦労しています。現在、microsoft.windowsmobile.status.systemstate.wifistateConnedプロパティを監視していますが、接続が確立されたときに通知されるイベントを購読することを好みます。
OpenNetCFライブラリを少し見てみましたが、2.3には有望なことがあるようですが、今のところ2.2で立ち往生しています。
接続ステータスを決定する信頼できる方法はありますか?
解決
それは醜く、イベントではありませんが、他のすべてが失敗した場合、レジストリキーを読んでWiFiハードウェア状態を確認することができます。
int key = (int)Registry.GetValue("HKEY_LOCAL_MACHINE\\System\\State\\Hardware", "WiFi", -1);
他のヒント
したがって、他の誰かがこれに起因する場合、上記のレジストリキー方法がほとんど信頼できるとわかりましたが、より信頼できる方法が必要でした。 OpenNETCF 2.2 NetworkInformationライブラリを使用して、WirelessZeroconFiginterfaceのCurrentIPADDRESSプロパティを監視することになりました。私はまだWLAN無線電源を管理するためにIPAQutilsを使用しています(OpenNetCF 2.2無線コントロールが不足していることがわかりました。デバイスには単一のWiFiネットワークエントリのみがあります)が、インターフェイスの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();
}