标题:请教QTE中串口编程
作者:diaryon
日期:2006-04-24 11:35
内容:
我用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下也存在这个问题。
没有人碰到这样的情况吗?
#1 最新测试结果 [diaryon 04-26 17:28]
今天把程序放到板子上去,在QTE程序中可以从串口发送任意数据,但是不能接收任何数据,一旦外设向串口写入数据,QTE程序就死掉了,没有人知道吗?真是郁闷
#2 [tocreat 05-09 18:18]
那个问题解决了吗?