我用qte-2.3.10+qt-x11-2.3.2开发一个应用程序,在程序中用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线程就停止了。不再响应我们的任何操作!
论坛的大佬有没有人碰到这个情况啊,急啊!搞了10天还是没有结果。
今天写了一个读串口数据的程序作实验,串口中只有一个数据时,运行QTE程序或QT-X11下的例程都正常,但一旦串口接收的数据一大于1个字节时,QTE程序界面就会破坏,或串口再也读不到数据。
[ 此贴被XChinux在2006-04-21 17:28重新编辑 ]