dorneles Posted June 27, 2019 Report Share Posted June 27, 2019 tem como imprimir com TS / conexão externa , na matricial modo texto , ja tentei com PrintFileRaw() e com a fastreport para matricial e nada, alguma solucao, sugestao? WINDOWS SERVER R8 Quote Link to comment Share on other sites More sharing options...
joaosolution Posted June 27, 2019 Report Share Posted June 27, 2019 Boa tarde Utilizo: PrnPad:=GetDefaultPrinter() PrintFileRaw( PrnPad, "relatorio.prn", "Impressão" ) Sem problemas com TS. Quote Link to comment Share on other sites More sharing options...
dorneles Posted June 27, 2019 Author Report Share Posted June 27, 2019 nao imprime, quando manda imprimir, nao retorna erro, pode ser alguma configuracao do windows? se eu mandar na laser imprime normal Quote Link to comment Share on other sites More sharing options...
kapiaba Posted June 28, 2019 Report Share Posted June 28, 2019 FUNCTION DefaultPrinter() LOCAL nPrn, nRet nRet := PrinterSetUp() nPrn := PrnGetName() IF( nRet # 0 ) SetDefaultPrinter( PRNGETNAME() ) // MUDA O DEFAULT DA IMPRESSORA MsgInfo( OemToAnsi( "Aten‡Æo Usu rio: " )+CRLF+ ; OemToAnsi( "Sua Impressora DEFAULT(PadrÆo) ‚: " )+CRLF+ ; ( "-> " + nPrn ), ; OemToAnsi( "Sua Impressora DEFAULT(PadrÆo) ‚... " ) ) sGetDefaultPrinter := GetDefaultPrinter() IF PrnStatus( sGetDefaultPrinter ) = 4096 // Verifica se SPOOLER esta desligado e tenta liga-lo MsgRun( sGetDefaultPrinter +": "+isprint( GetDefaultPrinter() ) + ; " ou Spooler Desligado.", "Status da Impressora", ; {|| WinExec( "NET START SPOOLER", 7 ) } ) ENDIF ELSE MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ; OemToAnsi( "VERIFIQUE SUA IMPRESSORA SE ESTµ LIGADA. " )+CRLF+ ; OemToAnsi( "OU SE ESTµ INSTALADA CORRETAMENTE... " )+CRLF+ ; OemToAnsi( "TEM ALGUMA COISA ERRADA COM A IMPRESSORA?" )+CRLF+ ; OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ; OemToAnsi( "VERIFIQUE SUA IMPRESSORA SE ESTµ LIGADA. " ) ) RETURN( .F. ) ENDIF RETURN NIL Quote Link to comment Share on other sites More sharing options...
dorneles Posted July 1, 2019 Author Report Share Posted July 1, 2019 SetDefaultPrinter( PRNGETNAME() ) // MUDA O DEFAULT DA IMPRESSORA a impressora esta como padrao, no PrintFileRaw resta retornando -2, alguma sugestão, ou tem outra solucao "PrintFileRaw" ? nRet := PrintFileRaw( cPorta, TrueName("USB.TXT"), "Impressão de Venda" ) nRet retorna -2 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 1, 2019 Report Share Posted July 1, 2019 -2? Eu acho que a impressora está com erro. Se você postar como está fazendo, seria mais fácil. Teste em outra impressora matricial tipo EPSON LX-300, e diga o que drive é tipo texto da LX-300. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 1, 2019 Report Share Posted July 1, 2019 /* USB com TDOSPRN.PRG Enla cabecera de mi rutina de impresión hice esto: cPorta := PrnGetPort() cPrinter := PrinterPortToName( cPorta ) if empty(cPrinter) cPrinter := PrinterPortToName( "USB002" ) if empty(cPrinter) cPrinter := PrinterPortToName( "USB001" ) endif endif Despues empiezo la impresión, preo creando un archivo: oPrin := TDosPrn():New("minuta.txt") oPrin:StartPage() ... ... Y en el fin de la rutina hago esto: ... ... oPrin:EndPage() oPrin:End() PrintFileRaw( cPrinter, TrueName("MINUTA.TXT"), "Impressão de Vendas" ) */ // ---------------------------------------------------------------------------- //----- Definicao de comando SAY para TdosPrn --------------------------------- // #xcommand @ <nRow>, <nCol> SAY <cText> OF <oPrinter> => <oPrinter>:Say(<nRow>, <nCol>, <cText> ) //-------------------------------------------------------------------------// // Imprime os Cupons Nao Fiscal da Pizzaria/Restaurante //-------------------------------------------------------------------------// FUNCTION IMPRIMIR_CUPOM( nKey, aGetVenda, oLbx, oDlgVendas, DbClientes,; DbEstoque, DbPedidos ) FIELD QTD_VENDEU, DESCRICAO, VLUNITARIO, TOTITEM, TOTPEDIDO FIELD MENSAG1, MENSAG2, MENSAG3, MENSAG4, MENSAG5 LOCAL nLinha, nPag, oPrn, Conta, Pula, DbMensag MEMVAR XNUMPEDIDO, nNumeroTel, cCodClien, cNomeClien, cEndClien, ; cNomeProduto, nQuantidade, nValorProd, nValorCompra, oSayCxLivre,; XCGCCLI, nQtdeEstoque, nCodigoProd MEMVAR nDinheiro, nCheque, nChequePre, nTickets, nCartaoCred,; nCartaoDebi, nContraVale, nTaxaEntreg, nValorTroco, nSomaSubTot,; XTROCOCLI, Valor_Pago, nValor_Pago, oSayEmpresa //-> Nome Fantasia da Empresa - Est em EMPRESA.DBF PUBLIC XDA, XCAIXA, XCODVEND, XNOMEEMP, XFANTASIA, XIMPQTDECOP, ; XPULARLINHA nLinha := 0 nPag := 1 IF XIMPQTDECOP <= 0 XIMPQTDECOP := 1 ENDIF //-> Mensagens do Rodape IF NETUSE( "MENSAGEM", .T. ) DATABASE DbMensag DbMensag:Load() //-> Temporario = a FP_PROV.DBF DbMensag:SetBuffer( .T. ) ENDIF SELECT ( DbPedidos:cAlias ) DbPedidos:SetOrder( 1 ) GO TOP // Para Rede de Computadores // oPrn:New("\\seuterminal\suaimpressora\LPT1") oPrn:= TDosPrn():New( "CUPOM.TXT" ) // para ir para um arquivo .txt // oPrn:= TDosPrn():New() // para ir para impressora em definitivo // oPrn := TDosPrn():New("lpt1") // para ir para impressora em definitivo // Este Comando, Liga a Impressora. NÆo Tirar Nunca oPrn:StartPage() // da Start(inicializa) na p gina. oPrn:lZeraBuffer := .T. // Inibe o Pulo da P gina //-> Inicia a Impressao - Cabe‡alho do Cupom //-> Modo Draft @ nLinha, 00 SAY +CHR(18)+CHR(27)+"2"+CHR(27)+"H" OF oPrn @ nLinha, 00 SAY SUBST( XNOMEEMP, 1, 23 ) OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY CHR(15)+REPLICATE("-",38) OF oPrn nLinha := nLinha + 1 //-> Modo Condensado @ nLinha, 00 SAY CHR(15)+"HORA: " + TIME() + " - " + ; + DTOC(XDA) OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY OemToAnsi("PEDIDO N§: " ) + ; ALLTRIM(STRZERO( XNUMPEDIDO ) ) OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY "FONE..: " + nNumeroTel OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY SUBSTR( cNomeClien, 1, 40 ) OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY SUBSTR( cEndClien, 1, 40 ) OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY REPLICATE("-",38) OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY "Cod Qtde Descricao Unit Valor" OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY REPLICATE("-",38) OF oPrn nLinha := nLinha + 1 //-> Imprime o Pedido WHILE !EOF() SYSREFRESH() IF EOF() EXIT ENDIF @ nLinha, 00 SAY ( DbPedidos:cAlias )->CODIGO OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY ( ALLTRIM( STR( QTD_VENDEU ) ) ) +[ - ]+ ; ( SUBSTR( DESCRICAO, 01, 17 ) ) OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY ( SUBSTR( DESCRICAO, 18, 35 ) ) + ; TRANSFORM( VLUNITARIO, "@E 99,999.99" ) + ; TRANSFORM( TOTITEM, "@E 999,999.99" ) OF oPrn nLinha := nLinha + 1 DBSKIP() ENDDO //-> Total do Pedido IF EOF() .OR. TOTPEDIDO <= 0 SKIP(-1) ENDIF @ nLinha, 00 SAY CHR(15)+REPLICATE("-",38) OF oPrn nLinha := nLinha + 1 IF nDinheiro > 0 @ nLinha, 00 SAY "EM DINHEIRO: " + ; TRANSFORM( nDinheiro, "@E 999,999.99" ) OF oPrn nLinha := nLinha + 1 ENDIF IF nCheque > 0 @ nLinha, 00 SAY "EM CHEQUE: " + ; TRANSFORM( nCheque, "@E 999,999.99" ) OF oPrn nLinha := nLinha + 1 ENDIF IF nChequePre > 0 @ nLinha, 00 SAY "EM CHEQUE PRE: " + ; TRANSFORM( nChequePre, "@E 999,999.99" ) OF oPrn nLinha := nLinha + 1 ENDIF IF nTickets > 0 @ nLinha, 00 SAY "EM TICKETS: " + ; TRANSFORM( nTickets, "@E 999,999.99" ) OF oPrn nLinha := nLinha + 1 ENDIF IF nCartaoCred > 0 @ nLinha, 00 SAY "EM C. CREDITO: " + ; TRANSFORM( nCartaoCred, "@E 999,999.99" ) OF oPrn nLinha := nLinha + 1 ENDIF IF nCartaoDebi > 0 @ nLinha, 00 SAY "EM C. DEBITO: " + ; TRANSFORM( nCartaoDebi, "@E 999,999.99" ) OF oPrn nLinha := nLinha + 1 ENDIF IF nContraVale > 0 @ nLinha, 00 SAY "EM C. VALE: " + ; TRANSFORM( nContraVale, "@E 999,999.99" ) OF oPrn nLinha := nLinha + 1 ENDIF @ nLinha, 00 SAY CHR(15)+REPLICATE("-",38) OF oPrn nLinha := nLinha + 1 //-> Fechou o Cupom @ nLinha, 00 SAY +CHR(18)+CHR(27)+"2"+CHR(27)+"H" + ; "TOTAL: " + ; TRANSFORM( TOTPEDIDO, "@E 9,999,999.99" ) OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY CHR(15)+REPLICATE("-",38) OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY CHR(15)+"TROCO: " + ; TRANSFORM( XTROCOCLI, "@E 999,999.99" ) OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY "CAIXA: " + STRZERO( XCAIXA, 3 ) + [ - ] + ; "OPERADOR: " + XCODVEND OF oPrn nLinha := nLinha + 1 @ nLinha, 00 SAY CHR(15)+REPLICATE("-",38) OF oPrn nLinha := nLinha + 1 SELECT ( DbMensag:cAlias ) GO TOP WHILE !EOF() SYSREFRESH() IF EOF() EXIT ENDIF IF (MENSAG1 ) != SPACE(40) @ nLinha, 00 SAY MENSAG1 OF oPrn nLinha := nLinha + 1 ENDIF IF (MENSAG2 ) != SPACE(40) @ nLinha, 00 SAY MENSAG2 OF oPrn nLinha := nLinha + 1 ENDIF IF (MENSAG3 ) != SPACE(40) @ nLinha, 00 SAY MENSAG3 OF oPrn nLinha := nLinha + 1 ENDIF IF (MENSAG4 ) != SPACE(40) @ nLinha, 00 SAY MENSAG4 OF oPrn nLinha := nLinha + 1 ENDIF IF (MENSAG5 ) != SPACE(40) @ nLinha, 00 SAY MENSAG5 OF oPrn nLinha := nLinha + 1 ENDIF @ nLinha, 00 SAY CHR(15)+REPLICATE("-",38) OF oPrn nLinha := nLinha + 1 DBSKIP() ENDDO //-> Pulos do Cupom FOR PULA = 1 TO XPULARLINHA @ nLinha, 00 SAY "." OF oPrn nLinha := nLinha + 1 NEXT PULA //-> Modo Draft @ nLinha, 00 SAY +CHR(18)+CHR(27)+"2"+CHR(27)+"H" OF oPrn oPrn:EndPage() oPrn:End() //--- imprime no spool do windows, liberando o micro para trabalhar. ImpSpool( "CUPOM.TXT",, .T. ) // esta em DBMANT.PRG impressora USB/matricial //--- opcionamente pode-se apagar o arquivo passando .t. no 3o. parametro. DbMensag:Close() SELECT ( DbPedidos:cAlias ) DbPedidos:SetOrder( 1 ) DbPedidos:Gotop() RETURN NIL // Maravilhoso Ednaldo Cabra Bom!!! //----------------------------------------------------------------------------// // Funcao : ImpSpool( cFileTxt, cPorta, lErase ) // Autor : Ednaldo Rolim (edrol@pop.com.br) // Descricao : Envia um arquivo TXT criado pela TDosPrn para uma // porta de Impressora. //----------------------------------------------------------------------------// FUNCTION ImpSpool( cFileTxt, cPorta, lErase ) LOCAL CPRINTER //para capturar antes da impressão //cPorta := PrnGetPorta() //WinExec( cPorta ) //depois da impressão //WinExex( "Net Use Lpt1: \Delete" ) //Ficou mais facil e simples do que criar as portas na Classe TDosPrn //cPorta := If( cPorta == nil, Alltrim( PrnGetPort() ), cPorta ) ; lErase := If( lErase == nil, .T., lErase ); //cPorta := PrnGetPort() Default cPorta := Alltrim( PrnGetPort() ), lErase:= .t. cPrinter := PrinterPortToName( cPorta ) IF EMPTY( cPrinter ) // By Kleyber Derick cPrinter := PrinterPortToName( "USB002" ) IF EMPTY(cPrinter) cPrinter := PrinterPortToName( "USB001" ) ENDIF // e se estiver nas USB003 OU USB004? ENDIF IF .NOT. FILE( cFileTxt ) MsgInfo( OemToAnsi( "NÇO ACHEI O ARQUIVO MODO TEXTO PARA IMPRIMIR NA MATRICIAL" ), ; OemToAnsi( "NÇO ACHEI O ARQUIVO MODO TEXTO PARA IMPRIMIR NA MATRICIAL" ) ) RETURN( .F. ) ENDIF IF .NOT. EMPTY( cPrinter ) // TEM USB PrintFileRaw( cPrinter, TrueName( "CUPOM.TXT" ), "Impressão de Vendas" ) ELSEIF LEN( cPorta ) <= 5 .and. Left( Upper(cPorta), 4 ) = "LPT1" //--- Spool Local - Matricial em LPT1 cPorta:= "PRN" WAITRUN("COMMAND.COM /C COPY /B " + cFileTxt + " " + cPorta, 0 ) ELSE //--- Spool Remoto - Matricial em LPT1 WAITRUN("COMMAND.COM /C COPY /B " + cFileTxt + " " + cPorta, 0 ) ENDIF IF lErase // Vem .T. da tela de vendas FERASE( cFileTxt ) // apaga o .TXT ENDIF RETURN( .T. ) Quote Link to comment Share on other sites More sharing options...
dorneles Posted July 7, 2019 Author Report Share Posted July 7, 2019 Obrigado a todos, o problema foi resolvido com ajuda @Marca, Win32Prn manual https://mvinfo.wmx.net.br/news/impressao-em-portas-usb-classe-win32prn-winprn/ exemplo http://www.fivetechsupport.com/forums/viewtopic.php?f=6&t=31317 kapiaba 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.