Я пишу приложение Cordova, которое использует сканер штрих-кода Quagga.
Все работает нормально, штрих-коды распознаются правильно, горелка вкл / выкл и т. Д.
При обнаружении штрих-кода я ищу его в myDb.
Если штрих-код найден, открывается всплывающее окно для выбора некоторых опций и добавления соответствующего продукта в корзину (все в порядке).
после этого начинается новое сканирование и т. д.
Проблема в том, что штрих-код не найден!
Я пытаюсь повторно инициализировать процедуру, но следующий штрих-код сканируется дважды, три, четыре раза непрерывно, как будто есть много инстант одной и той же процедуры, App.lastResult обойден, и многие копии одного и того же изображения отображаются в result_strip div
Есть ли способ уничтожить quagga.app и переинициализировать?
function scan(e){ //***CREATE the page for the scanner
startScanner.idN=null;
var idN=e.data.param1;
//alert('scan idN'+idN);
$("#main").empty();
$("#main").append('');
//alert(idN);
if(idN!=='' ){
$("#main").append('<h1>COMBINE BARCODE</H1>');
}
else{
$("#main").append('<h1>SEARCH BARCODE</h1>');
}
$("#main").append('<section id="container" class="container"><div class="controls"><div class="ui-grid-solo" align="center"><a class="ui-link ui-btn-b ui-btn ui-icon-refresh ui-btn-icon-left ui-shadow ui-corner-all ui-btn-active stop" href="#" data-role="button" data-icon="icon-refresh" role="button" data-inline="true" id="riavvia">RIAVVIA</a></div><div class="ui-grid-solo" align="center"><fieldset class="reader-config-group"><input data-role="flipswitch" name="settings_torch" id="flip-checkbox-4" type="checkbox" ><label style=""><span>Luce</span></label></fieldset></div></div>');
$("#main").append('<div class="ui-grid-solo" align="center"><div id="result_strip"><ul class="thumbnails"></ul><ul class="collector"></ul></div><div id="interactive" class="viewport"></div></div></section>');
$("#main").appendTo( ".ui-page" ).trigger( "create" );
startScanner(idN);
}
function startScanner(idN){
var App = {
init : function() {
Quagga.init(this.state, function(err) {
if (err) {
console.log(err);
return;
}
App.attachListeners();
// App.checkCapabilities();
Quagga.start();
});
},
........
App.init();
....
Quagga.onDetected(function(result) {
var code = result.codeResult.code;
if (App.lastResult !== code) {
App.lastResult = code;
var $node = null, canvas = Quagga.canvas.dom.image;
$node = $('<li><div class="thumbnail"><div class="imgWrapper"><img /></div><div class="caption"><h4 class="code"></h4></div></div></li>');
$node.find("img").attr("src", canvas.toDataURL());
$node.find("h4.code").html(code);
console.log('IDN>>>>>'+idN+' BARCODE:>>'+code)
$("#result_strip ul.thumbnails").prepend($node);
navigator.notification.beep(1);
if(idN!==''){
//*****
//SEARCH BARCODE TO COMBINE WITH A PRODUCT
search_barcode(idN, code);
}
else {
//*******
//SEARCH FOR BARCODE TO ADD TO SHOPPING CART
myDB.transaction(function(transaction) {
var sql="select id as idN from wm_prodotti where barcode='"+code+"'";
console.log('barcode sql>'+sql);
transaction.executeSql(sql, [], function (tx, XX) {
var len = XX.rows.length
if(len>0){
var idN=XX.rows.item(0).idN;
console.log('trovato barcode'+idN);
var evt = {
data : {
param1 : idN,
param2 :'scan'
}
}
aggiungi_pre(evt);//**POPUP TO ADD TO CART
}
else
{
alert('BARCODE NOT FOUND');
var evt = {
data : {
param1 : ''
}
}
scan(evt); //***TRY TO START OVER BUT PROBLEMS WITH NEXT SCANSIONS
}
}, errorHandler);
});
}
}
});
}