📄 main.pas
字号:
cmdByteScan.Enabled := False;
cmdBitScan.Enabled := False;
cmdEventScan.Enabled := False;
cmdBitStop.Enabled := True;
cmdExit.Enabled := False;
cmdSelectDevice.Enabled := False;
end;
procedure TfMain.cmdBitStopClick(Sender: TObject);
begin
{Stop bit scan function}
if DAQDI1.EnableBitScan(False) then
ErrorMsgBox(DAQDI1.ErrorMessage);
DAQDI1.CloseDevice;
{Manage UI}
cmdByteScan.Enabled := True;
cmdBitScan.Enabled := True;
cmdEventScan.Enabled := True;
cmdBitStop.Enabled := False;
cmdExit.Enabled := True;
cmdSelectDevice.Enabled := True;
end;
procedure TfMain.txtScanTimeChange(Sender: TObject);
begin
DAQDI1.ScanTime := StrToInt(txtScanTime.Text);
end;
procedure TfMain.DAQDI1ByteScan(Sender: TObject; Data: Smallint);
begin
{Display data}
txtRead.Text := IntToHex(Data, 2);
end;
procedure TfMain.DAQDI1BitScan(Sender: TObject; Data: WordBool);
begin
{Display data}
if Data then
txtRead.Text := '1'
else
txtRead.Text := '0';
end;
procedure TfMain.txtDeviceNumChange(Sender: TObject);
begin
DAQDI1.DeviceNumber := StrToInt(txtDeviceNum.Text);
txtDeviceName.Text := DAQDI1.DeviceName;
end;
procedure TfMain.cmbPortChange(Sender: TObject);
begin
DAQDI1.Port := cmbPort.ItemIndex;
end;
procedure TfMain.cmbBitChange(Sender: TObject);
begin
DAQDI1.Bit := cmbBit.ItemIndex;
end;
procedure TfMain.DisplayPattern();
Var
i: Smallint;
nFilter: Smallint;
nData: Smallint;
begin
nFilter := DAQDI1.PatternMatchFilter;
nData := DAQDI1.PatternMatchData;
nFilter := nFilter And 255;
nData := nData And 255;
If chkMatchEnabled.Checked Then
DAQDI1.PatternMatchEnabled := True
Else
DAQDI1.PatternMatchEnabled := False;
If DAQDI1.PatternMatchEnabled Then
Begin
For i := 0 To 7 Do
Begin
chkBit[i].Enabled := True;
If (nFilter And nTemp[i]) = nTemp[i] Then
Begin
chkBit[i].Checked := True;
radHBit[i].Enabled := True;
radLBit[i].Enabled := True;
End
Else
Begin
chkBit[i].Checked := False;
radHBit[i].Enabled := False;
radLBit[i].Enabled := False;
End;
End;
End
Else
Begin
For i := 0 To 7 Do
Begin
chkBit[i].Enabled := False;
radHBit[i].Enabled := False;
radLBit[i].Enabled := False;
If (nFilter And nTemp[i]) = nTemp[i] Then
chkBit[i].Checked := True
Else
chkBit[i].Checked := False;
End;
End;
For i := 0 To 7 Do
Begin
If (nData And nTemp[i]) = nTemp[i] Then
Begin
radHBit[i].Checked := True;
radLBit[i].Checked := False;
End
Else
Begin
radHBit[i].Checked := False;
radLBit[i].Checked := True;
End;
End;
end;
procedure TfMain.cmdEventScanClick(Sender: TObject);
begin
{Start cyclic event scan function}
if DAQDI1.OpenDevice then
begin
ErrorMsgBox(DAQDI1.ErrorMessage);
Exit;
end;
DAQDI1.Port := cmbPort.ItemIndex;
DAQDI1.Bit := cmbBit.ItemIndex;
if DAQDI1.EnableEvent(True) then
begin
ErrorMsgBox(DAQDI1.ErrorMessage);
DAQDI1.CloseDevice;
Exit;
end;
{Manage UI}
cmdByteScan.Enabled := False;
cmdBitScan.Enabled := False;
cmdEventScan.Enabled := False;
cmdEventStop.Enabled := True;
cmdExit.Enabled := False;
cmdSelectDevice.Enabled := False;
txtMatchNum.Text := IntToStr(matchCount);
txtEventNum.Text := IntToStr(eventCount);
end;
procedure TfMain.cmdEventStopClick(Sender: TObject);
begin
{Stop event scan function}
if DAQDI1.EnableEvent(False) then
ErrorMsgBox(DAQDI1.ErrorMessage);
DAQDI1.CloseDevice;
eventCount := 0;
matchCount := 0;
{Manage UI}
cmdByteScan.Enabled := True;
cmdBitScan.Enabled := True;
cmdEventScan.Enabled := True;
cmdEventStop.Enabled := False;
cmdExit.Enabled := True;
cmdSelectDevice.Enabled := True;
end;
procedure TfMain.chkMatchEnabledClick(Sender: TObject);
begin
DisplayPattern;
end;
procedure TfMain.DAQDI1Event(Sender: TObject);
begin
Inc(eventCount);
txtEventNum.Text := IntToStr(eventCount);
end;
procedure TfMain.DAQDI1EventPatternMatch(Sender: TObject);
begin
Inc(matchCount);
If (matchCount Mod 9) = 0 Then
txtMatchNum.Text := IntToStr(matchCount);
end;
procedure TfMain.CheckFilter(nIndex: Smallint);
Var
nFilter: Smallint;
begin
nFilter := DAQDI1.PatternMatchFilter;
nFilter := nFilter And 255;
If chkBit[nIndex].Checked Then
Begin
nFilter := nFilter Or nTemp[nIndex];
radHBit[nIndex].Enabled := True;
radLBit[nIndex].Enabled := True;
End
Else
Begin
nFilter := nFilter And (Not (nTemp[nIndex]));
radHBit[nIndex].Enabled := False;
radLBit[nIndex].Enabled := False;
End;
nFilter := nFilter And 255;
DAQDI1.PatternMatchFilter := nFilter;
txtFilter.Text := IntToStr(nFilter);
end;
procedure TfMain.CheckData(nIndex: Smallint; bHighBit: Boolean);
Var
nData: Smallint;
begin
nData := DAQDI1.PatternMatchData;
nData := nData And 255;
If bHighBit Then
Begin
If radHBit[nIndex].Checked Then
Begin
radLBit[nIndex].Checked := False;
nData := nData Or nTemp[nIndex];
End
Else
Begin
radLBit[nIndex].Checked := True;
nData := nData And (Not nTemp[nIndex]);
End;
End
Else
Begin
If radLBit[nIndex].Checked Then
Begin
radHBit[nIndex].Checked := False;
nData := nData And (Not nTemp[nIndex]);
End
Else
Begin
radHBit[nIndex].Checked := True;
nData := nData Or nTemp[nIndex];
End;
End;
nData := nData And 255;
DAQDI1.PatternMatchData := nData;
txtData.Text := IntToStr(nData);
end;
procedure TfMain.chkBit0Click(Sender: TObject);
begin
CheckFilter(0);
end;
procedure TfMain.chkBit1Click(Sender: TObject);
begin
CheckFilter(1);
end;
procedure TfMain.chkBit2Click(Sender: TObject);
begin
CheckFilter(2);
end;
procedure TfMain.chkBit3Click(Sender: TObject);
begin
CheckFilter(3);
end;
procedure TfMain.chkBit4Click(Sender: TObject);
begin
CheckFilter(4);
end;
procedure TfMain.chkBit5Click(Sender: TObject);
begin
CheckFilter(5);
end;
procedure TfMain.chkBit6Click(Sender: TObject);
begin
CheckFilter(6);
end;
procedure TfMain.chkBit7Click(Sender: TObject);
begin
CheckFilter(7);
end;
procedure TfMain.radHBit0Click(Sender: TObject);
begin
CheckData(0, True);
end;
procedure TfMain.radHBit1Click(Sender: TObject);
begin
CheckData(1, True);
end;
procedure TfMain.radHBit2Click(Sender: TObject);
begin
CheckData(2, True);
end;
procedure TfMain.radHBit3Click(Sender: TObject);
begin
CheckData(3, True);
end;
procedure TfMain.radHBit4Click(Sender: TObject);
begin
CheckData(4, True);
end;
procedure TfMain.radHBit5Click(Sender: TObject);
begin
CheckData(5, True);
end;
procedure TfMain.radHBit6Click(Sender: TObject);
begin
CheckData(6, True);
end;
procedure TfMain.radHBit7Click(Sender: TObject);
begin
CheckData(7, True);
end;
procedure TfMain.radLBit0Click(Sender: TObject);
begin
CheckData(0, False);
end;
procedure TfMain.radLBit1Click(Sender: TObject);
begin
CheckData(1, False);
end;
procedure TfMain.radLBit2Click(Sender: TObject);
begin
CheckData(2, False);
end;
procedure TfMain.radLBit3Click(Sender: TObject);
begin
CheckData(3, False);
end;
procedure TfMain.radLBit4Click(Sender: TObject);
begin
CheckData(4, False);
end;
procedure TfMain.radLBit5Click(Sender: TObject);
begin
CheckData(5, False);
end;
procedure TfMain.radLBit6Click(Sender: TObject);
begin
CheckData(6, False);
end;
procedure TfMain.radLBit7Click(Sender: TObject);
begin
CheckData(7, False);
end;
procedure TfMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DAQDI1.EnableByteScan(False);
DAQDI1.EnableBitScan(False);
DAQDI1.EnableEvent(False);
DAQDI1.CloseDevice;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -