0

我的扫描仪集成收到一个奇怪的错误。我在我的程序中使用了 OPOS 扫描仪。当程序关闭时,我禁用、释放和关闭设备,但在我的程序运行后没有其他应用程序可以使用它。此外,如果我重新启动,任何应用程序都无法使用它。甚至我的应用程序都不会导致问题。我确实发现,如果我不认领该设备,问题就不会发生。我目前正在尝试获取 DLL 的新副本,以防发布方法以某种方式损坏?还有其他想法吗?

    public bool InitBarcode(bool overrideLGBarcode)
    {
        Util.LogMessage("Initializing barcode scanner!");
        if (_barcodeScanner == null)
        {
            Util.LogMessage("Barcode scanner was null. instantiating a new one");
            _barcodeScanner = new OPOSScanner();
            _barcodeScanner.AutoDisable = true;
            _barcodeScanner.DataEvent += BarcodeDataEventHandler;
            Util.LogMessage("Added event handler");
        }
        else
        {
            Util.LogMessage("Barcode scanner was not null");
        }

        if (_barcodeScanner.Open("STI_USBSCANNER") != 0)
        {
            Util.LogMessage("Barcode scanner \"STI_USBSCANNER\" could not be opened!");
            return false;
        }
        else
        {
            Util.LogMessage("STI_USBSCANNER was opened");
        }

        int result = _barcodeScanner.ClaimDevice(-1);
        Util.LogMessage("Claiming barcode scanner returned result: " + result);


        _barcodeScanner.DecodeData = true;
        _barcodeScanner.DeviceEnabled = true;
        _barcodeScanner.DataEventEnabled = true;

        return true;
    }

    public void CloseBarcode()
    {
        Util.LogMessage("Disabling, Releasing and Closing the barcode scanner!");
        _barcodeScanner.DataEvent -= BarcodeDataEventHandler;
        Util.LogMessage("Removed event handler");
        _barcodeScanner.AutoDisable = false;
        _barcodeScanner.DecodeData = false;
        _barcodeScanner.DataEventEnabled = false;
        _barcodeScanner.DeviceEnabled = false;

         if (_barcodeScanner.DeviceEnabled != false)
         {
             Util.LogMessage("Barcode scanner could not be disabled!");
         }
         else
         {
             Util.LogMessage("Barcode scanner was disabled!");
         }

        int result = _barcodeScanner.ReleaseDevice();
        Util.LogMessage("ReleseDevice() yielded result of: " + result);
        if (result != 0)
        {
            Util.LogMessage("Barcode scanner could not be released!");
        }
        else
        {
            Util.LogMessage("Barcode scanner was released!");
        }


        if (_barcodeScanner.Close() != 0)
        {
            Util.LogMessage("Barcode scanner could not be closed!");
        }
        else
        {
            Util.LogMessage("Barcode scanner was closed!");
        }
         _barcodeScanner = null;
    }
4

0 回答 0