Lettore/Scrittore di Carte MSR605 - Guida Utente

Benvenuto nella guida utente del Lettore/Scrittore di Carte MSR605! Questo documento ti aiuterà a iniziare a utilizzare l’applicazione per leggere e scrivere su carte a striscia magnetica.

Indice

  1. Installazione
  2. Per Iniziare
  3. Lettura Carte
  4. Scrittura Carte
  5. Configurazione
  6. Risoluzione dei Problemi

Installazione

Windows

  1. Scarica l’ultimo installer dalla pagina Release
  2. Esegui l’installer e segui le istruzioni a schermo
  3. Collega il tuo dispositivo MSR605 a una porta USB disponibile
  4. Avvia l’applicazione dal Menu Start o dal collegamento sul desktop

Linux/macOS

  1. Assicurati di avere Python 3.8+ installato
  2. Installa le dipendenze richieste:
    pip install -r requirements.txt
    
  3. Avvia l’applicazione:
    python main.py
    

Per Iniziare

Collegamento del Dispositivo

  1. Collega il tuo dispositivo MSR605 al computer utilizzando il cavo USB
  2. L’applicazione dovrebbe rilevare automaticamente il dispositivo
  3. La barra di stato mostrerà “Dispositivo Connesso” in caso di successo

Interfaccia Principale

Lettura Carte

  1. Inserisci una carta a striscia magnetica nel lettore
  2. Fai clic sul pulsante “Leggi”
  3. I dati della carta verranno visualizzati nella finestra principale
  4. Per salvare i dati, fai clic su “File” > “Salva con nome…”

Scrittura Carte

  1. Inserisci una carta scrivibile nello scrittore
  2. Inserisci o incolla i dati che desideri scrivere nei campi delle tracce appropriate
  3. Seleziona le tracce su cui vuoi scrivere
  4. Fai clic sul pulsante “Scrivi”
  5. La barra di stato mostrerà il risultato dell’operazione

Formati di Carta Supportati

L’applicazione supporta due standard principali per le carte magnetiche: ISO 7811 e ISO 7813. Comprendere questi formati è fondamentale per eseguire correttamente le operazioni di lettura e scrittura.

ISO 7811

ISO 7811 è lo standard internazionale per le carte di identificazione con strisce magnetiche. Definisce:

ISO 7813

ISO 7813 è un sottoinsieme di ISO 7811 specifico per le carte di transazione finanziaria. Differenze chiave:

Selezione del Formato Corretto

  1. Vai su Impostazioni > Formato Carta
  2. Scegli tra:
  3. Fai clic su Applica per salvare le impostazioni

Scrittura Carte

  1. Seleziona le tracce su cui vuoi scrivere
  2. Scegli il formato carta appropriato (ISO 7811 o ISO 7813)
  3. Inserisci i dati nei campi delle tracce appropriate seguendo il formato selezionato
  4. Fai clic sul pulsante “Scrivi”
  5. L’applicazione convaliderà i dati ed eseguirà l’operazione di scrittura
  6. Lo stato dell’operazione verrà visualizzato nella barra di stato

Configurazione

Impostazioni Dispositivo

Impostazioni Applicazione

Risoluzione dei Problemi

Problemi Comuni

Dispositivo Non Rilevato

Fallimento Lettura/Scrittura

Arresto Improvviso dell’Applicazione

Lettore/Scrittore di Carte MSR605 - Documentazione API

Questo documento fornisce informazioni dettagliate sull’API del Lettore/Scrittore di Carte MSR605 per gli sviluppatori che desiderano estendere o integrare l’applicazione.

Indice

  1. Panoramica
  2. Moduli Principali
  3. Comunicazione con il Dispositivo
  4. Operazioni sulle Carte
  5. Formati Dati
  6. Gestione degli Errori
  7. Esempi

Panoramica

L’API MSR605 fornisce un’interfaccia Python per interagire con i lettori/scrittori di carte a striscia magnetica. L’API è progettata per essere facile da usare fornendo al contempo accesso a tutte le funzionalità del dispositivo.

Moduli Principali

