Проблема со сканированием устройства Motorolla

Я разрабатываю на C # для устройства Motorola «MC67», и у меня возникли проблемы с инициализацией сканера.

Код, который я использую, кажется общим, поскольку я нашел похожие примеры по всему Интернету; для справки вот код, который вызывает у меня проблемы:

    /// <summary>
    /// Initialize the reader.
    /// </summary>
    /// 
    public override bool InitReader()
    {
        Logger.Instance.Debug("InitReader");

        bool result = false;

        //      Logger.Instance.AddToDebuggerLog("Symbol.InitReader");

        // If reader is already present then fail initialize
        if (this._MyReader != null)
        {
            return false;
        }
        try
        {
            // Create new reader, first available reader will be used.
            this._MyReader = new Symbol.Barcode.Reader();

            // Create reader data
            this._MyReaderData = new Symbol.Barcode.ReaderData(
              Symbol.Barcode.ReaderDataTypes.Text,
              Symbol.Barcode.ReaderDataLengths.MaximumLabel);

            // Enable reader, with wait cursor
            this._MyReader.Actions.Enable();

            if ((GetDeviceType() != DeviceTypes.SymbolMC3070) && (GetDeviceType() != DeviceTypes.SymbolMC3090BT))
            {
                this._MyReader.Parameters.Feedback.Success.BeepTime = 0;
            }
            else
            {
                this._MyReader.Parameters.Feedback.Success.BeepTime = 50;
            }

            SetScannerDecoderTypeToUseWithScanSys();

            result = true;
        }
        catch (Exception ex)
        {
            // Something has gone wrong Initializing barcode reader etc

            // Log Exception
            Logger.Instance.Exception("InitReader", ex);

            // Ensure reader is Disposed
            if (_MyReader != null)
            {
                try
                {
                    _MyReader.Dispose();
                }
                catch
                {
                    // Just incase something goes wrong
                    Logger.Instance.Error("Error Disposing MyReader in InitReader Exception");
                }
                _MyReader = null;
            }

            // Ensure ReaderData is Disposed
            if (_MyReaderData != null)
            {
                try
                {
                    _MyReaderData.Dispose();
                }
                catch
                {
                    // Just incase something goes wrong
                    Logger.Instance.Error("Error Disposing MyReaderData in InitReader Exception");
                }
                _MyReaderData = null;
            }

            // null the EventHandler
            _MyEventHandler = null;
        }
        return result;
    }

Моя проблема в том, что при вызове вышеуказанного метода следующая строка вызывает ошибку исключения:

this._MyReader.Actions.Enable();

Исключением является «OperationFailureException», и в сообщении об ошибке упоминается «Не удалось получить все поддерживаемые атрибуты: E_SCN_INVALIDIOCTRL»

Странно то, что я действительно могу правильно использовать сканер на устройстве, поэтому я могу сканировать штрих-коды и читать данные даже с этим исключением, но сам факт того, что это происходит, беспокоит меня, поэтому я пытаюсь предотвратить это.

Кто-нибудь знает, почему я получаю исключение или какие-либо предложения о том, что я могу попробовать?


person plingingo    schedule 22.01.2016    source источник


Ответы (1)


Это «обработанное» исключение в библиотеке символов. Просто отключите точку останова для сгенерированного исключения - Ctrl-Alt-E, в строке «Исключения среды CLR» снимите флажок под «Выброшено». К сожалению, если вы пытаетесь отладить исключение, которое не работает должным образом, вам просто нужно продолжать нажимать кнопку воспроизведения каждый раз, когда возникает это исключение.

Я не нашел способа заставить его перестать генерировать исключение ... Я действительно хотел бы иметь возможность отключить любую функцию, которая дает сбой.

person Desco    schedule 02.02.2016
comment
Кажется, это то же самое, что я вижу; да, я мог бы просто снять галочку, и исключение больше не генерируется, но мне не нравится тот факт, что это происходит, поэтому в идеале я хотел бы предотвратить его. - person plingingo; 05.02.2016