Как я могу узнать количество COM-порта bluetooth-устройства в c#?

Моя компания разработала устройство, которое связывается с ПК через Bluetooth с помощью виртуального COM-порта.

Теперь нам нужен пользователь для соединения устройства с ПК (MS Windows ОС) сначала, и затем войти это - число COM-порта вручную в наше приложение (я держал пари, что 95% пользователей перестанут работать на этом, лавирует).

Таким образом, я хотел бы, чтобы мое приложение подарило пользователю список парных bluetooth-устройств (список их "дружественных имен"), и после этого я хотел бы узнать число COM-порта выбранного устройства автоматически.

Как я могу сделать это в c#? (решение, независимое от установленного Bluetooth-стека, ценится).

Заранее спасибо.

16
задан Łukasz Bownik 18 January 2010 в 10:57
поделиться

2 ответа

Откройте модель в формате 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...

9
ответ дан 30 November 2019 в 22:43
поделиться

Итак, чтобы получить информацию о удаленном устройстве, включая его имя, используя 32Feet.net. DO:

BluetoothAddress addr = ... ...
BluetoothDeviceInfo info = new BluetoothDeviceInfo(addr);
string name = info.DeviceName;

Если не использовать библиотеку, вам придется P / вызывать BluetoothgetDeviceInfo VIN32.

0
ответ дан 30 November 2019 в 22:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: