Italian [B4J] cerco una utility che possa dialogare con registratori di cassa in modalità XON XOFF

giannimaione

Well-Known Member
Licensed User
Longtime User
come da titolo, cerco un "piccolo" programma (che possa funzionare in background oppure avviato all'occorenza) su pc windows che possa dialogare con registratori di cassa che utilizzano il protocollo XON XOFF.
con altre esperienze precedenti, ho interfacciato diversi modelli di ECR (senza fare pubblicità, RCH, OLIVETTI, EPSON..) utilizzando utility che sono state fornite direttamente dal venditore di queste casse/ecr;

il più delle volte basta generare un file di testo, con le direttive/comandi richiesti dalla specifica utility; la stessa utility processa il file ed emette/stampa lo scontrino.

avevo preso in considerazione di creare qualcosa con B4J (libreria JSerial) ma al momento ,purtroppo, NON ho modo di eseguire test e prove con ECR, (anche perché andrei ad inficiare i dati della cassa);
il venditore di questa cassa "bastaso ... cetto la qualunque", si limita a dire che BISOGNA utilizzare il "PROGRAMMA XON XOFF";

qualche idea / suggerimento in merito?
 

micro

Well-Known Member
Licensed User
Longtime User
Ciao gianni
non è un programma ma lo scambio dati (controllo flusso) in modalità XON XOFF (che altro non sarebbe che software) a dispetto di quello Hardware che utilizza i segnali fisici DTR, RTS.. per scambiare dati tra due unità che dialogano serialmente (poi ci sarebbe anche quello ACK NACK).
Quindi presumo che ti dovrai collegare serialmente al registratore di cassa.
Solitamente lo si usa quando il buffer è limitato e non si può inviare tutto il pacchetto (pena la perdita di dati) al device.
Il tutto è regolato dal ricevimento di questi byte, se ricevo XON (0x11) posso ricevere dei byte altrimenti se non posso ricevere perchè impegnato in altro invio XOFF (0x13).
Se utilizzi Jserial di B4j l'utilizzo è del tutto trasparente, tu non devi fare nulla, (lo uso io per le stampanti a cartellino della epson) solo preoccuparti d'inizializzare bene la seriale altrimenti se l'uso è particolare ti toccherà gestire tu il tutto controllando i suddetti byte.
Select control
Case 0 'no control
Dim jo As JavaObject = comprint
jo.GetFieldJO("sp").RunMethod("setFlowControlMode", Array(0))
Case 1 'sw control XON XOFF
Dim jo As JavaObject = comprint
jo.GetFieldJO("sp").RunMethod("setFlowControlMode", Array(Bit.Or(4, 8)))
Case 2 'hw control
Dim jo As JavaObject = comprint
jo.GetFieldJO("sp").RunMethod("setFlowControlMode", Array(Bit.Or(1, 1)))
End Select
dove control è il tipo di controllo di flusso (per te 1)
e comprint la COM che utilizzerai per il dialogo.
 
Top