在.NET(C#)Windows应用程序中从条形码扫描器读取数据!

13

如何在.NET Windows应用程序中读取条形码扫描仪中的数据?

有人能给出要遵循的步骤顺序吗? 我很新手。


4
  1. 购买条形码扫描器。
  2. 阅读说明书。说真的,更具体的描述可能会有助于得到答案。
- Paul Nearney
6
有些过于苛刻了——并非所有的扫描仪都一样,因此了解它们如何工作会影响购买决策。 - Alnitak
4个回答

36

看一下扫描仪插孔。

如果它长这样:

那么它是一个键盘嵌入式扫描仪。它的作用就像一个键盘:只需将您的条形码键入编辑字段即可。

如果它长这样:

它是一个串口扫描仪。

您需要创建一个System.IO.Ports.SerialPort实例,并使用它与扫描仪通信。

如果它长这样:


(来源:datapro.net)

它是一个USB扫描仪。从程序员的角度来看,它可以是键盘嵌入式串口扫描仪。您需要查找手册,找出它是哪种类型,并使用上面的方法之一。

P.S. 如果您在这里发布您的扫描仪型号,那么问题会更容易解决。


这不一定是真的 - 我在工作中有一个 USB 键盘楔形扫描器... - Jon
哈哈,对于他提出的这两种情况,都是正确的。我正在尝试找到 Quassnoi 在这里哪里不正确。 - Ray Booysen
我听说过 USB KB 楔形扫描仪,但在这里最受欢迎的 Posiflex USB 扫描仪使用串行仿真。 - Quassnoi

5

我现在使用Wasp USB WCS3905条码扫描仪连接到我的多个winform(和1个控制台)应用程序,虽然没有注意到与其他品牌的USB扫描仪有什么区别。

当新的扫描仪出现时,我总是通过启动记事本并扫描各种东西(书籍、DVD、资产标签,但最重要的是需要跟踪的库存)来测试。这将允许您可视化数据的捕获方式。

根据我的经验,它们都像用户一样,逐个输入每个字符,然后按“Enter”键。

对于在文本框控件中扫描的每个字符(注意:不是完整的条形码),至少会触发以下事件:
KeyDown
KeyPress
TextChanged
KeyUp

扫描结束时的Enter按键可以用于推送表单的AcceptButton

值得注意的是,我只在英国英语和美国英语配置的Windows系统上使用过这些设备。

G-


+1 真的不确定为什么你没有得到更多的赞同... 你的回答对于使用条形码扫描器的新手来说是最有用的。 - Sheridan

4

大多数现代条形码扫描仪的操作方式与键盘相同。

我之前用C#编写过扫描门票的代码 - 没有特殊技巧,只需确保输入焦点在适当的文本框中,然后扫描代码即可!


1
除此之外:有时您需要在条形码扫描器中进行设置(请参阅手册以了解如何操作),以便正确读取代码。例如,如果我们没有将扫描仪的语言设置为德语(默认为英语),则读取后会出现一些特殊的(非英语)字符混乱。 - Christian Specht
Alnitak,你能提供代码片段吗? - Dhanapal
你甚至可以在Web应用程序中使用它。只需将焦点设置到文本框并扫描条形码。代码将被写入文本框,就像用户手动输入代码一样。 - Rune Grimstad
不需要代码,就像他们在键盘上输入条形码号码一样。 - Alnitak
请注意,条形码扫描仪在提交数据之前或之后可能会提交其他信息(如CR、LF、TAB、ENTER等)。如果您购买了一款不错的条形码扫描仪,这些信息可以通过从手册中扫描特殊的设置条形码来指定(例如Metrologic Voyager扫描仪)。 - Marc

0

如果您正在使用键盘楔子,通常设备或楔子软件允许您在键盘流中添加前缀和/或后缀字符。

可以使用表单的键预览来“侦听”前缀和后缀字符 - 当拦截到类似于条形码的内容时,条形码文本可以发送到正确的编辑框或用于弹出对话框。

如果您正在设置自己的编码系统,根据条形码类型,您还可以嵌入特殊字符以识别正在扫描的内容,例如以SB^开头的扫描表示库存箱的扫描。

当使用键盘楔子时,通常无法确定正在扫描哪种类型的条形码 - 有时格式可以方便地确定内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接