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.
Impressora Termica Elgin i9
Moderador: Moderadores
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
Impressora Termica Elgin i9
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
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Impressora Termica Elgin i9
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.
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.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Impressora Termica Elgin i9
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.
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.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
