Buenas tardes amigos:
Ante todo muchas gracias por leer este hilo y quisiera pedirles que me apoyen en resolver este problema que tengo y estoy dando vueltas en círculos y no logro entender muchas cosas. bueno les detallo:
Quiero extraer de una balanza por el puerto com el peso, actualmente tengo lectura de la balanza a través del Hyper Terminal, y lo lee sin problema alguno.
he probado 2 cosas, que puede encontrar en este foro:
(1) La Clase TRS232 que encontré en un hilo de este foro, lamentablemente no lo se usar y no se que parámetros tengo que poner
Código Delphi
[-]
TRS232 = class
private
sPuerto: string;
hCommFile: THandle;
public
function LeerBuffer: string;
procedure EscribirBuffer(lsMensaje: string);
constructor Create(lsPuerto: string; liBanda: Cardinal; liByteSize, liParidad, liBitParada: Byte);
end;
por ejemplo para usar esta clase pongo las siguientes lineas:
Código Delphi
[-]
var MiBalanza:TRS232;
begin
MiBalanza := TRS232.Create('COM4',9600,8,NOPARITY,1);
self.lbDisplay.Caption := MiBalanza.LeerBuffer;
me sale un montón de errores, que he comentado en la implementación de la clase para que pueda correr pero al final cuando ya va a votar el resultado no lee esta linea:
Código Delphi
[-]
function TRS232.LeerBuffer: string;
var
sTmp: string;
c1: integer;
chBuffer: array[0..255] of char;
NumberOfBytesRead: dword;
begin
if hCommFile=INVALID_HANDLE_VALUE then
Exit;
if not ReadFile(hCommFile, chBuffer,
sizeof(chBuffer), NumberOfBytesRead, nil) then
raise Exception.Create('Imposible leer datos desde el puerto');
for c1:= 0 to NumberOfBytesRead - 1 do
sTmp:= sTmp+chBuffer[c1];
result:=sTmp;
end;
sale del código y no da ningún resultado
(2) La opción que probé es el uso de un componente que descarge e instalé , por siacaso estoy usando XE8, este componente TComPort, que tiene todas las propiedades que tiene el HyperTerminal, las pongo pero no sale nada y tampoco puedo conectarme oca les paso el código:
Código Delphi
[-]
self.ComPort1.BaudRate := br9600;
self.ComPort1.StopBits := sbOneStopBit;
self.ComPort1.DataBits := dbEight;
self.ComPort1.Parity.Bits := prNone;
self.ComPort1.Timeouts.ReadInterval := 100;
self.ComPort1.Timeouts.ReadTotalConstant := 0;
self.ComPort1.Timeouts.ReadTotalMultiplier := 0;
self.ComPort1.Timeouts.WriteTotalConstant := 250;
self.ComPort1.Timeouts.WriteTotalMultiplier := 1;
Quiero agradecerles de antemano su tiempo e interés, por ayudarme muchas gracias.
Atentamente,
Javier Villa - PERU