📄 getevent.pas
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -