Limitazione scrittura textbox tag nfc

di il
39 risposte

Limitazione scrittura textbox tag nfc

Buongiorno,
Sono un mediocre programmatore e lo faccio solo per hobby. Ieri mi sono imbattuto in un problema con l'utilizzo di carte nfc.
In pratica vorrei fare un gestionale per le suddette carte, attualmente ho un lettore con circa 10 carte per fare delle prove. Il lettore non fa nient'altro che emulare una tastiera e quindi scrivere il codice di 10 cifre riferito alla carta che ha letto. Dal punto di vista gestionale è abbastanza facile, basta lavorare con le stringhe e con le textbox. Il problema è propio che vorrei fare in modo che nella la cella destinata a contenere il codice della carta in nessun modo dovrebbe contenere altri dati, mi spiego:
Se nella textbox per sbaglio scrivo "234" e poi avvicino la carta al lettore e mi inserisce il codice della carta tipo "3462846151" è ovvio che questo numero verrà accodato e non sostituirà il contenuto precedente.
Un miglioramento l'ho fatto impostando da codice sotto l'avento click della cella la selezione di tutto il testo in modo che venga sempre cancellato.
Vorrei sapere se esiste un metodo per bloccare la cella solo alla tastiera e non al lettore.
Inoltre esiste anche un metodo per fare in modo che il lettore mi scriva il codice sempre nella cella dedicata impostando il relativo focus se necessario?

Grazie a tutti per le eventuali risposte

