Gambas-it

Gambas3 => Programmazione => Topic aperto da: naderit - 17 Luglio 2017, 19:23:02

Titolo: [risolto] barcode scanner
Inserito da: naderit - 17 Luglio 2017, 19:23:02
Ciao a tutti. Ho un lettore di barcode USB collegato in emulazione di tastiera, per acquisire i dati letti ed elaborarli ho pensato di utilizzare una textbox e al momento che prende il focus mi visualizza il barcode numerico, però non mi piace perché implica una casella di testo attiva con possibilità di inserimento casuale da tastiera. Allora ho pensato di usare il Keypress del form :
Codice: [Seleziona]
Private a As String
Private b As String

Public Sub form_KeyPress()
   a = Key.Text
   b = b & a
   Label1.Text = b
End

ma non mi entusiasma molto
domanda: esiste la possibilità di inserire il barcode numerico letto in una variabile String senza dover usare i metodi indicati? oppure esiste un metodo che mi sfugge?
Grazie  :-[     
Titolo: Re:barcode scanner
Inserito da: vuott - 17 Luglio 2017, 20:48:15
Non ho capito  :-\ che relazione c'è fra l'acquisizione dei dati del codice a barre con l'evento form_KeyPress( ). Cioè, cosa fa, a cosa serve l'intera routine di quell'evento con l'acquisizione e la elaborazione dei dati del codice a barre ?
Titolo: Re:barcode scanner
Inserito da: naderit - 17 Luglio 2017, 21:26:11
Ciao Vuott,  mettiamo il caso che con il lettore in emulazione di tastiera si legga il codice "8017331056424"  senza la routine avrei nella variabile "a" solo l'ultimo numero il 4, usando anche la seconda variabile ho l'intera stringa letta dal lettore. in poche parole lo scanner ha lo stesso comportamento come se digitassi da tastiera e con la routine ogni numero e viene affiancato per comporre l'intero codice.  La domanda è: secondo voi è possibile acquisire il codice letto dal lettore, caricarlo in una variabile  senza che la tastiera possa interferire al momento dell'acquisizione?
 
Titolo: Re:barcode scanner
Inserito da: vuott - 17 Luglio 2017, 23:23:16
Perdona la mia mente bacata (http://s5.rimg.info/5cbbf0ae74558e85ddb8a17dda9a60ab.gif), ma io non ho ancora compreso cosa c'entra l'acquisizione del codice a barre via USB con l'immissione di caratteri via tastiera attraverso la routine form_KeyPress( ).
Titolo: Re:barcode scanner
Inserito da: Arco - 18 Luglio 2017, 08:41:56
Se il lettore di codici è USB non dovresti leggere i valori dal device seriale assegnato alla porta USB.
Titolo: Re:barcode scanner
Inserito da: vuott - 18 Luglio 2017, 09:59:55
.... non dovresti leggere i valori dal device seriale assegnato alla porta USB.
...a meno che non si sappia interpretare adeguatamente i dati intercettati.
Titolo: Re:barcode scanner
Inserito da: kicco - 18 Luglio 2017, 13:13:42
 :ciao:
...se può servire a comprendere: "il lettore di codici a barre USB si comporta come una tastiera".
 :ciao:
Titolo: Re:barcode scanner
Inserito da: vuott - 18 Luglio 2017, 13:24:50
"il lettore di codici a barre USB si comporta come una tastiera".
1) cosa significa "si comporta come una tastiera" ?   ???

2) perché naderit ha inserito quella routine con evento "_keypress( )" ?  Perché e a che dovrebbe servire quell'evento nell'intercettazione ed elaborazione del codice a barre ?