msr605

Il modulo principale che contiene le funzionalità di base.

Classe MSR605

class MSR605:
    def __init__(self, port=None, baudrate=9600, timeout=1):
        """Inizializza la connessione al dispositivo MSR605.
        
        Args:
            port (str, opzionale): Nome della porta seriale. Se None, tenta il rilevamento automatico.
            baudrate (int, opzionale): Velocità di trasmissione. Predefinita a 9600.
            timeout (int, opzionale): Timeout di lettura in secondi. Predefinito a 1.
        """
        pass
    
    def connect(self):
        """Stabilisce la connessione al dispositivo."""
        pass
    
    def disconnect(self):
        """Chiude la connessione al dispositivo."""
        pass
    
    def is_connected(self):
        """Verifica se il dispositivo è connesso.
        
        Returns:
            bool: True se connesso, False altrimenti.
        """
        pass
    
    def read_card(self, tracks=[1, 2, 3]):
        """Legge i dati da una carta a striscia magnetica.
        
        Args:
            tracks (list, opzionale): Lista delle tracce da leggere (1, 2, 3). Predefinito: tutte le tracce.
            
        Returns:
            dict: Dizionario contenente i dati delle tracce con i numeri di traccia come chiavi.
        """
        pass
    
    def write_card(self, track_data, verify=True):
        """Scrive i dati su una carta a striscia magnetica.
        
        Args:
            track_data (dict): Dizionario con i numeri di traccia come chiavi e i dati come valori.
            verify (bool, opzionale): Se verificare i dati scritti. Predefinito a True.
            
        Returns:
            bool: True se la scrittura è andata a buon fine, False altrimenti.
        """
        pass

Comunicazione con il Dispositivo

Protocollo Seriale

Comandi

| Comando | Descrizione | Formato | |———|————-|———| | ESC e | Reimposta il dispositivo | \x1be | | ESC s | Leggi carta | \x1bs | | ESC w | Scrivi carta | \x1bw | | ESC x | Imposta livello di sicurezza | \x1bx |

Risposte

| Risposta | Descrizione | |———-|————-| | \x1b1 | Comando eseguito con successo | | \x1b2 | Comando fallito | | \x1b3 | Nessuna carta presente | | \x1b4 | Errore protezione scrittura |

Operazioni sulle Carte

Lettura Dati

from msr605 import MSR605

# Inizializza e connetti al dispositivo
device = MSR605()
device.connect()

# Leggi tutte le tracce
data = device.read_card()
print(f"Traccia 1: {data.get(1, 'Nessun dato')}")
print(f"Traccia 2: {data.get(2, 'Nessun dato')}")
print(f"Traccia 3: {data.get(3, 'Nessun dato')}")

# Leggi tracce specifiche
data = device.read_card(tracks=[1, 2])

# Disconnetti
device.disconnect()

Scrittura Dati

from msr605 import MSR605

# Inizializza e connetti al dispositivo
device = MSR605()
device.connect()

# Prepara i dati delle tracce
track_data = {
    1: "%B1234567890123456^INTESTATARIO/NOME^25121010000000000000000000000000000?",
    2: ";1234567890123456=25121010000000000000?",
    3: ""  # Traccia 3 vuota
}

# Scrivi sulla carta
success = device.write_card(track_data)
print(f"Scrittura {'riuscita' if success else 'fallita'}")

# Disconnetti
device.disconnect()

Formati Dati

Formati delle Tracce

Caratteri Speciali

| Carattere | Descrizione | |———–|————-| | % | Carattere di inizio (Traccia 1) | | ; | Carattere di inizio (Tracce 2 e 3) | | ? | Carattere di fine | | ^ | Separatore (Traccia 1) | | = | Separatore (Traccia 2) | | \\ | Carattere di escape |

Gestione degli Errori

Eccezioni

| Eccezione | Descrizione | |———–|————-| | MSR605Error | Eccezione di base per tutti gli errori MSR605 | | MSR605ConnectionError | Errori relativi alla connessione | | MSR605CommandError | Errori di esecuzione comandi | | MSR605CardError | Errori nelle operazioni sulla carta |

