C# ZXing.Net.Mobile条形码扫描仪调用Scan()方法时出错

C# ZXing.Net.Mobile条形码扫描仪调用Scan()方法时出错,c#,win-universal-app,zxing,C#,Win Universal App,Zxing,我正在尝试将条形码扫描仪安装到我的windows universal应用程序中。 我正在使用ZXing.Net.Mobile var _scanner = new MobileBarcodeScanner(this.Dispatcher); var result = await _scanner.Scan(); 然后,VisualStudio在这一行停止 if (global::System.Diagnostics.Debugger.IsAttached

我正在尝试将条形码扫描仪安装到我的windows universal应用程序中。 我正在使用ZXing.Net.Mobile

var _scanner = new MobileBarcodeScanner(this.Dispatcher);                    
var result = await _scanner.Scan();
然后,VisualStudio在这一行停止

if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
那么,如何解决这个问题呢


我没有得到一个例外,VS只是突出了上面提到的线。我认为问题在于我的参考资料中没有ZXing.Net.Mobile.WindowsUniversal。但我在努吉找不到

您可以点击vs的“工具”,选择标签“NuGet Package Manager”,然后选择“管理NuGet Package for Solution”,在“浏览”标签中搜索“ZXing.Net.Mobile”,如果您正在使用Uwp应用程序,请选择“ZXing.Net.Mobile”,如果您正在使用Xamarin进行开发,请选择窗口右侧的“ZXing.Net.Mobile.Forms”,选择您的项目并单击“安装”

以下是我完整安装此软件包的图片:

我已经在一个按钮点击事件中测试了你的代码,你发布的代码可以在安装这个包后进行调试

但是如果我在本地机器上调试它,同样的错误也会发生,这是可能的,因为我的计算机上没有可以初始化的扫描仪,所以当我在mobile emulator上测试它时,这个错误不会发生

if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
其他一些问题也可能导致它,如果我的回答不能解决您的问题,您可以添加评论

我认为例外情况是“访问被拒绝”


这是您对问题的最新评论,当您想在应用程序中使用ZXing时,您需要打开项目清单文件,选择“功能”标签,并在左侧启用“Internet(客户端)”、“麦克风”和“网络摄像头”功能。刚刚测试过,如果您没有启用此功能,同样的错误也会发生在mobile emulator上。这也是导致此问题的一个可能原因。

您必须在UWP的主页中进行设置

        this.InitializeComponent();
        this.NavigationCacheMode = NavigationCacheMode.Enabled;            ZXing.Net.Mobile.Forms.WindowsUniversal.ZXingScannerViewRenderer.Init();
然后在Xamarin表单或本机应用程序页面中单击按钮

        var options = new ZXing.Mobile.MobileBarcodeScanningOptions();           
        options.TryHarder=true;                        
        var scanner = new ZXing.Mobile.MobileBarcodeScanner();             
        scanner.TopText="Hold For Scanning";
        scanner.BottomText="Tally Scan";
        var result = await scanner.Scan(options);                             
        if (result != null) {
            updateListWithText (result.Text);
       }    
@哈蒂姆 您需要在使用扫描仪之前对其进行初始化

在开始使用扫描仪之前,将这一行添加到代码中。你只需要做一次。所以把它放在你的主要活动中

     `   MobileBarcodeScanner.Initialize(Application);`

在事件args(e)中捕获的错误是什么?我没有得到异常,VS只是突出显示上面提到的行。我认为问题在于我的参考资料中没有ZXing.Net.Mobile.WindowsUniversal。但我在NuGet中找不到。我想例外是“访问被拒绝”谢谢,问题是“功能”,但扫描仪无法检测条形码。事实上,我发现应用程序仅在横向模式下才能正确读取条形码。为什么会这样?@Hatim,我不知道,我并没有编写样本来测试这个,ZXing软件包中有关于处理相机旋转的API吗?我知道在使用微软api的UWP应用程序中,你需要处理相机旋转,你可以向官方咨询。我不确定,但我认为您需要首先检查ZXing的函数。这实际上是.NETzxingLLIBRABRY中的一个bug。将MobileScanningOptions设置为TryHarder,这将暂时起作用。@MarcelTheis,感谢您的分享。#如果WINDOWS_UWP var options=new ZXing.Mobile.MobileBarcodeScanningOptions();options.TryHarder=true;var scanner=new ZXing.Mobile.MobileBarcodeScanner();scanner.TopText=“保持扫描”;scanner.BottomText=“理货扫描”;var结果=等待扫描程序扫描(选项);if(result!=null){updateListWithText(result.Text);}#endif