Получение IOException при открытии виртуального COM-порта - PullRequest
0 голосов
/ 16 февраля 2012

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

Вот отрывок кода, который доставляет мне неприятности:

public int BaudRate { get; set; }

private SerialPort comm;

public string CommPort { get; set; }

protected override void Initialize() {
        comm = new SerialPort();

        comm.BaudRate = BaudRate;
        comm.DataBits = 8;
        comm.NewLine = "\r\n";
        comm.Parity   = Parity.None;
        comm.PortName = ComPort;
        comm.StopBits = StopBits.One;

        comm.Open();
}

В моем методе модульного тестирования у меня есть следующий код:

NMEAGPS gps = new NMEAGPS();
gps.ComPort = "COM3";
gps.BaudRate = 4800;
gps.Start();

Метод Intiialize в моем первом фрагменте кода вызывается методом Start.

Ошибка возникает при вызове comm.Open (). Вот подробности исключения:

System.IO.IOException was caught
  Message=The I/O operation has been aborted because of either a thread exit or an application request.

  Source=System
  StackTrace:
       at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
       at System.IO.Ports.InternalResources.WinIOError()
       at System.IO.Ports.SerialStream.InitializeDCB(Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Boolean discardNull)
       at System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeout, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNull, Byte parityReplace)
       at System.IO.Ports.SerialPort.Open()
       at LPRCore.Devices.NMEAGPS.Initialize() in D:\ElsagTFS\EOC4\Client\LPRCore Plugin GPS\NMEAGPS.cs:line 385
       at LPRCore.Module.InternalPrestart() in D:\ElsagTFS\EOC4\Client\LPRCore\Module.cs:line 413

Это первый раз, когда я занимаюсь программированием COM в .NET. Я не понимаю, что я мог делать неправильно. У кого-нибудь есть идеи?

Tony

1 Ответ

0 голосов
/ 16 февраля 2012

Я нашел решение своей проблемы.Оказывается, причиной был драйвер, который я установил для GPS.Это был старый драйвер для Vista.Я скачал обновленный драйвер для Windows 7 (который запускается на моем ПК) и установил его.Это решило проблему

Спасибо всем.

...