hola amigos tengo un codigo para usar con un sensor de temperatura y humedad por el puerto serie pero no puedo ver los datos , y la verdad que e estado alejado de la programacion por mucho tiempo y del puerto casi nunca lo e usado pero me seria de mucha utilidad poder usarlo , adjunto el circuito tambien !.
El codigo completo :
Código Delphi
[-]unit Finish;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, CPort;
type
TForm1 = class(TForm)
LblStatusCom: TLabel;
ComPort: TComPort;
Timer1: TTimer;
BtnSetting: TButton;
BtnConnect: TButton;
Label1: TLabel;
Label2: TLabel;
LblTemp: TLabel;
LblHumi: TLabel;
Label3: TLabel;
Label4: TLabel;
Timer2: TTimer;
Label5: TLabel;
procedure BtnSettingClick(Sender: TObject);
procedure BtnConnectClick(Sender: TObject);
procedure IntSerialRX(Sender: TObject; Count: Integer);
procedure FormCreate(Sender: TObject);
procedure IntTim2(Sender: TObject);
private
public
end;
var
Form1: TForm1;
DataSerial: Integer;
DataSerialTemp: Integer;
FlagRX: Integer;
DataTrans: Integer;
DataSHT: Real;
Temp: Real;
implementation
{$R *.DFM}
procedure TForm1.BtnSettingClick(Sender: TObject);
begin
ComPort.ShowSetupDialog;
end;
procedure TForm1.BtnConnectClick(Sender: TObject);
begin
if ComPort.Connected = true then
begin
ComPort.Close;
LblStatusCom.Caption := ComPort.Port + ' Disconnected';
BtnConnect.Caption := 'Connect';
BtnSetting.Enabled := true;
end
else
begin
ComPort.Open;
LblStatusCom.Caption := ComPort.Port + ' Connected';
BtnConnect.Caption := 'Disconnect';
BtnSetting.Enabled := False;
Timer2.Enabled := True;
DataTrans := $01;
end;
end;
procedure TForm1.IntSerialRX(Sender: TObject; Count: Integer);
begin
ComPort.Read(DataSerial,1);
FlagRX := FlagRX + 1;
if (FlagRX = 1) then
begin
DataSerialTemp := DataSerial;
end;
if (FlagRX = 2) then
begin
DataSerialTemp := DataSerialTemp SHL 8;
DataSerialTemp := DataSerialTemp OR DataSerial;
FlagRX := 0;
DataSHT := DataSerialTemp;
if (DataTrans = 1) then
begin
DataSHT := (DataSHT-4000) / 100;
LblTemp.Caption := CurrToStr(DataSHT);
DataTrans := 2;
end
else if (DataTrans = 2) then
begin
Temp := DataSHT;
DataSHT := (Temp * 0.0405) - (Temp * Temp * 0.0000028) - 4;
LblHumi.Caption := CurrToStr(DataSHT);
DataTrans := 1;
end
else DataTrans := 1;
Timer2.Enabled := True;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Label3.Caption := '%RH';
Label4.Caption := '*C';
end;
procedure TForm1.IntTim2(Sender: TObject);
begin
if ComPort.Connected = True then
begin
ComPort.Write(DataTrans,1);
FlagRX := 0;
end;
Timer2.Enabled := False;
end;
end.
saludos y gracias por su ayuda !.