• 7050阅读
  • 12回复

多线程操作 [复制链接]

上一主题 下一主题
离线帅坤
 
只看楼主 倒序阅读 楼主  发表于: 2010-06-22
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
        我写了一个读串口数据的thread,在主界面的虚构函数中定义了一个定时器,定时器的timeout()信号与一个启动线程的槽链接,每10ms运行一次线程。线程的run函数中,首先停止定时器,然后读取数据,读完后再重新开启定时器。
        可是我发现主界面只有在串口有数据读到的时候才相应界面上的操作,比如鼠标点击。如果一直没有数据可读,那么界面就会一直僵死在那。
        是线程run函数中将定时器停止的原因导致的吗?我那样做是为了保证能够将数据读取完整。因为我不知道linux下,串口接收缓存多大。
        请大家帮帮忙~那个界面僵死的问题怎么解决?还有有谁知道linux下串口接收缓存的大小怎么查看或者怎么设置?
离线帅坤
只看该作者 1楼 发表于: 2010-06-22
怎么才能够让读串口的操作和界面操作分离开?
离线banyibanyi

只看该作者 2楼 发表于: 2010-06-22
翻翻老帖吧 记得有个函数 用了之后就 相应界面了
离线帅坤
只看该作者 3楼 发表于: 2010-06-22
回 2楼(banyibanyi) 的帖子
我刚才翻了一遍有“串口”关键字的帖子,没查到啊。
你还记得些什么吗?给点提示~
离线dstorm
只看该作者 4楼 发表于: 2010-06-22
why not do read com in thread function?

inherate run
{
         while ( !bOut)
         {
                  sleep(1000);//delay time you set;
                  //read com...    
         }

}
离线帅坤
只看该作者 5楼 发表于: 2010-06-22
回 4楼(dstorm) 的帖子
我确实是在run函数中读的数据啊。
离线rockyluo

只看该作者 6楼 发表于: 2010-06-23
你干嘛要用定时器去控制线程嘞???
开个线程,把读串口的操作放在run里,然后在run结尾处加个exec函数,让它自己运行就得了
好好看看QThread的手册吧
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线帅坤
只看该作者 7楼 发表于: 2010-06-23
回 6楼(rockyluo) 的帖子
我正想问呢,呵呵~
QThread中不是没有exec()函数吗?我怎么调用啊?

我的那个问题是不是因为我的线程运行起来一直没退出啊?
但是我在今天试图在每次线程执行完成后将线程退出,调用了QThread的exit()函数。可是为什么线程退出了,整个程序都一并退出了啊?结果就执行了一次线程run函数,只读了一次数据。
[ 此帖被帅坤在2010-06-23 13:07重新编辑 ]
离线帅坤
只看该作者 8楼 发表于: 2010-06-23
回 6楼(rockyluo) 的帖子
补充:我用的是QT2。
离线帅坤
只看该作者 9楼 发表于: 2010-06-24
谁能给我提示一下啊?真的不知道怎么解决这个问题了。
离线xtfllbl

只看该作者 10楼 发表于: 2010-06-24
你哪里翻出来的qt2这古董,我连文档都找不到,还真没办法帮你
上海欢迎您
离线帅坤
只看该作者 11楼 发表于: 2010-06-24
回 10楼(xtfllbl) 的帖子
版主啊!
我们买的板子只支持QT2,我也没办法。
而且我还是第一次接触QT,头疼~
离线帅坤
只看该作者 12楼 发表于: 2010-06-25
对于Qt2真的没办法了吗?
谁能帮帮忙~
快速回复
限100 字节
 
上一个 下一个