条形码扫描不允许用户移动条形码扫描两次



我使用的是zxing扫描仪,它工作得很好,但由于某种原因,它扫描了两次相同的条形码。我已经设置了线程延迟,试图保持查看端口打开,但允许操作员有时间将设备从条形码上移开,但运气不好,他们报告它扫描了两次物品,但我们不想关闭查看端口。

但要补充的是,我不想关闭ZXingScannerView,只需暂停它,给用户足够的时间来获得下一个准备好条形码的

下面的代码是在按钮下点击一个按钮,他们没有点击按钮两次,它的扫描甚至发生了两次。

ZXingDefaultOverlay overlay;        
ZXingScannerView zxing;  
zxing = new ZXingScannerView
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
AutomationId = "zxingScannerView",
};

zxing.OnScanResult += (result) =>
Device.BeginInvokeOnMainThread(async () =>
{               
BarCode = result.Text;
await PlayBeep();
await Task.Delay(2000); //This is the delay I was given so that it would not scan right away again but leave the view open
overlay = new ZXingDefaultOverlay
{
TopText = "Hold your phone up to the barcode",
BottomText = "Scanning will happen automatically",
ShowFlashButton = zxing.HasTorch,
AutomationId = "zxingDefaultOverlay",
};
var grid = new Grid
{
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
};
grid.Children.Add(zxing);
grid.Children.Add(overlay);
// The root page of your application
Content = grid;
}

对于其他人,您可以使用zxing选项函数DelayBetweenContinuousScans

zxing = new ZXingScannerView
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
AutomationId = "zxingScannerView",
};
zxing.Options = new MobileBarcodeScanningOptions()
{
DelayBetweenContinuousScans = 2000
};

我这样做了,把scanPage.IsScanning=false;以防止两次读取器

ZXingScannerPage scanPage;
SendData sd;
private async void Btnpe001_Clicked(object sender, System.EventArgs e)
{
scanPage = new ZXingScannerPage();
sd = new SendData();
await Navigation.PushAsync(scanPage);
scanPage.OnScanResult += (result) =>
{
scanPage.IsScanning = false;
Device.BeginInvokeOnMainThread(async () =>
{
sd.Action = "personentry";
sd.DataToSend = result.Text;
await sd.SendAsync();
await Navigation.PopAsync();
await DisplayAlert("Autenticado", result.Text, "OK");
});
};
}

最新更新