[RISOLTO] Stesso QR Code, Win/Lin risultati diversi

di il
10 risposte

[RISOLTO] Stesso QR Code, Win/Lin risultati diversi

Spero di essere nella sezione corretta.

Buonasera a tutti, ho un problema con la lettura dei QR Code. Utilizzo una pistola scanner 2D che collegata ad un computer Windows funziona senza problemi, collegata ad un Raspberry con Raspbian e Chromium invece non va, mi spiego meglio:

Ho un campo input su cui tengo il focus per essere pronto a ricevere le informazioni ogni qualvolta si spara un barcode o un QR code, con la seguente riga:
$( '#codicebarcode' ).on( 'change', function( )
Questa è il tipo di stringa che ricevo direttamente dalla scansione su Windows:
Codiceç 127635'OE  Dataç 10-03-2021  Quantit: 10
su Raspberry invece
Codiceç 127635'OE  Dataç 10-03- 
10
Pare che interrompa l'input prima, invii il comando di fine riga e poi finisca scrivendo 10.
Non riesco a fermare l'input da pistola o almeno a fermare le conseguenze, la stranezza per me più grande è che inserendo qualsiasi valore manualmente il risultato non incide mai sulla pagina nel browser ma, avendo previsto diversi scenari, risponde in un determinato modo, quando la scansione avviene su Raspberry invece il browser cambia pagina, quando dovrebbe semplicemente interpretare il contenuto del campo input. Spero di essere stato chiaro.

Qualcuno ha qualche idea sul perché succeda e/o come aggirare il problema?

10 Risposte

  • Re: [RISOLTO] Stesso QR Code, Win/Lin risultati diversi

    mikelefree ha scritto:


    Ho un campo input su cui tengo il focus per essere pronto a ricevere le informazioni ogni qualvolta si spara un barcode o un QR code, con la seguente riga:
    $( '#codicebarcode' ).on( 'change', function( )
    A che ti serve la gestione dell'evento change?

    Siamo sicuri che non interferisca con l'acquisizione dei caratteri, e magari la differenza di velocità tra i due sistemi produce un diverso risultato?
  • Re: [RISOLTO] Stesso QR Code, Win/Lin risultati diversi

    Grazie per la risposta.

    Il campo input in questione non è legato ad alcun form. Viene utilizzato solo come campo di attesa della scansione tramite barcode scanner. Per questo 'change', perché una volta ricevuto l'input gestisco tutto con jQuery. La cosa che non mi torna è come possa influire sulla navigazione.
    Ho commentato tutta la funzione, ma quando scansiono un qrcode qualcosa interagisce comunque con il browser. Con il dubbio che mi è venuto in merito, ho creato una pagina vuota con un campo input senza form e che non dovrebbe fare nulla e così è.
    Così ho escluso la remota possibilità che un qualche tipo di carattere speciale possa creare il problema.

    Ho notato che SOLO su Raspberry ho questo tipo di errore su main.js
    Uncaught SyntaxError: Unexpected token '='
    Potrebbe nascere da qui il problema?
  • Re: [RISOLTO] Stesso QR Code, Win/Lin risultati diversi

    mikelefree ha scritto:


    Il campo input in questione non è legato ad alcun form. Viene utilizzato solo come campo di attesa della scansione tramite barcode scanner.
    Cosa vuol dire "campo di attesa"? Se è presente una casella di input, significa che in qualche modo riceverà il valore del barcode, quindi di fatto diventa il campo di destinazione.

    mikelefree ha scritto:


    Per questo 'change', perché una volta ricevuto l'input gestisco tutto con jQuery.
    Ho capito che gestisci con JQuery, però hai omesso il codice e non è chiaro come "gestisci tutto", ed essendoci degli errori senza codice non è possibile dire nulla.

    mikelefree ha scritto:


    La cosa che non mi torna è come possa influire sulla navigazione.
    Senza sapere qual è il codice, non lo sapremo mai.
    Manca anche un altro dettaglio: il laser di scansione funziona in emulazione di tastiera?
    Detto in altre parole, il codice come arriva dalla pistola al campo?

    mikelefree ha scritto:


    Ho commentato tutta la funzione, ma quando scansiono un qrcode qualcosa interagisce comunque con il browser.
    Non saprei: la funzione che hai commentato nessuno qui l'ha vista, dato che non l'hai riportata, e (come da quesiti precedenti) non è chiaro come la pistola interagisca col browser.

    mikelefree ha scritto:


    Con il dubbio che mi è venuto in merito, ho creato una pagina vuota con un campo input senza form e che non dovrebbe fare nulla e così è.
    Ma non avevi detto all'inizio che il campo *non* era all'interno di un form, ovvero che non c'era un form?

    mikelefree ha scritto:


    Così ho escluso la remota possibilità che un qualche tipo di carattere speciale possa creare il problema.
    L'invio del form non è l'unico effetto collaterale che è possibile avere: sono ben di più i caratteri speciali da gestire, ma in realtà non mi aspetto che questi debbano essere gestiti. Tuttavia, mancano informazioni per fare ulteriori indagini, come già detto.

    mikelefree ha scritto:


    Ho notato che SOLO su Raspberry ho questo tipo di errore su main.js
    Uncaught SyntaxError: Unexpected token '='
    Potrebbe nascere da qui il problema?
    Di certo il requisito minimo è che il codice scritto sia eseguibile, quindi senz'altro quello è un problema: da cosa è dovuto e se la sua risoluzione pone fine a tutte le problematiche descritte, solo vedere il codice ce lo potrà dire.
  • Re: [RISOLTO] Stesso QR Code, Win/Lin risultati diversi

    Ho provato ad escludere il file ma nulla è cambiato.

    Faccio un esempio di comportamento che magari possa aiutare a comprendere cosa succede.
    Se apro una nuova scheda, cursore nella barra degli indirizzi, e scansiono il codice:
    Codiceç 127635'OE  Dataç 10-03-2021  Quantit: 10
    Il browser va alla scheda precedente, invia come input 10 e poi invio
  • Re: [RISOLTO] Stesso QR Code, Win/Lin risultati diversi

    mikelefree ha scritto:


    Ho provato ad escludere il file ma nulla è cambiato.
    Di quale file stiamo parlando?!

    mikelefree ha scritto:


    Faccio un esempio di comportamento che magari possa aiutare a comprendere cosa succede.
    Se apro una nuova scheda, cursore nella barra degli indirizzi, e scansiono il codice [...]
    Secondo me, ciò che può aiutare a capire cosa succede è rispondere alle domande che sono state fatte.
    Non è detto che sia risolutivo, ma potrebbe essere un punto di inizio.
  • Re: [RISOLTO] Stesso QR Code, Win/Lin risultati diversi

    Ho escluso il file main.js che mi restituisce l'errore ma nulla è cambiato

    Il file in questione è questo
    (()=>{
        "use strict";
        function e(e=!1){
            let t=!1;
            try{
                const e=Object.defineProperty({},"passive",{get:function(){t=!0}});
                window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)
            }
            catch(e){}
            if(e){
                const e=`[Passive Events Support] "passive" option is ${t?"":"not "}supported by your browser.`;t?console.info(e):console.warn(e)
            }
            return t
        }
        function t(e){
            return["touchstart","touchmove","touchenter","touchend","touchleave","wheel","mousewheel"].includes(e)
        }
        window.passiveSupport||={},window.passiveSupported=e(window.passiveSupport.debug),function(n){
            const s={debug:!1,events:[],listeners:[],...window.passiveSupport};
            s.debug&&(console.info("[Passive Events Support] Initialized With",s),s.events=s.events.filter((e=>{const n=t(e);
            return n||console.warn(`[Passive Events Support] Unsupported Event: ${e}`),n})),s.listeners=s.listeners.filter((e=>{const n=t(e.event);
            return n||console.warn("[Passive Events Support] Unsupported Listener:",e),n})));
            const{debug:o,events:i,listeners:r}=s,p=EventTarget.prototype.addEventListener;
            EventTarget.prototype.addEventListener=function(...n){const s=!n[2]||void 0===n[2].passive;
            if(t(n[0])&&s){
                const t=n[2],s=i.includes(n[0]),p=r.find((({element:e,event:t})=>"function"==typeof this.matches&&this.matches(e)&&t===n[0])),u=s||p,v=n[1].toString(),[c,...a]=v.split("{"),d=c.replace(/(function|=>)/,"").trim(),l=a.join("{"),f=(d.match(/\(([^)]+)\)/)||[`(${d})`])[0].replace(/[()]/g,""),w=!!(l.includes("preventDefault")||p&&p.prevented);
                u&&(n[2]={...n[2]||{},...e()&&{passive:!w}}),o&&console.info("[Passive Events Support] Non-passive Event Listener",{element:this,event:n[0],handler:{fn:n[1],fnArgument:f,fnContent:l,fnPrevented:w},arguments:t,...u&&{updatedArguments:n[2]}})
            }
            p.call(this,...n)}}
            ()})();
    L'errore
    Uncaught SyntaxError: Unexpected token '='
    è relativo a questa riga
    window.passiveSupport||={},window.passiveSupported=e(window.passiveSupport.debug),function(n){
    ma questo è un altro discorso. Dopo pranzo provo a rispondere a tutte le domande, grazie sempre e perdona la mia ignoranza
  • Re: [RISOLTO] Stesso QR Code, Win/Lin risultati diversi

    Questa è la parte di codice che gestisce l'input che arriva tramite scanner barcode
    $( '#codicebarcode' ).on( 'change', function() {
            code = $( this ).val();
            
            if( code.startsWith( 'USR-' ) ){
                setOperator( code );
            }else{
                if( code.startsWith( 'Codice' ) ){
                    code = code.trim().split( ' ' );
                    qta = code[code.length - 1];
                    code = code[1];
                }else
                    qta = 1;
                if( !$( '#operatore:contains("Nessuno")' ).length ){
                    if( code.includes("-") )
                        code = code.replace( "-", "/" );
                    if( code.includes("'") )
                        code = code.replace( "'", "-" );
                                    
                    eanCheck2( code, function( risultato ){
                        if( risultato === 'NO' ){
                            registraEan( tipo, code, qta );
                        }else{
                            if( qta > 1 )
                                risultato[1] = qta;
                            var ubicazioni = [];
                            trovato = diff = qtaRighi = presaRighi = 0;
                            $( 'td.articolo:contains("'+ addSlashes(risultato[0] ) +'")' ).each( function(){
                                tr = $( this ).parent( 'tr' );
                                
                                rigo = tr.attr( 'id' );
                                
                                ubi = tr.find( 'td.ubicazioni > p.ubiSel' ).text().split( ' ' );
                                
                                ubicazioni[rigo] = ubi[0];
                                
                                qtaRighi+= parseInt( tr.children( 'td.qta' ).text() );
                                
                                presaRighi+= parseInt( tr.children( 'td.presa' ).text() );
                                
                                trovato++;
                            });
                            diff = qtaRighi - presaRighi;
                            console.log( risultato );
                            if( trovato == 0 ){
                                codiceNonPresente();
                            }else if( diff >= risultato[1]  ){
                                aggQta2( risultato, ubicazioni, tipo );
                            }else if( diff === 0 ){
                                $.confirm( {
                                    theme: 'light',
                                    useBootstrap: false,
                                    boxWidth: '60%',
                                    title: '<span class="uppercase">Quantità documento già soddisfatta!</span>',
                                    content: '' +
                                            '<div class="form-group">' +
                                            '<p>Vuoi aggiungere comunque?</p>'+
                                            '</div>',
                                    onDestroy: function () {
                                        updateRighi2( tipo, rigo );
                                        log10( tipo, gruppo );
                                    },
                                    buttons: {
                                        aggiungi: {
                                            text: 'AGGIUNGI',
                                            btnClass: 'btn-blue',
                                            action: function () {
                                                aggQta3( risultato, ubicazioni, tipo );
                                            }
                                        },
                                        cancel: {
                                            text: 'ANNULLA',
                                            btnClass: 'btn-red',
                                            function () {
                                                
                                            }
                                        },
                                    }
                                } );
                            }else{
                                $.confirm( {
                                    theme: 'light',
                                    useBootstrap: false,
                                    boxWidth: '60%',
                                    title: '<span class="uppercase">ATTENZIONE</span>',
                                    content: '' +
                                            '<div class="form-group">' +
                                            '<h4>Aggiungendo la quantità del barcode verrà superata la quantità nel documento.</h4>'+
                                            '<p>Vuoi aggiungere comunque?</p>'+
                                            '</div>',
                                    onDestroy: function () {
                                        updateRighi2( tipo, rigo );
                                        log10( tipo, gruppo );
                                    },
                                    buttons: {
                                        aggiungi: {
                                            text: 'AGGIUNGI',
                                            btnClass: 'btn-blue',
                                            action: function () {
                                                aggQta3( risultato, ubicazioni, tipo );
                                            }
                                        },
                                        cancel: {
                                            text: 'ANNULLA',
                                            btnClass: 'btn-red',
                                            function () {
                                                
                                            }
                                        },
                                    },
                                } );
                            }
                        }
                    });
                }else{
                    noOperator();
                }
            }
            $( '#codicebarcode' ).val( '' );
        } );
  • Re: [RISOLTO] Stesso QR Code, Win/Lin risultati diversi

    mikelefree ha scritto:


    Questa è la parte di codice che gestisce l'input che arriva tramite scanner barcode [...]
    Ok, ma questo è codice che fa qualcosa con il valore scansionato dal QR Code, però non serve a tutti gli effetti per acquisire il codice.

    Hai provato a rimuovere questa gestione per vedere cosa appare nel campo?

    Il problema di cui stiamo parlando riguarda la gestione del codice postuma, o la corretta acquisizione del codice in sé.
    Scusami ma non si capisce più nulla...
  • Re: [RISOLTO] Stesso QR Code, Win/Lin risultati diversi

    Il problema è avere la corretta acquisizione del codice.

    Come avevi suggerito nella prima risposta, il problema è la velocità di ricezione e gestione del codice.
    Dato che la scansione tramite scanner invia al termine della stringa il carattere "13" Enter, sto facendo alcune prove, così:
    $( '#codicebarcode' ).keypress( function( event ){
            var keycode = ( event.keyCode ? event.keyCode : event.which );
            
            if( keycode == '13' ){
            	
    Così l'input viene ricevuto correttamente, non troncato e non interferisce con la navigazione. Mi chiedo se sia il modo più efficiente
  • Re: [RISOLTO] Stesso QR Code, Win/Lin risultati diversi

    mikelefree ha scritto:


    Così l'input viene ricevuto correttamente, non troncato e non interferisce con la navigazione. Mi chiedo se sia il modo più efficiente
    Io direi di sì. In pratica, stai gestendo il carattere di ritorno a capo evitando che produca un effetto indesiderato, senza ostacolare però tutti gli altri caratteri che vengono inseriti (a mano o tramite scansione del codice, poco importa, perché l'inserimento avviene emulando una tastiera).

    Tutt'al più, se hai operazioni da fare conseguenti all'inserimento del codice, puoi sfruttare la gestione del tasto INVIO come conferma del numero inserito per "scatenare" tutte le restanti logiche ad esso correlate (ad es. ricerca di un articolo che corrisponda a quel codice).

    Ciao!
Devi accedere o registrarti per scrivere nel forum
10 risposte