39 Risposte

  • Re: Limitazione scrittura textbox tag nfc

    Io proverei a verificare quali EVENTI si scatenano sia durante la digitazione da tastiera, che durante la compilazione con il lettore...!
    Esempio, immagino che l'evento BeforeUpdate dovrebbe generarsi in entrambi i casi... ma forse l'evento KeyDown o KeyPress no...
    In questo caso, se fosse vero, si può valutare di INIBIRE la digitazione del singolo Carattere da Tastiera per esempio... purtroppo devi fare tu qualche verifica in quanto non dispongo di quel dispositivo.
    Questa idea, se applicabile, assolverebbe anche al tuo secondo quesito...
  • Re: Limitazione scrittura textbox tag nfc

    Il problema nasce propio da quì, il lettore ha solo la funzione di scrivere in automatico i numeri che altrimenti dovrei scrivere a mano. Ho letto sulla guida che esiste la funzione "keypreview" che in sostanza passa l'vento prima alla form e poi al controllo che ha il focus, quindi pensavo:
    Visto che posso programmare il lettore per farmi mandare un carattere prima del codice se io metto un carattere speciale e catturo l'evento nella form con il keypreview mi imposto il focus e la selezione del testo nel controllo che mi serve e poi in automatico dovrebbe arrivarmi il codice nella textbox dedicata. Almeno a livello teorico potrebbe funzionare?
  • Re: Limitazione scrittura textbox tag nfc

    Si certo, ma devi agire come ti ho indicato, ovvero verificando QUALI EVENTI riesci ad intercettare con il lettore.
    A quel punto poi troviamo il modo.

    Io di solito mi comporto così, metto un MSGBOX sugli eventi che voglio monitorare... e poi decido...!

    Il KeyPreview, abilita solo gli eventi, ma non è detto che il lettore abbia effetto su TUTTI...
  • Re: Limitazione scrittura textbox tag nfc

    Va bene, proveró così. L'unica precisazione di cui ho bisogno è se devo catturare gli eventi della maschera o del controllo textbox in cui devo scrivere il codice della carta?

    Grazie per l'aiuto
  • Re: Limitazione scrittura textbox tag nfc

    Il controllo Textbox.
  • Re: Limitazione scrittura textbox tag nfc

    Ho appena fatto la prova con i MsgBox, avendo la Textbox con focus ho catturato i seguenti eventi nell'ordine descritto:
    Lettore: KeyPress - Change;
    Tastiera: Keydown - Keypress - Change.
    Quindi come mi avevi indicato le due modalità generano due eventi diversi.
    A questo punto devo impostare da codice la cancellazione del testo nell'evento Keydown, tutte le azioni da eseguire dopo la lettura della carta nell'evento keypress e per fare in modo da avere il focus automatico sulla Textbox posso usare il keypreview della form relativo all'evento keypress, giusto?
  • Re: Limitazione scrittura textbox tag nfc

    Lascia perdere il Keypreview... capisco ti piaccia... ma non significa nulla.
    Usa l'evento KeyPress del controllo e forza il parametro Ascii=30
  • Re: Limitazione scrittura textbox tag nfc

    In sostanza devo fare un IF e controllare se ricevo il carattere Ascii=30, nel caso positivo vuol dire che ho ricevuto la lettura e quindi proseguo con il codice, se invece mi arriva un qualche altro carattere vuol dire che ho scritto da tastiera e devo cancellare l'eventuale testo già presente?
  • Re: Limitazione scrittura textbox tag nfc

    No siccome questo evento si genera solo da tastiera... e restituisce il codice ASCII corrispondente al carattere premuto... se tu lo forzi=30 equivale ad annullare la digitazione... ed impedisce in sostanza ci si possa scrivere da tastiera.
  • Re: Limitazione scrittura textbox tag nfc

    Perdonami l'ignoranza ma ancora non ho capito a livello di codice cosa dovrei scrivere, il mio evento è questo:

    Private Sub IDCartaricarica_KeyPress(KeyAscii As Integer)
    If KeyAscii = 30 Then
    ......
    End If
    End Sub

    Scrivendo così ho notato che l'esecuzione non entra nell'IF nè da tastiera nè da lettore. Ho anche provato a farmi restituire il codice ASCII del primo carattere rilevato dal lettore ed equivale al primo numero del codice della carta.

    Altra domanda che mi sorge spontanea, l'evento KeyPress si genera ad ogni carattere, non solo al primo, quindi dovrei anche contare i caratteri presenti nella textbox che nel mio caso devono essere 10?
  • Re: Limitazione scrittura textbox tag nfc

    Prima cosa usa i tag per il codice.
    Poi se ti si dice che il parametro KeyAscii restituisce il codice del tasto premuto e che lo devi forzare= 30... perché tu lo controlli se vale 30..?
    
    Private Sub IDCartaricarica_KeyPress(KeyAscii As Integer)
       KeyAscii = 30
    End Sub
    
    Questo qualsiasi tasto da tastiera premi nel controllo viene ANNULLATO.
  • Re: Limitazione scrittura textbox tag nfc

    Chiedo scusa per i tag, non li trovavo.
    Per quanto riguarda il controllo che faceva era perché non avevo capito che significava forzare KeyAscii a 30.
    In tutti i casi con questo codice è vero che mi annulla i tasti premuti da tastiera, ma visto che il lettore emula una tastiera non riesce a scrivere neanche lui. Non è che dovrei trovare un metodo analogo per il metodo KeyDown che fa riferimento alla tastiera fisica?
  • Re: Limitazione scrittura textbox tag nfc

    Scusa... ho sbagliato io... DEVI proprio usare KeyDown... da quanto avevi scritto sopra... ho invertito...
    Ma si usa allo stesso modo...
  • Re: Limitazione scrittura textbox tag nfc

    Ah, adesso mi è più chiaro. Facendo un debug accurato del codice però ho visto che sia la tastiera che il lettore generano sempre prima l'evento KeyDown, quindi prima mi ha deviato la sequenza con cui mi si aprivano i MsgBox. Quindi con questo sistema mi sa che non si va da nessuna parte...
    Il lettore è da considerarsi una vera e propria tastiera a quanto pare. L'unica cosa che posso fare da quello che mi sembra di capire è fare dei controlli sul contenuto del controllo e cercare di affinarlo il più possibile. Mi dispiace per le informazioni precedenti errate
Devi accedere o registrarti per scrivere nel forum
39 risposte