Cserial

mstank

Mitglied
Hi @ all!

Ich greife mit einen Code auf den Com-Port zu. Wie kann ich die Daten aus den Buffer in eine Datei schreiben und in einer SDI anzeigen lassen?

c++-Code:
CSerial serial;
if (serial.Open(2, 9600))
{
char* lpBuffer = new char[500];
int nBytesRead = serial.ReadData(lpBuffer, 500);
delete []lpBuffer;
}
else
AfxMessageBox("Failed to open port!");



Wenn ich in der if-Schleife eine MessageBox den lpBuffer anzeige, erscheinen gaaaaaanz viele i's. AfxMessageBox(lpBuffer);

THX Markus;-)
 
Wenn keinen Daten gelesen wurden, ist dein Buffer nicht initialisert.
Wenn kein '\0'-Zeichen gelesen wird. ist dein Buffer nicht 0-terminiert.
Damit werden Zeichen ausgegeben, bis zufällig eine 0 kommt.

Code:
CSerial serial;
if (serial.Open(2, 9600))
{
char* lpBuffer = new char[501];  // 1 Zeichen für Null-terminierung
int nBytesRead = serial.ReadData(lpBuffer, 500);
lpBuffer[nBytesRead] = '\0';  // Null-terminieren
delete []lpBuffer;
}
else
AfxMessageBox("Failed to open port!");

Mit new brauchst du übrigens in deinem Beispiel nicht zu arbeiten, da du es am Ende des Blocks wieder löschst

Code:
CSerial serial;
if (serial.Open(2, 9600))
{
char pszBuffer[501] = "";  // Leer String zuweisen
int nBytesRead = serial.ReadData(&pszBuffer[0], 500);
pszBuffer[nBytesRead] = '\0';
}
else
AfxMessageBox("Failed to open port!");

Gruss
Dora
 
Zurück