QR 码扫描器与 C# WPF 的集成

QR Code Scanner Integration with C# WPF

我正在编写一个 WPF 应用程序 (MVVM),它需要使用二维码扫描仪(型号:Symbol DS4308 - USB 连接桌面)从二维码图像中读取数据。我在谷歌上搜索了相同的内容,发现我们可以使用文本框读取 QR 数据并且它有效。但是我的应用程序没有文本框来捕获二维码数据,但我需要让扫描仪在扫描完成后提供事件。

我用记事本试过,扫描仪在扫描二维码时将扫描值写入其中。

是否有任何通用的开源库来获取扫描器事件?

我没有专门使用过 4308,但我在工作中编写了 Symbol 扫描仪,所以我很熟悉它们。

首先,忘记键盘模式。直接扫描到文档等很方便,但听起来您想直接阅读扫描仪。如果是,请转至 DS4308 data sheet 并扫描第 6-6 节中的条形码以获得 "Simple COM Port Emulation"。这将使扫描仪现在显示为串行设备,然后您可以使用 C# SerialPort class:

读取它
this.Scanner = new SerialPort(this.SymbolPort);
this.Scanner.BaudRate = 9600;
this.Scanner.DataReceived += Scanner_DataReceived;
this.Scanner.Open();
.
.
.
private void Scanner_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    var len = this.Scanner.BytesToRead;
    var bytes = new byte[len];
    this.Scanner.Read(bytes, 0, len);
    var str = Encoding.ASCII.GetString(bytes);
    // do something with str here
}

如果您想让您的应用真正对用户友好,那么您还可以使用设备 PID 和 VID 以编程方式确定要使用哪个 COM 端口。要获得 PID/VID 只需转到设备管理器并检查设备的属性。要找到 COM 端口,请使用 this SO post 上的代码,尽管这将搜索系统上安装的所有设备,无论它们是否实际插入,因此您需要对照 [=21 进行交叉检查=]().