tesis problemas niños los lectura lectoescritura escritura dislexia comunes causas años aprendizaje adolescentes c# .net serial-port smartcard

c# - niños - problemas de lectura y escritura pdf



Problemas con la lectura de la tarjeta inteligente (2)

Mientras traes la tarjeta A cerca del lector de tarjetas y falla. Después de eso, cada vez que acerca la tarjeta A al lector de tarjetas, se produce un error.

No estoy seguro, pero supongo que cuando falla alguna, la segunda posición de la matriz de bytes rs[1] contiene el código de la falla. Por lo tanto, después de eso, cada vez que acerca la tarjeta A al lector de tarjetas, se produce un error porque la segunda posición de la matriz de bytes podría tener un valor anterior.

Por lo tanto, intente borrar la matriz de bytes que podría resolver su problema.

Tengo un lector que tiene un documento casi exacto como este: http://www.jinmuyu.com/download/JMY680A_EN.pdf principal diferencia es que mi lector afirma que también admite tarjetas TYPE B.

Tengo tres tarjetas ISO 14443, que pruebo consecutivamente, y siguiendo el código:

byte[] rs = null; Thread.Sleep(500); // Set module Idle Random r = new Random(); byte rInt = (byte) r.Next(0, 255); rs = send(new byte[] { 0x12, rInt }); if (rs[1] == 0xED) throw new Exception("Failed set idle"); Thread.Sleep(500); //// Request B //rs = send(new byte[] { 0x60, 0x00, 0x00 }); //if (rs[1] == 0x9F) // throw new Exception("Failed card requestB"); // RequestA rs = send(new byte[] { 0x20, 0x00 }); if (rs[1] == 0xDF) throw new Exception("Failed card requestA"); // Reset cardA rs = send(new byte[] { 0x30 }); if(rs[1] == 0xCF) throw new Exception("Failed card reset"); // Do other work, Send some APDU to card, etc. // ........ // Exit program

La mayoría de las veces, este código funciona bien con las tres tarjetas. Sin embargo, a veces, cuando RequestA una de las tarjetas al lector, falla la llamada de solicitud de tarjeta A (solicitud RequestA ). Entonces siempre fallará con esta tarjeta, hasta que traiga una nueva tarjeta al lector. ¿Alguien tiene alguna idea de lo que puede estar causando esto? Tal vez necesito algunos retrasos entre llamadas? ¿O necesita llamar a otra función ( relacionada con RequestA ) antes de llamar a RequestA ?

send es un método implementado utilizando la clase SerialPort . De la siguiente manera:

  1. En cada invocación de envío, se crea un nuevo objeto SerialPort
  2. Llamada Open en objeto creado arriba
  3. Write y Read algunos datos
  4. Cierre la conexión utilizando el objeto Close en que se creó en esta instancia de método

por cierto esta es una respuesta exitosa de una de las tarjetas (en la que el lector falló una vez) en el comando RequestA:

ID | ATQ | SAK 0xe1 0x8f 0x68 0xe6 0x04 0x00 0x28


No puedo estar seguro de cuál es el problema de su código, pero parece ser un problema cuando una conexión recibe un error, no se abre ninguna conexión nueva. Debido a que SerialPort es un recurso de hardware que necesitará para manejar el desecho, el SerialPort probablemente implementa IDisposable, lo que significa que puede usar el uso asegúrese de que la conexión esté cerrada y desechada. Probablemente, traer una nueva tarjeta hará esto, sin embargo, cuando use la misma tarjeta, seguirá trabajando con el puerto serie en estado de falla.