📄 unit1.pas
字号:
end;
// start counter
ptCounterEventStart.counter := m_CurCounter;
m_ErrCde := DRV_CounterEventStart(m_DriverHandle, ptCounterEventStart);
btnSelDev.Enabled := FALSE;
btnStart.Enabled := FALSE;
btnStop.Enabled := TRUE;
btnClose.Enabled := FALSE;
m_bContinue := TRUE;
Thread := TCheckThread.Create(False);
end;
procedure TForm1.btnStopClick(Sender: TObject);
var
ptEnableEvent: PT_EnableEvent;
begin
btnSelDev.Enabled := TRUE;
btnStart.Enabled := TRUE;
btnStop.Enabled := FALSE;
btnClose.Enabled := TRUE;
//disable event
ptEnableEvent.Count := 1;
ptEnableEvent.Enabled := 0;
if (m_OverComp = 1) then
begin
ptEnableEvent.EventType := ADS_EVT_OVERCOMPARE_CNT0 + m_CurCounter;
m_ErrCde := DRV_EnableEvent(m_DriverHandle, ptEnableEvent);
end;
if (m_UnderComp = 1) then
begin
ptEnableEvent.EventType := ADS_EVT_UNDERCOMPARE_CNT0 + m_CurCounter;
m_ErrCde := DRV_EnableEvent(m_DriverHandle, ptEnableEvent);
end;
// Reset counter
m_ErrCde := DRV_CounterReset(m_DriverHandle, m_CurCounter);
m_bContinue := FALSE;
if (Thread <> Nil) then
Thread.Terminate;
end;
procedure TForm1.CheckEvent();
var
ptCheckEvent: PT_CheckEvent;
usEventType: SHORT;
dwEvtCountOver: Longint;
dwEvtCountUnder: Longint;
ptCounterEventRead: PT_CounterEventRead;
ulCount: Longint;
usOverflow: SHORT;
CompareData: array of Longint;
ulSize: Longint;
iSize: Integer;
begin
ptCheckEvent.EventType := @usEventType;
ptCheckEvent.Milliseconds := 1000;
ptCounterEventRead.counter := m_CurCounter;
ptCounterEventRead.overflow := @usOverflow;
ptCounterEventRead.count := @ulCount;
dwEvtCountOver := 0;
dwEvtCountUnder := 0;
while(m_bContinue) do
begin
if (DRV_CheckEvent(m_DriverHandle, ptCheckEvent) = SUCCESS) then
begin
if ((usEventType = ADS_EVT_OVERCOMPARE_CNT0 + m_CurCounter) or
(usEventType = ADS_EVT_UNDERCOMPARE_CNT0 + m_CurCounter)) then
begin
if (usEventType = ADS_EVT_OVERCOMPARE_CNT0 + m_CurCounter) then
begin
dwEvtCountOver := dwEvtCountOver + 1;
editEvtCountOver.Text := IntToStr(dwEvtCountOver);
end;
if (usEventType = ADS_EVT_UNDERCOMPARE_CNT0 + m_CurCounter) then
begin
dwEvtCountUnder := dwEvtCountUnder + 1;
editEvtCountUnder.Text := IntToStr(dwEvtCountUnder);
end;
if ((m_CompType = 1) and (m_CompIndex < 7)) then
begin
m_CompIndex := m_CompIndex + 1;
m_ErrCde := DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrCompareData, NIL, ulSize);
iSize := ulSize div SizeOf(ulSize);
SetLength(CompareData, iSize);
m_ErrCde := DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrCompareData, @CompareData[0], ulSize);
case (m_CompIndex) of
0: CompareData[m_CurCounter] := StrToInt(editD0.Text);
1: CompareData[m_CurCounter] := StrToInt(editD1.Text);
2: CompareData[m_CurCounter] := StrToInt(editD2.Text);
3: CompareData[m_CurCounter] := StrToInt(editD3.Text);
4: CompareData[m_CurCounter] := StrToInt(editD4.Text);
5: CompareData[m_CurCounter] := StrToInt(editD5.Text);
6: CompareData[m_CurCounter] := StrToInt(editD6.Text);
7: CompareData[m_CurCounter] := StrToInt(editD7.Text);
end;
m_ErrCde := DRV_DeviceSetProperty(m_DriverHandle, CFG_CntrCompareData, @CompareData[0], ulSize);
editCompData.Text := IntToStr(CompareData[m_CurCounter]);
end;
end;
end;
DRV_CounterEventRead(m_DriverHandle, ptCounterEventRead);
editCntrCount.Text := IntToStr(ulCount);
end;
end;
procedure TForm1.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
m_bContinue := FALSE;
if (Thread <> Nil) then
Thread.Terminate;
if ( m_DriverHandle <> NULL ) then
DRV_DeviceClose(m_DriverHandle);
end;
procedure TForm1.cmbCounterChange(Sender: TObject);
var
ulSize: Longint;
pBuffer: array of Longint;
iSize: Integer;
usCounter: Integer;
begin
// Get Indicator property
m_ErrCde := DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrIndicatorControl, NIL, ulSize);
if (m_ErrCde = SUCCESS) then
begin
chkDOIndicate.Checked := FALSE;
chkBigComp.Checked := FALSE;
chkSmallComp.Checked := FALSE;
rdoPulse.Checked := FALSE;
rdoLevel.Checked := FALSE;
usCounter := cmbCounter.ItemIndex;
iSize := ulSize div SizeOf(ulSize);
SetLength(pBuffer, iSize);
m_ErrCde := DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrIndicatorControl, @pBuffer[0], ulSize);
if ( pBuffer[usCounter] and OVERCOMPLEVEL <> 0) then
begin
chkDOIndicate.Checked := TRUE;
chkBigComp.Checked := TRUE;
rdoLevel.Checked := TRUE;
end;
if ( pBuffer[usCounter] and OVERCOMPPULSE <> 0 ) then
begin
chkDOIndicate.Checked := TRUE;
chkBigComp.Checked := TRUE;
rdoPulse.Checked := TRUE;
end;
if ( pBuffer[usCounter] and UNDERCOMPLEVEL <> 0) then
begin
chkDOIndicate.Checked := TRUE;
chkSmallComp.Checked := TRUE;
rdoLevel.Checked := TRUE;
end;
if ( pBuffer[usCounter] and UNDERCOMPPULSE <> 0 ) then
begin
chkDOIndicate.Checked := TRUE;
chkSmallComp.Checked := TRUE;
rdoPulse.Checked := TRUE;
end;
end;
end;
procedure TForm1.btnSetCompClick(Sender: TObject);
var
ulSize: Longint;
iSize: Integer;
CompareData: array of Longint;
usCounter: Integer;
begin
usCounter := cmbCounter.ItemIndex;
// Set compare data
m_ErrCde := DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrCompareData, NIL, ulSize);
iSize := ulSize div SizeOf(ulSize);
SetLength(CompareData, iSize);
m_ErrCde := DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrCompareData, @CompareData[0], ulSize);
CompareData[usCounter] := StrToInt(editSingleData.Text);
m_ErrCde := DRV_DeviceSetProperty(m_DriverHandle, CFG_CntrCompareData, @CompareData[0], ulSize);
editCompData.Text := editSingleData.Text;
// Set compare type to single data compare
m_CompType := 0;
m_CompIndex := 0;
end;
procedure TForm1.btnSetTableClick(Sender: TObject);
var
ulSize: Longint;
iSize: Integer;
CompareData: array of Longint;
usCounter: Integer;
begin
usCounter := cmbCounter.ItemIndex;
// Set compare data
m_ErrCde := DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrCompareData, NIL, ulSize);
iSize := ulSize div SizeOf(ulSize);
SetLength(CompareData, iSize);
m_ErrCde := DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrCompareData, @CompareData[0], ulSize);
CompareData[usCounter] := StrToInt(editD0.Text);
m_ErrCde := DRV_DeviceSetProperty(m_DriverHandle, CFG_CntrCompareData, @CompareData[0], ulSize);
editCompData.Text := editD0.Text;
m_CompType := 1; // Set compare type to compare table
m_CompIndex := 0;
end;
procedure TForm1.btnResetClick(Sender: TObject);
var
usCounter: Integer;
begin
usCounter := cmbCounter.ItemIndex;
m_ErrCde := DRV_CounterReset(m_DriverHandle, usCounter);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -