C# 条形码扫描器

3
我目前正在编写一个程序,在这个程序中,我希望使用条形码扫描仪将条形码扫描到系统中,然后使用这些信息做出一些决策。
当我使用条形码扫描仪时,如何让 C# 做出反应?我需要某些 DLL 或 API 来使用条形码读取器吗?我可以创建条形码,但需要一种方法让 C# 外部读取并导入它们到程序。

2
当你扫描条形码时,条形码扫描器会自动将数据传递到你的程序中。因此,如果有一个文本框,当你扫描条形码时,条形码数据将被解析并显示在该文本框中。 - Mohammad
我在程序中是否需要进行特殊的引用,还是可以直接将条形码扫描器插入我的笔记本电脑?抱歉问题比较多,只是想确保我拥有所需的一切。 - Richard Teunen
你甚至不需要任何参考或API,如果扫描仪已连接到笔记本电脑或其他设备上,它将自动工作。 - Mohammad
扫描仪应该像键盘一样操作(输入扫描码)。请参阅https://dev59.com/THRB5IYBdhLWcg3weHHx。 - hatchet - done with SOverflow
通常情况下,条形码代表某些东西,比如 UPC/GTIN/EAN 等数据,这些最终都是字母数字数据。在这种情况下,把扫描器看作“某个输入设备”(就像键盘一样)。因此,如果是文本框、文本文件等等,它会将数据“输入”其中。 - EdSF
8个回答

7

Richard,

需要了解的是,通常条形码扫描器支持多种接口,分为两类。许多扫描器都有一个选项,使得条形码扫描器看起来像一个键盘,每当您扫描数据时,文本就会被输入到您的应用程序中的插入点。扫描仪制造商可能将其称为“键盘”、“键盘楔形设备”、“HID键盘”或简单地称为HID模式,但此列表中的最后一项在技术上不准确,因为除键盘外还有其他HID接口。

第二类通常称为应用程序模式。有几种不同的接口支持应用程序模式,例如IBM扫描仪、HID POS扫描仪等。每个接口都遵循特定的硬件规格。您必须确保您的扫描仪处于与您用于与扫描仪交互的SDK相匹配的模式。

如果您正在使用.NET Framework,则可以找到POS for .NET非常有用,它以一种将条形码扫描仪从软件中抽象出来的方式,使您能够在不更改应用程序的情况下使用来自多个制造商的扫描仪。在这种情况下,您需要从扫描仪制造商获取一个OPOS服务对象,以便在POS for .NET中使用。有关更多信息,请参见POS for .NET 1.14.1下载页面:https://www.microsoft.com/en-us/download/details.aspx?id=55758

Terry Warwick Microsoft


POS系统是否能与使用“库存”模式的扫描仪配合使用?通常,一些扫描仪具有存储多次读取的内存,然后一次性转储所有读数。 - S. W. G.
我熟悉“库存”功能。POS for .NET和Windows.Devices.PointOfService都是基于UnifiedPOS标准建模的,不幸的是,我认为该机制未被该标准定义。 - Terry Warwick

1

这也取决于您的应用程序采用哪种形式。如果您有上传图片或访问相机的选项,您可以将图像拉入代码中,然后使用众多SDK之一从图像中读取条形码。

我刚刚使用了一个Web应用程序来实现这个功能,我使用了ZXing SDK,这是一个免费的 .Net 端口,可通过NuGet获得。

https://github.com/micjahn/ZXing.Net


1
只要正确连接到您的设备,它就会自动将数据传递到程序中的Focused项目框。因此,如果运行具有文本框的程序.exe,并扫描条形码,则该条形码将被解析到该文本框中(必须聚焦)。

@RichardTeunen 如果我的回答正确地回答了您的问题,如果您将其设置为正确,那将是非常好的 :) - Mohammad
不适用于设置为模拟键盘而是使用COM端口的扫描仪。 - Jan Macháček

1

1
大多数条形码扫描仪都是“HID”设备,这意味着它们像您手动使用键盘一样编写条形码的数据(小数字),它们也被大多数操作系统识别为键盘。因此,最简单的方法就是使用文本框。在扫描之前自动将焦点放在文本框上,并且如果想要自动执行某些操作,请确保有事件监听回车键按下。(大多数HID扫描仪在扫描完成后会自动按下回车键。)

1

0

使用物理条形码扫描仪是一种选择,但您只能一次扫描一个条形码。

另一种选择是将多个文档(无论是图像还是PDF)传递给您的应用程序以进行批量处理。

IronBarcode是一个C#条形码扫描仪,可以让您以这种方式快速准确地读取条形码。

// The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs.
// All threads are automatically managed by IronBarCode.

var ListOfDocuments = new[] { "Image1.PNG", "image2.JPG", "image3.PDF" };
PagedBarcodeResult[] BatchResults = 
BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments);

免责声明:我在 Iron Software 工作。


0

条码扫描器和二维码扫描器在检测到条码时会发送按键信号。 你只需要将焦点放在文本框中,并使用一些事件,如文本更改或按键/按下事件,因为大多数扫描仪都有一个选项,让你在每组返回的按键末尾添加/删除换行符。


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