Ler Dados Elgin Usando DLL

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Ler Dados Elgin Usando DLL

Mensagem 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.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ler Dados Elgin Usando DLL

Mensagem 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?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ler Dados Elgin Usando DLL

Mensagem por asimoes »

No exemplo delphi, retorno é um integer

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

MsgBox(hb_ntos(retorno))
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ler Dados Elgin Usando DLL

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ler Dados Elgin Usando DLL

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Ler Dados Elgin Usando DLL

Mensagem por gilsonpaulo »

Ok Asimoes, muito obrigado, vou testar aqui e ja dou um retorno.
gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Ler Dados Elgin Usando DLL

Mensagem 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.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ler Dados Elgin Usando DLL

Mensagem por asimoes »

Essa win_Com é um objeto da hmg? ou é uma classe sua?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ler Dados Elgin Usando DLL

Mensagem por asimoes »

Já encontrei é uma classe da hbwin
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder