如何将硬件中断连接到Qt Emit?

时间:2013-05-09 15:31:33

标签: linux qt4 embedded

我正在构建并嵌入应用程序而我更倾向于使用硬件中断侦听器,然后通过每隔10秒轮询来咀嚼cpu周期。

这显然可以做到,因为有硬件中断的监听器,如键盘,鼠标和网络。我最不想做的是硬件中断触发Qt发射信号。

提前致谢。

例:
硬件中断 - > readPort() - >发射(值)

更新
我觉得这样的事情会起作用,但我喜欢听到有经验的人。

mSN = new QSocketNotifier; // defined in .h
QFile file("/dev/testDriver");
if(file.open(QFile::ReadOnly)) {
  QSocketNotifier mSN(file.handle(), , QSocketNotifier::Read);
  mSN.setEnabled(true);
  connect(mSN, SIGNAL(activated(int)), &this, SLOT(readyRead()));
}

2 个答案:

答案 0 :(得分:0)

不了解您的应用程序的任何其他内容,可能存在非中断解决方案。

创建QObject的子类并将其移动到唯一的QThread。

在对象中,调用startTimer(100)。

在timerEvent()中,轮询硬件。必要时发出信号。

在Qt4中,信号和插槽会自动在线程之间排队。

答案 1 :(得分:0)

由于您使用的是硬件,因此您可以使用特定于操作系统的方法来执行此操作。像 epoll、kqueue 或类似的方法。