天嵌 ARM开发社区

 找回密码
 注册
查看: 2378|回复: 3

我用定时器在qt4.5 下面实现按键程序,但是进入死循环了

[复制链接]
cu_sai 发表于 2012-2-25 17:16:54 | 显示全部楼层 |阅读模式
这是驱动read的源码
static int tq2440_irq_read(struct file *filp, char __user *buff, size_t count, loff_t *offp)
{
        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(buff, (const void *)key_values, min(sizeof(key_values), count));

        return err ? -EFAULT : min(sizeof(key_values), count);
}
当我用qt下面的定时器去读取中断
        ret = read(buttons_fd, key_value_temp, sizeof(key_value_temp));
结果程序就停在这了,鼠标就动不了他好像就进入等待(wait)了
怎么办,求解
TQ_guoxixiao 发表于 2012-3-1 17:29:59 | 显示全部楼层
可能是你定时器设置的时间太短,定时器读的频率很高。
占用很大系统资源。
你把定时器设置时间长点,或者用线程做。

如果还是停在读的地方,那就是驱动的原因,阻塞了。分析驱动代码。
回复

使用道具 举报

 楼主| cu_sai 发表于 2012-3-2 16:10:50 | 显示全部楼层
TQ_guoxixiao 发表于 2012-3-1 17:29
可能是你定时器设置的时间太短,定时器读的频率很高。
占用很大系统资源。
你把定时器设置时间长点,或者 ...

就是驱动的原因,不过不知道怎么改,他好像是停在上面wait里面,如果用线程怎么做,我线程没弄过,能发给成功的例子给我吗,邮箱654816629@qq.com,如果有串口的例子也行
回复

使用道具 举报

TQ_guoxixiao 发表于 2012-3-3 18:32:22 | 显示全部楼层
http://bbs.embedsky.net/forum.ph ... ;tid=10449#lastpost
这个链接gps程序里有线程的代码,可以参考一下,也是串口的读操作。

关于驱动,我们源码里有按键的源码,参考一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-5-4 12:06 , Processed in 2.054213 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表