Моя компания разработала устройство, которое связывается с ПК через Bluetooth с помощью виртуального COM-порта.
Теперь нам нужен пользователь для соединения устройства с ПК (MS Windows ОС) сначала, и затем войти это - число COM-порта вручную в наше приложение (я держал пари, что 95% пользователей перестанут работать на этом, лавирует).
Таким образом, я хотел бы, чтобы мое приложение подарило пользователю список парных bluetooth-устройств (список их "дружественных имен"), и после этого я хотел бы узнать число COM-порта выбранного устройства автоматически.
Как я могу сделать это в c#? (решение, независимое от установленного Bluetooth-стека, ценится).
Заранее спасибо.
Откройте модель в формате XML. Удалите все ссылки на этот тип из CSDL. Сохраните и закройте, а затем снова откройте графический интерфейс пользователя. Теперь вы должны иметь возможность обновлять модель в обычном режиме. Если это не сработает, сделайте то же самое, но удалите и из MSL.
-121--1609744-Метод общего класса, который не возвращает ничего не работает:
Class GetNull(Of T)
Public Shared Function Value() As T
Return Nothing
End Function
End Class
Debug.Print(GetNull(Of Integer).Value())
-121--2873815- Смотрите мой ответ по адресу Widcomm bluetooth: как открыть виртуальный COM для моего понимания лицензии: использование двоичной версии И еще, что я сопровождаю библиотеку.
Итак, небольшое небольшое отступление. Я не большой поклонник виртуальных COM-портов. Всегда кажется гораздо проще использовать прямое «сокетное» соединение, а не пытаться установить COM-порт, и пытаться найти, каким именем он был создан (см. ниже!), а затем должен открыть SerurePort, чтобы использовать его, а затем, если соединение потеряно, он не знает и должен просто продолжать повторять... С библиотекой так проще просто создать и использовать это прямое Bluetooth соединение!
Однако вам может понадобиться решение вашей текущей задачи в данный момент.: -) Таким образом, используйте WMI, чтобы найти текущие COM-порты на месте и посмотреть, какие из них предназначены для вашего устройства. Например, в PowerShell:
C:\> Get-WmiObject -query "select DeviceID,PNPDeviceID from Win32_SerialPort"
...
...
DeviceID : COM66
PNPDeviceID : BTHENUM\{00001101-0000-1000-8000-00805F9B34FB}\7&1D80ECD3&0&00803A686519_C00000003
В этой большой длинной последовательности отображается адрес целевого устройства: 00803A686519. Можно использовать WMI из .NET, запустить этот запрос, отфильтровать их с помощью «BTHENUM», а затем проанализировать адрес.
Если требуется создать новый виртуальный COM-порт Bluetooth, используйте API 32feet.NET BluetoothDeviceInfo.SetServiceState (BluetoothService.SerivePort). См. раздел «Последовательные порты Bluetooth» в Руководстве пользователя, например, по адресу http://www.alanjmcf.me.uk/comms/bluetooth/32feet.NET%20--%20User%20Guide.html , а также документацию по классу в выпуске.
К сожалению, собственный API Win32, который мы вызываем, не указывает, какое имя COM-порта он создал!: - (Поэтому выполните запрос WMI до и после вызова, чтобы увидеть, какое новое имя появилось (или используйте System.IO.Ports.SerurePort.GetPortNames в качестве его более простого).
Все это относится только к стеку Microsoft Bluetooth. Я не исследовал, как ведут себя другие штабели в этом отношении. После краткой проверки последовательные порты Widcomm появляются в SerurePort.GetPortNames, но не в запросе WMI...
Итак, чтобы получить информацию о удаленном устройстве, включая его имя, используя 32Feet.net. DO:
BluetoothAddress addr = ... ...
BluetoothDeviceInfo info = new BluetoothDeviceInfo(addr);
string name = info.DeviceName;
Если не использовать библиотеку, вам придется P / вызывать BluetoothgetDeviceInfo VIN32.