¡Bienvenido a la guía de usuario del Lector/Grabador de Tarjetas MSR605! Este documento te ayudará a comenzar a usar la aplicación para leer y escribir en tarjetas de banda magnética.
pip install -r requirements.txt
python main.py
La aplicación admite dos estándares principales de tarjetas magnéticas: ISO 7811 e ISO 7813. Comprender estos formatos es crucial para realizar operaciones de lectura y escritura adecuadas.
ISO 7811 es el estándar internacional para tarjetas de identificación con bandas magnéticas. Define:
%[código de formato][número de cuenta principal]^[nombre]^[fecha de vencimiento][código de servicio][datos discrecionales]?
%B1234567890123456^TITULAR/TARJETA^24011234567890123456789?
;[número de cuenta principal]=[fecha de vencimiento][código de servicio][datos discrecionales]?
;1234567890123456=24011234567890123456?
ISO 7813 es un subconjunto de ISO 7811 específicamente para tarjetas de transacciones financieras. Diferencias clave:
%B1234567890123456^TITULAR/TARJETA^24011234567890123456789?
;1234567890123456=24011234567890123456?
Crea plantillas personalizadas para diferentes tipos de tarjetas:
msr605
El módulo principal que contiene la funcionalidad básica.
MSR605
class MSR605:
def __init__(self, puerto=None, velocidad=9600, tiempo_espera=1):
"""Inicializa la conexión con el dispositivo MSR605.
Args:
puerto (str, opcional): Nombre del puerto serie. Si es None, se intenta la detección automática.
velocidad (int, opcional): Velocidad de comunicación en baudios. Por defecto: 9600.
tiempo_espera (int, opcional): Tiempo de espera de lectura en segundos. Por defecto: 1.
"""
pass
def conectar(self):
"""Establece la conexión con el dispositivo."""
pass
def desconectar(self):
"""Cierra la conexión con el dispositivo."""
pass
def esta_conectado(self):
"""Verifica si el dispositivo está conectado.
Returns:
bool: True si está conectado, False en caso contrario.
"""
pass
def leer_tarjeta(self, pistas=[1, 2, 3]):
"""Lee datos de una tarjeta de banda magnética.
Args:
pistas (list, opcional): Lista de pistas a leer (1, 2, 3). Por defecto: todas las pistas.
Returns:
dict: Diccionario que contiene los datos de las pistas con los números de pista como claves.
"""
pass
def escribir_tarjeta(self, datos_pista, verificar=True):
"""Escribe datos en una tarjeta de banda magnética.
Args:
datos_pista (dict): Diccionario con números de pista como claves y datos como valores.
verificar (bool, opcional): Si se debe verificar los datos escritos. Por defecto: True.
Returns:
bool: True si la escritura fue exitosa, False en caso contrario.
"""
pass
from msr605 import MSR605
# Inicializa y conecta al dispositivo
dispositivo = MSR605()
dispositivo.conectar()
# Lee todas las pistas
datos = dispositivo.leer_tarjeta()
print(f"Pista 1: {datos.get(1, 'Sin datos')}")
print(f"Pista 2: {datos.get(2, 'Sin datos')}")
print(f"Pista 3: {datos.get(3, 'Sin datos')}")
# Desconecta
dispositivo.desconectar()
from msr605 import MSR605
# Inicializa y conecta al dispositivo
dispositivo = MSR605()
dispositivo.conectar()
# Prepara los datos de las pistas
datos_pista = {
1: "%B1234567890123456^TITULAR/TARJETA^25121010000000000000000000000000000?",
2: ";1234567890123456=25121010000000000000?",
3: "" # Pista 3 vacía
}
# Escribe en la tarjeta
exito = dispositivo.escribir_tarjeta(datos_pista)
print(f"Escritura {'exitosa' if exito else 'fallida'}")
# Desconecta
dispositivo.desconectar()