Empezar con DOSPRN

Empezar con DOSPRN

Postby nolgiati » Tue Jan 29, 2008 1:54 pm

Hola de nuevo!!
Estoy intentando usar la clase DOSPRN y la verdad no se por donde empezar.
Antonio hay algun ejemplo del que me pueda guiar.

Gracias,
slds!
User avatar
nolgiati
 
Posts: 58
Joined: Fri Apr 20, 2007 1:38 pm

Re: Empezar con DOSPRN

Postby karinha » Tue Jan 29, 2008 2:33 pm

nolgiati wrote:Hola de nuevo!!
Estoy intentando usar la clase DOSPRN y la verdad no se por donde empezar.
Antonio hay algun ejemplo del que me pueda guiar.

Gracias,
slds!


http://www.fivewin.com.br/exibedicas.asp?id=226

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7352
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby nolgiati » Tue Jan 29, 2008 3:13 pm

Karinha, estoy muy agradecida por tu ayuda. Lo voy a probar.

Slds!
User avatar
nolgiati
 
Posts: 58
Joined: Fri Apr 20, 2007 1:38 pm

Postby karinha » Tue Jan 29, 2008 3:32 pm

nolgiati wrote:Karinha, estoy muy agradecida por tu ayuda. Lo voy a probar.

Slds!


A tus Ordenes!

Tengo mas ejemplos.

Best regards, saludos desde Brazil.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7352
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby sysctrl2 » Tue Jan 29, 2008 7:58 pm

function _prnMatriz()
local oPrn
local nRen := 1
local nPag := 1
oPrn:= TDosPrn():New( "LPT1" )

oPrn:command('18') //chr(18)
//chr(15) condensado


dbselectArea("clientes")
ordsetocus(1)
dbgotop()
do while !eof()
oPrn:say(nRen, 1, field->codigo )
oPrn:say(nRen, 10, field->nombre)
oPrn:say(nRen, 1, 50, transform(field->saldo, "9,999,999.99") )
nRen++
if nRen >= 60
nPag++
nRen := 1 // inicia una nueva pagina.
endif
dbskip()
enddo

oPrn:end()


return nil

saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 971
Joined: Mon Feb 05, 2007 7:15 pm

Postby nolgiati » Wed Jan 30, 2008 5:07 pm

Gracias!
Ya estoy imprimiendo.

Saludos! :D
User avatar
nolgiati
 
Posts: 58
Joined: Fri Apr 20, 2007 1:38 pm

Re: Empezar con DOSPRN

Postby MarioG » Fri Feb 18, 2011 1:07 am

Retomo este tema
Alguien imprime en puerto COM con TDosPrn?
Es una impresora de Ticket. Hassar la vende como modelo H-P715. Pero el driver de instalación es OKI POS 408 (???)
En principio lo que me pasa es que cuando en la clase TDosPrn llega a la línea WriteComm(::hDC, ::cBuffer), del metodo EndPage() se cuelga (o, a veces imprime)
Alguna sugerencia?
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: Empezar con DOSPRN

Postby karinha » Fri Feb 18, 2011 10:54 am

Intentas asi:

Code: Select all  Expand view

//----------------------------------------------------------------------------//

FUNCTION PrintDosForWin()

   LOCAL cTexto     := ""
   LOCAL ON_GRANDE  := CHR(27) + CHR(33) + CHR(16) // Para Impresoras Epson
   LOCAL OFF_GRANDE := CHR(27) + CHR(33) + CHR(01) // Para Impresoras Epson
   LOCAL cPrinter   := GetDefaultPrinter()    // Seleciona la Impresora Por Defecto de Windows
   //LOCAL CRLF       := CHR(13) + CHR(10)
   LOCAL cFileName  := "texto.prn"

   cTexto += "Esta es la primera linea del texto" + CRLF
   cTexto += Replicate( "*-", 20 ) + CRLF
   cTexto += ON_GRANDE + "LETRAS GRANDES" + OFF_GRANDE + CRLF
   cTexto += "Esta es otra linea de texto..." + CRLF
   cTexto += PADL( "Izquierza", 40 ) + CRLF
   cTexto += PADC( "CENTRALIZADO", 40 ) + CRLF
   cTexto += PADR( "Derecha", 40 ) + CRLF
   cTexto += PADC( "< Linea Final >", 40, "-" ) + CRLF

   If WriteStream( cFileName, cTexto )

      // Envia la Impresion al Spool de Windows
      PrintFileRaw( cPrinter, cFileName, "Impresion En Formato DOS desde Windows" )

      FERASE( cFileName )

   EndIF

RETURN NIL

