我用qte-2.3.10+qt-x11-2.3.2作了一个简单应用程序,在GUI程序中用pThread_create创建两个线程,其中一个线程会从串口读数据或写数据,函数如下示: 
int Serial::ReadBuf(void *data, int datalength) 
{ 
int retval = 0; 
FD_ZERO (&fs_read); 
FD_SET (fd, &fs_read); 
tv_timeout.tv_sec = TIMEOUT_SEC (datalength, GetBaudrate ()); 
tv_timeout.tv_usec = TIMEOUT_USEC; 
retval = select (fd + 1, &fs_read, NULL, NULL, &tv_timeout); 
if (retval) { 
return (read (fd, data, datalength)); 
} 
else 
return (-1); 
} 
当串口数据只有一个返回字节时,程序正常运行,但是如果返回数据长度大于1时,应用程序GUI不能响应操作,键盘也不能用了,好像死机了。想了很多办法,也没有成功。 
我原来以为是pthread线程不支持这种操作,就用IPC内存共享的方法,同样遇到这样的问题,只要读数据一超过一个字节,GUI线程就停止了。不再响应我们的任何操作! 
今天写了一个读串口数据的程序作实验,串口中只有一个数据时,同时运行QTE程序或QT-X11下的例程都正常,但一旦串口接收的数据一大于1个字节时,QTE程序界面就会破坏,或串口再也读不到数据,经测试在QTE-4.0.0-b1下也存在这个问题。 
没有人碰到这样的情况吗?
[ 此贴被XChinux在2006-04-24 14:43重新编辑 ]