• 6461阅读
  • 2回复

请教QTE中串口编程 [复制链接]

上一主题 下一主题
离线diaryon
 

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

只看该作者 1楼 发表于: 2006-04-26
最新测试结果
今天把程序放到板子上去,在QTE程序中可以从串口发送任意数据,但是不能接收任何数据,一旦外设向串口写入数据,QTE程序就死掉了,没有人知道吗?真是郁闷
离线tocreat

只看该作者 2楼 发表于: 2008-05-09
那个问题解决了吗?
快速回复
限100 字节
 
上一个 下一个