• 4497阅读
  • 3回复

[讨论]快速点击Button,只执行了pressd没有执行released [复制链接]

上一主题 下一主题
离线dolphin836
 

只看楼主 倒序阅读 楼主  发表于: 2012-08-31
我的程序中有几个按键分别定义了它的pressd和released槽函数。
执行的代码很简单,就是写不同的命令到buff里,并且把一个标志位置1
例如:
button1_pressd()
{
      buff[0] = 0x4a;
      buff[1] = 0x07;

      make = 1;
}
button1_released()
{
      buff[0] = 0x4a;
      buff[1] = 0x08;

      make = 1;
}
实际的代码比这个完整一点,对make进行了加锁,意思就是这个意思。我有一个线程会根据标志位将buff中的命令写给串口

现在的问题是,如果非常快速的点击一下按键
通过printf信息发现只执行了pressed函数,没有执行released函数。
那位大侠知道是什么原因么?正常点击是没有问题的,pressed和released是成对出现的。

我理解的:是不是在pressed函数还在执行的过程中,按键就弹起了,这时发送released信号给主线程就处理不了。当pressed函数执行完的时候released信号已经发送完成,所以就没有收到released信号,所以就没有执行?

有什么办法克服这个问题么?
离线dolphin836

只看该作者 1楼 发表于: 2012-08-31
没人知道么

好郁闷啊

www.hbdx.cc
离线benbenmajia

只看该作者 2楼 发表于: 2012-08-31
没有看下双击事件么?会不会是因双击事件阻塞了release
安然.....
离线dolphin836

只看该作者 3楼 发表于: 2012-08-31
回 2楼(benbenmajia) 的帖子
用得是pushButton,有双击事件么?
我不记得有了,等下看下。
我刚才想了下想用定时器来做看看,应该能解决这个问题。
快速回复
限100 字节
 
上一个 下一个