Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
В общем вот вам эмулятор работы датчиков с записью их работы в БД:
Код:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;
type
TSensor = class(TThread)
ID: Integer;
function ReadSensor: Boolean;
procedure Execute; override;
end;
TForm3 = class(TForm)
AppDB: TADOConnection;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
Sensors: Array of TSensor;
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
Var
i: Integer;
Q: TAdoQuery;
begin
if Button1.Caption = 'Start'
then begin
Button1.Caption := 'Finish';
SetLength(Sensors, 0);
Q := TAdoQuery.Create(nil);
Q.Connection := Form3.AppDB;
Q.SQL.Text := 'select * from Датчики';
Q.Open;
while not Q.Eof
do begin
SetLength(Sensors, Length(Sensors)+1);
Sensors[High(Sensors)] := TSensor.Create(True);
Sensors[High(Sensors)].ID := Q.FieldValues['Код'];
Sensors[High(Sensors)].Resume;
Q.Next;
end;
Q.Free;
end
else begin
Button1.Caption := 'Start';
for i := 0 to Length(Sensors) - 1
do Sensors[i].Terminate;
end;
end;
procedure TSensor.Execute;
Var
Q: TAdoQuery;
begin
inherited;
while not Terminated
do begin
Sleep(10);
if ReadSensor
then begin
Q := TAdoQuery.Create(nil);
Q.Connection := Form3.AppDB;
Q.SQL.Text := 'insert into Журнал (КодДатчика,Регистрация) Values(:КодДатчика,:Регистрация)';
Q.Parameters.ParamValues['КодДатчика'] := ID;
Q.Parameters.ParamValues['Регистрация'] := Now;
Q.ExecSQL;
Q.Free;
end;
end;
end;
function TSensor.ReadSensor: Boolean;
begin
Result := Random(2) = 1;
end;
end.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Последний раз редактировалось Страдалецъ, 07.07.2013 в 19:09.