📄 mainform.pas
字号:
end;
procedure TfrmMain.chkDiInterrupt2Click(Sender: TObject);
begin
ptEnableEvent.Enabled := Smallint(chkDiInterrupt2.Checked );
ptEnableEvent.EventType := ADS_EVT_DI_INTERRUPT2;
ptEnableEvent.Count := 1;
DRV_EnableEvent(m_DeviceHandle,ptEnableEvent);
end;
procedure TfrmMain.chkDiInterrupt3Click(Sender: TObject);
begin
ptEnableEvent.Enabled := Smallint(chkDiInterrupt3.Checked );
ptEnableEvent.EventType := ADS_EVT_DI_INTERRUPT3;
ptEnableEvent.Count := 1;
DRV_EnableEvent(m_DeviceHandle,ptEnableEvent);
end;
procedure TfrmMain.chkDiInterrupt4Click(Sender: TObject);
begin
ptEnableEvent.Enabled := Smallint(chkDiInterrupt4.Checked );
ptEnableEvent.EventType := ADS_EVT_DI_INTERRUPT4;
ptEnableEvent.Count := 1;
DRV_EnableEvent(m_DeviceHandle,ptEnableEvent);
end;
procedure TfrmMain.chkDiInterrupt5Click(Sender: TObject);
begin
ptEnableEvent.Enabled := Smallint(chkDiInterrupt5.Checked );
ptEnableEvent.EventType := ADS_EVT_DI_INTERRUPT5;
ptEnableEvent.Count := 1;
DRV_EnableEvent(m_DeviceHandle,ptEnableEvent);
end;
procedure TfrmMain.chkDiInterrupt6Click(Sender: TObject);
begin
ptEnableEvent.Enabled := Smallint(chkDiInterrupt6.Checked );
ptEnableEvent.EventType := ADS_EVT_DI_INTERRUPT6;
ptEnableEvent.Count := 1;
DRV_EnableEvent(m_DeviceHandle,ptEnableEvent);
end;
procedure TfrmMain.chkDiInterrupt7Click(Sender: TObject);
begin
ptEnableEvent.Enabled := Smallint(chkDiInterrupt7.Checked );
ptEnableEvent.EventType := ADS_EVT_DI_INTERRUPT7;
ptEnableEvent.Count := 1;
DRV_EnableEvent(m_DeviceHandle,ptEnableEvent);
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
lstDiSignalCondition[0] := lstDiSignalCondition0;
lstDiSignalCondition[1] := lstDiSignalCondition1;
lstDiSignalCondition[2] := lstDiSignalCondition2;
lstDiSignalCondition[3] := lstDiSignalCondition3;
lstDiSignalCondition[4] := lstDiSignalCondition4;
lstDiSignalCondition[5] := lstDiSignalCondition5;
lstDiSignalCondition[6] := lstDiSignalCondition6;
lstDiSignalCondition[7] := lstDiSignalCondition7;
chkDiInterrupt[0] := chkDiInterrupt0;
chkDiInterrupt[1] := chkDiInterrupt1;
chkDiInterrupt[2] := chkDiInterrupt2;
chkDiInterrupt[3] := chkDiInterrupt3;
chkDiInterrupt[4] := chkDiInterrupt4;
chkDiInterrupt[5] := chkDiInterrupt5;
chkDiInterrupt[6] := chkDiInterrupt6;
chkDiInterrupt[7] := chkDiInterrupt7;
txtDiInterrupt[0] := txtDiInterrupt0;
txtDiInterrupt[1] := txtDiInterrupt1;
txtDiInterrupt[2] := txtDiInterrupt2;
txtDiInterrupt[3] := txtDiInterrupt3;
txtDiInterrupt[4] := txtDiInterrupt4;
txtDiInterrupt[5] := txtDiInterrupt5;
txtDiInterrupt[6] := txtDiInterrupt6;
txtDiInterrupt[7] := txtDiInterrupt7;
bThreadloop := true;
cmdSelectDeviceClick(Sender);
end;
procedure TfrmMain.lstDiSignalCondition7Click(Sender: TObject);
var
i : Integer;
begin
m_DITriggerMode := 0;
for i := 0 to 7 do
m_DITriggerMode := m_DITriggerMode or (lstDiSignalCondition[i].ItemIndex shl i);
DRV_DeviceSetProperty(m_DeviceHandle, CFG_IrqDiTriggerSignals, @m_DITriggerMode, 4);
end;
procedure TfrmMain.lstDiSignalCondition6Click(Sender: TObject);
var
i : Integer;
begin
m_DITriggerMode := 0;
for i := 0 to 7 do
m_DITriggerMode := m_DITriggerMode or (lstDiSignalCondition[i].ItemIndex shl i);
DRV_DeviceSetProperty(m_DeviceHandle, CFG_IrqDiTriggerSignals, @m_DITriggerMode, 4);
end;
procedure TfrmMain.lstDiSignalCondition5Click(Sender: TObject);
var
i : Integer;
begin
m_DITriggerMode := 0;
for i := 0 to 7 do
m_DITriggerMode := m_DITriggerMode or (lstDiSignalCondition[i].ItemIndex shl i);
DRV_DeviceSetProperty(m_DeviceHandle, CFG_IrqDiTriggerSignals, @m_DITriggerMode, 4);
end;
procedure TfrmMain.lstDiSignalCondition4Click(Sender: TObject);
var
i : Integer;
begin
m_DITriggerMode := 0;
for i := 0 to 7 do
m_DITriggerMode := m_DITriggerMode or (lstDiSignalCondition[i].ItemIndex shl i);
DRV_DeviceSetProperty(m_DeviceHandle, CFG_IrqDiTriggerSignals, @m_DITriggerMode, 4);
end;
procedure TfrmMain.lstDiSignalCondition3Click(Sender: TObject);
var
i : Integer;
begin
m_DITriggerMode := 0;
for i := 0 to 7 do
m_DITriggerMode := m_DITriggerMode or (lstDiSignalCondition[i].ItemIndex shl i);
DRV_DeviceSetProperty(m_DeviceHandle, CFG_IrqDiTriggerSignals, @m_DITriggerMode, 4);
end;
procedure TfrmMain.lstDiSignalCondition2Click(Sender: TObject);
var
i : Integer;
begin
m_DITriggerMode := 0;
for i := 0 to 7 do
m_DITriggerMode := m_DITriggerMode or (lstDiSignalCondition[i].ItemIndex shl i);
DRV_DeviceSetProperty(m_DeviceHandle, CFG_IrqDiTriggerSignals, @m_DITriggerMode, 4);
end;
procedure TfrmMain.lstDiSignalCondition1Click(Sender: TObject);
var
i : Integer;
begin
m_DITriggerMode := 0;
for i := 0 to 7 do
m_DITriggerMode := m_DITriggerMode or (lstDiSignalCondition[i].ItemIndex shl i);
DRV_DeviceSetProperty(m_DeviceHandle, CFG_IrqDiTriggerSignals, @m_DITriggerMode, 4);
end;
procedure TfrmMain.lstDiSignalCondition0Click(Sender: TObject);
var
i : Integer;
begin
m_DITriggerMode := 0;
for i := 0 to 7 do
m_DITriggerMode := m_DITriggerMode or (lstDiSignalCondition[i].ItemIndex shl i);
DRV_DeviceSetProperty(m_DeviceHandle, CFG_IrqDiTriggerSignals, @m_DITriggerMode, 4);
end;
procedure TfrmMain.CheckEvent();
var
ptCheckEvent : PT_CheckEvent ; // Check event
usEventTye : SmallInt;
status : LongInt;
begin
ptCheckEvent.EventType:= @usEventTye;
ptCheckEvent.Milliseconds := 5000;
while(bThreadloop) do
begin
status := DRV_CheckEvent(m_DeviceHandle, ptCheckEvent);
if (DoesErr(status)<>0) then
begin
cmdCloseDevice.Enabled := False;
cmdOpenDevice.Enabled := True;
cmdStart.Enabled :=True;
cmdStop.Enabled := False;
cmdExit.Enabled := True;
DRV_DeviceClose(m_DeviceHandle);
bThreadloop := False;
end;
case usEventTye of
ADS_EVT_DI_INTERRUPT0:
begin
m_DI0Count :=m_DI0Count+1;
txtDiInterrupt0.Text := IntToStr(m_DI0Count);
end;
ADS_EVT_DI_INTERRUPT1:
begin
m_DI1Count :=m_DI1Count+1;
txtDiInterrupt1.Text := IntToStr(m_DI1Count);
end;
ADS_EVT_DI_INTERRUPT2:
begin
m_DI2Count :=m_DI2Count+1;
txtDiInterrupt2.Text := IntToStr(m_DI2Count);
end;
ADS_EVT_DI_INTERRUPT3:
begin
m_DI3Count :=m_DI3Count+1;
txtDiInterrupt3.Text := IntToStr(m_DI3Count);
end;
ADS_EVT_DI_INTERRUPT4:
begin
m_DI4Count :=m_DI4Count+1;
txtDiInterrupt4.Text := IntToStr(m_DI4Count);
end;
ADS_EVT_DI_INTERRUPT5:
begin
m_DI5Count :=m_DI5Count+1;
txtDiInterrupt5.Text := IntToStr(m_DI5Count);
end;
ADS_EVT_DI_INTERRUPT6:
begin
m_DI6Count :=m_DI6Count+1;
txtDiInterrupt6.Text := IntToStr(m_DI6Count);
end;
ADS_EVT_DI_INTERRUPT7:
begin
m_DI7Count :=m_DI7Count+1;
txtDiInterrupt7.Text := IntToStr(m_DI7Count);
end;
ADS_EVT_DEVREMOVED:
begin
Application.MessageBox('The Device is removed! Please reopen the device!','Driver Message',0);
cmdCloseDevice.Enabled := False;
cmdOpenDevice.Enabled := True;
cmdStart.Enabled :=True;
cmdStop.Enabled := False;
DRV_DeviceClose(m_DeviceHandle);
bThreadloop := False;
end;
else
end;
end;
end;
procedure TfrmMain.cmdOpenDeviceClick(Sender: TObject);
var
i:Integer;
begin
cmdCloseDeviceClick(Sender);
m_ErrCde := DRV_DeviceOpen( m_DeviceNum, m_DeviceHandle);
if( DoesErr(m_ErrCde) = 1 ) then
Exit;
cmdOpenDevice.Enabled := False;
cmdCloseDevice.Enabled := True;
for i:=0 to 7 do
chkDiInterrupt[i].Checked := False;
end;
procedure TfrmMain.cmdCloseDeviceClick(Sender: TObject);
var
ExitCode : DWORD;
begin
if ( m_DeviceHandle<> 0 ) then
begin
if( Assigned(Thread)) then
begin
GetExitCodeThread(Thread.Handle,ExitCode);
if(ExitCode=STILL_ACTIVE) then
TerminateThread(Thread.Handle,ExitCode);
end;
DRV_DeviceClose( m_DeviceHandle );
end;
cmdOpenDevice.Enabled := True;
cmdCloseDevice.Enabled := False;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -