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

📄 main.pas

📁 使用研华DAQ和Delphi实现研华数据采集卡的多种功能.包括数据输入输出。内含多个源码
💻 PAS
字号:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DAQPulseLib_TLB, OleCtrls, StdCtrls, ExtCtrls;

type
  TfrmMain = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    cmdSelectDevice: TButton;
    txtDeviceNum: TEdit;
    txtDeviceName: TEdit;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    cmdStart: TButton;
    cmdStop: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    txtChannel: TEdit;
    txtPeriod: TEdit;
    txtUpCycle: TEdit;
    cmbGateMode: TComboBox;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    txtErrCde: TEdit;
    txtErrMsg: TEdit;
    Timer1: TTimer;
    cmdExit: TButton;
    DAQPulse1: TDAQPulse;
    Label11: TLabel;
    procedure cmdExitClick(Sender: TObject);
    procedure cmdSelectDeviceClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure txtChannelChange(Sender: TObject);
    procedure txtPeriodChange(Sender: TObject);
    procedure txtUpCycleChange(Sender: TObject);
    procedure cmbGateModeChange(Sender: TObject);
    procedure cmdStartClick(Sender: TObject);
    procedure cmdStopClick(Sender: TObject);
    procedure txtDeviceNumChange(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.DFM}
procedure ErrorMsgBox( sErrMsg : WideString);
var
   sErrString : String[51];
   sCaption   : String[51];
begin
   sErrString := sErrMsg + Char(0);
   sCaption := frmMain.Caption + ' Error' + Char(0);
   Application.MessageBox(@sErrString, @sCaption, MB_OK or MB_ICONEXCLAMATION);
end;

procedure TfrmMain.cmdExitClick(Sender: TObject);
begin
   Application.Terminate;
end;

procedure TfrmMain.cmdSelectDeviceClick(Sender: TObject);
begin
   DAQPulse1.SelectDevice;

   txtDeviceNum.Text := IntToStr(DAQPulse1.DeviceNumber);
   txtDeviceName.Text := DAQPulse1.DeviceName;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
   cmdSelectDeviceClick(Sender);
   txtDeviceNum.Text := IntToStr(DAQPulse1.DeviceNumber);
   txtChannel.Text := IntToStr(DAQPulse1.Channel);
   cmbGateMode.ItemIndex := DAQPulse1.GateMode;
   txtPeriod.Text := CurrToStr(DAQPulse1.PulsePeriod);
end;

procedure TfrmMain.txtChannelChange(Sender: TObject);
begin
   DAQPulse1.Channel := StrToInt(txtChannel.Text);
end;

procedure TfrmMain.txtPeriodChange(Sender: TObject);
begin
   DAQPulse1.PulsePeriod := StrToCurr(txtPeriod.Text);
end;

procedure TfrmMain.txtUpCycleChange(Sender: TObject);
begin
   DAQPulse1.PulseUpCycle := StrToFloat(txtUpCycle.Text);
end;

procedure TfrmMain.cmbGateModeChange(Sender: TObject);
begin
   DAQPulse1.GateMode := cmbGateMode.ItemIndex;
end;

procedure TfrmMain.cmdStartClick(Sender: TObject);
begin
   If DAQPulse1.OpenDevice Then
   Begin
      ErrorMsgBox(DAQPulse1.ErrorMessage);
      Exit;
   end;

   DAQPulse1.Channel := StrToInt(txtChannel.Text);
   DAQPulse1.PulsePeriod := StrToCurr(txtPeriod.Text);
   DAQPulse1.PulseUpCycle := StrToCurr(txtUpCycle.Text);
   DAQPulse1.GateMode := cmbGateMode.ItemIndex;

   DAQPulse1.EnablePulseOut(True);
   cmdExit.Enabled := False;
   cmdStart.Enabled := False;
   cmdStop.Enabled := True;
   cmdSelectDevice.Enabled := False;
   Timer1.Enabled := True;
end;

procedure TfrmMain.cmdStopClick(Sender: TObject);
begin
   DAQPulse1.EnablePulseOut(False);
   cmdStop.Enabled := False;
   cmdStart.Enabled := True;
   cmdExit.Enabled := True;
   cmdSelectDevice.Enabled := True;
   Timer1.Enabled := False;

   If DAQPulse1.CloseDevice Then
   Begin
      ErrorMsgBox(DAQPulse1.ErrorMessage);
      Exit;
   end;
end;

procedure TfrmMain.txtDeviceNumChange(Sender: TObject);
begin
   DAQPulse1.DeviceNumber := StrToInt(txtDeviceNum.Text);
   txtDeviceName.Text := DAQPulse1.DeviceName;
end;

procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
   txtErrCde.Text := IntToStr(DAQPulse1.ErrorCode);
   txtErrMsg.Text := DAQPulse1.ErrorMessage;
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   DAQPulse1.EnablePulseOut(False);
   Timer1.Enabled := False;
   DAQPulse1.CloseDevice;
end;

end.

⌨️ 快捷键说明

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