Приложение .NET 9.0 MAUI+ Camera.MAUI.ZXing ver. 1.0.0. Считыватель штрих-кода работает очень медленно и считывает разныC#

Место общения программистов C#
Ответить
Anonymous
 Приложение .NET 9.0 MAUI+ Camera.MAUI.ZXing ver. 1.0.0. Считыватель штрих-кода работает очень медленно и считывает разны

Сообщение Anonymous »

Мне нужно создать приложение Android с MAUI на .NET 9.0 и использовать старый планшет с 32-разрядным процессором.
Информация о планшете: 2018, версия Android 10, API 29, Java VM ART 2.1.0, архитектура ядра Armv8l, Armeabi-7a/armeabi.
Я установил Camera.MAUI.ZXing для чтения штрих-кода.
В приложении я отображаю прочитанный штрих-код, если считыватель штрих-кода считывает одно и то же значение хотя бы дважды, даже если они не последовательные.
Проблема в том, что часто ничего не отображается, или если штрих-код отображается, это занимает много времени, но я не могу ждать так долго, поэтому мне нужно прочитать штрих-код быстрее.
В код, я настроил как чтение штрих-кода, так и чтение QR-кода.
Когда я читаю QR-код, он работает быстро и всегда дает один и тот же результат.
Почему QR-код считывается правильно, но возникают трудности с чтением штрих-кода?
Возможно ли, что это проблема с фокусом или областью, в которой установлен код?
На телефоне Android нового поколения считывание происходит быстро и стабильно.

Я бы хотел использовать эти планшеты, даже если они довольно старые.
Информацию о камере я прикрепил.
Это код:
using System.Diagnostics;
using ZXing;

namespace GestMagazzino;

public partial class CameraView : ContentPage
{
bool isHandlingResult = false;

string _lastValue;
int _sameCount;

Dictionary _readCounts = new();
DateTime _windowStart = DateTime.MinValue;

const int REQUIRED_MATCHES = 2;
const int WINDOW_MS = 1500;
bool _accepted;

public CameraView()
{
InitializeComponent();

barcodeReader.Options = new ZXing.Net.Maui.BarcodeReaderOptions
{
Formats = ZXing.Net.Maui.BarcodeFormat.Code128 | ZXing.Net.Maui.BarcodeFormat.QrCode | ZXing.Net.Maui.BarcodeFormat.Ean13 | ZXing.Net.Maui.BarcodeFormat.Ean8 |
ZXing.Net.Maui.BarcodeFormat.Code39,
AutoRotate = true,
Multiple = false
};

if (Global.typeCode == enTypeCode.barcode)
{
gridInquadratura.WidthRequest = 300;
gridInquadratura.HeightRequest = 150;
borderInquadratura.WidthRequest = 300;
borderInquadratura.HeightRequest = 150;
}
}

protected override void OnAppearing()
{
base.OnAppearing();
barcodeReader.IsDetecting = true;

_accepted = false;
_sameCount = 0;
_lastValue = null;
}

protected override void OnDisappearing()
{
base.OnDisappearing();
barcodeReader.IsDetecting = false;
}

private async void barcodeReader_BarcodesDetected(object sender, ZXing.Net.Maui.BarcodeDetectionEventArgs e)
{
try
{
if (_accepted)
return;

var now = DateTime.Now;

if (_windowStart == DateTime.MinValue ||
(now - _windowStart).TotalMilliseconds > WINDOW_MS)
{
_windowStart = now;
_readCounts.Clear();
}

var result = e.Results
.Where(r => !string.IsNullOrWhiteSpace(r.Value))
.OrderByDescending(r => r.Value.Length)
.FirstOrDefault();

if (result == null)
return;

var value = result.Value;

if (!_readCounts.ContainsKey(value))
_readCounts[value] = 0;

_readCounts[value]++;

Debug.WriteLine($"Letto: {value} ({_readCounts[value]})");

if (_readCounts[value] < REQUIRED_MATCHES)
return;

_accepted = true;

MainThread.BeginInvokeOnMainThread(async () =>
{
try
{
barcodeReader.IsDetecting = false;

resultLabel.Text = $"Codice: {value}";
Global.resultBarcode = value;

await Task.Delay(300);
await Navigation.PopAsync();
}
catch (Exception ex)
{
await DisplayAlert("UI ERROR", ex.Message, "OK");
}
});
}
catch (Exception ex)
{
await App.Current.MainPage.DisplayAlert("ERROR CAMERA VIEW", ex.Message, "OK");
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... y-slow-and
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»