Desculpe a demora em retornar
Este é o codigo que le a balança saturno e mais abaixo coloquei a modificação para quem quiser ler a balança toledo.
estou usando o tcomport e alguns componentes jedi
unit formLerBalancaOP;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, inifiles, StdCtrls, Mask, Buttons,
ExtCtrls, ScktComp, JvExMask, JvToolEdit, JvBaseEdits, ACBrBase, ACBrBAL,
CPort;
type
TformLerBalanca = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
EditValor: TJvCalcEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
ComPort: TComPort;
Panel3: TPanel;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitSalvarClick(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure ComPortRxChar(Sender: TObject; Count: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
a, b, valor, s: string;
confirmar_peso, alterna: Boolean;
end;
var
formLerBalanca: TformLerBalanca;
Ini: TIniFile;
Port, BautRate, DataBits, StopBits, Parity, FlowControl, Modelo: variant;
implementation
{$R *.dfm}
procedure TformLerBalanca.FormShow(Sender: TObject);
begin
Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\maitech.ini');
Port := Ini.ReadString('balanca', 'Port', '');
BautRate := Ini.ReadString('balanca', 'BautRate', '');
DataBits := Ini.ReadString('balanca', 'DataBits', '');
StopBits := Ini.ReadString('balanca', 'StopBits', '');
Parity := Ini.ReadString('balanca', 'Parity', '');
FlowControl := Ini.ReadString('balanca', 'FlowControl', '');
Modelo := Ini.ReadString('balanca', 'Modelo', '');
Self.Caption := 'Leitura Via cabo Serial Porta ' + Port;
{ configura a balanca }
ComPort.Port := Port;
ComPort.BaudRate := StrToBaudRate(BautRate);
ComPort.DataBits := StrToDataBits(DataBits);
ComPort.StopBits := StrToStopBits(StopBits);
ComPort.Parity.Bits := StrToParity(Parity);
ComPort.FlowControl.FlowControl := StrToFlowControl(FlowControl);
// Modelo:=Ini.ReadString('balanca','Modelo','');
{ final da balanca }
try
ComPort.Open;
except
on e: exception do
begin
ShowMessage('Erro ao inicializar a balança ' + e.Message);
end;
end;
end;
procedure TformLerBalanca.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ComPort.Connected := false;
ComPort.Close;
end;
procedure TformLerBalanca.FormCreate(Sender: TObject);
var
r: TRect;
osv: TOSVersionInfo;
begin
scaled := true;
osv.dwOSVersionInfoSize := sizeof(osv);
GetVersionEx(osv);
if osv.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS then
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @r, 0);
Left := ((r.right - r.Left) - (Width)) div 2;
Top := ((r.bottom - r.Top) - (55 + Height)) div 2;
end
else
begin
Left := (GetSystemMetrics(SM_CXSCREEN) - (Width)) div 2;
Top := (GetSystemMetrics(SM_CYSCREEN) - (55 + Height)) div 2;
end;
end;
procedure TformLerBalanca.BitSalvarClick(Sender: TObject);
begin
confirmar_peso := true;
Close;
end;
procedure TformLerBalanca.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
try
ComPort.ReadStr(Str, Count);
EditValor.Text := Copy(Str, 1, 7);
except
on e: exception do
begin
Panel3.Caption := '...tentando estabilizar';
end;
end;
end;
procedure TformLerBalanca.BitBtn2Click(Sender: TObject);
begin
confirmar_peso := false;
Close;
end;
end.
// Balança Toledo //
procedure TformLerBalanca.ComPort1RxChar(Sender: TObject; Count: Integer);
var
str:string;
begin
ComPort1.ReadStr(Str, Count);
total:=total+str;
if length(total)=18 then
begin
editvalor.text:=copy(total,5,6);
total:='';
str:='';
end;
end;
Arquivo INI
[balanca]
Port=COM1
BautRate=4800
DataBits=5
StopBits=1
Parity=Even
FlowControl=None
Modelo=Saturno