Comunicación de puerto COM con Impresora Fiscal

Comunicación de puerto COM con Impresora Fiscal

Postby TOTOVIOTTI » Mon Jul 27, 2015 7:52 pm

Hola amigos,
tengo una rutina desarrollada en Clipper+Clipper Tools que realiza la comunicación y la impresión de Facturas y demás comprobantes
fiscales. Me llegó la hora de pasarlas a FW, sólo que las funciones de ClipperTools, como COM_OPEN, COM_CLOSE, COM_FLUSH no funcionan.
Si he encontrado en el foro, que existen funciones como OpenComm,CloseComm,FlushComm, el tema es que necesito algunas funciones
más y saber como se utilizan éstas, otras que uso son COM_SETIO,COM_SETIRQ,COM_INIT,COM_READ,COM_COUNT.
Si alguien tiene una rutina de comunicación con la IF, les agradecería mucho me ayudaran con éste tema.
Gracias a todos.
Roberto


PD: Aclaro que es con Harbour.
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 419
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Comunicación de puerto COM con Impresora Fiscal

Postby cmsoft » Mon Jul 27, 2015 8:59 pm

Apertura y seteo del puerto
Code: Select all  Expand view
FUNCTION abrirport(n)
LOCAL IdPort,cDcb,nError
IdPort := OpenComm("COM"+STR(n,1),1024,256)
IF IdPort <= 0
   nError = GetCommError( IdPort)
   MsgInfo( "Error al abrir: " + Str( nError ) )
   ELSE
   MsgRun("Puerto abierto como " + STR(IdPort))
ENDIF
IF ! BuildCommDcb("COM"+STR(n,1)+":9600,n,8,1" , @cDcb)
   nError = GetCommError( IdPort)
   MsgInfo( "Error al Configurar: " + Str( nError ) )
   RETURN 0
   ELSE
   MsgRun("Puerto Configurado")
ENDIF
IF ! SetCommState( IdPort, cDcb )
   nError = GetCommError( IdPort)
   MsgInfo( "Error al setear: " + Str( nError ) )
   RETURN 0
   ELSE
   MsgRun("Puerto Seteado")
ENDIF
RETURN IdPort

Escribir en el puerto
Code: Select all  Expand view
(nBytes := WriteComm( port,string) ) < 0

Leer desde el puerto
Code: Select all  Expand view
nBytes := ReadComm( port,@string)

Cerrar Puerto
Code: Select all  Expand view
CloseComm(port)

Todo esto lo utilizaba hace tiempo para comunicarme con Registradoras Fiscales por puerto serial.
Igualmente, hay librerias de tercero, economicas, que puedes utilizar para la comunicacion con impresores fiscales.
Espero te haya servido.
Saludos
User avatar
cmsoft
 
Posts: 1289
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Comunicación de puerto COM con Impresora Fiscal

Postby TOTOVIOTTI » Mon Jul 27, 2015 9:05 pm

Hola
gracias por tu respuesta, la consulta es: porque me indicas que hay librerías de terceros?
Este comunicación que me pasaste el ejemplo, no te funciona correctamente? Es por eso?
Mil gracias!
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 419
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Comunicación de puerto COM con Impresora Fiscal

Postby cmsoft » Mon Jul 27, 2015 9:30 pm

TOTOVIOTTI wrote:Hola
gracias por tu respuesta, la consulta es: porque me indicas que hay librerías de terceros?
Este comunicación que me pasaste el ejemplo, no te funciona correctamente? Es por eso?
Mil gracias!
Roberto

Esto, como te dije, lo utilice muy bien para Registradoras (Tipo NCR 2050), no para Controladores fiscales. El trabajo con el controlador fiscal es mas ida y vuelta, mas ONLINE, por eso para mis programas decidi usar una libreria que resolvia todo el tema de la comunicacion con cada modelo de impresor fiscal (en mi caso tenia desarrollos para Epson, Hasar y NCR en varios de sus modelos). Por ese motivo, decidi invertir en trabajo ya desarrollado y me facilito el trabajo a mi. Pero esto es solo una posicion, creo que tranquilamente, con estos comandos, puedes reemplazar los del viejo CATOOLS, y hacerlo "artesanalmente". Te comente lo de las librerías solamente para que tuvieses otra opcion...
Saludos
User avatar
cmsoft
 
