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

Разработвам в 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, в реда „Common Language Runtime Exceptions“ премахнете отметката от квадратчето под „Thrown“. За съжаление, ако се опитвате да дебъгвате изключение, което не работи правилно, просто трябва да продължите да натискате възпроизвеждане всеки път, когато се появи това изключение.

Все пак не намерих начин да го накарам да спре да хвърля изключението... Наистина бих искал да мога да изключа каквато и да е функция, която се проваля.

person Desco    schedule 02.02.2016
comment
Това изглежда е същото нещо, което виждам; да, мога просто да премахна отметката от квадратчето и изключението вече не се хвърля, но не ми харесва фактът, че се случва, така че в идеалния случай бих искал да го предотвратя. - person plingingo; 05.02.2016