EPSON ITALIA SpA

 

Specifiche ACTIVEX per stampante fiscali serie FP

 

Nome controllo - EpsonFP2.EpsonFPControl

 


Revision History

 

Ver Rev Fogli Commenti Data Autore
- Draft - Prima versione Agosto 2001 Verona Sw
- A - Inserito: Rev History, Elenco proprietà da sviluppare, descrizione parametri funzione 28 Agosto 2001  RC
- B - Inserito descrizione architettura Active X, aggiornato  proprietà, modificato i mnemonici dei seguenti metodi: da Get a Read , definito opX per metodi relativi a trame con Header1=2 mentre con opZ quelli con Header1 = 3, modificato inoltre le Signature dei seguenti metodi: opProgOpr,  modificato inoltre le priorità 1 dei Metodi 31 Agosto 2001  RC
- C - Eliminazione di LastQtaDec e sostituzione del tipo di dati di LastQta da Integer a Single, differenziate LastMM per i mesi e LastMin per i minuti, LastMatrFisc diventa di tipo Long. Introdotta la proprietà EuroSettings. Cambiata la descrizione per opContante per la chiusura scontrino con default=0. Controllata signature per opEndSNoFisc,opZTotOprPer,opReadDataOra,opReadReparto,opReadTassa, opReadCredCC, opRepartoStorno (tolto il parametro Qta), opProgDataOra (non restituisce data e ora). In opReadReparto l'unico parametro in ingresso è solo il numero del reparto. Aggiunta la proprietà LastDate ai metodi che la valorizzano. Accorpate le due sezioni Varie in una sola. Introdotto l'errore OP_EUROLOCK e le costanti EPS_EUROSETTINGS_... 5 Settembre 2001  Verona Sw
1.0.7 D - Definito a 40 il numero massimo di caratteri per il parametro Descr nel metodo opMsgVisoreCortesia.
Definito di 4 byte il valore di N.SF e NSNF
Aggiunta la proprietà LastNReparto nelle proprietà impostate da opReadReparto
In opRepartoStornoQDec rinominato il parametro Qta in QtaDec in conformità con opRepartoQDec
Definita in tutto il documento la corretta denominazione della funzione per il riavvio stampa quando la carta è finita. Si chiama opRiavvioStampaDaFineCarta
Uniformato il nome del parametro che descrive il numero dell'operatore (non il codice). Per tutte le funzioni che lo usano questi si chiama NumeroOperatore. Le funzione interessate da questa modifica sono: opXTotOprGior, opXTotOprPer, opZTotOprGior, opZTotOprPer, opProgOpr, opReadOpr
Introdotte tre nuove proprietà (si sola lettura): Major, Minor e Revision per dare la possibilità al programmatore di conoscere la versione del controllo via software.
Correzioni ortografiche
 26 Settembre 2001  Verona Sw
