【问题标题】:Is it possible to have multiple STDIN streams?是否可以有多个 STDIN 流?
【发布时间】:2011-01-18 21:30:51
【问题描述】:

我希望将两个 USB 条码扫描仪连接到一台计算机上,让两个人同时扫描票证条码。但是,如果两个人同时扫描,则来自 STDIN 的输入会变得混乱。

有没有办法设置不同的 STDIN 流,每个流都绑定到特定的 USB 端口?控制台脚本是用 Ruby 编写的,但任何语言的指针都将不胜感激。

【问题讨论】:

  • 是什么限制了您只能使用 STDIN 作为输入?
  • 我还有哪些其他选择?这不是我必须听才能获取 USB 数据流的地方吗?

标签: ruby stream usb stdin barcode


【解决方案1】:

先尝试连接 2 个 USB 条码扫描器,然后测试您害怕的事情是否会发生。我怀疑所有条形码数字都是一次性发送的,而来自其他类似键盘的设备的中断被暂停 - 所以你不会让两个条形码“交错”在一起。

不可能有多个标准输入,而不是字面意思。其他选项将取决于您所在的操作系统 - 在 linux 上,驱动程序可能为您提供不同的字符设备用于不同的扫描仪。在 Windows 上,我相信您将不得不学习如何使用 USB HID 协议……最好您不必这样做。

【讨论】:

  • 这正是发生的事情。据我测试,没有“隔行扫描”。
【解决方案2】:

要直接回答您的问题,没有办法拥有多个 STDIN。你最好从文件中读取数据(我认为你应该有一个字符设备或这个扫描仪的东西)

【讨论】:

    【解决方案3】:

    如果您使用 Mutex 来同步它们,这样一次只能处理一个扫描,该怎么办?

    这是一个在 Ruby 中使用线程的教程

    http://ruby-doc.org/docs/ProgrammingRuby/html/tut_threads.html

    【讨论】:

    • 这对我来说似乎很荒谬,猎物告诉 - 您认为如何在作为 USB HID 连接的条形码扫描仪上使用互斥锁?为了使图像更简单,让我们通过 USB 连接 2 个键盘——它们同时注入 STDIN。你将如何区分它们?!
    猜你喜欢
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2018-08-18
    相关资源
    最近更新 更多