Fórum Balança Urano #363740
11/09/2008
0
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
Curtir tópico
+ 0Posts
11/09/2008
Steles
Gostei + 0
12/09/2008
Steles
Gostei + 0
15/10/2008
Mcarriconde
Tem como vc passar como resolveu?
Grato
Gostei + 0
16/10/2008
Steles
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
Clique aqui para fazer login e interagir na Comunidade :)