C ++中的自定义事件/中断处理

时间:2013-01-13 15:52:17

标签: events opencv user-interface

微控制器/嵌入式系统中是否存在相当于低级中断的通用编程?

我模糊地熟悉事件的概念(鼠标事件等),它们似乎相似但不够通用。 是否存在一种机制(本机或其他),特别是在C / C ++中,用于处理自定义事件,即触发由用户定义的条件决定的事件,例如,当鼠标指针移动到特定区域时发生了特定的用户操作?

为了提供一些上下文,我正在开发一个基于OpenCV的交互式项目,我希望在用户指向屏幕上的特定位置时触发特定操作。

在视频流的每次迭代中检查指针当前是否位于屏幕上的某个位置似乎是特别浪费计算,并且我想基于预定义条件自动执行函数调用。

还是有其他(更有效的)机制可以改进这个程序吗?

感谢。

1 个答案:

答案 0 :(得分:1)

  1. 在C / C ++中没有像microP或microC那样的中断编程。
  2. 如果您的屏幕是触摸屏,那么您会尝试获取操作系统的SDK或操作系统的API,以便在触摸发生时收到通知。 (操作系统内部维护一个用于触摸或键盘按下或鼠标移动的中断表。我们可以编写我们想要在这样的事件上执行的逻辑,仅此而已......)。
  3. 如果没有触摸,则必须使用传感器(通常是相机(网络摄像头))监控用户的位置。为此,您必须检查相机的每个帧以确定用户的位置。 编辑:
  4. 你提到的是正确的方法。最好检查每一帧,否则系统的响应会很迟钝。您可以将计数器指定为1并将其与每帧增加,并在达到任何所需值时将其重置。这几乎等同于无限循环。
  5. 或者你可以接受键盘上的一些键来打破循环(OpenCV有这样的功能)
  6. 更高级的方法是在与执行程序的主线程不同的线程中从相机中获取帧。所以你需要做的就是启动和停止该线程。