📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, DAQDILib_TLB, StdCtrls, OleCtrls;
type
TfMain = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
txtDeviceNum: TEdit;
txtDeviceName: TEdit;
cmdSelectDevice: TButton;
frmProperty: TGroupBox;
hscrlCount: TScrollBar;
txtEventDevidor: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
frmExecution: TGroupBox;
Label6: TLabel;
txtEventFreq: TEdit;
Label7: TLabel;
cmdEnableEvent: TButton;
cmdDisableEvent: TButton;
cmdExit: TButton;
Label8: TLabel;
txtScanInterval: TEdit;
tmrWatch: TTimer;
Label9: TLabel;
DAQDI1: TDAQDI;
Label10: TLabel;
procedure cmdSelectDeviceClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure cmdExitClick(Sender: TObject);
procedure cmdDisableEventClick(Sender: TObject);
procedure cmdEnableEventClick(Sender: TObject);
procedure DAQDI1Event(Sender: TObject);
procedure hscrlCountChange(Sender: TObject);
procedure txtEventDevidorChange(Sender: TObject);
procedure tmrWatchTimer(Sender: TObject);
procedure txtScanIntervalChange(Sender: TObject);
procedure txtDeviceNumChange(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
gEventCount : integer;
end;
var
fMain: TfMain;
implementation
{$R *.DFM}
{********************************************************************}
{ Function : Display error message to a dialog box. }
{ The format of Long string and short string in Delphi is }
{ different from Null-terminated that used in C. }
{ }
{ The long/short string use 1'st char to denote the string}
{ length without termonated char in the tail of string. }
{ }
{ The Null-terminated string use Null Char as a string }
{ termonated and without string length information. }
{ }
{ The Message box use Null-Terminated string. }
{ }
{ Paramater: sErrMsg: In, Error message string. }
{ Return: None }
{********************************************************************}
procedure ErrorMsgBox( sErrMsg : WideString);
var
sErrString : String[51];
sCaption : String[51];
begin
sErrString := sErrMsg + Char(0);
sCaption := fMain.Caption + ' Error' + Char(0);
Application.MessageBox(@sErrString[1], @sCaption, MB_OK or MB_ICONEXCLAMATION);
end;
{------------------------------------------------------------------}
{ Controlls' function }
procedure TfMain.cmdSelectDeviceClick(Sender: TObject);
var
sTmp : string[50];
begin
{Select Device from list}
DAQDI1.SelectDevice;
{Dispaly selection result}
str(DAQDI1.DeviceNumber, sTmp);
txtDeviceNum.Text := sTmp;
txtDeviceName.Text := DAQDI1.DeviceName;
{Manage UI}
cmdEnableEvent.Enabled := True;
cmdDisableEvent.Enabled := False;
end;
procedure TfMain.FormCreate(Sender: TObject);
begin
cmdSelectDeviceClick(Sender);
txtEventDevidor.text := IntToStr(hscrlCount.Position);
end;
procedure TfMain.cmdExitClick(Sender: TObject);
begin
Application.terminate;
end;
procedure TfMain.cmdDisableEventClick(Sender: TObject);
begin
{Disable Event}
DAQDI1.EnableEvent(False);
{Disable watch timer}
tmrWatch.Enabled := False;
{Close device}
DAQDI1.CloseDevice;
cmdEnableEvent.Enabled := True;
cmdDisableEvent.Enabled := False;
cmdExit.Enabled := True;
cmdSelectDevice.Enabled := True;
end;
procedure TfMain.cmdEnableEventClick(Sender: TObject);
begin
{Open Device}
If DAQDI1.OpenDevice Then
begin
ErrorMsgBox(DAQDI1.ErrorMessage);
Exit;
End;
if DAQDI1.MaxPortNumber = 0 then
begin
ShowMessage('Function Not Supported');
DAQDI1.CloseDevice;
Exit;
end;
{Enable Event}
gEventCount := 0;
if DAQDI1.EnableEvent(True) then
begin
ErrorMsgBox(DAQDI1.ErrorMessage);
DAQDI1.CloseDevice;
Exit;
end;
{Start scan}
tmrWatch.Enabled := True;
{Manage UI}
cmdEnableEvent.Enabled := False;
cmdDisableEvent.Enabled := True;
cmdExit.Enabled := False;
cmdSelectDevice.Enabled := False;
end;
procedure TfMain.DAQDI1Event(Sender: TObject);
begin
gEventCount := gEventCount + 1;
end;
procedure TfMain.hscrlCountChange(Sender: TObject);
begin
txtEventDevidor.Text := IntToStr(hscrlCount.Position);
DAQDI1.EventTrigCount := hscrlCount.Position;
end;
procedure TfMain.txtEventDevidorChange(Sender: TObject);
begin
DAQDI1.EventTrigCount := hscrlCount.Position;
hscrlCount.Position := StrToInt(txtEventDevidor.Text);
end;
procedure TfMain.tmrWatchTimer(Sender: TObject);
var
iFreq : integer;
begin
iFreq := gEventCount*1000 div Integer(tmrWatch.Interval);
txtEventFreq.Text := IntToStr(iFreq);
gEventCount := 0;
end;
procedure TfMain.txtScanIntervalChange(Sender: TObject);
begin
tmrWatch.Interval := StrToInt(txtScanInterval.text);
end;
procedure TfMain.txtDeviceNumChange(Sender: TObject);
begin
DAQDI1.DeviceNumber := StrToInt(txtDeviceNum.Text);
txtDeviceName.Text := DAQDI1.DeviceName;
end;
procedure TfMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DAQDI1.EnableEvent(False);
tmrWatch.Enabled := False;
DAQDI1.CloseDevice;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -