Hallo!
Ich lese meine COM-Schnittstelle in Visual C++ 6.0 mittels einer Serialfunktion von TheCodeProject aus. Das klappt so auch wunderbar. Das Mysterium fängt erst bei der Ausgabe der eingelesenen Zeichen an:
Irgendwie schleichen sich immer 3 Zeichen an meine eingelesene Kette.
Das Wort "Test" kommt über den COM-Port rein (von einem PIC), wird aber komischerweise in meinem Programm als "Test|%C" ausgegeben. Die Übertragung zwischen PIC und PC klappt, das hab ich mit einem anderen Programm bereits getestet, der Fehler liegt also bei mir. *Mist*
Dummerweise bringt er mir die richtige Größe der Variable, wenn ich mir diese ausgeben lasse (hier 4).
Was mache ich verkehrt?
Hier mal mein Code-Stückchen (so klappt alles, also ich hab nichts vergessen einzubinden):
edit: Ach so...die beiden Ausgabevariablen laufen als CString. Eine Änderung der cominhalt-Variable in BYTE bringt das gleiche Ergebnis.
Ich lese meine COM-Schnittstelle in Visual C++ 6.0 mittels einer Serialfunktion von TheCodeProject aus. Das klappt so auch wunderbar. Das Mysterium fängt erst bei der Ausgabe der eingelesenen Zeichen an:
Irgendwie schleichen sich immer 3 Zeichen an meine eingelesene Kette.
Das Wort "Test" kommt über den COM-Port rein (von einem PIC), wird aber komischerweise in meinem Programm als "Test|%C" ausgegeben. Die Übertragung zwischen PIC und PC klappt, das hab ich mit einem anderen Programm bereits getestet, der Fehler liegt also bei mir. *Mist*
Dummerweise bringt er mir die richtige Größe der Variable, wenn ich mir diese ausgeben lasse (hier 4).
Was mache ich verkehrt?
Hier mal mein Code-Stückchen (so klappt alles, also ich hab nichts vergessen einzubinden):
Code:
CWerteNeu Dlg; //das Dialogfenster, in dem alles angezeigt wird
CA1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CSerialPort port;
port.Open(1, 19200, CSerialPort::NoParity, 8,
CSerialPort::OneStopBit,
CSerialPort::NoFlowControl);
char cominhalt[4];
port.Read(cominhalt,4);
Dlg.m_nwausgabe=cominhalt; //Die anzeigende (schreibgeschützte) Textbox
int gross=sizeof(Dlg.m_nwausgabe);
Dlg.m_nwausgabe2=gross; //Die Größe der Variable
edit: Ach so...die beiden Ausgabevariablen laufen als CString. Eine Änderung der cominhalt-Variable in BYTE bringt das gleiche Ergebnis.
Zuletzt bearbeitet: