Moderador: Moderadores
/*****************************************************************************
* 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)
Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes