EMDK, Xamarin для Android: сканирование возможно только один раз

Я разрабатываю приложение для Android, используя Xamarin и EMDK для Zebra TC51.

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

Что может быть причиной этого? Что можно проверить для диагностики?

Выдержка из кода:

Отслеживание статуса:

scanner.Status += ( s, e ) =>
{
    try
    {
        StatusData statusData = e.P0;
        StatusData.ScannerStates state = e.P0.State;

        this.RunOnUiThread( () => StateMessage( "Scanner state : " + state.Name() ) );
    }
    catch ( System.Exception exc )
    {
        this.RunOnUiThread( () => StateMessage( "Scanner state exception : " + exc.Message ) );
    }
};

и для полученных данных:

scanner.Data += ( s, e ) =>
{
    try
    {
        var statusData = e.P0;
        var scanData = e.P0.GetScanData();

        foreach ( var sd in scanData )
        {
            this.RunOnUiThread( () => StateMessage( "Scanned : " + sd.Data ) );
        }
    }
    catch ( System.Exception exc )
    {
        this.RunOnUiThread( () => StateMessage( "Scanner data exception : " + exc.Message ) );
    }
};

Последовательность состояний, которую я могу проследить, следующая:

  • Перед запуском: ожидание, бездействие, ожидание
  • После срабатывания: сканирование, бездействие

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


person lemon    schedule 19.02.2018    source источник


Ответы (1)


вам нужно снова вызывать read() каждый раз, когда сканер переходит в состояние IDLE, чтобы включить непрерывное сканирование. Существует пример приложения Xamarin, за которым вы должны следить по адресу https://github.com/Zebra/samples-emdkforxamarin-2_5/blob/BarcodeSample1/BarcodeSample1/BarcodeSample1/MainActivity.cs

person Darryn Campbell    schedule 20.02.2018