Serial Port Problem beim Empfang der Daten
Verfasst: 29. Januar 2006 15:25
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
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