Posts: 1289
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Comunicación de puerto COM con Impresora Fiscal

Postby JmGarcia » Mon Jul 27, 2015 9:45 pm

Si enlazas la librería de Harbour/xHarbour que se llamam HBCOMM.LIB tienes todas estas funciones:
INIT_PORT // Open port and créate handle
OUTBUFCLR // purge output buffer -> Limpeza da Saida do Buffer
ISWORKING // See if port is opened correctly
INCHR // get char/s
OUTCHR // Send out characters. Returns .t. if successful.
INBUFSIZE // Find out how many chars are in input buffer
OUTBUFSIZE // Find out how many characters are in out buf
UNINT_PORT // Close port and clear handle

Ejemplo de PRG:
Code: Select all  Expand view
#define IN_BUFFER  128

function main()

local nComm,cBuffer,nBytes

nComm:=Init_Port("COM3",115200,8,0,1,4000)
if nComm<=0
   MsgStop("Error al abrir puerto")
   UnInt_Port(nComm)
   return nil
endif

OutBufClr(nComm) // Limpa el Buffer de Salida
OutChr(nComm,"Texto a enviar...") // Envia datos

cBuffer:=Space(IN_BUFFER)
nBytes:=InbufSize(nComm)
InChr(nComm,nBytes,@cBuffer) // Lee buffer de entrada

UnInt_Port(nComm)

return nil
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Comunicación de puerto COM con Impresora Fiscal

Postby TOTOVIOTTI » Tue Jul 28, 2015 12:47 pm

Gracias a ambos!
Estoy armando algo entre las dos ideas... vamos a ver que sale.

Me quedan un par de dudas... como debo definir el cString del ReadComm, carácter de cuanto?
De que depende la cantidad de bytes que lee?

Y la segunda, como reemplazar el COM_COUNT y la COM_SCOUNT.... creo que va por el lado del ReadComm... pero
no sé, estoy haciendo pruebas...
Gracias!
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 419
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Comunicación de puerto COM con Impresora Fiscal

Postby elmoiquique » Mon Aug 03, 2015 9:23 pm

TOTOVIOTTI wrote:Gracias a ambos!
Estoy armando algo entre las dos ideas... vamos a ver que sale.

Me quedan un par de dudas... como debo definir el cString del ReadComm, carácter de cuanto?
De que depende la cantidad de bytes que lee?

Y la segunda, como reemplazar el COM_COUNT y la COM_SCOUNT.... creo que va por el lado del ReadComm... pero
no sé, estoy haciendo pruebas...
Gracias!



hola yo estoy en las misma,, con que marca de impresora estas trabajando
Fivewin-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 310
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: Comunicación de puerto COM con Impresora Fiscal

Postby acuellar » Tue Aug 04, 2015 10:35 am

No se sI hay diferencia con las impresoras IBM.

Tengo un impresora Epson TM-U220 conectada en el puerto serial.
Lo único que hice fue compartirla y utilizar la función PrintFileRaw( "\\MIPC\TM-220", cFilePRN )

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1643
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Comunicación de puerto COM con Impresora Fiscal

Postby elmoiquique » Tue Aug 04, 2015 8:33 pm

acuellar wrote:No se sI hay diferencia con las impresoras IBM.

Tengo un impresora Epson TM-U220 conectada en el puerto serial.
Lo único que hice fue compartirla y utilizar la función PrintFileRaw( "\\MIPC\TM-220", cFilePRN )

Saludos,

Adhemar



Hola Adhemar

LA impresoras fiscal no son iguales que las normales, estas son distintas, tienes que enviar y leer informacion de ellas
Fivewin-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 310
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 26 guests