• 4209阅读
  • 1回复

QT读写串死机 [复制链接]

上一主题 下一主题
离线diaryon
 

只看楼主 倒序阅读 楼主  发表于: 2006-04-21
我用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重新编辑 ]
离线diaryon

只看该作者 1楼 发表于: 2006-04-21
是不是我的QTE有问题?
快速回复
限100 字节
 
上一个 下一个