Ola a todos
Estou com uma impressora fiscal sweda st 200, gostaria de saber se alguem tem o tratamento do retorno dos comandos enviados, exemplo
1 - obter o número do cupom fiscal
2 - verificar a necessidade de efetuar a redução Z, quando o usuário esquecer
entre outras.
Atenciosamente
André Lucas Souza
LUCASTEK Sistemas
como obter retorno da sweda st 200 ?
Moderador: Moderadores
-
andrelucass
- Usuário Nível 3

- Mensagens: 145
- Registrado em: 25 Fev 2005 10:40
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: como obter retorno da sweda st 200 ?
Olá André,
Eu não uso ECF mas vejo muito o pessoal falando que se comunica usando a hbcomm. De uma procurada aqui pelo Forum e veja se acha algo a respeito, e não deixe de ver tmb. com o fabricante do mesmo se já não tem algum solução como uma DLL ou algo assim.
Tem tmb. um projeto de codigo aberto que se comunica com varias impressoras fiscais, que talvez lhe ajude, o link do projeto esta abaixo:
http://sourceforge.net/project/showfile ... _id=182935
Eu não uso ECF mas vejo muito o pessoal falando que se comunica usando a hbcomm. De uma procurada aqui pelo Forum e veja se acha algo a respeito, e não deixe de ver tmb. com o fabricante do mesmo se já não tem algum solução como uma DLL ou algo assim.
Tem tmb. um projeto de codigo aberto que se comunica com varias impressoras fiscais, que talvez lhe ajude, o link do projeto esta abaixo:
http://sourceforge.net/project/showfile ... _id=182935
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Re: como obter retorno da sweda st 200 ?
Se vc fizer uso da DLL da Sweda, da linha Connect, é deste modo:
Primeiro tem que declarar a DLL
depois para obter o número de cupom....
Baixe a DLL da linha Connect-C para as ECF´s Térmicas da Sweda, que vem junto um manual com todas as funções.
Estou trabalhando em xHarbour, com as DLL´s das ECF´s Sweda, Daruma e Bematech. E fica um avião !!!
Primeiro tem que declarar a DLL
Código: Selecionar todos
h1:= LoadLibrary("ConvEcf.dll")Código: Selecionar todos
local cupo:= space(6)
if trim(cdtef000->ecf) == "Sweda"
dllcall(h1,32,"ECF_NumeroCupom",cupo)
endif
return cupoBaixe a DLL da linha Connect-C para as ECF´s Térmicas da Sweda, que vem junto um manual com todas as funções.
Estou trabalhando em xHarbour, com as DLL´s das ECF´s Sweda, Daruma e Bematech. E fica um avião !!!
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
-
andrelucass
- Usuário Nível 3

- Mensagens: 145
- Registrado em: 25 Fev 2005 10:40
-
clebervn
- Usuário Nível 3

- Mensagens: 286
- Registrado em: 12 Jun 2007 10:49
- Localização: Florianópolis/SC
Re: como obter retorno da sweda st 200 ?
cOldCommand := cCommand
IF LEFT(cCommand,1) == "."
cSring2Send := CHR(K_ESC) + cCommand + "}"
ELSE
cSring2Send := SWD_PreparaCmd( cCommand )
ENDIF
nHandle := INIT_PORT(h_ecf_port,9600,8,0,1,256)
IF nHandle > 0
OUTCHR(nHandle,cSring2Send,Len(cSring2Send))
SWD_Wait(cCommand) -> tempo espera retorno, pode por 0.8 q dá
IF ISWORKING(nHandle)
nByteX := INBUFSIZE(nHandle)
IF nByteX > 0
cResposta := SPACE(nByteX)
INCHR(nHandle,nByteX,@cResposta)
cResposta := ALLTRIM(cResposta)
ENDIF
ENDIF
ELSE
WinErr( { "N„o foi poss¡vel comunica‡„o",;
"" ,;
"com a porta serial ("+h_ecf_port+")." },;
{ "Enter" } ,;
{ "Estatus da Impressora ECF" } )
ENDIF
UNINT_PORT(nHandle)
.....
FUNCTION SWD_PreparaCmd( cCommand )
LOCAL i
LOCAL STX := CHR(02)
LOCAL CMD
LOCAL SEQ := CHR(42)
LOCAL ETX := CHR(03)
LOCAL CKS
LOCAL iSoma := ASC( STX ) + ASC( ETX ) + ASC( SEQ )
FOR i := 1 TO LEN( cCommand )
iSoma += ASC( SUBSTR( cCommand, i, 1 ) )
NEXT
CMD := cCommand
CKS := CHR( INT( iSoma%256 ) )
RETURN( STX + SEQ + CMD + ETX + CKS )
IF LEFT(cCommand,1) == "."
cSring2Send := CHR(K_ESC) + cCommand + "}"
ELSE
cSring2Send := SWD_PreparaCmd( cCommand )
ENDIF
nHandle := INIT_PORT(h_ecf_port,9600,8,0,1,256)
IF nHandle > 0
OUTCHR(nHandle,cSring2Send,Len(cSring2Send))
SWD_Wait(cCommand) -> tempo espera retorno, pode por 0.8 q dá
IF ISWORKING(nHandle)
nByteX := INBUFSIZE(nHandle)
IF nByteX > 0
cResposta := SPACE(nByteX)
INCHR(nHandle,nByteX,@cResposta)
cResposta := ALLTRIM(cResposta)
ENDIF
ENDIF
ELSE
WinErr( { "N„o foi poss¡vel comunica‡„o",;
"" ,;
"com a porta serial ("+h_ecf_port+")." },;
{ "Enter" } ,;
{ "Estatus da Impressora ECF" } )
ENDIF
UNINT_PORT(nHandle)
.....
FUNCTION SWD_PreparaCmd( cCommand )
LOCAL i
LOCAL STX := CHR(02)
LOCAL CMD
LOCAL SEQ := CHR(42)
LOCAL ETX := CHR(03)
LOCAL CKS
LOCAL iSoma := ASC( STX ) + ASC( ETX ) + ASC( SEQ )
FOR i := 1 TO LEN( cCommand )
iSoma += ASC( SUBSTR( cCommand, i, 1 ) )
NEXT
CMD := cCommand
CKS := CHR( INT( iSoma%256 ) )
RETURN( STX + SEQ + CMD + ETX + CKS )