在仅软件触发模式下使用 Zebra DS457 条码扫描器进行扫描

Scanning with Zebra DS457 Bar Code Scanner while in Software trigger only trigger mode

我需要扫描仪在扫描条形码时调用一个事件,以便我可以通过编程方式使用条形码。

扫描器在演示模式下扫描良好,它调用了我创建的条码扫描事件。我通过

做到了这一点

1) 注册活动

string inXML = "<inArgs>" +
                  "<cmdArgs>" +
                     "<arg-int>6</arg-int>" + //Number of events you want to subscribe to
                     "<arg-int>1,2,4,8,16,32</arg-int>" + //Comma separated event IDs        
                  "</cmdArgs>" +
               "</inArgs>";

cCoreScannerClass.ExecCommand(REGISTER_FOR_EVENTS, ref inXML, out outXML, out status);

2) 然后,我订阅了活动

cCoreScannerClass.BarcodeEvent += new _ICoreScannerEvents_BarcodeEventEventHandler(bcEvent);

在演示模式以外的任何模式下,我都需要触发扫描仪:

string inXML = "<inArgs>" +
                 "<scannerID>" + scanner.ScannerID.ToString() + "</scannerID>" +
                "</inArgs>";
cCoreScannerClass.ExecCommand(trigger, ref inXML, out outXML, out status);

触发器按预期打开和关闭(我可以在视觉上看到)。扫描器在扫描条码时会发出蜂鸣声,但不会调用任何事件。由于我设置了continuous mode为false,当我扫描条码时触发器被释放(进一步验证它是在扫描条码而不是调用事件)。

其他有用信息:

在与 Zebra 支持人员交谈后,我后来发现 "Software trigger only" 触发模式在较新型号的 DS-457(DS457-XX20004ZZWW 以上)中不再受支持,因为它 "causes issues with the software configurations and security issues."

如果想通过 API 触发扫描器,建议程序员使用 "Host trigger mode." API 也可以将设备设置为 "Level" 触发模式,这将允许与主机触发模式相同的功能,但也将允许扫描仪的手动物理触发。