繁体   English   中英

C#条码扫描器

[英]C# Barcode scanner

嗨,目前正在编写一个程序,我希望使用条形码扫描仪将条形码扫描到系统中,然后使用该信息做出某些决定。 我的第一个问题是当我使用条形码扫描仪时如何让 C# 做出反应,其次我需要哪些 DLL 或 API 才能使用条形码阅读器。 这是我第一次尝试这个所以任何帮助将不胜感激

我可以创建条形码,但知道需要一种方法让 c# 从外部读取它们并将它们导入到程序中

理查德,

重要的是要知道条码扫描器通常支持分为两类的多个接口。 许多都有一个选项,使条形码扫描仪显示为键盘,每当您扫描数据时,文本就会在插入点输入到您的应用程序中。 扫描仪的制造商可能将其称为键盘、键盘楔、HID 键盘或简称为 HID 模式,但是此列表中的最后一个在技术上并不准确,因为除了键盘之外还有其他 HID 接口。

第二类通常称为应用程序模式。 支持应用模式的接口有多种,如IBM Scanner、HID POS Scanner等,每一个接口都代表遵循特定的硬件规范。 您必须确保您的扫描仪所处的模式与您用来与扫描仪交互的 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

特里·沃里克 微软

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

使用 SerialPort 类。 它可以侦听您的端口,然后当您使用扫描时,程序将读取它。

 while (spPort.BytesToRead > 0)
 {
     carac = (char)spPort.ReadByte();

     if (carac != 08)
         m_mystring += carac;
 }

这是一个如何阅读它的示例。 这是该课程的链接: https : //msdn.microsoft.com/en-us/library/system.io.ports.serialport(v=vs.110).aspx

它还取决于您的应用程序采用什么形式。 如果您可以选择上传图片或访问相机,您可以将图像拉入您的代码,然后使用许多 SDK 之一从图像中读取条形码。

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

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

如果您刚刚开始,SDK 中的示例是开始的最佳位置。

用于处理条形码的 UWP 应用程序在通用示例中得到了最好的解释--> https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/BarcodeScanner

Win32 C# .net 示例可以在前面提到的 Pos For .Net 1.14 SDK 中找到。

大多数条码扫描器是“HID”设备,这意味着它们像您使用键盘手动编写的那样写入条码数据(小数字),它们也被大多数操作系统识别为键盘。 所以最简单的方法就是有一个文本框。 确保在扫描之前焦点自动在文本框上,如果您希望它自动执行某些操作,请确保有一个事件侦听输入 keydown。 (大多数 HID 扫描仪在扫描完成后立即按 Enter。)

条码扫描器在检测到条码时会发送密钥,与 QR 扫描器相同。 您所需要的只是将焦点放在文本框中并使用一些事件,如文本更改或按键/按键按下,因为大多数扫描仪都有一个选项供您在它返回的每组键的末尾添加/删除换行符。

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

另一种选择是将多个文档(作为图像或 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 工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM