Я пишу программу, которая должна получать данные от устройства NMEA GPS. Стандарт NMEA требует связи с использованием одного из COM-портов.Получение IOException при открытии виртуального 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
Наверное, не получится изменить, но попробуйте инициализировать его как SerialPort p = new SerialPort («COM1», 4800, Parity.None, 8, StopBits.One); \t \t \t p.Open(); – Axis
Не отличное сообщение, но не необычное. Драйвер GPS действительно недовольны настройками связи. Господь знает, почему. Ну, производитель должен знать. –
У меня есть виртуальный драйвер, в который входит устройство GPS. Я уверен, что параметры связи правильные, но я проверю их утром. –