Página 1 de 1
como obter retorno da sweda st 200 ?
Enviado: 27 Jun 2008 10:09
por andrelucass
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
Re: como obter retorno da sweda st 200 ?
Enviado: 27 Jun 2008 12:07
por sygecom
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
Re: como obter retorno da sweda st 200 ?
Enviado: 27 Jun 2008 12:59
por alaminojunior
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....
Código: Selecionar todos
local cupo:= space(6)
if trim(cdtef000->ecf) == "Sweda"
dllcall(h1,32,"ECF_NumeroCupom",cupo)
endif
return cupo
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 !!!
Re: como obter retorno da sweda st 200 ?
Enviado: 27 Jun 2008 16:13
por clebervn
poste o q vc utiliza, se dll ou comunicação direta

Re: como obter retorno da sweda st 200 ?
Enviado: 28 Jun 2008 13:16
por andrelucass
Eu utilizo comunicação direta
Re: como obter retorno da sweda st 200 ?
Enviado: 30 Jun 2008 08:50
por clebervn
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 )