Problemi in lettura tessera sanitaria

Salve, sto avendo problemi con la lettura della tessera sanitaria. Uso il Plugin SmartCardMBS.
In particolare accade che, con le tessere contrassegnate dal codice ST 2022 (quello che identifica il produttore della tessera), il mio sistema di lettura faccia crashare completamente l’app.
Ho provato ad installare i driver suggeriti per le tessere ST 2022. A questo punto l’app non crasha più, ma la tessera non viene completamente rilevata.
Qualche idea? qualcuno che si è imbattuto nella stessa situazione?

@Christian_Schmitz ?

Sorry for the trouble.
Since I don’t know such a problem, maybe you can provide details

Mi dispiace per il problema.
Dato che non conosco questo problema, potresti fornire dettagli e un rapporto di crash?

the problem is not easy to describe. But I’ll try: in practice, after the presence of the card is intercepted and I start reading it, it goes on correctly. I can read the data, name, surname and more. But immediately upon termination the whole application crashes, without any error message. This is part of the offending code. In theory everything crashes at the end of the last line. I think it’s a card driver problem (not the reader!)


'██ LETTURA ██
dim command4 as new MemoryBlock(5)
command4.Int8Value(0) = &h00
command4.Int8Value(1) = &hB0
command4.Int8Value(2) = &h00
command4.Int8Value(3) = &h00
command4.Int8Value(4) = &h00
card.Transmit(header, command4, command4.Size, nil, bufferLettura, RecvLengthLettura)



if card.Lasterror = 0 then
  dim lettura as String = bufferLettura.StringValue(0, bufferLettura.Size-1)
  dim objDatiCNS as new objDatiLetturaCNS
  
  'I primi 6 caratteri contengono la dimensione in numero di byte del dato espresso in esadecimale
  dim indice as Integer = 6
  dim lunghDaLeggere as Byte = &h00
  
 
  'Cognome
  lunghDaLeggere = val("&h" + lettura.Middle(indice, 2))
  indice = indice + 2
  objDatiCNS.cognome = lettura.Middle(indice, lunghDaLeggere)
  indice = indice + lunghDaLeggere
  
  'Nome
  lunghDaLeggere = val("&h" + lettura.Middle(indice, 2))
  indice = indice + 2
  objDatiCNS.nome = lettura.Middle(indice, lunghDaLeggere)
  indice = indice + lunghDaLeggere
  
  'Data di nascita
  lunghDaLeggere = val("&h" + lettura.Middle(indice, 2))
  indice = indice + 2
  objDatiCNS.SetDataNascita(lettura.Middle(indice, lunghDaLeggere))
  indice = indice + lunghDaLeggere
  
  'Sesso
  lunghDaLeggere = val("&h" + lettura.Middle(indice, 2))
  indice = indice + 2
  objDatiCNS.sesso = lettura.Middle(indice, lunghDaLeggere)
  indice = indice + lunghDaLeggere
   
  'codice fiscale
  lunghDaLeggere = val("&h" + lettura.Middle(indice, 2))
  indice = indice + 2
  objDatiCNS.codFisc = lettura.Middle(indice, lunghDaLeggere)
  indice = indice + lunghDaLeggere

....

end if

Per Ant Col - Ciao se ti interessa ho la lettura della Tessera Sanitaria completa senza plugin ma utilizzando la dll standard di Windows non so se de vi anche installare su mac in tal caso non funzionerebbe, comunque su windows funziona egregiamente è velocissima e non da nessun errore, nel frattempo ti informo che nelle Tessere Sanitarie TS2021 e 2022 non è più scritto l’indirizzo di residenza ma solo la città di residenza, non so con il plugin leggi anche la residenza perchè è in una zona della memoria della Smart Cart totalmente differente rispetto ai dati base (Cognome, Nome, ecc.) e non è documentata. Fammi sapere se ti interessa

1 Like

Ciao, alla fine avevo risolto creando un programma esterno in python, che richiamo ogni volta da shell. Sì, se ti va di metterlo a disposizione, sarebbe sempre un qualcosa in più. Anche per capire, genericamente, come utilizzare nativamente dll windows, cosa che mi sembra un po’ difficoltosa.
Grazie

Ciao non è difficoltoso basta dichiarare le entry della DLL come Ethernal Methods comunque se mi dai la tua email te lo invio volentieri con tutto quello che serve per leggere la CNS

1 Like

Intanto che ci sono sai se qualcuno ha sviluppato la lettura delle anagrafiche dalla CIE 3.0?

eh, è proprio questa parte quella “difficile”, perchè comunque devi conoscere in dettagli la DLL che vai a richiamare (e le dll native di windows non sono molto “amichevoli”).

no, non so nulla della CIE allo stato attuale.

Ciao ti ho mandato la email scarica da Google Drive c’è il link nella email