场景:
- 我有一个 usb-RFID 阅读器
- 将它连接到笔记本电脑上,它就像新连接的 USB 键盘一样工作,例如无需安装任何驱动程序
- 当接触带有 RFID 标签的阅读器时
- 它在我当前的窗口(例如终端/外壳)中输入 RFID 编号(如
0009339384\n
)- 例如它甚至发送\n
。 - 因此,它的工作方式就好像我在笔记本键盘上键入数字一样
问题是:
- 是否可以直接读取 RFID 阅读器而无需一些内核级驱动程序,例如像
cat/dev/keyboard1
... - 换句话说,我如何确定字符来自哪个“键盘”?
- 使用 OS X,但也很高兴知道 Linux 的解决方案。
此外,我想附加两个读者 - 所以我肯定需要清楚地区分这两个读者。我想在 bash (perl) 脚本中使用 rfid-reader,所以我肯定在寻找一种无需编译某些“驱动程序”的解决方案……这可能吗?
OS X 将其标识为:
SYC ID&IC USB Reader:
Product ID: 0x0035
Vendor ID: 0xffff
Version: 1.00
Serial Number: 08FF20140315
Speed: Up to 1.5 Mb/sec
Manufacturer: Sycreader RFID Technology Co., Ltd
Location ID: 0x14100000 / 18
Current Available (mA): 500
Current Required (mA): 100
Extra Operating Current (mA): 0
编辑 好的,看起来在 Linux 中可以完成 - 刚刚找到
- 这https://unix.stackexchange.com/questions/72483/how-to-distinguish-input-from-different-keyboards
- 还有Accessing multiple keyboards input by C++ (or python) in linux
对于 OS X - 在 unix 上完全相同:https://unix.stackexchange.com/questions/228413/route-keyboard-through-only-dev-ttys000-on-mac-os-x - 不幸的是,没有任何答案就关闭了:(
最佳答案
好的,所以 - 在 Linux 中很容易解决。正如问题的编辑一样 - 这里已经有很多类似的问题。
解决方案是:读取特定的/dev/input/eventN
设备。
在我的例子中,我使用 Linux::Input perl 模块。完美运行。
在这里添加代码是没有意义的,包中包含 evtest.pl - 这样任何人都可以轻松检查它是如何工作的。
还需要解决一个问题——例如即使在读取设备并很好地从 rfid 阅读器获取所有事件(一个数字有 4 个事件)时,rfid 代码仍然插入到事件窗口中,就像它来自键盘一样。 (这将是另一个问题)。
对于 OS X,我还没有一个简单的解决方案,但现在专注于 Linux 变体。 :)
关于linux - 如何确定输入来自哪个键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44542203/