?? k8055.~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 + -