1

我们使用 POS for .NET 成功运行了大约一年的应用程序。这个应用程序基本上是读取网络设备上的二维码来获取 MAC 地址。但是最近我们遇到了一个奇怪的问题:我们的应用程序没有收到一些特定的二维码。

我们确实使用 Step by Step Debugger 和 Breaking point 运行了我们的代码。大多数二维码都可以正常工作,但其他一些则根本不工作。
我的意思是Scanner.DataEvent 不会针对特定的 QRCode 触发。我们还检查了扫描仪制造商提供的 OPOS 工具(Datalogic 的 DualTest),所有数据都得到了好评。

QRCode
F09FC2F09402-q2zZ2n的 2 个示例在所有情况下都可以正常工作
18E8299096EC-qHERPC不适用于 .Net 的 POS,但可以与其他 OPOS 工具一起正常工作。

二维码样本

为了在下面提供更多上下文,下面是我们使用 .Net 1.4.1 的 POS 的源代码的简化版本:

public class CodeScanner 
{
    public event Action<String> DataReceived;
    private Microsoft.PointOfService.Scanner _scanner;

    public Boolean Connect() 
    {
       Microsoft.PointOfService.PosExplorer posExplorer = new Microsoft.PointOfService.PosExplorer(); //null reference if POS .net is not installed
       Microsoft.PointOfService.DeviceInfo device = null;
       foreach (Microsoft.PointOfService.DeviceInfo d in posExplorer.GetDevices(DeviceType.Scanner))
       {
           if (d.ServiceObjectName == "RS232Imager")
           {
                device = d;
           }
       }

       _scanner = (Microsoft.PointOfService.Scanner)posExplorer.CreateInstance(device);
       _scanner.Open();
       _scanner.Claim(1000);
       _scanner.DataEvent += Scanner_DataEvent;
       _scanner.DeviceEnabled = true;
       _scanner.DataEventEnabled = true;
       _scanner.DecodeData = true;

       return true;
    }

    private void Scanner_DataEvent(Object sender, DataEventArgs e)
    {
        String data = System.Text.Encoding.UTF8.GetString(_scanner.ScanData);
        Task.Run(() => DataReceived?.Invoke(data));
        _scanner.DataEventEnabled = true;
        _scanner.ClearInput();
    }
}
4

1 回答 1

0

Finally I ditched Pos for .Net by using the scanner as keyboard input and refactor my code accordingly.

于 2019-10-31T10:57:03.767 回答