⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 使用研华DAQ和Delphi实现研华数据采集卡的多种功能.包括数据输入输出。内含多个源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
   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 + -