Solución:
Hace un tiempo tuve que escribir lo que pensé que iba a ser un código de tarjeta inteligente simple y fácil y déjame decirte que no fue un paseo por el parque. En primer lugar, resultó que es difícil encontrar buena información sobre tarjetas inteligentes en la red. Y cuando encontré varios sitios web, hubo mucha discusión sobre las llamadas API de Win32 subyacentes y un montón de otras cosas de bajo nivel, que no son fáciles de leer.
La cosa es que se llaman inteligente tarjetas por una razón. Esa razón es que básicamente está interactuando con un microprocesador integrado enviándole comandos que comprende y responde. Esto puede complicarse un poco porque muchos de los fabricantes pensaron que era una buena idea implementar sus propios comandos, por lo que muchas cosas dependen del tipo de tarjeta que esté utilizando. Además de eso, hay tarjetas que parecen tarjetas inteligentes pero que en realidad no son tarjetas inteligentes y ni siquiera usan ninguna de las interfaces de tarjetas inteligentes “estándar”, por lo que terminas usando la API de Windows SmartCard solo para encender tu lector, y el API especial del lector de tarjetas inteligentes proporcionada como .lib en algún rincón oscuro de su sitio web para el resto …
Bueno, finalmente conseguí que mi aplicación funcionara, pero como dije, no fue fácil. De todos modos, cometí un gran error al asumir que no sería muy difícil de hacer.
Si realmente quieres meterte en las tarjetas inteligentes, supongo que tu mejor opción sería conseguir un buen libro sobre el tema, pero como yo también soy poco más que un novato, realmente no puedo ayudarte en eso.
En cuanto a los sitios web, lo más útil en términos de C # que pude desenterrar fue A Smartcard Framework para .Net. Tenga en cuenta que este no es el mismo artículo que el publicado por michaelvdnest, aunque el autor es el mismo. El artículo al que me vinculé describe un contenedor de C # para la API de tarjeta inteligente nativa, mientras que michaelvdnest agrega XML a la mezcla, aunque no sé exactamente de qué manera porque aún no lo he leído.
Así que empieza a analizar el código suministrado con el artículo y buena suerte. Si no me falla la memoria, el material de enumeración de lectores es bastante fácil de encontrar.
Consulte Smart Card Framework para .NET en Code Project. Describe un marco XML para .NET para programar aplicaciones de tarjetas inteligentes.
Sé que es muy tarde …
pero
Puede obtener una biblioteca profesional muy fácil de usar y gratuita para uso personal aquí:
Chip Card .NET Class Library for C#, VB.NET Smart Card .NET Software Developers
También hay una biblioteca comunitaria de tarjetas inteligentes (de uso completamente gratuito) aquí
https://www.nuget.org/packages/PCSC
En los últimos años, he preferido usar Nu-get one en lugar de la API de tarjeta inteligente, si necesita soporte comercial, sin embargo, la biblioteca API de tarjeta inteligente es la mejor opción.
Una vez que lo tenga, debe comenzar a comprender las APDU y cómo transportarlas de la tarjeta a la terminal.
Realmente es un gran tema que cubrir, tengo un código que leerá todos los elementos comunes en una tarjeta EMV Chip & Pin estándar. de lo que necesita emprender para leer la tarjeta.
Para otras tarjetas, entonces depende de la tarjeta en sí, por ejemplo, tengo un lector de tarjetas y tarjetas en blanco aquí, y tengo algunos datos personalizados sobre algunas de ellas a los que solo yo sé cómo acceder, pero todavía tengo un antiguo satélite y tarjetas de viaje que vuelven a ser diferentes.
Puede obtener algunas ideas aquí:
¿Cómo leo el PAN de una EMV SmartCard de Java?
y hay mucha información sobre tarjetas inteligentes en general que se puede encontrar aquí:
https://web.archive.org/web/20160329205518/http://wrankl.de/SCTables/SCTables.html
especialmente las cosas genéricas (de las cuales hay algunas)