Anexo código y vídeo del funcionamiento youtu.be/7XIXTsePNX4
Código Delphi
[-]unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, CPort, Vcl.StdCtrls,StrUtils, Vcl.Grids,
Vcl.ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ComPort1: TComPort;
Button2: TButton;
ListBox1: TListBox;
Edit1: TEdit;
Label1: TLabel;
Button3: TButton;
Label2: TLabel;
Button4: TButton;
Button5: TButton;
Button6: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure ComPort1RxChar(Sender: TObject; Count: Integer);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
function SumStrings(ts: TStrings): Double;
var
i: Integer;
begin
ts.Text:= Trim(ts.Text); Result:= 0;
for i:= 0 to ts.Count-1 do
try
Result:= Result + StrToFloat(ts[i]);
except
raise Exception.Create('Error de conversión: Existe un valor erróneo');
end;
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.ShowSetupDialog
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if ComPort1.Connected then
ComPort1.Close
else
ComPort1.Open;
Application.MessageBox('El puerto ha sido abierto de forma satisfactoria.','Abierto',0);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
Str: String;
begin
Str := Edit1.Text;
ComPort1.WriteStr(Str);
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i: Integer;
dados: String;
begin
FOR i := -1 + listbox1.Items.Count downto 0 DO
BEGIN
IF (listbox1.Selected[i]) THEN
BEGIN
dados := InputBox('Modificando ' + listbox1.Items[i],'Nuevo valor : ' ,listbox1.Items[i]);
IF (Trim(dados) <> '') THEN
listbox1.Items[i] := dados;
END;
END;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
i: Integer;
begin
FOR i := -1 + listbox1.Items.Count downto 0 DO
BEGIN
IF (listbox1.Selected[i]) THEN
listbox1.Items.Delete(i);
END;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
vlSumouble;
i:integer;
begin
vlSum := 0;
for i := 0 to ListBox1.Items.Count - 1 do
vlSum := vlSum + StrToFloat(ListBox1.Items[i]);
label2.Caption:= FloatToStr(vlSum);
end;
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
ComPort1.ReadStr(Str,Count);
while (length(Str)>1) and (Copy(Str,1,1)='0') do
delete(Str,1,1);
if Copy(Str,1,1)='.' then
Str:= '0'+Str;
ListBox1.Items.Add(Str);
label2.Caption:=(FloatToStr(SumStrings(ListBox1.Items))) + ' Kilogramos';
end;
end.