Stampanti Fiscali Epson FP: Protocollo e Configurazione
Questa guida copre la configurazione e il protocollo di comunicazione delle stampanti fiscali Epson FP-81II e FP-90III utilizzate dalla piattaforma POS. Il driver EpsonFpDriver comunica via socket TCP sulla porta 9100.
Connessione TCP Socket
La stampante viene raggiunta via rete TCP. I parametri di connessione sono:
- Porta: 9100 (default Epson FP)
- Timeout connessione: 5 secondi
- Timeout risposta: 10 secondi per singolo comando
Il driver apre una connessione per ogni transazione e la chiude al termine. Non mantiene connessioni persistenti per evitare conflitti con altri client.
Formato PDU (Protocol Data Unit)
Ogni comando segue il formato:
STX (0x02) + CNT (2 char) + IDEN ('E') + CMD (4 char) + DATA + CKS (2 char) + ETX (0x03)
- CNT: contatore sequenziale (01-99, ciclico)
- IDEN: identificativo mittente, fisso
E - CMD: codice comando a 4 cifre
- DATA: payload specifico del comando
- CKS: checksum = somma ASCII del payload % 100, codificato come 2 cifre ASCII
Comandi Principali
| Comando | Descrizione | Data format |
|---|---|---|
1074 | Status inquiry | OP (2 char) |
1080 | Riga vendita | OP + DESC (20) + QTY (7) + PRICE (9) + DEP (2) + ALIGN (1) |
1083 | Sconto/maggiorazione | OP + DESC (20) + AMN (9) + TYPE (1) + DEP (2) + ALIGN (1) |
1084 | Pagamento | OP + LABEL (20) + AMOUNT (9) + CODE (3) + ALIGN (1) |
1085 | Apertura scontrino | OP (2 char) |
1086 | Subtotale | OP + FLAG (1) + DEP (2) |
1087 | Chiusura scontrino | OP (2 char) |
2001 | Rapporto X | OP (2 char) |
3001 | Chiusura Z | OP (2 char) |
Regola critica: DESC a 20 caratteri
Per i modelli FP-81II, il campo descrizione (DESC) deve essere esattamente 20 caratteri, troncato e con padding a destra. Usare una lunghezza diversa (es. 42 caratteri) causa l'errore ERR01.16 ("NON PREVISTO").
Formato AMN per comando 1083
Il valore AMN (importo sconto) e espresso in centesimi come intero a 9 cifre. Lo stesso formato si applica al campo PRICE del comando 1080 e AMOUNT del comando 1084. Esempio: 5.50 euro = 000000550.
Codici pagamento (comando 1084)
| Codice | Metodo |
|---|---|
000 | Contanti |
001 | Pagamento elettronico (carta) |
002 | Buono pasto / Ticket |
Formato Risposta e Rilevamento Errori
La risposta segue lo stesso formato PDU. Per distinguere una risposta OK da un errore:
Risposta OK: STX + CNT(2) + IDEN(1) + CMD(4) + DATA + CKS(2) + ETX
Risposta Errore: STX + CNT(2) + IDEN(1) + "ERR" + TIPO(2) + CODICE(2) + CKS(2) + ETX
Per rilevare un errore, rimuovere STX/ETX, saltare i primi 3 caratteri (CNT + IDEN) e verificare se il corpo inizia con ERR.
Errori comuni
| Codice | Significato | Causa tipica |
|---|---|---|
ERR01.16 | NON PREVISTO | Lunghezza dati errata (DESC non 20 char) |
ERR01.01 | Comando non riconosciuto | CMD invalido |
ERR03.xx | Stato stampante | Coperchio aperto, carta esaurita, memoria piena |
Status Inquiry (1074)
Il comando 1074 restituisce un campo fpStatus di 5 cifre:
| Posizione | Significato | Valori |
|---|---|---|
| 0 | Stampante | 0=OK, 2=carta quasi finita, 3=offline |
| 1 | Memoria | 0=OK, 2=da formattare, 5=piena |
| 2 | Giornata | 0=aperta, 1=chiusa |
| 3 | Documento | 0=fiscale aperto, 1=chiuso |
| 4 | Registrazione | stato registrazione |
FAQ
Quale porta di rete usano le Epson FP? La porta standard e 9100. Verificare che non sia bloccata dal firewall e che la stampante sia sulla stessa VLAN del POS.
Perche ricevo ERR01.16 su ogni riga?
Il campo DESC deve essere esattamente 20 caratteri. Verificare che il padding sia corretto: desc.padRight(20) in Dart, non padEnd(42).
Come configuro i reparti IVA?
Nel fiscalConfigJson del PrinterDevice, impostare la mappa vat_map (es. {"22": 1, "10": 2, "4": 3, "0": 4}) che associa l'aliquota IVA al numero di reparto della stampante.