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

📄 k8055.~pas

📁 USB interface 8 digital out 2 anlog aout, 5 digital imputs 2 anlog imputs.
💻 ~PAS
字号:
unit K8055;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls, Math, Buttons, JvExControls, JvgCheckBox,
  JvLED;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    SK6: TCheckBox;
    SK5: TCheckBox;
    Timer1: TTimer;
    Button3: TButton;
    Label12: TLabel;
    GroupBox2: TGroupBox;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    GroupBox3: TGroupBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    CheckBox7: TCheckBox;
    CheckBox8: TCheckBox;
    CheckBox9: TCheckBox;
    CheckBox10: TCheckBox;
    CheckBox11: TCheckBox;
    CheckBox12: TCheckBox;
    CheckBox13: TCheckBox;
    GroupBox4: TGroupBox;
    Edit1: TEdit;
    Button2: TButton;
    GroupBox5: TGroupBox;
    Edit2: TEdit;
    Button1: TButton;
    RadioGroup1: TRadioGroup;
    RadioGroup2: TRadioGroup;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Timer2: TTimer;
    SpeedButton1: TSpeedButton;
    GroupBox6: TGroupBox;
    TrackBar1: TTrackBar;
    Label10: TLabel;
    GroupBox7: TGroupBox;
    TrackBar2: TTrackBar;
    Label7: TLabel;
    GroupBox8: TGroupBox;
    ProgressBar1: TProgressBar;
    Label14: TLabel;
    GroupBox9: TGroupBox;
    ProgressBar2: TProgressBar;
    Label16: TLabel;
    Edit3: TEdit;
    JvLED2: TJvLED;
    JvLED3: TJvLED;
    JvLED4: TJvLED;
    JvLED5: TJvLED;
    JvLED1: TJvLED;
    JvLED6: TJvLED;
    JvLED7: TJvLED;
    JvLED8: TJvLED;
    JvLED9: TJvLED;
    JvLED10: TJvLED;
    JvLED12: TJvLED;
    JvLED13: TJvLED;
    JvLED14: TJvLED;
    procedure Button3Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure TrackBar2Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure RadioGroup2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure DigitalOut(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;    
  timed:boolean;
  n:longint;
  DisableOtherFunctionCall,xxx:boolean;

implementation

{$R *.DFM}
function OpenDevice(CardAddress: Longint): Longint; stdcall; external 'K8055d.dll';
procedure CloseDevice; stdcall; external 'K8055d.dll';
function ReadAnalogChannel(Channel: Longint):Longint; stdcall; external 'K8055d.dll';
procedure ReadAllAnalog(var Data1, Data2: Longint); stdcall; external 'K8055d.dll';
procedure OutputAnalogChannel(Channel: Longint; Data: Longint); stdcall; external 'K8055d.dll';
procedure OutputAllAnalog(Data1: Longint; Data2: Longint); stdcall; external 'K8055d.dll';
procedure ClearAnalogChannel(Channel: Longint); stdcall; external 'K8055d.dll';
procedure ClearAllAnalog; stdcall; external 'K8055d.dll';
procedure SetAnalogChannel(Channel: Longint); stdcall; external 'K8055d.dll';
procedure SetAllAnalog; stdcall; external 'K8055d.dll';
procedure WriteAllDigital(Data: Longint);stdcall;  external 'K8055d.dll';
procedure ClearDigitalChannel(Channel: Longint); stdcall; external 'K8055d.dll';
procedure ClearAllDigital; stdcall; external 'K8055d.dll';
procedure SetDigitalChannel(Channel: Longint); stdcall; external 'K8055d.dll';
procedure SetAllDigital; stdcall; external 'K8055d.dll';
function ReadDigitalChannel(Channel: Longint): Boolean; stdcall; external 'K8055d.dll';
function ReadAllDigital: Longint; stdcall; external 'K8055d.dll';
function ReadCounter(CounterNr: Longint): Longint; stdcall; external 'K8055d.dll';
procedure ResetCounter(CounterNr: Longint); stdcall; external 'K8055d.dll';
procedure SetCounterDebounceTime(CounterNr, DebounceTime:Longint); stdcall; external 'K8055d.dll';

procedure TForm1.Button3Click(Sender: TObject);
var h,CardAddr:longint;
begin
  CardAddr:= 3-(integer(sk5.Checked) + integer(sk6.Checked) * 2);
  h:= OpenDevice(CardAddr);
  case h of
    0..3: label12.caption:='Card '+ inttostr(h)+' connected';
    -1: label12.caption:='Card '+ inttostr(CardAddr)+' not found';
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var i, Data1, Data2: longint;
begin
  timer1.enabled:=false;
  Edit1.text:=inttostr(ReadCounter(1));
  Edit2.text:=inttostr(ReadCounter(2));
  ReadAllAnalog(Data1,Data2);
  ProgressBar1.Position:=Data1;
  ProgressBar2.Position:=Data2;
  Label14.caption:=inttostr(Data1);
  Label16.caption:=inttostr(Data2);
  i:=ReadAllDigital;
  CheckBox1.checked:=(i and 1)>0;
  CheckBox2.checked:=(i and 2)>0;
  CheckBox3.checked:=(i and 4)>0;
  CheckBox4.checked:=(i and 8)>0;
  CheckBox5.checked:=(i and 16)>0;
  JvLED1.Status:=(i and 1)>0;
  JvLED2.Status:=(i and 2)>0;
  JvLED3.Status:=(i and 4)>0;
  JvLED4.Status:=(i and 8)>0;
  JvLED5.Status:=(i and 16)>0;
  timer1.enabled:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ResetCounter(1);
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  if not DisableOtherFunctionCall then OutputAnalogChannel(1,255-TrackBar1.position);
  Label10.caption:=inttostr(255-TrackBar1.position);
end;

procedure TForm1.TrackBar2Change(Sender: TObject);
begin
  if not DisableOtherFunctionCall then OutputAnalogChannel(2,255-TrackBar2.position);
  Label7.caption:=inttostr(255-TrackBar2.position);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ResetCounter(2);
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
var t1:longint;
begin
  case RadioGroup1.ItemIndex of
    0: t1:=0;
    1: t1:=2;
    2: t1:=10;
    3: t1:=1000;
  end;
  SetCounterDebounceTime(1,t1);
end;

procedure TForm1.RadioGroup2Click(Sender: TObject);
var t2:longint;
begin
  case RadioGroup2.ItemIndex of
    0: t2:=0;
    1: t2:=2;
    2: t2:=10;
    3: t2:=1000;
  end;
  SetCounterDebounceTime(2,t2);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  SetAllDigital;
  DisableOtherFunctionCall:=true;
  CheckBox6.checked:=true;
  CheckBox7.checked:=true;
  CheckBox8.checked:=true;
  CheckBox9.checked:=true;
  CheckBox10.checked:=true;
  CheckBox11.checked:=true;
  CheckBox12.checked:=true;
  CheckBox13.checked:=true;
  DisableOtherFunctionCall:=false;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  SetAllAnalog;
  DisableOtherFunctionCall:=true;
  TrackBar1.position:=0;
  TrackBar2.position:=0;
  DisableOtherFunctionCall:=false;
end;

procedure TForm1.DigitalOut(Sender: TObject);
var i:longint;
begin
  i:=integer(CheckBox6.checked)*1+
  integer(CheckBox7.checked)*2+
  integer(CheckBox8.checked)*4+
  integer(CheckBox9.checked)*8+
  integer(CheckBox10.checked)*16+
  integer(CheckBox11.checked)*32+
  integer(CheckBox12.checked)*64+
  integer(CheckBox13.checked)*128;

  if not DisableOtherFunctionCall then WriteAllDigital(i);
  Edit3.Text:=IntToStr(i);
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
  ClearAllDigital;
  DisableOtherFunctionCall:=true;
  CheckBox6.checked:=false;
  CheckBox7.checked:=false;
  CheckBox8.checked:=false;
  CheckBox9.checked:=false;
  CheckBox10.checked:=false;
  CheckBox11.checked:=false;
  CheckBox12.checked:=false;
  CheckBox13.checked:=false;
  DisableOtherFunctionCall:=false;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  ClearAllAnalog;
  DisableOtherFunctionCall:=true;
  TrackBar1.position:=255;
  TrackBar2.position:=255;
  DisableOtherFunctionCall:=false;
end;


procedure TForm1.Timer2Timer(Sender: TObject);
begin
    ClearDigitalChannel(n);
    TCheckBox(Form1.FindComponent('CheckBox'+inttostr(n+5))).checked:=false;
    inc(n);
    if n=9 then n:=1;
    TCheckBox(Form1.FindComponent('CheckBox'+inttostr(n+5))).checked:=true;
    SetDigitalChannel(n);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  n:=8;
  DisableOtherFunctionCall:=false;
  xxx:=false;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  timer2.enabled:=SpeedButton1.Down;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  CloseDevice;
end;

end.

⌨️ 快捷键说明

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