我正在编写一个蓝牙扫描仪来监控我家外面的交通。我了解车载BT设备一般有3种状态,可见(常亮)、受限、不可见。
我正在使用带有 Bluesoleil 驱动程序和 1 类蓝牙加密狗的异步设备发现。
我的问题是设备名称和设备类没有被发现。它正在发现设备地址和范围,但不是设备名称。
我尝试使用 System.Threading.Thread.Sleep(1000) 然后调用 device.Refresh() 无济于事。
它正在获取范围内的一些东西的名称,例如电视和 Fitbit Flexes,但重要的是我可以找到汽车蓝牙设备的名称和 CoD,而不仅仅是 MAC 地址和范围。
public void SetupListener()
{
var client = new BluetoothClient();
var component = new BluetoothComponent(client);
component.DiscoverDevicesAsync(255, false, false, true, false, null);
component.DiscoverDevicesProgress += component_DiscoverDevicesProgress;
component.DiscoverDevicesComplete += component_DiscoverDevicesComplete;
}
void component_DiscoverDevicesComplete(object sender, DiscoverDevicesEventArgs e)
{
SetupListener();
}
void component_DiscoverDevicesProgress(object sender, DiscoverDevicesEventArgs e)
{
BluetoothDeviceInfo[] availableDevices = e.Devices as BluetoothDeviceInfo[];
foreach (BluetoothDeviceInfo device in availableDevices)
{
device.Refresh();
var name = device.DeviceName; // This mostly returns the MAC address
var cod = device.ClassOfDevice.Device; // This mostly returns Miscellaneous
}
}
我构建的应用程序是一个简单的 WPF 表单,它将找到的设备转储到数据网格(为简单起见,我已将其从代码中删除)。这通常是结果的样子。
当我坐在外面靠近马路的地方时,随着汽车的驶过,它肯定会拾取越来越多的设备,但我不知道它正在检测什么类型的设备。
任何帮助将不胜感激。