getevent.pas
来自「16 relay output channels and 16 isolated」· PAS 代码 · 共 102 行
PAS
102 行
unit GetEvent;
interface
uses
Classes, Windows, Driver;
type
TGetEvent = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
procedure adInterruptEvent;
procedure adBufChangeEvent;
procedure adOverrunEvent;
procedure adTerminateEvent;
end;
implementation
uses Main;
{ Important: Methods and properties of objects in VCL or CLX can only be used
in a method called using Synchronize, for example,
Synchronize(UpdateCaption);
and UpdateCaption could look like,
procedure TGetEvent.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }
{ TGetEvent }
procedure TGetEvent.Execute;
var
usEventType: SHORT;
ptCheckEvent: PT_CheckEvent; { Check event }
begin
{ Place thread code here }
while (bThreadloop) do
begin
{ Check message }
with ptCheckEvent do
begin
EventType := @usEventType;
Milliseconds := 100;
end;
bThreadflag := TRUE;
DRV_CheckEvent(DriverHandle, ptCheckEvent);
{ Process interrupt event }
if (usEventType and ADS_EVT_INTERRUPT <> 0) then
adInterruptEvent();
{ Process buffer change event }
if (usEventType and ADS_EVT_BUFCHANGE <> 0) then
adBufChangeEvent();
{ Process terminate event }
if (usEventType = ADS_EVT_TERMINATED ) then
adTerminateEvent();
{ Process overrun event }
if (usEventType and ADS_EVT_OVERRUN <> 0) then
adOverrunEvent();
bThreadflag := FALSE;
end;
end;
procedure TGetEvent.adInterruptEvent();
begin
exit;
end;
procedure TGetEvent.adBufChangeEvent();
begin
exit;
end;
procedure TGetEvent.adOverrunEvent();
begin
exit;
end;
procedure TGetEvent.adTerminateEvent();
begin
bThreadloop := FALSE;
{ Disable stop button }
FrmMain.Stop.Enabled := FALSE;
exit;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?