ArgumentException: указанное имя порта не начинается с COM / com или не разрешается в допустимый последовательный порт - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь подключиться к виртуальному com-порту, предоставленному драйверами устройства u-blox GPS.

Устройство обычно отображается на вкладке «Датчики» в диспетчере устройств, и я действительно могу получить данные координат, используя класс GeoCoordinateWatcher из C #.

Но я хочу прочитать базовые данные NMEA. Поэтому в процессе этого я установил драйвер Virtual Com Port, предоставляемый U-BLOX, и он сгенерировал com-порт u-blox virta в диспетчере устройств.

Соединение с этим с помощью Putty в порядке, и я вижу, что все линии NMEA сбрасываются туда.

но когда я пытаюсь подключиться к тому же порту (после того, как Putty явно закрывается), используя C #, я получаю исключение, упомянутое в заголовке

Данное имя порта не начинается с COM / com или не разрешается в действительный последовательный порт

Мой код довольно прост (не первый раз, когда я использую ком-порты), и все правильно определено (имя порта, стоп-биты, четность, BaudRate и т. Д.). Я даже пытался изменить «неправильное» имя com-порта, чтобы увидеть, какое исключение я получу, и оно совершенно другое (Com-порт не является исключением для выхода).

Так что же происходит с C # в этот момент? Я делаю что-то неправильно? Это ошибка в классе SerialPort? Кажется, что Putty отлично работает при подключении и потоковой передаче данных. Мой код так же прост, как показано ниже

m_port = new SerialPort
{
    PortName = m_portName,
    BaudRate = m_baudRate,
    Parity = m_parityBit,
    DataBits = m_dataBits,
    StopBits = m_stopBit
};

m_port.Open();

Я даже пытался жестко закодировать значения, и я все еще получаю то же исключение. Я попробовал многие из предложенных решений, найденных здесь , ни одно из них не помогло. Я также попытался изменить номер COM-порта из расширенных настроек диспетчера устройств, что также не помогло

1 Ответ

0 голосов
/ 01 ноября 2018

Как оказалось, драйвер виртуального COM-порта U-BLOX не полностью эмулирует COM-порт, что вызывает проблемы с .Net. Независимо от того, C# или C++ или любой другой язык, работающий на .Net Единственное решение - либо не использовать это устройство, либо использовать промежуточное программное обеспечение.

...