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

📄 main.pas

📁 使用研华DAQ和Delphi实现研华数据采集卡的多种功能.包括数据输入输出。内含多个源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
   {Open device}
   If DAQDO1.OpenDevice Then
   begin
      ErrorMsgBox(DAQDO1.ErrorMessage);
      Exit;
   End;
   bDeviceOpen := True;

   {Get device feature and}
   {Assign this device selectable features}
   For i := 0 To DAQDO1.MaxPortNumber - 1 do
   begin
      str(i, sTmp);
      cmbPort.Items.Add(sTmp);
   end;
   If DAQDO1.MaxPortNumber > 0 Then
      cmbPort.ItemIndex := 0;

   frmAction.Enabled := True;

   {Manage UI}
   DAQDO1.Port := cmbPort.ItemIndex;
   i := DAQDO1.ByteReadBack;
   txtReadBack.Text := IntToHex(i, 2);
   txtOutValue.Text := txtReadBack.Text;
   UpdateBitOutButtons();
end;

procedure TfMain.FormCreate(Sender: TObject);
begin
   {Out bits}
   pcmdBitOn[0] := @cmdChlOn0;
   pcmdBitOn[1] := @cmdChlOn1;
   pcmdBitOn[2] := @cmdChlOn2;
   pcmdBitOn[3] := @cmdChlOn3;
   pcmdBitOn[4] := @cmdChlOn4;
   pcmdBitOn[5] := @cmdChlOn5;
   pcmdBitOn[6] := @cmdChlOn6;
   pcmdBitOn[7] := @cmdChlOn7;

   {Mask bits}
   pspMask[0] := @spMask0;
   pspMask[1] := @spMask1;
   pspMask[2] := @spMask2;
   pspMask[3] := @spMask3;
   pspMask[4] := @spMask4;
   pspMask[5] := @spMask5;
   pspMask[6] := @spMask6;
   pspMask[7] := @spMask7;

   bDeviceOpen := False;

   cmdSelectDeviceClick(Sender);
end;

procedure TfMain.cmdChlOn0Click(Sender: TObject);
begin
   DoBitOut(cmbPort.ItemIndex,0,False);
end;

procedure TfMain.cmdChlOn1Click(Sender: TObject);
begin
   DoBitOut(cmbPort.ItemIndex,1,False);
end;

procedure TfMain.cmdChlOn2Click(Sender: TObject);
begin
   DoBitOut(cmbPort.ItemIndex,2,False);
end;

procedure TfMain.cmdChlOn3Click(Sender: TObject);
begin
   DoBitOut(cmbPort.ItemIndex,3,False);
end;

procedure TfMain.cmdChlOn4Click(Sender: TObject);
begin
   DoBitOut(cmbPort.ItemIndex,4,False);
end;

procedure TfMain.cmdChlOn5Click(Sender: TObject);
begin
   DoBitOut(cmbPort.ItemIndex,5,False);
end;

procedure TfMain.cmdChlOn6Click(Sender: TObject);
begin
   DoBitOut(cmbPort.ItemIndex,6,False);
end;

procedure TfMain.cmdChlOn7Click(Sender: TObject);
begin
   DoBitOut(cmbPort.ItemIndex,7,False);
end;

procedure TfMain.spChlOff0MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   DoBitOut(cmbPort.ItemIndex,0,True);
end;

procedure TfMain.spChlOff1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   DoBitOut(cmbPort.ItemIndex,1,True);
end;

procedure TfMain.spChlOff2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   DoBitOut(cmbPort.ItemIndex,2,True);
end;

procedure TfMain.spChlOff3MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   DoBitOut(cmbPort.ItemIndex,3,True);
end;

procedure TfMain.spChlOff4MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   DoBitOut(cmbPort.ItemIndex,4,True);
end;

procedure TfMain.spChlOff5MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   DoBitOut(cmbPort.ItemIndex,5,True);
end;

procedure TfMain.spChlOff6MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   DoBitOut(cmbPort.ItemIndex,6,True);
end;

procedure TfMain.spChlOff7MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   DoBitOut(cmbPort.ItemIndex,7,True);
end;

procedure TfMain.cmdByteOutClick(Sender: TObject);
var
   iValue : integer;
begin
   {Check device open}
   if not bDeviceOpen then
   begin
     ErrorMsgBox('Device not open');
     Exit;
   End;

   {Out data }
   iValue := HexToInt(txtOutValue.text) and 255;
   DAQDO1.Port := cmbPort.ItemIndex;
   DAQDO1.Mask := HexToInt(txtMask.Text);
   DAQDO1.ByteOutput(iValue);
end;

procedure TfMain.txtMaskChange(Sender: TObject);
var
   i, iValue : integer;
begin
   DAQDO1.Mask := HexToInt(txtMask.Text);
   iValue := DAQDO1.Mask;
// txtMask.Text := IntToHex(iValue, 2);

   {Update Mask bit display}
   for i:=0 to 7 do
   begin
      if (iValue and 1) = 1 then
      begin
         pspMask[i]^.brush.Color := clLime;
         pspMask[i]^.Tag := 1 shl i;
      end
      else
      begin
         pspMask[i]^.brush.Color := clRed;
         pspMask[i]^.Tag := 0;
      end;

      iValue := iValue shr 1;
   end;
end;

procedure TfMain.spMask0MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   WriteMaskValue(1, not spMask0.Tag);
end;

procedure TfMain.spMask1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   WriteMaskValue(2, not spMask1.Tag);
end;

procedure TfMain.spMask2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   WriteMaskValue(4, not spMask2.Tag);
end;

procedure TfMain.spMask3MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   WriteMaskValue(8, not spMask3.Tag);
end;

procedure TfMain.spMask4MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   WriteMaskValue($10, not spMask4.Tag);
end;

procedure TfMain.spMask5MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   WriteMaskValue($20, not spMask5.Tag);
end;

procedure TfMain.spMask6MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   WriteMaskValue($40, not spMask6.Tag);
end;

procedure TfMain.spMask7MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   WriteMaskValue($80, not spMask7.Tag);
end;

procedure TfMain.cmdReadBackClick(Sender: TObject);
var
   iValue : integer;
begin
   {Check device open}
   if not bDeviceOpen then
   begin
      ErrorMsgBox('Device not open');
      Exit;
   End;

   DAQDO1.Port := cmbPort.ItemIndex;
   iValue := DAQDO1.ByteReadBack;

   txtReadBack.text := IntToHex(iValue, 2);
   UpdateBitOutButtons();
end;

procedure TfMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   if bDeviceOpen Then
   begin
      DAQDO1.CloseDevice;
      bDeviceOpen := False;
   end;
end;

procedure TfMain.cmbPortChange(Sender: TObject);
var
   iValue : integer;
begin
   DAQDO1.Port := cmbPort.ItemIndex;
   UpdateBitOutButtons();
   iValue := DAQDO1.ByteReadBack;
   txtReadBack.text := IntToHex(iValue, 2);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -