Problema com leitor de cartão

Nov 22, 2011 at 11:44 AM

Bom dia.

Tenho uma aplicação que lê os dados do cartão de cidadão usando a DLL eIDPT.

Para testes, utilizei vários cartões, tendo-os lido dezenas de vezes sem qualquer problema.

No entanto, de um momento para o outro, o valor do parâmetro "cardName" passou a estar sempre vazio no evento "CardInserted" do SCWatcher nos cartões que foram utilizados dezenas de vezes. Quando usei outros cartões que ainda não tinham sido utilizados nos testes, a leitura funciona. Será que estes cartões também irão deixar de funcionar?

Não me parece que haja qualquer problema com o código da DLL eiDPT porque a leitura deixou de funcionar também com o software obtido no site do cartão de cidadão (http://www.cartaodecidadao.pt/index.php?option=com_content&task=view&id=102&Itemid=44&lang=pt).

Foram utilizados os seguintes leitores de cartões:

  • "ACS CCID USB Reader". No verso do leitor consta a seguinte referência: ACR38-CFC-RZET18
  • "Gemplus USB Smart Card Reader"

As minhas perguntas são as seguintes:

  1. Alguém já teve um problema semelhante?
  2. Haverá algum problema com os leitores?
  3. O facto de a leitura do cartão nunca mais ter sido bem sucedida com qualquer software (eIDPT, DemoCartaoCidadao.exe e software obtido no site) significa que o chip e/ou a informação nele contida estão inutilizados?

Desde já agradeço a atenção dispensada.

Álvaro Alves

 

Nov 23, 2011 at 10:49 AM

Para testes, utilizei vários cartões, tendo-os lido dezenas de vezes sem qualquer problema.

Duvido que seja isto, mas será problema dos cartões? Eu também tenho alguns cartões de desenvolvimento e não me dão para verificar as informações principais usando o soft. do middleware mesmo. Já tentaste com um Cartão do Cidadão real verificar se o comportamento se repete?

Eu nos meus desenvolvimentos deparei-me com alguns problemas com os leitores (tipo deixavam de reconhecer completamente o leitor/cartão). A solução que encontrei foi (por mais estúpido que fosse)  desinstalar no System Device as portas USB e deixar que o Plug'n'Play reconhecesse as portas, voltasse a instalá-las, reconhecesse o leitor e desinstalar o leitor e voltar a instalá-lo pelo System Devices.

A partir daí voltou a funcionar o leitor e os cartões também.

Nov 23, 2011 at 5:01 PM

Penso que seja problema dos cartões. Fiz testes em 2 PCs e num leitor embutido num teclado e obtive sempre os mesmos resultados: os cartões que deixaram de funcionar continuaram e não funcionar e cartões que funcionam continuaram a funcionar.

Reparei que são criadas entradas no registo de eventos "Sistema" do Windows sempre que insiro um dos cartões que não consigo ler:

"O Leitor de Smart Card 'Gemplus USB Smart Card Reader 0' rejeitou o IOCTL POWER: O smart card não está respondendo a uma redefinição.. Se este erro persistir, o smart card ou o leitor poderá não estar a funcionar correctamente."

O ID do evento é 610, o que me leva a suspeitar que seja um problema de hardware do cartão.

Smart Card Events: http://technet.microsoft.com/en-us/library/ff404292(WS.10).aspx

Não tenho cartões de teste. Usei sempre cartões reais emprestados por colegas (já imagino a minha cabeça num cepo). Consigo ler perfeitamente outros cartões reais de outros colegas, o que exclui a hipótese de mau funcionamento de controladores, portas USB ou leitor.

Perante isto, continuo sem conseguir determinar o que realmente aconteceu. Presumo que os cartões terão ficado com o chip danificado. Assim sendo, a única solução será a substituição dos cartões que não funcionam.

 

 

Nov 23, 2011 at 11:34 PM

Isso lá tá, se fosse código teu pareceu-me a algo semelhante ao que me aconteceu (quando me lixou as portas USB); Uma excepção que deu numa leitura e não fechei o leitor antes de terminar o programa (o que deixou o cartão pendurado, tal como se fosse um File Descriptor; não me permitindo fazer qualquer operação, mesmo o "Power" como estás fazendo). Mas se isso acontece com o middleware do CC, então talvez um 3º leitor te permita verificar com exactidão o que está acontecendo (se é mesmo do leitor, se os cartões estão mesmo estragados). 

Isto há um pequeno senão com os cartões Smart Card dos CC, se forem demasiado utilizados com várias máquinas diferentes as "molas" dos leitores das máquinas estão umas mais "apertadas" do que as outras o que por si só danifica o chip. Daí eu já ir no 3º MB :|.... Por isso aconselho-te vivamente a aquisição de cartões de desenvolvimento, visto não obrigares a ninguém a ceder o seu BI :P e assim não teres a cabeça no cepo.

Quanto ao teu erro, concordo que o problema esteja (muito provavelmente) no leitor em si, daí continuar a dizer para desinstalares os drivers do leitor e talvez testares com um 3º leitor antes de voltares para o Gemplus ou o ACS novamente.