Bisogna essere chiari ! Io non ho capito assolutamente niente.   >:(
Titolo: Re:barcode scanner
Inserito da: kicco - 18 Luglio 2017, 13:30:03
 :ciao:
nel senso letterale della cosa. Quando tu spari con la pistola, il codice viene catturato come se fosse stato scritto sulla tastiera!
Ho scritto un programmino che faceva proprio questo, proverò a dare un occhio!
 :ciao:

PS: ho usato il comando INPUT
Titolo: Re:barcode scanner
Inserito da: vuott - 18 Luglio 2017, 13:48:32
il codice viene catturato come se fosse stato scritto sulla tastiera!
Oh, quindi dai dati intercettati via USB viene filtrata  e restituita una stringa di caratteri alfanumerici che rappresenta il numero di codice a barre. Giusto ?

Ora, vorrei ora capire perché naderit non possa memorizzare quei dati ASCII in memoria mediante una normale variabile di tipo Stringa.    :-\
Titolo: Re:barcode scanner
Inserito da: kicco - 18 Luglio 2017, 14:57:05
Citazione
Oh, quindi dai dati intercettati via USB viene filtrata  e restituita una stringa di caratteri alfanumerici che rappresenta il numero di codice a barre. Giusto ?
Giusto!
Citazione
Ora, vorrei ora capire perché naderit non possa memorizzare quei dati ASCII in memoria mediante una normale variabile di tipo Stringa.    :-\
  :-\
Titolo: Re:barcode scanner
Inserito da: vuott - 18 Luglio 2017, 16:23:49
...il mistero s'infittisce !    (http://files.blog-de-parasitologia.webnode.mx/200000116-b74feb941d/facepalm.gif)

   
Titolo: Re:barcode scanner
Inserito da: Arco - 18 Luglio 2017, 17:16:17
Codice: [Seleziona]
Private a As String
Private b As String

Public Sub form_KeyPress()
   a = Key.Text
   b = b & a
   Label1.Text = b
End

domanda: esiste la possibilità di inserire il barcode numerico letto in una variabile String senza dover usare i metodi indicati?   :-[     
Se ho capito bene basterebbe che b fosse dichiarata come variabile globale e potresti utilizzarla in qualsiasi Sub.
Titolo: Re:barcode scanner
Inserito da: Gianluigi - 18 Luglio 2017, 18:04:58
Ti allego un semplice, ottimo codice scritto da Charlie che volendo ti permette di porre vari controlli (es. il numero di caratteri).
Io non credo che ci siano modi migliori più spicci di questo.
D'altra parte che scrivi con la tastiera o che scannerizzi sempre da qualche parte devi inviare l'input.
E se lo scanner si rifiuta di leggere? Non conviene avere un posto dove scrivere? Magari crei la casella di colore diverso...

Poi magari... Vuott può insegnarci qualcosa di magico...  :D

 :ciao:
Titolo: Re:barcode scanner
Inserito da: naderit - 18 Luglio 2017, 19:31:44
Ciao, Kicco ha ragione lo scanner USB si comporta come la tastiera. Si Arco le variabili "a"  e "b" sono globali. Nel progetto allegato da Gianluigi funziona come il mio esempio ovvero la tastiera può interagire con il lettore.
 Credo che le soluzioni siano:
1) settare lo scanner, se ne ha la possibilità, che inizi la lettura con un carattere jolly.
2) fare in modo di escludere la tastiera (poco probabile)
3) lasciare cosi com'è e caricare il dato letto in una variabile o direttamente in una textbox
4) usare uno scanner RS232(obsoleto)
a presto  :ciao:
Titolo: Re:barcode scanner
Inserito da: Gianluigi - 18 Luglio 2017, 19:52:12
Io ora non ti voglio sgridare, ma scusa tanto si può sapere che caspita vuoi?

Vuoi distinguere fra codice scritto da tastiera e codice scannerizzato?
Ma per quale motivo?
Se lo scanner non funziona come fai a inserire il codice?

