【问题标题】:Is there a way to read the barcode from a barcode scanner device? [closed]有没有办法从条码扫描仪设备读取条码? [关闭]
【发布时间】:2014-08-29 08:21:45
【问题描述】:

如果我打开记事本并从条形码扫描仪设备读取条形码并将焦点放在记事本上,它会在记事本窗口上写入条形码。我只想在我的 C# 程序 中获得相同的输出,因为我创建了一个 textbox 并将焦点放在我的文本框上,输出就是我想要的。现在,如果情况是我有一个textbox,应该如何将相同的字符串分配给我的一些变量。我已经完成了研究,但是有很多库正在从图像或一些 dll 中读取它。我相信有一些简单的方法可以解决这个问题。

提前感谢您的帮助

【问题讨论】:

  • 我认为条形码扫描仪只是将击键发送到您的应用程序。你能在表单级别捕捉到这个吗(需要将 KeyPreview 设置为 true 才能将击键发送到表单)
  • @LeeWillis - 这是link 关注的权利吗
  • 您必须查看该链接并确定它是否适合您。基本原理如我所述。

标签: c# .net wpf barcode barcode-scanner


【解决方案1】:

将表单 KeyPreview 事件设置为 true。然后为 Form KeyUp 事件连接一个处理程序并在那里处理击键。扫描器发送的数据看起来就像您在 Windows 上按下键盘一样,因此它将事件传递给您的应用程序。

【讨论】:

  • 很好,但是还有一些东西...我的意思是我希望我的 C# 应用程序只接受来自条形码扫描仪的输入,如果用户从键盘上按下某个键,应用程序会忽略它..
  • 这是一个 4 1/2 岁的答案....我多年前工作的扫描仪让您可以配置预/后附加文本到扫描仪文本,因此您可以查找这些并过滤出扫描仪或键盘点击。例如,键盘会发送 1234,扫描仪会发送 !!1234!!。
  • Wills 感谢您的回复,请问您现在可以帮我解决这个问题吗?我的意思是新的条形码扫描仪现在可以这样工作吗?你有没有适合 C# 的 windows 上好的条形码模拟器?
  • 抱歉,我多年来没有对条形码做过任何事情。我认为扫描仪没有太大变化,但我认为这真的取决于您正在使用的特定扫描仪。
【解决方案2】:

我的一位同事最近使用条形码扫描仪(摩托罗拉),我帮助他完成了那个项目。

不幸的是,每个条码扫描器都有不同的条码读取实现方式(尽管一般机制通常相似)。您必须为您的条码扫描设备下载 SDK。查看制造商的网站了解如何安装。

通常,您必须添加对他们的 DLL 的引用,然后在他们的 OnRead 事件(或他们所称的任何事件)上放置一个处理程序。通常有一个特殊对象作为事件参数,其中包含阅读器发送的数据。

我知道我在这里真的很含糊,但是如果不知道扫描仪的确切品牌和型号,我无话可说。您必须自己对此问题进行一些研究。

【讨论】:

  • 我有霍尼韦尔。但这不是我的问题。我试图理解,当文本框获取值并且记事本可以获取值时,为什么我不能轻易获得相同的值,为什么我应该使用 DLL。但是 +1 感谢您的努力
  • @MohitShrivastava 您可以简单地扫描以将其输入到记事本或文本框中,因为扫描仪以这些程序可以读取的方式发送代码。本质上,Windows 会拦截调用本身(或安装在 Windows 中的程序)并知道如何处理它。但是,默认情况下,您的 C# 程序不知道如何处理扫描仪信息。事实上,如果你没有明确告诉它绑定到扫描仪读取函数,你的 C# 程序就会忽略它,就像记事本默认忽略网络流量一样,因为它无关紧要。
  • 您可以扫描到记事本(或您的文本框),因为扫描仪只发送键盘击键。您已经通过扫描到一个文本框来证明这一点,而不仅仅是设置焦点。对于 Windows,看起来您只是在键盘上输入了它们,因此它们就这样被发送到您的应用程序。我在基于浏览器的应用程序中使用了条形码扫描仪,不需要外部库 - 只需处理击键事件的能力。您可以使用我上面提到的 KeyPreview 方法进行检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
相关资源
最近更新 更多