0

我正在构建和嵌入式应用程序,我宁愿使用硬件中断侦听器,然后通过每 10 秒轮询一次来处理 CPU 周期。

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

提前致谢。

示例:
硬件中断 -> readPort() -> emit(value)

更新
我认为这样的事情会起作用,但我想听听有这方面经验的人的意见。

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()));
}
4

2 回答 2

0

对您的应用程序一无所知,可能有一个不中断的解决方案。

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

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

在 timerEvent() 中,轮询硬件。根据需要发出信号。

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

于 2013-05-09T15:44:27.567 回答
0

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

于 2021-08-11T00:45:15.110 回答