我正在构建并嵌入应用程序而我更倾向于使用硬件中断侦听器,然后通过每隔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()));
}
答案 0 :(得分:0)
不了解您的应用程序的任何其他内容,可能存在非中断解决方案。
创建QObject的子类并将其移动到唯一的QThread。
在对象中,调用startTimer(100)。
在timerEvent()中,轮询硬件。必要时发出信号。
在Qt4中,信号和插槽会自动在线程之间排队。
答案 1 :(得分:0)
由于您使用的是硬件,因此您可以使用特定于操作系统的方法来执行此操作。像 epoll、kqueue 或类似的方法。