2016-05-04 2 views
1

Я пытаюсь внедрить сканер штрих-кода в свое универсальное приложение для Windows. Я использую ZXing.Net.MobileZXing.Net.Mobile Ошибка сканера штрих-кода при вызове метода Scan()

var _scanner = new MobileBarcodeScanner(this.Dispatcher);      
var result = await _scanner.Scan(); 

Затем Visual Studio останавливается на этой линии

if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break(); 

Итак, как решить эту проблему?

+0

Какова ошибка, зафиксированная в случае args (e)? –

+0

Я не получаю исключения, VS просто выделяет указанную выше строку.Я считаю, что проблема в том, что у меня нет ZXing.Net.Mobile.WindowsUniversal в ссылках. но я не могу найти его в NuGet. – Hatim

+0

Я думаю, что исключение «Доступ лишен» – Hatim

ответ

1

Я не получаю исключения, VS просто выделяет указанную выше линию. Я считаю, что проблема в том, что у меня нет ZXing.Net.Mobile.WindowsUniversal в ссылках. но я не могу найти его в NuGet.

Вы можете нажать на «Сервис» против и выбрать ярлык «NuGet Package Manager», затем выберите «Управление NuGet Пакет для решения», в ярлыке «Поиск», поиск «ZXing.Net.Mobile », если вы работаете над Uwp-приложением, выберите« ZXing.Net.Mobile », если вы используете Xamarin для разработки, выберите« ZXing.Net.Mobile.Forms »в правой части окна, выберите свой проект и нажмите «Установить».

Вот картина я заканчиваю установлен этот пакет: enter image description here

Я проверил свой код в случае нажатия кнопки, Опубликованный код можно отлаживать после установки этого пакета.

Но если я отлаживаю его на локальном компьютере, произошла одна и та же ошибка, это возможно, потому что на моем компьютере не может быть инициализирован сканер, поэтому, когда я тестирую его на мобильном эмуляторе, эта ошибка не произойдет.

if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break(); 

Некоторые другие проблемы также могут вызывать его, если мой ответ не может решить вашу проблему, вы можете добавить комментарий.

Я думаю, что исключение «Отказано в доступе»

Это ваш самый новый комментарий о вашей проблеме, когда вы хотите использовать ZXing в вашем приложении, вам нужно будет открыть файл манифеста вашего проекта , выберите метку «Возможности», а слева включите возможности «Интернет (Клиент)», «Микрофон» и «Веб-камера». Просто протестированный, если вы не включили эти возможности, такая же ошибка также возникнет на мобильном эмуляторе. Это также является возможной причиной этой проблемы.

+0

Спасибо, проблема была в «Возможности», но сканер не смог обнаружить штрих-код. – Hatim

+0

На самом деле я обнаружил, что приложение верно считывает штрих-код только в ландшафтном режиме. почему это? – Hatim

+0

@Hatim, я не знаю, я не написал образец, чтобы проверить это, есть ли какой-либо API пакета ZXing о обработке вращения камеры? Я знаю, что в приложении UWP с использованием microsoft api вам нужно будет обрабатывать поворот камеры, вы можете обратиться к официальному [Пример основного приложения камеры] (https://github.com/Microsoft/Windows-universal-samples/tree/master/ Образцы/CameraStarterKit). Я не уверен, но я думаю, вам нужно будет сначала проверить функцию ZXing. –

1

Вы должны установить на главной странице 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); 
     }  
+0

#if WINDOWS_UWP var options = new ZXing.Mobile.MobileBarcodeScanningOptions(); options.TryHarder = true; var scanner = новый ZXing.Mobile.MobileBarcodeScanner(); сканер.TopText = «Hold for Scanning»; сканер.BottomText = "Tally Scan"; var result = ожидать сканера.Scan (опции); \t \t \t если (результат! = NULL) { \t \t \t \t updateListWithText (result.Text); \t \t \t #endif –

1

@hatim Вы должны инициализировать сканер, прежде чем использовать его.

добавьте эту строку в свой код перед тем, как начать играть со сканером. вам нужно только сделать это один раз. так что положите его в свой основной вид деятельности

 ` MobileBarcodeScanner.Initialize(Application);` 
Смежные вопросы