我有一个简单的RFID阅读器,它实际上表现为键盘,并在结尾返回带有返回字符的读取值。
我希望我的应用程序只能侦听单个(不同的)键盘设备(我将以某种方式选择/区分),并为我获取读取值,而不是重点放在表单/应用程序上。
应用程序是用Qt C ++编写的
我想知道这是否可能以及如何?
答案 0 :(得分:1)
不知道这是否有帮助,但我们在检测条形码扫描仪的输入方面遇到了类似的挑战。扫描仪只需键入"一些数字真的很快;一些扫描仪以控制字符结束它,但由于它不是通用的,我们甚至不能依赖它。
我注意到当条形码扫描器开始输入时会发出QEvent::KeyboardLayoutChange
,但我不确定这是否适用于所有可能的情况 - 但您可能想检查一下。
我们最终安装了一个应用程序范围的事件过滤器(QApplication::installEventFilter
),用于检查击键(QEvent::ShortcutOverride
或QEvent::KeyPress
)并根据连续数字序列,非常短的时间等标准进行检查间隔等决定它是条形码输入。它有明显的缺陷,但如果你需要一个非常通用的解决方案,你可能会对类似的东西感兴趣。此外,如果RFID输入总是返回一个控制字符,这可能会简化这种方法。
答案 1 :(得分:0)
在WinAPI的帮助下,这可以用于Windows操作系统。我从来没有使用过QT所以我不知道QT类中是否存在一些包装器用于此目的。
你应该使用原始输入。请查看此链接以获取快速参考:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms645536(v=vs.85).aspx(Using Raw Input
部分下有示例
还要看一下这个项目http://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard我理解它在C#上的写作,但它可能会有所帮助