Empezar con DOSPRN
Empezar con DOSPRN
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!
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!
Re: Empezar con DOSPRN
http://www.fivewin.com.br/exibedicas.asp?id=226nolgiati 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!
Saludos.
João Santos - São Paulo - Brasil
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..
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 "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
Re: Empezar con DOSPRN
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?
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
Chaco - Argentina
Re: Empezar con DOSPRN
Intentas asi:
Code: Select all
//----------------------------------------------------------------------------//
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
Re: Empezar con DOSPRN - SOLUCIONADO
Joao
Muchisimas gracias!. funcionó a la prefección
Saludos
Muchisimas gracias!. funcionó a la prefección
Saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
Re: Empezar con DOSPRN
Joao;
Tengo un pequeño problema.
Este es mi codigo, basado en el que me pasaste
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! ), 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/hard ... /hasar-715
gracias por tu tiempo
Tengo un pequeño problema.
Este es mi codigo, basado en el que me pasaste
Code: Select all
// 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! ), 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/hard ... /hasar-715
gracias por tu tiempo
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
Re: Empezar con DOSPRN
João Santos - São Paulo - Brasil
Re: Empezar con DOSPRN
Joao;
gracias; lo estoy mirando...
gracias; lo estoy mirando...
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
Re: Empezar con DOSPRN
Y esta misma clase pero para imprimir en puerto USB en miniprinter para tickets, algun ejemplo? o la lcase modificada?
gracias
Paco
gracias
Paco
____________________
Paco
Paco