Página 1 de 1

Ler Dados Elgin Usando DLL

Enviado: 14 Out 2016 19:03
por gilsonpaulo
Boa noite a todos.

Estou tentando tentando fazer a leitura de peso de uma balança Elgin DP-3000 plus, mas sem sucesso, tem os exemplos em vb e delphi mas não consegui converte-los.

Código: Selecionar todos

#include <hmg.ch>
#include "hbdyn.ch"

Function Main

        Load Window Main
        Main.Center
        Main.Activate

Return
********************************************************************************
Function le

Local	hDLL, retorno, strValor, strPorta, strBaud, iRetorno

strValor := Space(5)
strPorta := "COM2"
strBaud := "9600"
hDLL := hb_LibLoad("elgin.dll")

retorno := hb_dynCall( { "Elgin_leBalanca", hDLL, HB_DYN_CALLCONV_STDCALL}, strPorta, strBaud, strValor)
MsgBox(retorno)
hb_LibFree(hDLL)
Return
********************************************************************************

Código: Selecionar todos

Exemplo em Visual Basic
Dim strPorta as String
Dim strBaud as String
Dim strValor as String
Dim iRetorno as Integer

strValor = Space(5)
strPorta = "COM2"
strBaud = "9600"

iRetorno = Elgin_LeBalanca( strPorta, strBaud, strValor )

Código: Selecionar todos

// Exemplo em Delphi
var
strPorta, strBaud, strValor: String;
iRetorno: Integer;
begin
strValor := StringofChar(' ', 5);
strPorta := 'COM2';
strBaud := '9600';
iRetorno := Elgin_LeBalanca( strPorta, strBaud, strValor );
end;
Sealguem puder me dar ma luz agradeço desde ja.

Ler Dados Elgin Usando DLL

Enviado: 17 Out 2016 13:18
por asimoes
Olá,
Acontece algum erro na chamada da dll,

Você sabe quais são os parâmetros e seus tipos da dll?

Outra coisa, em delphi e vb funciona?

Ler Dados Elgin Usando DLL

Enviado: 17 Out 2016 13:27
por asimoes
No exemplo delphi, retorno é um integer

Você tá passando a variável retorno para msgbox exibir, tenta isso:

MsgBox(hb_ntos(retorno))

Ler Dados Elgin Usando DLL

Enviado: 17 Out 2016 13:32
por asimoes
Tem que ver a documentação da dll

Eu tentaria isso:

iRetorno := Elgin_LeBalanca( strPorta, strBaud, @strValor );

MsgBox(hb_NtoS( iRetorno ))

Outra coisa o que a balança retorna? se for o que to imaginando deve ser valor, então deve ser strValor.

Ler Dados Elgin Usando DLL

Enviado: 17 Out 2016 15:44
por asimoes
Olá Gilson,

É isso mesmo :

strValor, retorna o valor, deve passar por referência. E iRetorno retorna 0 = erro, ou 1 Sucesso.

iRetorno := Elgin_LeBalanca( strPorta, strBaud, @strValor )

3.2.11.12 Elgin_LeBalanca
Le a informação contida na balança.

Parâmetro:
Porta: Variável do tipo STRING, com o nome da porta serial a qual está conectada a balança.
Baud: Variável do tipo STRING, com a velocidade de conexão com a porta serial.
Valor: Variável do tipo STRING que retorna o valor contido na balança.

Possíveis retornos da Função (INTEIRO):
0: Erro de execução da função.
1: OK.

Ler Dados Elgin Usando DLL

Enviado: 18 Out 2016 09:28
por gilsonpaulo
Ok Asimoes, muito obrigado, vou testar aqui e ja dou um retorno.

Ler Dados Elgin Usando DLL

Enviado: 22 Out 2016 22:42
por gilsonpaulo
Desculpe a demora. mas resolvi usando a hbwin

Código: Selecionar todos

#include <hmg.ch>
#include "hbwin.ch"

FuncTion Main()

        SET DECIMALS TO 3

        Load Window Main
        Main.Center
        Main.Activate
        
Return
********************************************************************************
Function Le()

LOCAL cString:=Chr( 5 )
LOCAL nResult, nPeso, cValor, cAnswer, nLeitura
LOCAL cPort:="COM10"

	oWinPort := win_Com():Init( cPort, WIN_CBR_9600, WIN_NOPARITY, 8, WIN_ONESTOPBIT )

	oWinPort:QueueSize( 1000, 1000 )
	oWinPort:Purge()		

	oWinPort:Write(cString)
     
	nLeitura:=oWinPort:Read(@cAnswer,6)
	
	nPeso:=val(substr(cAnswer,2,5))/1000
	MsgBox(nPeso)
 
   oWinPort:Purge()
 	
   oWinPort:Close()

Return
Só para constar é uma balança Elgin DP-3000 PLUS 30KG

E muito obrigado pela ajuda Asimoes.

Ler Dados Elgin Usando DLL

Enviado: 23 Out 2016 07:41
por asimoes
Essa win_Com é um objeto da hmg? ou é uma classe sua?

Ler Dados Elgin Usando DLL

Enviado: 23 Out 2016 07:44
por asimoes
Já encontrei é uma classe da hbwin