Impressora Termica Elgin i9

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

Impressora Termica Elgin i9

Mensagem por Mario Mesquita »

Bom dia.

Aproveitando o tópico, uma dúvida: Essas impressoras trabalham em modo gráfico, não? Diferente das matriciais, correto?

Pq eu tenho uma rotina para aquelas bematech matriciais, mas uso o @ SAY tradicional do Clipper.

Mas já tem gente usando essas térmicas e para coisas como QRCODE elas tem que trabalhar em modo gráfico, não é?

Sendo, não seria o caso de usar o @ PRINT? Ele é nativo do Harbour ou é do HMG?

Sds,
Mario.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Impressora Termica Elgin i9

Mensagem por janio »

Código: Selecionar todos

#define FontGrande         CHR(27) + CHR(33) + CHR(16) // Para Impressoras Epson
#define FontGrande18       CHR(27) + CHR(33) + CHR(18) // Para Impressoras Epson
#define FontGrandeNegrito  CHR(27) + CHR(33) + CHR(17) // Para Impressoras Epson
#define FontNormal         CHR(27) + CHR(33) + CHR(2) // Para Impressoras Epson
#define FontNormalNegrito  CHR(27) + CHR(33) + CHR(10) // Para Impressoras Epson
#define FontPequena        CHR(27) + CHR(33) + CHR(1) // Para Impressoras Epson
#define FontPequenaNegrito CHR(27) + CHR(33) + CHR(15) // Para Impressoras Epson

/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/
Function ImprimeMesa( NumeroControle, ValorRecebido)
Local ArqImp := cPathCriaSoft + "Mesa.txt"
Local nHandle
Local cHoraSaida 
Local cPermanencia
Local gPrinterName := win_PrinterGetDefault()
Local cPrinterName

If NumeroControle = 0 
	MyMsg("Nenhuma Mesa selecionada!")
	Return .f.
Endif

If !MyDeleteArquivo( ArqImp )
	MyMSG("Nao foi possivel apagar arquivo de impressao")
	Return .f.
Endif

AbreDB( [A17EMP],[EMPRESA] )

Select Comanda ; DbSetOrder(4)
DbGoTop()
DbSeek( NumeroControle )

cHoraSaida   := If( Empty(comanda->HorSai), Time(), comanda->HorSai )
cPermanencia := ElapTime( comanda->HorEmi, cHoraSaida )
cPermanencia := SubStr( cPermanencia,1,2 ) + "h" + SubStr( cPermanencia,4,2 ) + "min"

Select Vendedor ; DbSetOrder(1)
DbGoTop()
DbSeek( comanda->CodVed )

nTotalComissao := Round( comanda->TotCom * ( nComissao / 100 ), 2)

SET PRINT ON 
SET PRINTER TO &ArqImp
SET DEVICE TO PRINTER 
SET CONSOLE OFF

SetPrc(0,0)

@ PROW() + 01, 00 SAY FontGrandeNegrito + Padr(AllTrim(EMPRESA),48)
@ PROW() + 01, 00 SAY FontNormal + "Cnpj " + Trans(empresa->CGCEMP, "@R 99.999.999/9999-99" )
@ PROW() + 01, 00 SAY AllTrim(empresa->ENDERE) + ", " + AllTrim(empresa->NUMERO)
@ PROW() + 01, 00 SAY AllTrim(empresa->BAIRRO) + " - " + AllTrim(empresa->CIDADE) + "/" + empresa->ESTADO
@ PROW() + 01, 00 SAY REPLICATE("-",48) 
@ PROW() + 01, 00 SAY "EXTRATO PARA SIMPLES CONFERENCIA"
@ PROW() + 01, 00 SAY Padc( " NAO EH DOCUMENTO FISCAL " ,48, "*" )
@ PROW() + 01, 00 SAY REPLICATE("-",48) 
@ PROW() + 01, 00 SAY " Garcon : " + vendedor->NomRdz
@ PROW()     , 30 SAY "Chegada : " + comanda->HorEmi
@ PROW() + 01, 00 SAY "   Mesa : " + StrZero(comanda->CodCom,4)
@ PROW()     , 30 SAY "  Saida : " + cHoraSaida
@ PROW() + 01, 00 SAY "  Tempo : " + cPermanencia