Esempio

from msr605 import MSR605, MSR605Error

try:
    device = MSR605()
    device.connect()
    data = device.read_card()
    print(data)
except MSR605Error as e:
    print(f"Errore: {e}")
finally:
    if 'device' in locals():
        device.disconnect()

Esempi

Utilizzo di Base

from msr605 import MSR605

def main():
    try:
        # Inizializza e connetti
        device = MSR605()
        print("Connessione al dispositivo in corso...")
        device.connect()
        
        if not device.is_connected():
            print("Impossibile connettersi al dispositivo")
            return
            
        print("Connesso. Passa una carta...")
        
        # Leggi la carta
        data = device.read_card()
        print("\nDati Carta:")
        for track, value in data.items():
            print(f"Traccia {track}: {value}")
            
    except Exception as e:
        print(f"Si è verificato un errore: {e}")
    finally:
        if 'device' in locals():
            device.disconnect()
            print("\nDisconnesso dal dispositivo")

if __name__ == "__main__":
    main()

Utilizzo Avanzato

from msr605 import MSR605
import json
import time

class GestoreCarte:
    def __init__(self):
        self.device = MSR605()
        self.config = self._carica_configurazione()
        
    def _carica_configurazione(self):
        # Carica la configurazione da file
        try:
            with open('config.json', 'r') as f:
                return json.load(f)
        except FileNotFoundError:
            return {'baudrate': 9600, 'timeout': 1}
            
    def avvia(self):
        try:
            # Connetti con configurazione
            self.device = MSR605(
                baudrate=self.config.get('baudrate', 9600),
                timeout=self.config.get('timeout', 1)
            )
            self.device.connect()
            
            while True:
                # Aspetta che venga inserita una carta
                print("Inserisci una carta (premi Ctrl+C per uscire)...")
                data = self.device.read_card()
                
                if data:
                    print("\nDati letti:")
                    for track, value in data.items():
                        print(f"Traccia {track}: {value}")
                    
                    # Elabora i dati della carta qui
                    self._elabora_dati_carta(data)
                
                time.sleep(1)
                
        except KeyboardInterrupt:
            print("\nInterruzione da tastiera ricevuta.")
        except Exception as e:
            print(f"Errore: {e}")
        finally:
            self.device.disconnect()
            print("Disconnesso dal dispositivo")
    
    def _elabora_dati_carta(self, dati):
        """Elabora i dati della carta letta."""
        # Implementa qui la logica di elaborazione
        pass

if __name__ == "__main__":
    gestore = GestoreCarte()
    gestore.avvia()

Risoluzione dei Problemi Avanzata

Ricevo un errore di “Timeout di connessione”

  1. Verifica che il cavo USB sia collegato correttamente
  2. Prova a riavviare il dispositivo
  3. Controlla se il driver è installato correttamente
  4. Contatta l’assistenza con i dettagli dell’errore

Ricevo errori di “Dispositivo non trovato”

  1. Scollega e riconnetti il dispositivo
  2. Prova una diversa porta USB
  3. Riavvia il computer
  4. Verifica che il dispositivo sia elencato nel Gestione Dispositivi

La scrittura fallisce con “Errore di protezione scrittura”

  1. Assicurati che la carta non sia protetta dalla scrittura
  2. Prova con una carta diversa
  3. Verifica che il dispositivo supporti la scrittura sulla carta

Specifiche Tecniche

Standard Supportati

Specifiche delle Tracce

Visualizzazione Dati

Come Visualizzare i Dati in Formato Tabellare

  1. Seleziona la scheda “Visualizzazione” nella finestra delle funzioni avanzate
  2. Fai clic sulla scheda “Tabella”
  3. Visualizza i dati formattati in una tabella

Come Visualizzare i Dati in Formato Grafico

  1. Seleziona la scheda “Visualizzazione” nella finestra delle funzioni avanzate
  2. Fai clic sulla scheda “Grafico”
  3. Visualizza le rappresentazioni grafiche per ciascuna traccia

Personalizzazione