COM-Port ansprechen
-
Hi,
gleich am anfang - ich fange mit c .net erst an
Ich versuche die Daten aus einem USB GPS-Empfänger (NaviLock NL-302U) auszulesen. Der Empfänger wird per USB-to-Serial unter COM8 angezeigt und das GPS-Information testprogramm funktioniert ohne Probleme. Wenn ich nun (unter Vista) versuche auf COM8 zuzugreifen (die open_gps Funktion aufrufe) kommt:
System.IO.IOException: Der E/A-Vorgang wurde wegen eines Threadendes oder einer Anwendungsanforderung abgebrochen.
bei System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
bei System.IO.Ports.SerialStream.InitializeDCB(Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Boolean discardNull)
bei 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)
bei System.IO.Ports.SerialPort.Open()
bei TUBAF_GPS.Form1.open_gps(Object sender, EventArgs e) in c:\users\kafka\documents\visual studio 2005\projects\tubaf_gps\tubaf_gps\gps.h:Zeile 157.
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)die Funktion sieht so aus:
private: System::Void open_gps(System::Object^ sender, System::EventArgs^ e) { this->serialPort1->PortName = L"COM8"; this->serialPort1->Open(); this->srline = this->serialPort1->ReadLine(); this->box_debug->Text = this->srline->Trim(); }
srline ist ein String^, und box_debug eine box wo die Daten angezeigt werden sollen. Hat jmd ne Idee was ich hier falsch gemacht habe?
Grüße
-
also ich hätte nen paar möglich Fehlerquellen:
1. Hast du mal proiert das programm unter Vista als Administrator auszuführen?
2. Bist du dir sicher das es COM8 Gibt?
Ich hatte mal nen USB To COM adapter, der hat bei jedem Neustart seine Adresse geändert...
-
1. ja, hat nichts gebracht
2. da bin ich mir auch sicher, schaue jedes mal nach
-
Probier mal:
this->serialPort1->PortName = L"\\\\.\\COM8";
Leider hab ich auch schon erlebt, dass manche USB to Serial Converter Probleme machen.
-
das hilft leider auch nicht:
System.ArgumentException: Der Anschlussname darf nicht mit "\" beginnen.
-
hmm oben sollte zwischen "" noch ein \ stehen
-
Kannst Du den Comport auf eine andere Weise öffnen?
Z.B. mit HyperTerminal...
-
okay, ich habs (endlich!!!) gelöst. fragt mich nicht wieso, aber sobald vista dem gpsempfänger COM >4 zuordnet funktioniert das ganze nicht. hab jetzt einfach per hand COM2 eingestellt und auf ein mal funktioniert alles wieder... vielen Dank!