Finalmente o pessoal da Epson fez um exemplo usando (x)harbour x minigui utilizando a dll. Notem que tem outros parâmetros que não estão documentados. Tem que instalar ela como vender class, conforme as instruções abaixo. O problema se usar como vender class é que vc só consegui imprimir usando dll, não dá por exemplo para enviar comandos de impressão com miniprint, chr etc
Vejam o exemplo:
Código: Selecionar todos
/*****************************************************************************
* SISTEMA : ROTINA EVENTUAL *
* PROGRAMA : EXEMPLO_EPSON.PRG *
* OBJETIVO : Impressão de XML do Cupom Fiscal Eletrônico - EPSON *
* AUTOR : *
* DATA : 11.09.2015 *
* ULT. ALT.: 11.09.2015 *
*****************************************************************************/
#include <minigui.ch>
#define HB_DYN_CALLCONV_STDCALL 0x0100000 /* Windows API default */
Procedure Main()
Public hLib
REQUEST HB_LANG_PT
HB_LangSelect([PT])
REQUEST HB_CODEPAGE_PT850 &&& PARA INDEXAR CAMPOS ACENTUADOS
HB_SETCODEPAGE([PT850]) &&& PARA INDEXAR CAMPOS ACENTUADOS
Set wrap on
Set talk off
Set date briti &&& data no formato dd/mm/aaaa
Set dele on &&& ignora registros marcados por deleção
Set score off
Set exact on
Set ToolTip on
Setcancel(.F.) &&& evitar cancelar sistema c/ ALT + C
Set cent on &&& ano com 4 dígitos
Set epoch to 2000 &&& ano a partir de 2000
Set excl off &&& abre arquivos em modo compartilhado
Set navigation extended &&& enter no lugar do tab
Set language to portuguese &&& mensagens em português
Set multiple off warning &&& abrir 1 cópia somente
Set browsesync on &&& para o comando browse funcionar ok
Set tooltipstyle balloon &&& para mensagem dos campos em forma de balão
Set menustyle extended &&& padrão é standard, extended estilo office 2007
Set programmaticchange off &&& introduzida na build 1.9.94
define window main at 0, 0 width 200 height 150 ICON "demo.ico" NOTIFYICON "demo.ico" MAIN title [Impressão de XML do Cupom Fiscal Eletrônico - Epson] NOSIZE NOMAXIMIZE on init {|| fIniciar()} on release {|| fLiberar()}
define button btn_Abrirporta
row 10
col 10
width 120
caption [&Abrir Porta]
action {|| fAbrirPorta()}
DEFAULT .t.
end button
define button btn_Imprimir
row 50
col 10
width 120
caption [&Imprimir Nfc-e]
action {|| fImprimirNfce()}
DEFAULT .t.
end button
define button btn_FecharPorta
row 90
col 10
width 120
caption [&Fechar Porta]
action {|| fFecharPorta()}
default .t.
end button
on key escape action {|| thiswindow.release}
end window
main.center()
main.activate()
Return (Nil)
Procedure fIniciar()
If !File([InterfaceEpsonNF.dll])
MsgStop([InterfaceEpsonNF.dll não encontrada na pasta atual.], [Erro])
Quit
Endif
hLib := hb_libLoad( "InterfaceEpsonNF.dll" )
If !File([sat.xml])
MsgStop([Não achei o sat.xml para Imprimir], [Erro])
Quit
Endif
Return (Nil)
Procedure fLiberar()
hb_libFree( hLib )
Return (Nil)
Function fAbrirPorta()
Local iRetorno:= 0
iRetorno:= hb_DynCall( { "IniciaPorta", hLib, HB_DYN_CALLCONV_STDCALL }, [USB], , , 1, , 1, 1, .T.)
If iRetorno == 0
MsgStop([Erro ao abrir a porta], [Erro])
Return (.F.)
Else
MsgInfo([Retorno IniciaPorta ] + Iif(valtype(iRetorno) == [N], str(iRetorno), iRetorno) , [Erro])
Return (.T.)
Endif
Return (Nil)
Function fImprimirNfce()
Local iRetorno:= 0
iRetorno:= hb_DynCall( { "EPSON_SAT_Imprimir", hLib, HB_DYN_CALLCONV_STDCALL }, [sat.xml],[C] , , 1, , 1, 1, .T.)
If iRetorno == 0
MsgStop([Erro ao imprimir o XML], [Erro])
Return (.F.)
Else
MsgInfo([Retorno EPSON_SAT_Imprimir ] + Iif(valtype(iRetorno) == [N], str(iRetorno), iRetorno) , [Erro])
Return (.T.)
Endif
iRetorno:= hb_DynCall( { "AcionaGuilhotina", hLib, HB_DYN_CALLCONV_STDCALL }, 1, , ,1, , 1, 1, .T.)
If iRetorno == 0
MsgStop([Erro ao cortar papel], [Erro])
Return (.F.)
Else
MsgInfo([Retorno AcionaGuilhotina ] + Iif(valtype(iRetorno) == [N], str(iRetorno), iRetorno) , [Erro])
Return (.T.)
Endif
Return (Nil)
Function fFecharPorta()
Local iRetorno:= 0
iRetorno:= hb_DynCall( { "FechaPorta", hLib, HB_DYN_CALLCONV_STDCALL })
If iRetorno == 0
MsgStop([Erro ao fechar a porta], [Erro])
Return (.F.)
Else
MsgInfo([Retorno FechaPorta ] + Iif(valtype(iRetorno) == [N], str(iRetorno), iRetorno) , [Erro])
Return (.T.)
Endif
Return (Nil)
Manual de instalação do vender class
Sobre o Equipamento: A impressora TM-T20 é Plug and Play - vem pronta pra uso. Certifiicada com o selo mundial Energy Star que atesta o baixo consumo de energia. Possibilidade de utilização de bobinas de 80mm ou 58mm de largura. Flexível, pode ser instalada na horizontal, vertical ou vertical fixada na parede. Economia de espaço graças a alocação interna da fonte. Os drivers são otimizados e estão disponíveis para Windows, Linux, Mac e Android. Impressão de código de barras bi-dimensional residente na memória - PDF147, QR Code (pronta para NFC-e e S@T), entre outros.
Técnica: Entrando no detalhe técnico, a TM-T20 com interface de comunicação USB possui as seguintes opções de configuração: 1 - Printer Class (Configuração Inicial) Este modo configura a impressora para trabalhar com o protocolo padrão LPR, sendo automaticamente reconhecida pelo Windows quando conectada no micro. O Windows detectará a impressora como um novo dispositivo com o nome “Suporte de Impressão”. 2 – Vender Class Este modo configura a impressora para trabalhar com protocolo próprio do fabricante, sendo necessário utilizar um driver USB específico, chamado TMUSB, para reconhecimento e comunicação por meio da porta USB nativa da Epson, o que facilita a integração com aplicações desenvolvidas com biblioteca/API InterfaceEpsonNF.dll. PASSO-A-PASSO PARA REALIZAR A CONFIGURAÇÃO - Instalar o TM-T20 Software Utility que pode ser baixado no link –
https://download.epson-biz.com/modules/ ... t=3&pid=37
- Ao iniciar o Utility, adicione uma nova porta USB e clique no botão OK para entrar no menu das configurações avançadas da impressora. - Clique na opção do menu “Comunicação I/F”, em seguida mude a definição USB para o tipo “Vender Class”. Em seguida clique no botão “Definir” para realizar a configuração da impressora. Neste momento o aplicativo Utility já pode ser fechado e a impressora desligada. Após realizar a configuração acima, a impressora já estará trabalhando no modo Vender Class e permitirá efetuar a instalação do driver TMUSB. - O driver TMUSB versão 400c, pode ser baixado no link -
http://epsonstars.com.br/drivers/TMUSB400c.zip
- Após baixar o driver, basta executar Setup.exe e realizar a instalação, que é bastante simples e rápida. - Religue a impressora para que seja novamente reconhecida pelo Windows com o novo driver. Pronto, a comunicação com a impressora não fiscal através da biblioteca InterfaceEpsonNF.dll já pode ser iniciada. No link a seguir você poderá baixar a InterfaceEpson e 15 exemplos de uso em diversas linguagens de programação.
http://global.latin.epson.com/br/Catalo ... -e-Suporte