差分

ナビゲーションに移動 検索に移動
ページの作成:「Xamarin.Mac無線LANアクセスポイントRSSI(電波強度)を取得してみたい。 なんとなく思いついた。 == 実装 == MonoMacの...」
[[Xamarin.Mac]]で[[無線LANアクセスポイント]]の[[RSSI]](電波強度)を取得してみたい。
なんとなく思いついた。

== 実装 ==
[[MonoMac]]のサンプルに[[無線LANアクセスポイント]]を列挙するものがあった。
* https://github.com/xamarin/mac-samples/blob/master/MicroSamples/HelloCoreWlanSample.cs


[[CoreWLAN]]のCWNetworkクラスを眺めていると「[[RssiValue]]」という直球な[[プロパティ]]が用意されている。
深く考えずに表示してみたところ[[RSSI]]が電力(dBm)で返ってくる。

なお、CWNetworkクラスには「Rssi」という似たようなプロパティもあるが、こちらは「使うな」とのコメントが入っている。
試しに使ってみたがNSNumber型で普通に値が返ってくる。
でも使うな。

<source lang="csharp">
using System;
using Foundation;
using AppKit;
using CoreWlan;

namespace CoreWlanRSSI
{
static class MainClass
{
static void Main(string[] args)
{
NSApplication.Init();

using (new NSAutoreleasePool())
{
string[] interfaces = CWInterface.SupportedInterfaces;

if (interfaces.Length < 1)
{
Console.WriteLine("No supported interface is available in this computer");
return;
}

CWInterface selectedIntface = CWInterface.FromName(interfaces[0]);
// print interface information
Console.WriteLine("\nInterface Information:\nName: {0}, Active SSID: {1}, Active BSSID: {2}\n", selectedIntface.Name, selectedIntface.Ssid, selectedIntface.Bssid);

NSError error;
CWNetwork[] data = selectedIntface.ScanForNetworksWithParameters(null, out error);

if (error != null)
{
Console.Error.WriteLine("An error occurred while scanning for available networks");
return;
}

foreach (CWNetwork d in data)
{
Console.WriteLine("SSID: {0}, BSSID: {1}, RSSI: {2}", d.Ssid, d.Bssid, d.RssiValue);
}
}
}
}
}
</source>

== 関連項目 ==
* [[RSSI (Received Signal Strength Indicator)]]
* [[WiFi]]
* [[無線LAN]]
* [[無線LANアクセスポイント]]

== 参考文献 ==
{{reflist}}

{{stub}}

[[category: MonoMac]]
[[category: Xamarin.Mac]]
匿名利用者

案内メニュー