1.0.8 E - Viene cambiato (con uno swap fra i valori 2 e 3) il valore del FrameCounter anche nel caso in cui non sia stata ricevuto il frame risposta da parte del PC (ma sia stato ricevuto l'ACK) a differenza delle implementazioni precedenti, che prevedevano il cambio del valore del FrameCounter solo nel caso di ricezione del frame di risposta entro il timeout programmato.  01 Ottobre 2001  Verona Sw
1.0.9 - - Su indicazione di Garavaglia Carlo (Epson) viene cambiato (con uno swap fra i valori 2 e 3) il valore del FrameCounter dopo la spedizione di ogni messaggio alla cassa (indipendente dal messaggio di risposta e dalla ricezione dell'ACK) a differenza dell'implementazione precedente, che prevedeva il cambio del valore del FrameCounter solo se era stato ricevuto l'ACK.  09 Ottobre 2001  Verona Sw
1.0.20 - - Implementati i metodi per i resi: opRepartoReso, opRepartoResoQInt e opRepartoResoQDec. (come da esigenze di COGITO)
Corretta colorazione di opRepartoQDec: era riportato con priorita' 1 (colore grigio chiaro), ma in realta' era gia' stato implementato.
 12 Novembre 2001  Verona Sw
1.0.21 - - * Implementati i metodi: opAlzoCarta, opRepartoPercMinus, opRepartoPercPlus, opReadValuta, opProgValuta, opContanteVal
* Aggiunte le costanti: EPS_SCONTRINO, EPS_GIORNALE, EPS_SCONTRINO_GIORNALE (usate da opAlzoCarta) e tutte le costanti di errore interni della stampante (hanno tutte il prefisso EERR_)
* Aggiunte le proprietà: LastPercReparto, LastNettoPrecedente (usate da opRepartoPercMinus e opRepartoPercPlus) e LastNValuta, LastDescValuta, LastValoreValuta (usate da opReadValuta) e LastImportoValuta (usata da opContanteVal)
* Nella descrizione dei tipi delle funzioni aggiunta la documentazione per il tipo Double usato per definire il valore del rapporto di cambio delle valute straniere.
* Corretta colorazione delle funzioni:
opRiavvioStampaDaFineCarta, opRepartoQDec, opRepartoStorno, opRepartoStornoQDec, opIniSNoFisc, opDatiSNoFisc, opEndSNoFisc, opDescAgg, opZTotFinGior, opZTotOreGior, opZTotOprGior, opZTotFinPer, opZTotOrePer, opZTotOprPer, opZFiscMem, opProgRigaInt, opAttivazioneEuro, opReadMatrFisc, opProgDataOra, opProgOpr, opProgFlag, opProgConf, opProgTipoRigaInt, opReadDataOra, opReadReparto, opReadTassa,opReadCredCC,opProgOpr, opProgFlag, opProgConf, opProgTipoRigaInt,opReadDataOra, opReadReparto, opReadTassa, opReadCredCC, opReadTicket, opReadOpr, opReadFlag, opReadConf, opReadTipoRigaInt: erano riportate con priorita' 1 (colore grigio chiaro), ma in realta' erano gia' state implementate nella versione precedente.
  9 Gennaio 2002  Verona Sw
2.0.32 - - * Modificata l'interfaccia ActiveX del controllo (di conseguenza rotta la compatibilità binaria): tutti i metodi pubblici esposti dall'interfaccia (quindi tutti i metodi opXXX ed il metodo GetLastErrorDescription) ora hanno i parametri passati per valore e non più per riferimento. (Problema sollevato da "Apete")
Di conseguenza è stato modificato il nome della libreria in EpsonFP2.EpsonFPControl
Per distinguere il controllo EpsonFP2 dal precedente EpsonFP, oltre al nome ovviamente, è stato aumentato il major number della release (ora siamo alla 2).
Inoltre gli sviluppatori troveranno un numero 2 sulle icone del controllo sia nella toolbox dell'IDE dell'ambiente di sviluppo, sia quando aggiungeranno il controllo EpsonFP2 al container (per esempio un Form in VB) che lo conterrà.
Da questo momento gli sviluppatori che desiderino utilizzare EpsonFP2 debbono includerlo nella loro applicazione e ricompilarla rispettando le nuove specifiche sui parametri dei metodi pubblici.
* Nella documetazione aggiunto il termine ByVal prima di tutti i parametri dei metodi modificati per sottolineare ancora una volta il fatto che i parametri sono passati per valore e non più per riferimento.
  14 Febbraio 2002  Verona Sw
2.0.33 - - * Aggiunti i metodi opRepartoAbbuono, opContanteEntrate, opContanteUscite, opMsgPromo, opContanteConDesc, opProgContanteConDesc con le relative implementazioni.
* Aggiunta la proprietà LastNContanteConDesc.
* Aggiunte le costanti OP_CODE_CONTDESC_RIM e OP_CODE_CONTDESC_REST
* Le proprietà relative agli importi in valuta dopo l'esecuzione dei metodi che le ritornano prevedono ora, già come tipo di dato Currency, il numero di cifre decimali corrispondente all'impostazione della proprietà EuroSettings (EPS_EUROSETTINGS_EURO o EPS_EUROSETTINGS_LIRE). Le proprietà interessate sono: LastImp, LastRest, LastRim, LastSubT, LastImportoValuta, LastTotFisc, LastTotNFisc, LastSubTotFisc, LastSubTotNFisc, LastValoreTicket, LastPre, LastNettoPrecedente, LastPrezzo1, LastPrezzo2, LastPrezzo3 , LastLimite.
  13 Dicembre 2002  Verona Sw
2.0.41 - - * Aggiunti i seguenti metodi con le relative implementazioni:
  • opContanteRecCredito
  • opContanteEntrateVal
  • opContanteUsciteVal
  • opAssegnoRecCredito
  • opAssegnoEntrate
  • opAssegnoUscite
  • opAssegnoEntrateVal
  • opAssegnoUsciteVal
  • opAssegnoVal
  • opNonCalcola
  • opFattura
  • opRicFiscale
  • opScontrino
  • opPartitaIVA
  • opCodFiscale
  • opPromoAgg
  • opXTotPLUGior
  • opXTotPLUPer
  • opZTotPLUGior
  • opZTotPLUPer
  • opZFNumPro
  • opZFDate
  • opZSommaSFDate
  • opProgParFatt
  • opReadParFatt
  • opReadContDesc
* Aggiunti i seguenti metodi con le relative implementazioni (solo per FP260 e FP90):
  • opReadNumeroScontrino
  • opPrintBarcode
  • opRepartoValPlus
  • opSubTotValPlus
  • opRepartoLight
  • opReadStato
  • opProgLogoGrafico
* Aggiunti i metodi di lettura totali finanziari con le relative implementazioni (solo per FP260 e FP90):
  • opReadTotaleFinanziarioAnnulliScontrino
  • opReadTotaleFinanziarioApertureCassetto
  • opReadTotaleFinanziarioAssegni
  • opReadTotaleFinanziarioChiusureGiornaliere
  • opReadTotaleFinanziarioContanti
  • opReadTotaleFinanziarioContantiConDesc
  • opReadTotaleFinanziarioContantiVal
  • opReadTotaleFinanziarioCorrezioni
  • opReadTotaleFinanziarioCredCC
  • opReadTotaleFinanziarioEntrateAssegni
  • opReadTotaleFinanziarioEntrateCont
  • opReadTotaleFinanziarioFatture
  • opReadTotaleFinanziarioFiscaleGiornaliero
  • opReadTotaleFinanziarioMaggiorazioniPerc
  • opReadTotaleFinanziarioMaggiorazioniVal
  • opReadTotaleFinanziarioRecCreditiAssegni
  • opReadTotaleFinanziarioRecCreditiContanti
  • opReadTotaleFinanziarioReparto
  • opReadTotaleFinanziarioResi
  • opReadTotaleFinanziarioRicevute
  • opReadTotaleFinanziarioScontiPerc
  • opReadTotaleFinanziarioScontiVal
  • opReadTotaleFinanziarioScontriniFiscali
  • opReadTotaleFinanziarioScontriniMemoriaFiscale
  • opReadTotaleFinanziarioScontriniNonFiscali
  • opReadTotaleFinanziarioStorni
  • opReadTotaleFinanziarioTasse
  • opReadTotaleFinanziarioTicket
  • opReadTotaleFinanziarioUsciteAssegni
  • opReadTotaleFinanziarioUsciteCont
* Aggiunti i metodi per la lettura del D.G.F.E. con le relative implementazioni (solo per FP90):
  • opReadDGFEDate
  • opReadDGFENumPro
  • opZDGFEDate
  • opZDGFENumPro
* Aggiunta la proprietà Retry con accesso in lettura/scrittura per la gestione delle ritrasmissioni a cura dell'utilizzatore di questo OCX
* Aggiunta la proprietà LastDescContante per il metodo opReadContDesc
* Aggiunta la proprietà LastNum per il metodo opNonCalcola
* Aggiunta le proprietà LastNumFatt, LastNRigheFatt, LastNRigheBiancheFatt, LastStampaIntestazione, LastDescEsenzione per il metodo opReadParFatt
* Aggiunta le proprietà LastParametroDaLeggere, LastTotalePezziLetti, LastTotaleImportiLetti, LastTotaleConteggiLetti , LastDatoLetto, LastTotalePezziRepartoLetti, LastImponibileLetto per i metodi opReadTotaleFinanziarioXXXXXX
* Aggiunta le proprietà LastCPUsw, LastMFsw, LastState per il metodo opReadStato
* Aggiunta le proprietà LastOEM, LastModel, LastMatrFiscExtended per il metodo opReadMatrFisc
* Aggiunta le proprietà LastNS, LastNR, LastDGFE per i metodi opReadDGFENumPro e opReadDGFEDate
* Aggiunte le costanti OP_CODE_DGFENUMPRO_VAL e OP_CODE_DGFE_END usate dai metodi opReadDGFENumPro e opReadDGFEDate per verificare se la stampante ha ancora altre righe di scontrino da spedire e se le righe degli socntrini sono finite.
* Aggiunte le costanti EPS_ALIGN_SX e EPS_ALIGN_DX usate dal metodo opRepartoLight
* Aggiunte le costanti OP_CODE_ASSEGVAL_RIM e OP_CODE_ASSEGVAL_REST usate dal metodo opAssegnoVal
* Aggiunta la costante OP_ERR_FILENOTFOUND usata dal metodo opProgLogoGrafico
* Aggiunta la proprietà LastTotAC per il metodo opReadNumeroScontrino
* Aggiunte le costanti EPS_GIORNALIERO e EPS_PERIODICO usate da tutti i metodi opReadTotaleFinanziarioXXXXXX per scegliere tra il totale giornaliero o il totale periodico.
* Esteso il numero di righe per le descrizioni aggiuntive opRigheAgg da 6 a 9 (1-6 per FP210 oppure 1-9 per FP260/FP90)
* Esteso il numero per le configurazioni (in opReadConf e opProgConf) da 10 a 12 (1-11 per FP260 oppure 1-12 per FP90)
* Esteso il parametro Anno di opProgDataOra a 4 byte (ora è possibile specificare 2003 invece di 03). Resta ancora in ogni caso possibile specificare 03 per indicare 2003.
* Corretto in opContanteVal: non venivano valorizzate le proprietà che sono riportate nella documentazione di questo metodo.
* Corretto in opRigheAgg, opMsgPromo, opProgRigaInt: non vengono più eliminati gli spazi in testa alla stringa di descrizione. In questo modo è possibile centrare le descrizioni sullo scontrino.
* Corretta la documentazione: nella parte dove si descrivono le proprietà impostate dai vari metodi è stata corretto il tipo delle proprietà LastNumSF e LastNumSNF da Integer a Long (relativamente a tutti i metodi che impostano queste proprietà)
* Aggiunta alla documentazione che alcuni metodi sono validi solo per la FP260/FP90
  11 Giugno 2003  Verona Sw
2.0.45 - - * Aumentato il timeout di attesa di ACK in tutti i metodi (da 3 a 10 secondi)
* Tolto il Trim delle stringhe in tutti i metodi del controllo.
* Aggiunta la documentazione dei byte della proprietà LastState
* Modificato il logo del controllo da Epson FP-210 a Epson FP
  18 Settembre 2003  Verona Sw
2.0.47 - - * Parametrizzati i timeout per i metodi opXXX:
I timeout sono 2 e vi si accede (sia in lettura che in scrittura) grazie a 2 nuove proprietà:
  • TimeoutOP indica il tempo massimo di attesa (in secondi), prima di restituire il valore OP_ERR_TIMEOUT, per la risposta completa da parte della stampante
  • TimeoutACK indica il tempo massimo di attesa (in secondi), prima di restituire il valore OP_ERR_ACKTIMEOUT, per la risposta ACK da parte della stampante
Dopo l'esecuzione di ogni metodo opXXX questi due timeout vengono resettati e se non si impostano di nuovo il successivo metodo opXXX utilizzerà i valori di default per questi due timeout.
Per sapere i valori dei timeout utilizzati dall'ultimo metodo opXXX eseguito, è sufficiente consultare le due nuove proprietà LastTimeoutOP e LastTimeoutACK

* Aggiunta la gestione di una sentinella di "busy" per la gestione di chiamate troppo ravvicinate al controllo che non lasciano il tempo al controllo stesso di computarle fino in fondo e nell'ordine richiesto.
La nuova proprietà si chiama OCXBusy (di tipo Boolean). Se vale True indica che il controllo è impegnato nella gestione di una chiamata precedente, se vale False il controllo è disponibile all'esecuzione di un metodo opXXX
L'utente prima di chiamare qualsiasi metodo opXXX dovrebbe controllare OCXBusy e solo questa vale False può utilizzare il controllo OCX.
In ogni caso tutti i metodi opXXX controllano anch'essi la sentinella e se la trovano occupata ritornano il nuovo valore di ritorno OP_ERR_OCXBUSY

* Aggiunti 3 nuovi valori di ritorno a tutti i metodi opXXX:
  • OP_ERR_ACKTIMEOUT (indica che è scaduto il timeout in attesa dell'ACK da parte della stampante)
  • OP_ERR_STXTIMEOUT (indica che è scaduto il timeout in attesa dell'inizio della risposta da parte della stampante)
  • OP_ERR_OCXBUSY (indica che in controllo era occupato a soddisfare un'altra richiesta quando è stato richiesta l'esecuzione del metodo)
* Aggiunte 5 nuove proprietà:
  • TimeoutACK
  • TimeoutOP
  • LastTimeoutACK
  • LastTimeoutOP
  • OCXBusy

* Corretta la documentazione nel caso dei metodi opRepartoLight, opRepartoValPlus, opSubTotValPlus, opPrintBarCode, opProgLogoGrafico, opReadNumeroScontrino, opReadStato in cui erano indicato che i metodi erano compatibili per le stampanti FP210 e FP90, mentre sono compatibili per FP260 e FP90.
  21 Ottobre 2003  Verona Sw

 

 

 

 

 

 

 

 


INTRODUZIONE


 

Questo documento descrive l'architettura, le proprietà, i metodi del controllo ActiveX sviluppato per le stampanti fiscali della serie FP di Epson.

Il controllo ActiveX automatizza la gestione del protocollo di comunicazione relativo alle stampanti fiscali. Il controllo può essere utilizzato in tutti gli ambienti di sviluppo che supportano la tecnologia COM (Component Object Model è un marchio registrato di Microsoft Corporation) e i contenitori di controlli ActiveX .

 

I metodi sono evidenziati con un diverso sfondo, ogni tipo di sfondo identifica la priorità con cui deve essere sviluppato.



DOCUMENTI DI RIFERIMENTO

 


ARCHITETTURA  DEL CONTROLLO

Il controllo ActiveX deve prevedere la gestione della stampante fiscale sia nella modalità Client/Server che Master/Slave, anche se nella prima versione il controllo non gestirà la modalità Client/Server.

Il controllo utilizza  due tipi di eventi:

La gestione dei metodi è di tipo sincrono, il programma deve aspettare che il metodo termini l'operazione.
Ad operazione terminata viene impostata la proprietà OCXBusy su False.
I valori che la stampante ritorna sono disponibili nelle proprietà a sola lettura identificabili con il prefisso "LAST"

 

I Metodi che implementano le funzionalità della stampante fiscale sono identificati dal prefisso op  e sono riportati nella lista in ordine crescente rispetto al codice (Header 2) della PDU applicativa (Vedi protocollo di comunicazione stampante fiscale). Ogni metodo ha come riferimento un comando del protocollo di comunicazione della stampante fiscale.

I parametri dei metodi sono definiti per mezzo dei seguenti tipi: 

Per quanto riguarda il tipo Currency, il controllo è in grado di formattare correttamente il campo da inviare alla stampante grazie alla proprietà EuroSettings, questa proprietà deve essere inizializzata, in caso contrario il controllo non funziona.

La gestione del T.O. (timeout) di comunicazione è parametrizzata in funzione del metodo in esecuzione ed è rigidamente impostata dal controllo. 

Il controllo non gestisce la retry di comunicazione, in caso di errori di comunicazione ritorna un errore.

 


ELENCO METODI


Sistema

 Reparto

Subtotali

Pagamenti

Varie

PLU

Report finanziari

Stampe con/senza Azzerramenti

    Programmazioni/Letture

 

    Letture Dispositivo Giornale di Fondo Elettronico D.G.F.E. per FP90

 


ELENCO PROPRIETÀ



ELENCO ERRORI


Gli errori si dividono in due livelli: gli errori legati al controllo EpsonFPControl e errori interni della stampante
Gli errori interni della stampante fanno parte del livello EERR, mentre gli altri livelli hanno il prefisso OP_ e descrivono gia' da soli il tipo d'errore

Il livello EERR specifica che c'e' stato un errore interno della stampante, ma non specifica quale errore. Per questo esistono delle costanti che specializzano degli errori interni. Il codice d'errore interno viene memorizzato nella proprieta' LastEERR.
I valori assunti da LastEERR sono descritti da costanti con prefisso EERR_ e sono le seguenti:


ELENCO COSTANTI



ELENCO EVENTI



ELENCO PARAMETRI FUNZIONI



DESCRIZIONE METODI


I metodi qui di seguito descritti sono specificati dalla loro signature (o interfaccia) con i tipi dei parametri (quelli opzionali sono racchiusi dalle parentesi quadre), dalla descrizione dei parametri (con il tipo tra parentesi tonde e con i valori ammessi tra parentesi quadre), dalla descrizione degli eventuali valori di ritorno e dalla descrizione degli eventuali eventi generati.
Tutti i metodi che hanno il prefisso op sono implementazioni di funzionalità del registratore di cassa.
Per tutti questi metodi sono gli stessi i possibili valori di ritorno e i possibili eventi generati.