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

📄 formmain.pas

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 PAS
📖 第 1 页 / 共 2 页
字号:
Unit FormMain;

Interface

Uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Driver, ComCtrls;

Type
  TfrmMain = class(TForm)
  GroupBox1: TGroupBox;
  labDeviceName: TStaticText;
  btnSelectDevice: TButton;
  cmdStart  : TButton;
  cmdStop   : TButton;
  btnClose: TBitBtn;
  ScanTimer : TTimer;
  GroupBox2 : TGroupBox;
  optVoltageOut  : TRadioButton;
  optCurrentOut0 : TRadioButton;
  optCurrentOut4 : TRadioButton;
  GroupBox3 : TGroupBox;
  chkSyncAOEnable : TCheckBox;
  Label1          : TLabel;
  txtScanTime     : TEdit;
  GroupBox4 : TGroupBox;
  chkSyncEnable0 : TCheckBox;
  chkSyncEnable1 : TCheckBox;
  chkSyncEnable2 : TCheckBox;
  chkSyncEnable3 : TCheckBox;
  chkSyncEnable4 : TCheckBox;
  chkSyncEnable5 : TCheckBox;
  chkSyncEnable6 : TCheckBox;
  chkSyncEnable7 : TCheckBox;
  GroupBox5 : TGroupBox;
  optAsyncEnable0 : TRadioButton;
  optAsyncEnable1 : TRadioButton;
  optAsyncEnable2 : TRadioButton;
  optAsyncEnable3 : TRadioButton;
  optAsyncEnable4 : TRadioButton;
  optAsyncEnable5 : TRadioButton;
  optAsyncEnable6 : TRadioButton;
  optAsyncEnable7 : TRadioButton;
  editOutput: TEdit;

  procedure btnSelectDeviceClick(Sender: TObject);
  procedure FormCreate(Sender: TObject);
  procedure txtScanTimeChange(Sender: TObject);
  procedure chkSyncAOEnableClick(Sender: TObject);
  procedure cmdStartClick(Sender: TObject);
  procedure cmdStopClick(Sender: TObject);
  procedure ScanTimerTimer(Sender: TObject);

  Private
    { Private declarations }
    lErrCde       : Longint;

  Public
    { Public declarations }
    lDeviceNum    :	Longint;
    lDeviceHandle :	Longint;
    szDescription :	array[0..81] of Char;
    ptDevGetFeatures : PT_DeviceGetFeatures;
    ptDevFeatures    : DEVFEATURES;
    ptAOVoltageOut   : PT_AOVoltageOut;
    ptAOCurrentOut   : PT_AOCurrentOut;
    MaxAOChannel : Integer;
    OutputIndex  : Integer;
    OutputValue  : array[0..3] of Single;
    szErrMsg   : string[100];
    pszErrMsg  : PChar;
End;

Var
  frmMain: TfrmMain;
  const AO_RANGE_SETTING : Smallint = $2000;

Implementation

{$R *.DFM}


{*************************************************************
 * Function: Handle the error code. If the input error code > 0,
 *           it means some error apperent.  This function can
 *           show the error message to a message box and stop
 *           this application.
 * Input:    The error code.
 * return:   none
 ************************************************************* }
Function DoesErr(var lErrCode: LongInt): integer;
var
  szErrMsg   : string[100];
  pszErrMsg  : PChar;
begin
  {Check the pressed error code}
  If (lErrCode <> 0) Then
  Begin
    pszErrMsg := @szErrMsg;
    DRV_GetErrorMessage(lErrCode, pszErrMsg);
    Application.MessageBox(pszErrMsg, 'Error!!', MB_OK);
    DoesErr := 1;
  End
  Else
    DoesErr := 0;
end;


Procedure TfrmMain.btnSelectDeviceClick(Sender: TObject);
Var
  i : Integer;
