Serial Port Problem beim Empfang der Daten

Alles rund um die Programmierung mit Qt
Antworten
waldi
Beiträge: 5
Registriert: 16. Januar 2006 13:54

Serial Port Problem beim Empfang der Daten

Beitrag von waldi »

Hallo,

QT Anfänger braucht Hilfe (Qt3).

In meiner Applikation arbeite ich mit der QextSerialPort Klasse
und treibe asynchron serial Port.
Beim Empfang der Datenbytes alles funktioniert einwandfrei, wenn die Bytes != 0x00 sind.
Wenn einige Bytes 0 Wert haben, ich bekomme nicht immer den Block sauber.
Ich bekomme zwar die Länge immer korrekt, aber die gelesene Daten stimmen nicht überein an bestimmten Positionen.
zB. gesendet [4] == 0x3C empfangen [4] == 0xFA ?
Woran kann es liegen, wo mache ich Fehler.

Unten ein Stück Code von der Applikation aus der Datei formdlg.ui.h:
......
int rxdBytes
QString rxdExt;
......
Qtimer *receiveTimer = new Qtimer(this);
connect(receiveTimer, SIGNAL(timeout()), SLOT(receiveMsg()));
receiveTimer->start(80,FALSE);

void FormDlg::receiveMsg()
{
static char rxdBuff[0x8000];
int numBytes = CommPort->bytesWaiting();
if(numBytes >0)
{
rxdBytes += numBytes;
CommPort->readBlock(rxdBuff, numBytes);
rxdExt += rxdBuff;
}

if((numBytes == 1) && (rxdBytes > 0))
{
receiveDataReady = TRUE;
updateDlgPage(); // Funktion wo ich die Daten verarbeite
}
}
..............

waldi
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Nunja, 0x00 ist nunmal das Zeichen für Stringende...

Dort QString zu verwenden ist falsch. Es muss QByteArray sein.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
waldi
Beiträge: 5
Registriert: 16. Januar 2006 13:54

Beitrag von waldi »

Danke Christian,

Mit dem String ist für mich jetzt klar, ich habe es vergessen.

waldi
Antworten