Получение неправильных имен последовательных портов от устройства Bluetooth (c #) - PullRequest
6 голосов
/ 26 марта 2010

Чтобы получить все доступные Serialports из системы, я использую следующую команду.

SerialPort.GetPortNames

Он отлично работает для последовательного порта материнской платы, но с устройством Bluetooth я получаю неправильные имена портов.

Например: вместо COM7 я иногда получаю COM70 или COM7ö. Его всегда 1 письмо многим.

есть предложения?

PS: я использую новейшую Visual Studio Express в Windows 7 PPS: грязный хак, чтобы вырезать последнюю букву, не сработал, потому что я не знаю, какой из них является последовательным портом bluetooth (с различными bluetoothstick или устройствами это меняет номер компорта), и после попытки различных палочек я достиг COM10, ergo COM100 или COM10f

РЕДАКТИРОВАТЬ: код, который я использую прямо сейчас. чтение повторного теста, но все та же проблема.

RegistryKey myRegistry = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm");
foreach (string valuename in myRegistry.GetValueNames())
{
    if (myRegistry.GetValue(valuename) is String)
    {
        if (valuename.Contains("BthModem"))
        {
            richTextBox1.AppendText(">" + myRegistry.GetValue(valuename) + "<" + Environment.NewLine);
        }
    }
} 

Обычно второй или третий запрос работает с результатом, подобным

COM11ᯋ < COM10S < COM11 < COM10 < COM11 < COM10 <</p>

как это может быть?

Ответы [ 3 ]

2 голосов
/ 26 марта 2010

Это сообщается как ошибка с ненулевыми завершенными строками:

Можете ли вы вручную пройти реестр?

HKLM\Hardware\DeviceMap\SerialComm
0 голосов
/ 26 ноября 2010

У меня та же проблема.SerialPort.GetPortNames в основном использует реестр в любом случае - оба эти метода, похоже, не работают с Bluetooth.

Обходной путь, который я использую в настоящее время, состоит в том, чтобы пройти через первые X com-порты и посмотреть, существуют ли оничто вряд ли изящно.MS: FAIL.

0 голосов
/ 26 марта 2010

Вы можете использовать WMI для запроса системы о последовательных портах, включая те, которые добавляются устройствами Bluetooth и устройствами USB-To-Serial. Может быть, таким образом вы не столкнетесь с этой проблемой. См. CodeProject .

...