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

📄 diintform.pas

📁 usb4711A数据采集卡的DI转换通道程序
💻 PAS
字号:
unit DiintForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,Driver,event,EventThread,Global;

type
  TForm1 = class(TForm)
    grpDeviceSelection: TGroupBox;
    labDeviceName: TLabel;
    btnSelectDevice: TButton;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label1: TLabel;
    txtInterruptCount: TEdit;
    stFrequency: TStaticText;
    rdgPriority: TRadioGroup;
    btnEnable: TButton;
    btnDisable: TButton;
    stCounts: TStaticText;
    btnClose: TButton;
    Memo1: TMemo;
    Label7: TLabel;
    Label2: TLabel;
    stIntSource: TStaticText;
    tmrShow: TTimer;
    procedure btnEnableClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnSelectDeviceClick(Sender: TObject);
    procedure btnDisableClick(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure tmrShowTimer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
        lDeviceNum    :	Longint;
	lDriverHandle :	Longint;
  	szDescription :	array[0..81] of Char;
        ErrCde        : LRESULT;
        szErrMsg      :	array[0..80] of Char;
       	myEventThread : TEventThread;
  	TData         : PT_ThreadData;
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.btnEnableClick(Sender: TObject);
var
      ptEnableEvent      :PT_EnableEvent;
begin
     ErrCde := DRV_DeviceOpen(lDeviceNum, lDriverHandle);
     if(ErrCde <> SUCCESS)then
     begin
          DRV_GetErrorMessage(ErrCde, @szErrMsg);
	  Application.MessageBox(szErrMsg, 'Error!!', MB_OK);
          Exit;
     end;


    stCounts.Caption := '' ;
    stFrequency.Caption :='';
    stIntSource.Caption := '';
    {set event parameters and enable event}
    ptEnableEvent.EventType := ADS_EVT_INTERRUPT_DI0;
    ptEnableEvent.Enabled   := 1;
    ptEnableEvent.Count     := StrToInt(txtInterruptCount.Text);
    ErrCde := DRV_EnableEvent(lDriverHandle, ptEnableEvent);

    if(ErrCde <> SUCCESS)then
    begin
        DRV_GetErrorMessage(ErrCde, @szErrMsg);
	 Application.MessageBox(szErrMsg, 'Error!!', MB_OK);
         Exit;
    end;
    {create thread and suspend it}
     TData.lDriverHandle := lDriverHandle;
     TData.stCounts := @stCounts;
     TData.stFrequency := @stFrequency;
     TData.stIntSource   := @stIntSource;
     
     myEventThread := TEventThread.Create(TData);
    {set the thread priority}
    if(rdgPriority.ItemIndex = 0)then
    begin
        myEventThread.Priority := tpNormal;
    end
    else if(rdgPriority.ItemIndex = 1)then
    begin
        myEventThread.Priority := tpTimeCritical;
    end;
    {//start the thread}
    myEventThread.Resume;
    tmrShow.Enabled := True;
    btnEnable.Enabled := False;
    btnDisable.Enabled := True;
    btnClose.Enabled := False;
    grpDeviceSelection.Enabled := False;
    rdgPriority.Enabled := False;
    txtInterruptCount.Enabled := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
If(DRV_SelectDevice(Handle, False, lDeviceNum, szDescription)=1) Then
   Begin
        Application.MessageBox('Can not Open Select Device Dialog', 'Error');
        btnCloseClick(Sender);
   End;
   labDeviceName.Caption := szDescription;
   rdgPriority.ItemIndex := 0;
   txtInterruptCount.Text := '1';

end;

procedure TForm1.btnSelectDeviceClick(Sender: TObject);
begin
     DRV_SelectDevice(Handle, False, lDeviceNum, szDescription);
     labDeviceName.Caption := szDescription;
end;

procedure TForm1.btnDisableClick(Sender: TObject);
var
   ptEnableEvent: PT_EnableEvent;
begin
    myEventThread.Terminate;
    myEventThread.WaitFor;
         //disable event
     tmrShow.Enabled := False;
     ptEnableEvent.EventType := ADS_EVT_INTERRUPT_DI0;
     ptEnableEvent.Enabled   := 0;
     ptEnableEvent.Count     := StrtoInt(txtInterruptCount.Text);
     ErrCde := DRV_EnableEvent(lDriverHandle,ptEnableEvent);

    if(ErrCde <> SUCCESS) then
    begin
        DRV_GetErrorMessage(ErrCde, @szErrMsg);
	 Application.MessageBox(szErrMsg, 'Error!!', MB_OK);
         Exit;
    end;

   //close devie
    DRV_DeviceClose(lDriverHandle);

    btnEnable.Enabled := True;
    btnDisable.Enabled := False;
    btnClose.Enabled := True;
    grpDeviceSelection.Enabled := True;
    rdgPriority.Enabled := True;
    txtInterruptCount.Enabled := True;
end;

procedure TForm1.btnCloseClick(Sender: TObject);
begin
    Application.Terminate;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     if(btnDisable.Enabled = True) then
     begin
         btnDisableClick(Sender);
     end;
end;

procedure TForm1.tmrShowTimer(Sender: TObject);
begin
     stFrequency.Caption := szBuf;
     stCounts.Caption := IntToStr(dwCount);
     stIntSource.Caption := szStatus;
end;

end.

⌨️ 快捷键说明

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