Leitura de peso - clipper para xharbour

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Leitura de peso - clipper para xharbour

Mensagem por TerraSoftware »

Caros colegas, tenho uma funcao em clipper com ctp.lib que faz a leitura de peso de balança, funciona certinho. Agora preciso portar para xharbour, e nao manjo muito da hbcomm.lib, os amigos poderiam me ajudar?

Preciso de uma funcao em xharbour que faça a mesma coisa que a funcao em clipper esta fazendo.
Segue a funcao em clipper:

Código: Selecionar todos

*******************
Function Ler_Peso() 
*******************
Local nPorta := 1 
Local cTrans := "N" 
Local nBits := 8 
Local nParad := 1 
Local nVeloc := 2400 
Local cInicia:= Chr(05)
Local Erro := .F. 
Local VlrPeso:= 0 
Local nRetorn:= .T. 
If Com_Open(nPorta,1000,1000) == .t. 
   nConf := Com_Init(nPorta,nVeloc,cTrans,nBits,nParad) 
   Com_Send(nPorta,cInicia) 
   Inkey(0.10) 
   Com_Count(nPorta) 
   Inkey(0.10) 
   nLeitura := Com_read(nPorta,10) 
   If Substr(nLeitura,1,1)== Chr(02) .And. Right(AllTrim(nLeitura),1)==Chr(03)
      alert(nleitura)
   Endif 
   Com_Close(nPorta) 
Endif 
Return (.T.)
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

Re: Leitura de peso - clipper para xharbour

Mensagem por DLZ »

Cara..
Já que vc migrou para Xharbour, usa a DLL do fabricante da balança... é muito mais fácil !!
Eu já fiz isso com balanças PDV da Toledo.. não sei se é o teu caso, mas se não for é só entrar no site do fabricante e pegar a DLL e a documentação dela...
Um abraço
TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Re: Leitura de peso - clipper para xharbour

Mensagem por TerraSoftware »

Caro colega DLZ, é justamente isso que quero fazer, ler o peso de uma balança de PDV da Toledo. Não sabia que existia uma DLL para este fim. Vou me enteirar do assunto. Se o amigo tiver algum exemplo e puder me mandar, fico agradecido.

:)Pos
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

Re: Leitura de peso - clipper para xharbour

Mensagem por DLZ »

Eis aqui um pequeno exemplo da utilização da P05.DLL para capturar o peso das balanças PDV da Toledo.

Código: Selecionar todos

FUNCTION RET_PESO()
CLEAR GETS
TDLL:=LoadLibrary("P05.dll")
IF TDLL=0
   ALERT("Problemas na abertura da DLL P05.dll")
   RETURN 0
ENDIF

VTELAPESO:=SAVESCREEN(00,00,24,80)
@ 05,05 CLEAR TO 16,35
@ 05,05 TI 16,35
@ 07,06 SAY PADC(" ",30," ")
@ 15,06 SAY PADC(" ",30," ")

@ 09,06 SAY "Peso:"
VPORTA:=1   // COM1=1 COM2=2.... COM5=5
VVELOCIDADE:=0  // 0=2400 1=4800 2=9600
VDATABITS:=1    // 0=7  1=8
VPARIDADE:=0    // 0=NENHUMA 1=IMPAR 2=PAR 3=ESPACO
RETPORTA:=DLLCALL(TDLL,32,"AbrePorta",VPORTA,VVELOCIDADE,VDATABITS,VPARIDADE)
IF RETPORTA<>1
   ALERT("Erro ao iniciar a porta de comunica‡Æo Com"+ALLTRIM(STR(VPORTA)))
   VRETPESO:=0
   @ 09,11 GET VRETPESO PICT "@E 999.999"
   READ
   RESTSCREEN(00,00,24,80,VTELAPESO)
   RETURN VRETPESO
ENDIF

@ 07,06 SAY PADC("Aguardando retorno da balan‡a",30," ")
@ 15,06 SAY PADC("ESC=Aborta",30," ")
VPESO:=SPACE(6)
DO WHILE EMPTY(VPESO) .OR. SUBSTR(VPESO,1,5)="00000"
   DLLCALL(TDLL,32,"PegaPeso",1,VPESO,"C:\")
   VTEC:=INKEY(0.1)
   IF VTEC=27
      EXIT
   ENDIF
ENDDO

@ 07,06 SAY PADC(" ",30," ")
@ 15,06 SAY PADC(" ",30," ")
VRETPESO:=VAL(VPESO)/1000

@ 09,11 GET VRETPESO PICT "@E 999.999"
READ
RESTSCREEN(00,00,24,80,VTELAPESO)
SETLASTKEY(0)
RETURN VRETPESO
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Leitura de peso - clipper para xharbour

Mensagem por sygecom »

Seu exemplo em clipper ficaria assim na Hbcomm:

Código: Selecionar todos

*****************
Function Ler_Peso
*****************
Local nPorta := 1
Local cTrans := "N"
Local nBits := 8
Local nParad := 1
Local nVeloc := 2400
Local cInicia:= Chr(05)
Local Erro := .F.
Local VlrPeso:= 0
Local nRetorn:= .T.
Local nBytes, oCom

if nPorta > 9
   oCom := DS_Portas():New('\\.\COM'+STR(nPorta,2),nVeloc,nBits,0,nParad)
else
   oCom := DS_Portas():New('COM'+STR(nPorta,1),nVeloc,nBits,0,nParad)
endif
oCom:AbrirPorta()
if oCom:lAberto = .F.
   oCom:FecharPorta(oCom)
   alert("Problemas na Inicialização da Porta Serial, Favor Revisar a Porta COM"+str(nPorta))
   Return(.F.)
endif

Millisec(300)  // tempo obrigatorio de espera de limpeza da porta

nBytes := InbufSize(oCom) // Pega Dados do Buffer.
oCom:EscreverPorta( nBytes, cInicia )

nLeitura:=oCom:LerPorta(10)

oCom:FecharPorta(oCom)

If Substr(nLeitura,1,1)== Chr(02) .And. Right(AllTrim(nLeitura),1)==Chr(03)
   alert(nleitura)
Endif
Return(.T.)

#include "HB_PORTAS.prg"
Obs: Tem que linkar junto o .PRG em anexo que é uma classe para leitura da porta usando a Hbcomm, e junto no anexo tem um pequeno Read-me.
Anexos
hbcomm.zip
(4.1 KiB) Baixado 176 vezes
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Re: Leitura de peso - clipper para xharbour

Mensagem por TerraSoftware »

Valeu moçada!!

O cobra foi matada.

:))
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
Responder