// Esta Funcion la encontre por ahi...
FUNCTION WriteStream( cFile, cStream )

   LOCAL nHandle := FCreate( cFile )

   IF FError() <> 0
      RETURN( .F. )
   ENDIF

   FWrite( nHandle, cStream, Len(cStream) )

   FClose( nHandle )

RETURN ( FError() == 0 )
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7352
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Empezar con DOSPRN - SOLUCIONADO

Postby MarioG » Fri Feb 18, 2011 11:07 am

Joao
Muchisimas gracias!. funcionó a la prefección

Saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: Empezar con DOSPRN

Postby MarioG » Sat Mar 05, 2011 1:48 pm

Joao;
Tengo un pequeño problema.
Este es mi codigo, basado en el que me pasaste

Code: Select all  Expand view
 // Cabecera
   cTexto += Replicate( "-", 40 ) + CRLF
   cTexto += ON_GRANDE + PADC( "PRESUPUESTO", 32 ) + OFF_GRANDE + CRLF
   cTexto += DtoC( Date() )+Space( 22 )+Time()      + CRLF
   cTexto += Replicate( "-", 40 )                   + CRLF
   cTexto += PadR( "CANTIDAD/PRECIO UNIT", 40 )     + CRLF
   cTexto += PadR( "CODIGO/UNID.", 40 )             + CRLF
   cTexto += PadR( "DESCRIPCION/PRECIO TOTAL", 40 ) + CRLF
   cTexto += Replicate( "-", 40 )                   + CRLF

   //
   // Articulos
   aEval( hP3:aArticulos, {|aItm| cTexto += PadC( "*** NO FISCAL        NO FISCAL ***", 40 ) + CRLF + ;
                                            PadR( Str( aItm[iCantid],,,.T.)+"/"+Str( aItm[iPrcVta],,,.T.), 40 ) + CRLF + ;
                                            PadR( aItm[iCodArt]+"/"+aItm[iUnidad], 40 )      + CRLF + ;
                                            PadR( aItm[iDescArt], 29 ) + Trans( aItm[iPrcTot], PIC_OCHOCIF2 ) + CRLF, ;
                                  nTotVta += aItm[iPrcTot] } )

   // Total y cierre
   cTexto += CRLF + PadL( "Total", 20 ) +"    "+ ON_GRANDE+Trans( nTotVta, PIC_NUEVECIFP ) + OFF_GRANDE + CRLF
   cTexto += PadC( "< Fin Presupuesto >", 40, "-" ) + CRLF

   if ( lOk:= ::WritePrnFile( cFileTicket, cTexto ) )
      // Envia la Impresion al Spool de Windows
      PrintFileRaw( ::cPrnTicket, cFileTicket, "Impresion En Formato DOS desde Windows" )
   else
      Alert( "["+Str( FError(),,,.T.)+"] Error al crear archivo de Impresión"+CRLF+"Reintente",,"Alerta",, IDI_HAND )
   end

   return( lOk )
// Fin

// ---------------------------------------------------  Guarda Archivo de impresión
//
METHOD WritePrnFile( cFile, cStream )  CLASS TImprimir
local nHandle := FCreate( cFile )

   if FError() <> 0
      return( .F. )
   end

   FWrite( nHandle, cStream, Len( cStream ) )

   FClose( nHandle )

   return( FError() == 0 )
// Fin
 



Lo que me esta pasando es que si mando 12 artículos imprime correctamente todo lo pretendido; pero a partir del 13 (será el numero! :shock: :D ), a veces imprime solo una línea, a veces un par de líneas pero desordena la info enviada y se trunca antes de llegar al final. Edito el archivo cFileTicket y toda la info se ve correctamnete tal cual se envio
Estuve buscando la ayuda de la función PrintFileRaw(), pero no la encuentro ni en al ayuda de FW functions ni el la ayuda de xHarbour (de quien es?)
Se me hace que es un problema de buffer.
Pero como no se como resolverlo, pregunto: es algo manejable por funcion? o será la impresora que estoy usando?
Por si tenes referencia de ella es un comercializada por Hasar, modelo P-715 http://www.hasar.com/es-ar/product/hardware/impresoras/matriz-de-puntos/hasar-715

gracias por tu tiempo
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: Empezar con DOSPRN

Postby karinha » Wed Mar 09, 2011 4:55 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7352
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Empezar con DOSPRN

Postby MarioG » Wed Mar 09, 2011 7:24 pm

Joao;
gracias; lo estoy mirando...
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: Empezar con DOSPRN

Postby Francisco Horta » Thu Mar 10, 2011 2:47 am

Y esta misma clase pero para imprimir en puerto USB en miniprinter para tickets, algun ejemplo? o la lcase modificada?
gracias
Paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 41 guests