Problem mit read() Funktion vom QextSerialPort
Verfasst: 13. November 2008 11:42
hallo Leute
ich habe mir (unter Windows) ein Thread für die serielle Kommunikation geschrieben. Da habe ich die Funktion von der klasse QextSerialPort verwendet. Die write() Funktion ist ok. Aber die read() Funktion geht nicht.
Hier ist die run() Methode
Das Programm blockiert sich wenn er "int i = port4read->read(buff,numBytes);" durchführt.
hat jemand vielleicht erfahrungen damit?
Danke im voraus!
tim
ich habe mir (unter Windows) ein Thread für die serielle Kommunikation geschrieben. Da habe ich die Funktion von der klasse QextSerialPort verwendet. Die write() Funktion ist ok. Aber die read() Funktion geht nicht.
Hier ist die run() Methode
Code: Alles auswählen
void readthread::run()
{
char buff[1024] = "";
int numBytes = 0;
QString msg = "";
QString num;
for(;;)
{
numBytes = port4read->bytesAvailable();
num = QString::number(numBytes,10);
emit printStr(num);
if(numBytes > 0)
{
if(numBytes > 1024)
numBytes = 1024;
int i = port4read->read(buff,numBytes);
emit printStr("read ok");
if(i>0)
{
buff[i] = '\0';
msg = (QString)buff;
emit printStr(msg);
}else{
QString str1 = "read error!";
emit printStr(str1);
}
}else{
QString str2 = "nothing to read!";
emit printStr(str2);
}
msg = "";
msleep(100);
port4read->flush();
}
Danke im voraus!
tim