@ PROW()     , 30 SAY "Emissao : " + hb_Dtoc(comanda->DatEmi, "DD/MM/YY")
@ PROW() + 01, 00 SAY REPLICATE("-",48) 
@ PROW() + 01, 00 SAY Padc( "Numero de Controle " + StrZero(NumeroControle,6), 48)
@ PROW() + 01, 00 SAY REPLICATE("-",48)
@ PROW() + 01, 00 SAY "Descricao                  Qtde    Preco   Total"
@ PROW() + 01, 00 SAY REPLICATE("-",48) + FontPequena

SELECT DESDOcom ; DbSetOrder(1)
DbGoTop()
OrdScope( 0, NumeroControle )
OrdScope( 1, NumeroControle )
DbGoTop()
Do While !Eof()

	If FlgCan = "S"
		DbSkip()
		Loop
	Endif

  	@ PROW() + 1, 00 SAY SubStr( DESPRD, 1, 31 )
  	@ PROW()    , 33 SAY QTDPRD PICT "@E 9999.999"
  	@ PROW()    , 42 SAY "x"
  	@ PROW()    , 46 SAY VLRUNI PICT "@E 9999.99"
  	@ PROW()    , 55 SAY VLRITM PICT "@E 9,999.99"
  	DbSkip()
	
Enddo

OrdScope( 0, Nil )
OrdScope( 1, Nil )

@ PROW() + 01, 00 SAY FontNormal
@ PROW()     , 39 SAY "------------" 

@ PROW() + 01, 28 SAY "SUB-TOTAL" 
If comanda->STATUS = "C"
	@ PROW()     , 39 SAY comanda->TotCom - comanda->VlrAcr + comanda->VlrDes PICT "@E 99,999.99"
Else
	@ PROW()     , 39 SAY comanda->TotCom PICT "@E 99,999.99"
Endif

@ PROW() + 01, 00 SAY FontNormalNegrito

If comanda->STATUS = "C"
	@ PROW() + 01, 00 SAY FontNormal
	@ PROW() + 01, 28 SAY " RECEBIDO" 
	@ PROW()     , 39 SAY ValorRecebido  PICT "@E 99,999.99"

	@ PROW() + 01, 28 SAY "T R O C O" 
	@ PROW()     , 39 SAY (ValorRecebido - comanda->TotCom) PICT "@E 99,999.99"
Endif

@ PROW() + 02, 00 SAY FontNormal + Padc( " NAO EH DOCUMENTO FISCAL " ,48, "*" )

@ PROW() + 02, 00 SAY REPLICATE("-",48) 

SET CONSOLE ON
SET PRINTER OFF
SET PRINTER TO
SET DEVICE TO SCREEN 
SET DATE FORMAT TO "DD/MM/YYYY"
SET RELATION TO

If !Empty(gPrinterName)

	win_PrintFileRaw( gPrinterName, ArqImp, MsgCriaSoft)

Endif

Return .t.
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Impressora Termica Elgin i9

Mensagem por rochinha »

Amiguinhos,

Para os que olharem o código e acharem, "...nossa que simples, é fácil..." devem entender que os comandos contidos no código expressam padrão ESC/ASCII para envio de comandos a saída de impressão.

Portanto deve verificar que a impressora já esteja pré-configurada para receber estes comandos, como é o padrão das Epsons.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Impressora Termica Elgin i9

Mensagem por rochinha »

Amiguinhos,

hazael
Veja nas configurações da impressora pelo aplicativo de configuração qual o codepage ativo. Como o Brasil É o Único paÍs que usa acentuaÇÃo temos de fazer na unha a configuração.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder