Bem-vindo ao guia do usuário do Leitor/Gravador de Cartões MSR605! Este documento irá ajudá-lo a começar a usar o aplicativo para ler e gravar em cartões de tarja magnética.
pip install -r requirements.txt
python main.py
O aplicativo suporta dois padrões principais de cartões magnéticos: ISO 7811 e ISO 7813. Entender estes formatos é crucial para operações adequadas de leitura e gravação.
ISO 7811 é o padrão internacional para cartões de identificação com tarja magnética. Define:
%[código de formato][número da conta principal]^[nome]^[data de validade][código de serviço][dados discricionários]?
%B1234567890123456^TITULAR/CARTAO^24011234567890123456789?
;[número da conta principal]=[data de validade][código de serviço][dados discricionários]?
;1234567890123456=24011234567890123456?
ISO 7813 é um subconjunto do ISO 7811 especificamente para cartões de transações financeiras. Principais diferenças:
%B1234567890123456^TITULAR/CARTAO^24011234567890123456789?
;1234567890123456=24011234567890123456?
Crie modelos personalizados para diferentes tipos de cartões:
msr605
O módulo principal que contém a funcionalidade básica.
MSR605
class MSR605:
def __init__(self, porta=None, velocidade=9600, tempo_espera=1):
"""Inicializa a conexão com o dispositivo MSR605.
Args:
porta (str, opcional): Nome da porta serial. Se None, tenta detecção automática.
velocidade (int, opcional): Velocidade de comunicação em bauds. Padrão: 9600.
tempo_espera (int, opcional): Tempo de espera da leitura em segundos. Padrão: 1.
"""
pass
def conectar(self):
"""Estabelece a conexão com o dispositivo."""
pass
def desconectar(self):
"""Fecha a conexão com o dispositivo."""
pass
def esta_conectado(self):
"""Verifica se o dispositivo está conectado.
Returns:
bool: True se estiver conectado, False caso contrário.
"""
pass
def ler_cartao(self, faixas=[1, 2, 3]):
"""Lê dados de um cartão de tarja magnética.
Args:
faixas (list, opcional): Lista de faixas para ler (1, 2, 3). Padrão: todas as faixas.
Returns:
dict: Dicionário contendo os dados das faixas com os números das faixas como chaves.
"""
pass
def gravar_cartao(self, dados_faixa, verificar=True):
"""Grava dados em um cartão de tarja magnética.
Args:
dados_faixa (dict): Dicionário com números de faixa como chaves e dados como valores.
verificar (bool, opcional): Se deve verificar os dados gravados. Padrão: True.
Returns:
bool: True se a gravação foi bem-sucedida, False caso contrário.
"""
pass
from msr605 import MSR605
# Inicializa e conecta ao dispositivo
dispositivo = MSR605()
dispositivo.conectar()
# Lê todas as faixas
dados = dispositivo.ler_cartao()
print(f"Faixa 1: {dados.get(1, 'Sem dados')}")
print(f"Faixa 2: {dados.get(2, 'Sem dados')}")
print(f"Faixa 3: {dados.get(3, 'Sem dados')}")
# Desconecta
dispositivo.desconectar()
from msr605 import MSR605
# Inicializa e conecta ao dispositivo
dispositivo = MSR605()
dispositivo.conectar()
# Prepara os dados das faixas
dados_faixa = {
1: "%B1234567890123456^TITULAR/CARTAO^25121010000000000000000000000000000?",
2: ";1234567890123456=25121010000000000000?",
3: "" # Faixa 3 vazia
}
# Grava no cartão
sucesso = dispositivo.gravar_cartao(dados_faixa)
print(f"Gravação {'bem-sucedida' if sucesso else 'falhou'}")
# Desconecta
dispositivo.desconectar()