Seite 1 von 1

Serial Port Problem beim Empfang der Daten

Verfasst: 29. Januar 2006 15:25
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

Verfasst: 29. Januar 2006 18:01
von Christian81
Nunja, 0x00 ist nunmal das Zeichen für Stringende...

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

Verfasst: 30. Januar 2006 14:39
von waldi
Danke Christian,

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

waldi