Begin
  DRV_SelectDevice(Handle, True, lDeviceNum, szDescription);
  labDeviceName.Caption := szDescription;
  // Open device to get feature
  lErrCde := DRV_DeviceOpen(lDeviceNum, lDeviceHandle);
  If ( DoesErr(lErrCde) = 1 ) Then
    Exit;

  ptDevGetFeatures.buffer := @ptDevFeatures;
  ptDevGetFeatures.size := sizeof(ptDevFeatures);

  lErrCde := DRV_DeviceGetFeatures(lDeviceHandle, ptDevGetFeatures);
  If ( DoesErr(lErrCde) = 1 ) Then
  Begin
    DRV_DeviceClose(lDeviceHandle);
    Exit;
  End;

  MaxAOChannel := ptDevFeatures.usMaxAOChl;

  DRV_DeviceClose(lDeviceHandle);

  If chkSyncAOEnable.Checked Then
  Begin
    optAsyncEnable0.Enabled := False;
    optAsyncEnable1.Enabled := False;
    optAsyncEnable2.Enabled := False;
    optAsyncEnable3.Enabled := False;
    optAsyncEnable4.Enabled := False;
    optAsyncEnable5.Enabled := False;
    optAsyncEnable6.Enabled := False;
    optAsyncEnable7.Enabled := False;
    For i := 0 To 7 do
    Begin
      If i < MaxAOChannel Then
	Case i of
          0 : chkSyncEnable0.Enabled := True;
          1 : chkSyncEnable1.Enabled := True;
          2 : chkSyncEnable2.Enabled := True;
          3 : chkSyncEnable3.Enabled := True;
          4 : chkSyncEnable4.Enabled := True;
          5 : chkSyncEnable5.Enabled := True;
          6 : chkSyncEnable6.Enabled := True;
          7 : chkSyncEnable7.Enabled := True;
        End
      Else
	Case i of
          0 : chkSyncEnable0.Enabled := False;
          1 : chkSyncEnable1.Enabled := False;
          2 : chkSyncEnable2.Enabled := False;
          3 : chkSyncEnable3.Enabled := False;
          4 : chkSyncEnable4.Enabled := False;
          5 : chkSyncEnable5.Enabled := False;
          6 : chkSyncEnable6.Enabled := False;
          7 : chkSyncEnable7.Enabled := False;
        End;
    End;
  End
  Else
  Begin
    chkSyncEnable0.Enabled := False;
    chkSyncEnable1.Enabled := False;
    chkSyncEnable2.Enabled := False;
    chkSyncEnable3.Enabled := False;
    chkSyncEnable4.Enabled := False;
    chkSyncEnable5.Enabled := False;
    chkSyncEnable6.Enabled := False;
    chkSyncEnable7.Enabled := False;
    For i := 0 To 7 do
    Begin
      If i < MaxAOChannel Then
	Case i of
          0 : optAsyncEnable0.Enabled := True;
          1 : optAsyncEnable1.Enabled := True;
          2 : optAsyncEnable2.Enabled := True;
          3 : optAsyncEnable3.Enabled := True;
          4 : optAsyncEnable4.Enabled := True;
          5 : optAsyncEnable5.Enabled := True;
          6 : optAsyncEnable6.Enabled := True;
          7 : optAsyncEnable7.Enabled := True;
        End
      Else
	Case i of
          0 : optAsyncEnable0.Enabled := False;
          1 : optAsyncEnable1.Enabled := False;
          2 : optAsyncEnable2.Enabled := False;
          3 : optAsyncEnable3.Enabled := False;
          4 : optAsyncEnable4.Enabled := False;
          5 : optAsyncEnable5.Enabled := False;
          6 : optAsyncEnable6.Enabled := False;
          7 : optAsyncEnable7.Enabled := False;
        End;
    End;
  End;
End;

Procedure TfrmMain.FormCreate(Sender: TObject);
Begin
  btnSelectDeviceClick(Sender);
End;


Procedure TfrmMain.txtScanTimeChange(Sender: TObject);
Begin
  ScanTimer.Interval := StrToInt(txtScanTime.Text);
End;


procedure TfrmMain.chkSyncAOEnableClick(Sender: TObject);
var
  i : Integer;
begin
  If chkSyncAOEnable.Checked Then
  Begin
    optAsyncEnable0.Enabled := False;
    optAsyncEnable1.Enabled := False;
    optAsyncEnable2.Enabled := False;
    optAsyncEnable3.Enabled := False;
    optAsyncEnable4.Enabled := False;
    optAsyncEnable5.Enabled := False;
    optAsyncEnable6.Enabled := False;
    optAsyncEnable7.Enabled := False;
    For i := 0 To 7 do
    Begin
      If i < MaxAOChannel Then
	Case i of
          0 : chkSyncEnable0.Enabled := True;
          1 : chkSyncEnable1.Enabled := True;
          2 : chkSyncEnable2.Enabled := True;
          3 : chkSyncEnable3.Enabled := True;
          4 : chkSyncEnable4.Enabled := True;
          5 : chkSyncEnable5.Enabled := True;
          6 : chkSyncEnable6.Enabled := True;
          7 : chkSyncEnable7.Enabled := True;
        End
      Else
	Case i of
          0 : chkSyncEnable0.Enabled := False;
          1 : chkSyncEnable1.Enabled := False;
          2 : chkSyncEnable2.Enabled := False;
          3 : chkSyncEnable3.Enabled := False;
          4 : chkSyncEnable4.Enabled := False;
          5 : chkSyncEnable5.Enabled := False;
          6 : chkSyncEnable6.Enabled := False;
          7 : chkSyncEnable7.Enabled := False;
        End;
    End;
  End
  Else
  Begin
    chkSyncEnable0.Enabled := False;
    chkSyncEnable1.Enabled := False;
    chkSyncEnable2.Enabled := False;
    chkSyncEnable3.Enabled := False;
    chkSyncEnable4.Enabled := False;
    chkSyncEnable5.Enabled := False;
    chkSyncEnable6.Enabled := False;
    chkSyncEnable7.Enabled := False;
    For i := 0 To 7 do
    Begin
      If i < MaxAOChannel Then
	Case i of
          0 : optAsyncEnable0.Enabled := True;
          1 : optAsyncEnable1.Enabled := True;

⌨️ 快捷键说明

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