PDA

Ver la Versión Completa : [Sintaxis] Epson TM900FA


drvedia1981
6 de junio de 2021, 02:36
Hola a todos estoy migrando un sistema a la nueva impresora epson tm900fa siguiendo los consejos en el foro y usando la libreria "EpsonFiscalDriver" logre la conexión y realizar un cierre Z abrir un tique cancelar pero no logro imprimir un item alguien tendrá un ejemplo de ese comando, lo envio con la utilidad fpterminal y va perfecto pero no lo logro con la libreria.
Saludos a todos

fastpho
6 de junio de 2021, 16:21
Hola @drvedia1981, subi una lineas para ver como estas abriendo el ticket , y como le mandas el item , el pago , y el cierre del ticket para poder ayudarte
Saludos

drvedia1981
6 de junio de 2021, 16:58
hola te paso lo que tengo

conectar con tm900
ENVIRONMENT DIVISION.
DATA DIVISION.
working-Storage section.
01 sPort PIC S9(9) COMP-5.
01 sBaudio PIC S9(9) COMP-5.
01 SProtocol PIC S9(9) COMP-5.
01 gState PIC S9(9) COMP-5.
01 FUNC-EPSON-LIB Pic x(40).
01 BufferLen pic S9(9) COMP-5 VALUE 0.
01 version pic x(250).
PROCEDURE DIVISION.
MOVE "GetAPIVersion" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.
MOVE spaces TO FUNC-EPSON-LIB.
MOVE "setComPort" TO FUNC-EPSON-LIB.
move 1 to sPort.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE sPort.
MOVE "getLastError" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE gState.
display gState.
MOVE spaces TO FUNC-EPSON-LIB.
MOVE "setBaudRate" TO FUNC-EPSON-LIB.
move 115200 TO sBaudio
CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE sBaudio.
move spaces TO FUNC-EPSON-LIB.
MOVE "setProtocolType" TO FUNC-EPSON-LIB.
MOVE 1 TO SProtocol.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE SProtocol.
MOVE spaces TO FUNC-EPSON-LIB.
MOVE "OpenPort" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.


abrir tique
ENVIRONMENT DIVISION.
DATA DIVISION.
working-Storage section.
01 LINEA-1.
03 Comando PIC X VALUE X"0A".
03 Comandobis PIC X VALUE X"01".
01 LINEA-2.
03 DataField1 PIC X VALUE X"00".
03 DataField2 PIC X VALUE X"00".
01 FUNC-EPSON-LIB Pic x(40).
01 gState PIC S9(9) COMP-5.
01 BufferLen pic S9(9) COMP-5 VALUE 0.
01 version pic x(250).
PROCEDURE DIVISION.
move spaces TO FUNC-EPSON-LIB.
MOVE 2 TO BufferLen.
MOVE "AddDataField" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-1 BY VALUE BufferLen.
MOVE 2 TO BufferLen.
MOVE "AddDataField" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-2 BY VALUE BufferLen.
MOVE "SendCommand" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.

MOVE "getLastError" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE gState.
display gState.



cancela tique
ENVIRONMENT DIVISION.
DATA DIVISION.
working-Storage section.
01 LINEA-1.
03 Comando PIC X VALUE X"0A".
03 Comandobis PIC X VALUE X"07".
01 LINEA-2.
03 DataField1 PIC X VALUE X"00".
03 DataField2 PIC X VALUE X"00".
01 FUNC-EPSON-LIB Pic x(40).
01 gState PIC S9(9) COMP-5.
01 BufferLen pic S9(9) COMP-5 VALUE 0.
01 version pic x(250).
PROCEDURE DIVISION.
move spaces TO FUNC-EPSON-LIB.
MOVE 2 TO BufferLen.
MOVE "AddDataField" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-1 BY VALUE BufferLen.
MOVE 2 TO BufferLen.
MOVE "AddDataField" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-2 BY VALUE BufferLen.
MOVE "SendCommand" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.
MOVE "getLastError" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE gState.
display gState.

item

ENVIRONMENT DIVISION.
DATA DIVISION.
working-Storage section.
01 LINEA-1.
03 Comando PIC X VALUE X"0A".
03 Comandobis PIC X VALUE X"02".
01 LINEA-2.
03 DataField1 PIC X VALUE X"00".
03 DataField2 PIC X VALUE X"00".
01 FUNC-EPSON-LIB Pic x(40).
01 gState PIC S9(9) COMP-5.
01 BufferLen pic S9(9) COMP-5 VALUE 0.
01 version pic x(250).
PROCEDURE DIVISION.
move spaces TO FUNC-EPSON-LIB.
MOVE 2 TO BufferLen.
MOVE "AddDataField" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-1 BY VALUE BufferLen.
MOVE 2 TO BufferLen.
MOVE "AddDataField" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-2 BY VALUE BufferLen.

* aca me falta enviar cantidad precio iva y los campos que no uso que antes se enviava el separador x"1C"

MOVE "SendCommand" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.

MOVE "getLastError" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE gState.
display gState.



Gracias saludos

---------- Post añadido : 15:58 ---------- Post anterior : 15:44 ----------

Los datos de item de este modelo son (descripcion extra 1,2,3,4) (descripcion del item) (cantidad) (precio) (tasa) (impuestos internos) (coeficiente) (unidad de referencia) (codigo del item) (codigo interno) (unidad de medida) y (codigo frente al iva)
yo mucho de esos campos no los uso y no se como se envian


Gracias

fastpho
6 de junio de 2021, 17:41
@drvedia1981, hay campos que son obligatorios , los que no uses como la descripcion extra en el bufer lo mandas en 0 , te paso un ejemplo , como seria

WORKING-STORAGE SECTION.

01 Descripcion pic x(20) value "Venta de item ".
01 Descripcion-Extra-1 pic x(20) value spaces.
01 Cantidad pic 9(9).
01 Precio pic 9(11).
01 Iva pic 9(4).
PROCEDURE DIVISION.

MOVE 20 TO BufferLen
MOVE "AddDataField" TO FUNC-EPSON-LIB
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE Descripcion
BY VALUE BufferLen

MOVE 0 TO BufferLen
MOVE "AddDataField" TO FUNC-EPSON-LIB
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE Descripcion-Extra-1
BY VALUE BufferLen

MOVE 9 TO BufferLen
MOVE "AddDataField" TO FUNC-EPSON-LIB
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE Cantidad
BY VALUE BufferLen
MOVE 11 TO BufferLen
MOVE "AddDataField" TO FUNC-EPSON-LIB
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE Precio
BY VALUE BufferLen

MOVE 4 TO BufferLen
MOVE "AddDataField" TO FUNC-EPSON-LIB
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE Iva
BY VALUE BufferLen


Saludos

drvedia1981
7 de junio de 2021, 00:04
Hola fastpho mil gracias no entendia eso de mandar con buffer 0 en los campos que no se usan abrazo

---------- Post añadido : 23:04 ---------- Post anterior : 16:48 ----------

Hola fastpho estoy desarrollando una interface a nivel hardware para intercalar entre la impresora y el host que interpreta los comandos de las viejas impresoras epson (protocolo anterior tm300af tm950af tm2000af ) y adapta a tm900 seria para sistemas que no hay contacto con el programador o no justifica modificar el mismo estoy avanzando con eso ya lo tengo funcionando, seguro en una primera etapa no seria para todos los comando de la maquina pero muchos sistemas usan lo basico Saludos