Balança Urano
Olá Pessoal, sou novo por aqui no fórum e também sou novo com programação Delphi e estou com o seguinte problema:
Estou tentando capturar o peso de uma balança urano UDC-CO mas não obtenho retorno correto da balança, tenho um exemplo disponibizado pela Urano no manual de comunicação da dll LePeso em C
#include <iostream.h>
include <conio.h>
typedef char *(*LEPESO)();
typedef int (*ABREPORTASERIAL)(char *);
typedef int (*FECHAPORTASERIAL)(void);
typedef void (*ALTERAMODELOBALANCA)(int);
typedef void (*ALTERAMODOOPERACAO)(int);
int main(int argc, char* argv[])
{
HINSTANCE hinstLib;
LEPESO ProcLePeso;
ABREPORTASERIAL ProcAbrePortaSerial;
FECHAPORTASERIAL ProcFechaPortaSerial;
ALTERAMODELOBALANCA ProcAlteraModeloBalanca;
ALTERAMODOOPERACAO ProcAlteraModoOperacao;
hinstLib = LoadLibrary(´LePeso.dll´);
if(hinstLib != NULL) {
ProcLePeso = (LEPESO)GetProcAddress(hinstLib, ´_LePeso´);
ProcAbrePortaSerial = (ABREPORTASERIAL)GetProcAddress(hinstLib, ´_AbrePortaSerial´);
ProcFechaPortaSerial = (FECHAPORTASERIAL)GetProcAddress(hinstLib,
´_FechaPortaSerial´);
ProcAlteraModeloBalanca = (ALTERAMODELOBALANCA)GetProcAddress(hinstLib,
´_AlteraModeloBalanca´);
ProcAlteraModoOperacao = (ALTERAMODOOPERACAO)GetProcAddress(hinstLib,
´_AlteraModoOperacao´);
(ProcAlteraModeloBalanca)(1);
(ProcAlteraModoOperacao)(1);
(ProcAbrePortaSerial)(´COM1´);
while(!kbhit()) cout << (ProcLePeso)();
(ProcFechaPortaSerial)();
}
FreeLibrary(hinstLib);
return 0;
}
estou usando da seguinte maneira
Declaração da dll
function LePeso():String;stdcall;external ´LePeso.dll´ name ´_LePeso´;
o meu grande problema é com o comando lepeso, onde faço da seguinte maneira
PesoUrano:=LePeso();
onde Peso Urano é uma String, mas não obtenho nenhum retorno se alguém já programou balanças Urano por favor me ajude.
Estou tentando capturar o peso de uma balança urano UDC-CO mas não obtenho retorno correto da balança, tenho um exemplo disponibizado pela Urano no manual de comunicação da dll LePeso em C
#include <iostream.h>
include <conio.h>
typedef char *(*LEPESO)();
typedef int (*ABREPORTASERIAL)(char *);
typedef int (*FECHAPORTASERIAL)(void);
typedef void (*ALTERAMODELOBALANCA)(int);
typedef void (*ALTERAMODOOPERACAO)(int);
int main(int argc, char* argv[])
{
HINSTANCE hinstLib;
LEPESO ProcLePeso;
ABREPORTASERIAL ProcAbrePortaSerial;
FECHAPORTASERIAL ProcFechaPortaSerial;
ALTERAMODELOBALANCA ProcAlteraModeloBalanca;
ALTERAMODOOPERACAO ProcAlteraModoOperacao;
hinstLib = LoadLibrary(´LePeso.dll´);
if(hinstLib != NULL) {
ProcLePeso = (LEPESO)GetProcAddress(hinstLib, ´_LePeso´);
ProcAbrePortaSerial = (ABREPORTASERIAL)GetProcAddress(hinstLib, ´_AbrePortaSerial´);
ProcFechaPortaSerial = (FECHAPORTASERIAL)GetProcAddress(hinstLib,
´_FechaPortaSerial´);
ProcAlteraModeloBalanca = (ALTERAMODELOBALANCA)GetProcAddress(hinstLib,
´_AlteraModeloBalanca´);
ProcAlteraModoOperacao = (ALTERAMODOOPERACAO)GetProcAddress(hinstLib,
´_AlteraModoOperacao´);
(ProcAlteraModeloBalanca)(1);
(ProcAlteraModoOperacao)(1);
(ProcAbrePortaSerial)(´COM1´);
while(!kbhit()) cout << (ProcLePeso)();
(ProcFechaPortaSerial)();
}
FreeLibrary(hinstLib);
return 0;
}
estou usando da seguinte maneira
Declaração da dll
function LePeso():String;stdcall;external ´LePeso.dll´ name ´_LePeso´;
o meu grande problema é com o comando lepeso, onde faço da seguinte maneira
PesoUrano:=LePeso();
onde Peso Urano é uma String, mas não obtenho nenhum retorno se alguém já programou balanças Urano por favor me ajude.
Steles
Curtidas 0
Respostas
Steles
11/09/2008
Obs: Não entendo muito C por isso postei o código feito em C, se alguem enteder e puder clarear minha idéias.
GOSTEI 0
Steles
11/09/2008
Pessoal problema já resolvido.
GOSTEI 0
Mcarriconde
11/09/2008
To tendo o mesmo problema que vc.
Tem como vc passar como resolveu?
Grato
Tem como vc passar como resolveu?
Grato
GOSTEI 0
Steles
11/09/2008
mcarriconde, fiz da seguinte maneira
antes de abrir a porta da balança é necessário passar o modelo e o modo de operação da balança, estes dois comandos estão no manual da dll
ModeloBalancaUrano(StrToInt(ModeloUrano))
ModoOperacaoUrano(StrToInt(ModoUrano));
ModeloUrano e ModoUrano são strings, caso não possua o manual me avise que te envio por e-mail
e para capturar o peso usei da seguinte maneira
PesoUrano:=LePeso();
onde PesoUrano é uma string tb
o grande detalhe é a declaração das funções, declare da seguinte maneira
function AbrePortaUrano(Porta:String):Integer;stdcall;external ´LePeso.dll´ name ´_AbrePortaSerial´;
function FechaPortaUrano:Integer;stdcall;external ´LePeso.dll´ name ´_FechaPortaSerial´;
function LePeso():PChar;stdcall;external ´LePeso.dll´ name ´_LePeso´;
function ModeloBalancaUrano(Modelo: Integer):Integer;stdcall;external ´LePeso.dll´ name ´_AlteraModeloBalanca´;
function ModoOperacaoUrano(Modo: Integer):Integer;stdcall;external ´LePeso.dll´ name ´_AlteraModoOperacao´;
o comando LePeso deve ser declarado do tipo PChar para que funcione corretamente
espero ter ajudado, qualquer dúvida fique a vontade pra perguntar
antes de abrir a porta da balança é necessário passar o modelo e o modo de operação da balança, estes dois comandos estão no manual da dll
ModeloBalancaUrano(StrToInt(ModeloUrano))
ModoOperacaoUrano(StrToInt(ModoUrano));
ModeloUrano e ModoUrano são strings, caso não possua o manual me avise que te envio por e-mail
e para capturar o peso usei da seguinte maneira
PesoUrano:=LePeso();
onde PesoUrano é uma string tb
o grande detalhe é a declaração das funções, declare da seguinte maneira
function AbrePortaUrano(Porta:String):Integer;stdcall;external ´LePeso.dll´ name ´_AbrePortaSerial´;
function FechaPortaUrano:Integer;stdcall;external ´LePeso.dll´ name ´_FechaPortaSerial´;
function LePeso():PChar;stdcall;external ´LePeso.dll´ name ´_LePeso´;
function ModeloBalancaUrano(Modelo: Integer):Integer;stdcall;external ´LePeso.dll´ name ´_AlteraModeloBalanca´;
function ModoOperacaoUrano(Modo: Integer):Integer;stdcall;external ´LePeso.dll´ name ´_AlteraModoOperacao´;
o comando LePeso deve ser declarado do tipo PChar para que funcione corretamente
espero ter ajudado, qualquer dúvida fique a vontade pra perguntar
GOSTEI 0