欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

qt 里,read一个中断文件阻塞后,qtimer计时器停止了怎么处理

更新时间: 2014-01-05 02:43:45 责任编辑: Author_N1

 

qt 里,read一个中断文件阻塞后,qtimer计时器停止了怎么办。

timer_up = new QTimer(this);
connect(timer_up , SIGNAL(timeout()) , this , SLOT(UpTimeOut()));
timer_up->start(100);

跑的好好的时候,遇到下面这个就停了。。

while(1)
    {
        int ret=read(fd_button,buff,sizeof(buff));
        if(ret<0) printf("read button error");
        for(i=0;i<4;i++)
            if(49 == buff[i])
            {
                char sendback[16] = { 0x1 , '0' , '1' , 0x2 , i++ , 0x2 , 0x3 };
                emit DisplayBack( sendback );
                StopAudio();
                PlayAudio(THANKS);
                /* leds off */
                for(int i=0;i<4;i++)
                    ioctl(fd_leds,1,i);
                return ;
            }
    }


按键的驱动是自己写的,还可以贴一段驱动的代码

static ssize_t scc_read(struct file *filp,char *buffer,size_t count,loff_t *ppos)
{
unsigned long err;
if(!ev_press)
{
if(filp->f_flags & O_NONBLOCK)
return -EAGAIN;
else
wait_event_interruptible(button_waitq,ev_press);
}
ev_press = 0;
err=copy_to_user(buffer,(const void *)key_values,min(sizeof(key_values),count));
return err ? -EFAULT:min(sizeof(key_values),count);

--参考方法--
试试另开线程去打开文件
--参考方法--
新建自己的线程类,在run函数中执行打开文件的操作,然后在你的while循环中开启这个线程 这不就行了吗
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:43:45
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13621/
本文WWW.DOC100.NET DOC100.NET版权所有。