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!
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!
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!
Karinha, estoy muy agradecida por tu ayuda. Lo voy a probar.
Slds!
nolgiati wrote:Karinha, estoy muy agradecida por tu ayuda. Lo voy a probar.
Slds!
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..
Gracias!
Ya estoy imprimiendo.
Saludos! ![]()
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?
//----------------------------------------------------------------------------//
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 )Joao
Muchisimas gracias!. funcionó a la prefección
Saludos
// 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 )
// FinJoao;
gracias; lo estoy mirando...
Y esta misma clase pero para imprimir en puerto USB en miniprinter para tickets, algun ejemplo? o la lcase modificada?
gracias
Paco