Comunque un modo, sempre di Charlie, per distinguere ci sarebbe ma ti devi spiegare bene prima, altrimenti ... arrangiati.  >:( :evil:
Titolo: Re:barcode scanner
Inserito da: vuott - 18 Luglio 2017, 20:43:09
Vuott può insegnarci qualcosa di magico...  :D
Sempre che si comprenda quali siano i suoi fini.

naderit, ma tu "cosa" devi fare ?



   scusa tanto si può sapere che caspita vuoi?
... ti devi spiegare bene prima, altrimenti ... arrangiati. 
Sembrava che io fossi il matto/deficiente.
Titolo: Re:barcode scanner
Inserito da: naderit - 18 Luglio 2017, 20:44:36
pensavo fosse molto chiara la mia domanda fin dall'inizio, bastava leggere attentamente.
grazie
Titolo: Re:barcode scanner
Inserito da: vuott - 18 Luglio 2017, 20:46:34
pensavo fosse molto chiara la mia domanda fin dall'inizio, bastava leggere attentamente.
Evidentemente no lo è.   :hatecomputer:
Titolo: Re:barcode scanner
Inserito da: naderit - 18 Luglio 2017, 20:47:29
Citazione
naderit, ma tu "cosa" devi fare ?
evitare che l'utente inserisca da tastiera un carattere oltre a quello letto dallo scanner
Titolo: Re:barcode scanner
Inserito da: vuott - 18 Luglio 2017, 20:49:39
evitare che l'utente inserisca da tastiera un carattere oltre a quello letto dallo scanner
Va bene. (Se però è semplicemente questo, ti dico che l'esempio di codice con form_KeyPress() è fuorviante, confonde le idee di chi legge, perché non si capisce il motivo per il quale hai mostrato quel codice !)

Oh, ma perché non hai voluto optare per una normale variabile di tipo Stringa, che fosse anche Globale, come ti ha poi suggerico arco ?
Titolo: Re:barcode scanner
Inserito da: vuott - 18 Luglio 2017, 20:53:22
 ???
Titolo: Re:barcode scanner
Inserito da: naderit - 18 Luglio 2017, 20:53:56
ok, e come memorizzo il codice letto dallo scanner in una variabile stringa? :mad:
la variabile da me usata è globale.
Codice: [Seleziona]
Private a As String ' variabile globale '
Private b As String ' variabile globale'

Public Sub form_KeyPress()
   a = Key.Text  'barcode letto dallo scanner in emulazione di tastiera, singolo carattere'
   b = b & a
   Print b
End
Titolo: Re:barcode scanner
Inserito da: vuott - 18 Luglio 2017, 21:16:11
come memorizzo il codice letto dallo scanner in una variabile stringa?

Scusa........... una domanda:  ma... tu con quale codice "intercetti", "raccogli", insomma "come leggi" i dati ritornati dalla pistola USB per i Codici a barre ?   :-X

Più tecnicamente: come leggi i dati provenienti in scrittura da una porta seriale USB ?
Titolo: Re:barcode scanner
Inserito da: vuott - 18 Luglio 2017, 21:28:58
...ma forse a me sfugge qualcosa  :-\ , poiché non ho mai operato con il Codice a Barre:  scusami, per intercettare il Codice a Barre è sufficiente l'evento "_KeyPress( )" ?
Titolo: Re:barcode scanner
Inserito da: naderit - 18 Luglio 2017, 22:06:26
si il barcode scanner è collegato alla porta usb è settato in emulazione di tastiera, nel momento che leggo un codice a barre esempio quello dell'immagine, mi restituisce il codice numerico 803208900017. 
Titolo: Re:barcode scanner
Inserito da: naderit - 18 Luglio 2017, 22:10:54
si con l'evento KeyPress del FormMain "catturo" il codice.
Ora stavo provando un'altra strada, leggere direttamente dalla porta seriale USB.
Titolo: Re:barcode scanner
Inserito da: vuott - 19 Luglio 2017, 00:04:50
... leggere direttamente dalla porta seriale USB.
...ma, se l'evento "_KeyPress( )" è predisposto in tale caso a compiere questo lavoro, leggere invece direttamente dalla porta USB rende tutto un po' più complicato.   



Titolo: Re:barcode scanner
Inserito da: vuott - 19 Luglio 2017, 00:09:01
Codice: [Seleziona]
Private a As String ' variabile globale '
Private b As String ' variabile globale'

Public Sub form_KeyPress()
   a = Key.Text  'barcode letto dallo scanner in emulazione di tastiera, singolo carattere'
   b = b & a
   Print b
End

Scusa, ma questo tuo codice non va bene ?  Perché ?   :-\
Titolo: Re:barcode scanner
Inserito da: Gianluigi - 19 Luglio 2017, 15:54:36
Codice: [Seleziona]
' Gambas class file


Public Sub form_Open()

  TextBox1.SetFocus 'Per essere sicuro che la text box sia pronta a ricevere l'input

End

Public Sub TextBox1_KeyPress() 'È necessario sapere se viene ricevuto il return (fine codice)

  Dim sCode As String

  Label1.text = ""

  If Key.Code = Key.Return Then 'Se return è stato ricevuto
    sCode = TextBox1.Text
    Label1.text = ConvalidaCodice(sCode)
    TextBox1.text = ""
    TextBox1.SetFocus 'Pronto a ricevere il prossimo codice
  Else
    Label1.text = "#Codice non valido!"
    TextBox1.text = ""
    TextBox1.SetFocus 'Pronto a ricevere il prossimo codice
  Endif

End

Private Function ConvalidaCodice(sCode As String) As String
 
  ' Qui inserisci tutti i controlli e se va bene restituisci il codice oppure errore.
  ' Se uno ha inserito con la tastiera un refuso questo non succede, giusto? Otterrai un altro numero...
  If Len(sCode) = 13 Then Return sCode
  ' If...
  ' Oppure lo fai con If ... Else If ... Select Case ...
  Return "#Codice non valido!"
 
End

Io, come suppongo anche altri, non ho una pistola lettore di codici a barre, pertanto se facciamo delle domande è perché stiamo proponendo soluzioni alla cieca.
Sia chiaro che questa è l'ultima volta che cerco di aiutare qualcuno che neanche si degna di rispondere alle domande che gli faccio.
Titolo: Re:barcode scanner
Inserito da: vuott - 19 Luglio 2017, 17:17:10
Sia chiaro che questa è l'ultima volta che cerco di aiutare qualcuno che neanche si degna di rispondere alle domande che gli faccio.

    (https://atrl.net/uploads/emoticons/foxaylove3.gif)
Titolo: Re:barcode scanner
Inserito da: naderit - 19 Luglio 2017, 21:38:05
Ciao Gianluigi, sono amareggiato per la tua risposta
Citazione
Sia chiaro che questa è l'ultima volta che cerco di aiutare qualcuno che neanche si degna di rispondere alle domande che gli faccio.
  in realtà ho risposto... 
è un vero peccato  pensavo di trovare in questo forum una condivisione di idee e/o soluzioni, per mantenere attivo un progetto più globale, Gambas a me piace, lo trovo geniale e continuerò a rompere se sarete abbastanza umili da rispondere.....non solo per me.
però anche Lazarus non è male.... si dovrebbe aprire una sezione dedicata.  ;D ;D ;D ;D
Titolo: Re:barcode scanner
Inserito da: vuott - 19 Luglio 2017, 21:49:18
è un vero peccato  pensavo di trovare in questo forum una condivisione di idee e/o soluzioni
naderit, tu quoque !    :o

Certo non si può dire che in questo forum non vi siano membri che tentino in tutti i modi di aiutare coloro che pongono questioni !!!    :hard:
Titolo: Re:[risolto] barcode scanner
Inserito da: vuott - 19 Luglio 2017, 22:01:08
naderit, ho visto che hai posto "risolto" a questa discussione.
Puoi dirci quale soluzione infine hai adottato ?
Titolo: Re:barcode scanner
Inserito da: Gianluigi - 19 Luglio 2017, 22:36:29
Ciao Gianluigi, sono amareggiato per la tua risposta
Citazione
Sia chiaro che questa è l'ultima volta che cerco di aiutare qualcuno che neanche si degna di rispondere alle domande che gli faccio.
  in realtà ho risposto... 
è un vero peccato  pensavo di trovare in questo forum una condivisione di idee e/o soluzioni, per mantenere attivo un progetto più globale, Gambas a me piace, lo trovo geniale e continuerò a rompere se sarete abbastanza umili da rispondere.....non solo per me.
però anche Lazarus non è male.... si dovrebbe aprire una sezione dedicata.  ;D ;D ;D ;D

Citazione da: Gianluigi
E se lo scanner si rifiuta di leggere?
Citazione da: Gianluigi
Se lo scanner non funziona come fai a inserire il codice?

Se sei amareggiato tu per la mia risposta, pensa a come lo sono io per le tue non risposte...  :P
Riguardo all'umiltà ... beh visto il tuo comportamento ... lasciamo perdere
Circa Lazarus ti rammento che prima di risorgere occorre morire  ;)
Titolo: Re:[risolto] barcode scanner
Inserito da: naderit - 20 Luglio 2017, 21:45:27
va be... cercavo di risolvere alcuni problemi tecnici
per rispondere a Vuott .. alla fine ho risolto utilizzando una inputbox
Codice: [Seleziona]
Dim valore As String
   valore = InputBox("Codice", "Barcode")
Print valore

- apro l'inputbox
- leggo codice che lo stampa nella textbox
- carico nella variabile "valore" che utilizzo a mio piacimento
a presto  :P
Titolo: Re:[risolto] barcode scanner
Inserito da: allegfede - 27 Luglio 2017, 19:00:11
sono arrivato tardi?

io userei una textbox "non visibile" che accetta l'input dal barcode scanner e poi copi i dati in una label o altro per visualizzare ....

scusate ma da qualche giorno faccio anche il telegiornale oltre alla parte tecnica, manager, centralinista, grafico fonico, montatore elettricista, informatica, idraulica ....
Titolo: Re:[risolto] barcode scanner
Inserito da: vuott - 27 Luglio 2017, 19:42:26
scusate ma da qualche giorno faccio anche il telegiornale oltre alla parte tecnica, manager, centralinista, grafico fonico, montatore elettricista, informatica, idraulica ....

Te sta' proprio a impaci'  !    ;D