home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 October
/
Chip_2001-10_cd1.bin
/
zkuste
/
delphi
/
kompon
/
d2345
/
ZLPORTIO.ZIP
/
Example
/
mainform.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2001-06-30
|
4KB
|
202 lines
unit mainform;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,zlportio, ComCtrls, shellapi;
type
TMain = class(TForm)
lb1: TLabel;
ePort: TEdit;
lb2: TLabel;
eData: TEdit;
eRData: TEdit;
btnExit: TButton;
lb3: TLabel;
coDataType: TComboBox;
Lb4: TLabel;
gb1: TGroupBox;
sbBar: TStatusBar;
lb5: TLabel;
btnWrite: TButton;
btnRead: TButton;
btn1: TButton;
cbDirect: TCheckBox;
procedure btnExitClick(Sender: TObject);
procedure ePortKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ePortKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure coDataTypeChange(Sender: TObject);
procedure ePortKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure btnWriteClick(Sender: TObject);
procedure eDataKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure btnReadClick(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure cbDirectClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure setrdata(const Data:dword);
function str2int(const value:string;const HEX:boolean):integer;
end;
var
Main: TMain;
implementation
{$R *.DFM}
{$R-}
function TMain.str2int(const value:string;const HEX:boolean):integer;
begin
if HEX then
result := strtoint('$' + value)
else
result := strtoint(value);
end;
procedure TMain.btnExitClick(Sender: TObject);
begin
close;
end;
procedure TMain.ePortKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
try
Case key of
38: begin
key := 0;
end;
40: begin
key := 0;
end
end;
except
end;
end;
procedure TMain.ePortKeyPress(Sender: TObject; var Key: Char);
begin
// filter on hex
if pos(key,#13#8'0123456789abcdefABCDEF')=0 then
key := #0;
end;
procedure TMain.FormCreate(Sender: TObject);
begin
coDataType.itemindex :=0;
coDataType.Tag := 2;
if ZLIOStarted then
sbBar.SimpleText := 'Driver successfully started !';
end;
procedure TMain.coDataTypeChange(Sender: TObject);
var s:string;
begin
coDataType.Tag := 2 shl (coDataType.itemindex);
erdata.MaxLength := coDataType.Tag;
edata.MaxLength := coDataType.Tag;
s := edata.Text;
delete(s,1,length(s)-coDataType.Tag);
edata.text := s;
end;
procedure TMain.ePortKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var Port,data:dword;
begin
try
try
Port := str2int(ePort.Text,true);
except
Port := 0;
end;
Case key of
13: begin
zlioportwrite(port,coDataType.itemindex,str2int(eData.Text, true));
end;
38: begin
inc(Port);
ePort.Text := inttohex(Port,3);
key := 0;
end;
40: begin
if port > 0 then
dec(Port);
ePort.Text := inttohex(Port,3);
key := 0;
end
end;
data := zlioportread(Port,coDataType.itemindex);
setrdata(data);
except
end;
end;
procedure TMain.setrdata(const Data:dword);
begin
erData.Text := inttohex(Data,coDataType.Tag);
end;
procedure TMain.btnWriteClick(Sender: TObject);
var i:word;
begin
i := 13;
ePortKeyDown( self,i,[])
end;
procedure TMain.eDataKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var data:dword;
begin
try
Data := str2int(eData.Text,true);
except Data := 0; end;
Case key of
13: begin
ePortKeyDown( self,key,[])
end;
38: begin
inc(Data);
eData.Text := inttohex(Data,coDataType.Tag);
key := 0;
end;
40: begin
dec(Data);
eData.Text := inttohex(Data,coDataType.Tag);
key := 0;
end
end;
end;
procedure TMain.btnReadClick(Sender: TObject);
var k:word;
begin
k := 0;
ePortKeyDown(self, k,[]);
end;
procedure TMain.btn1Click(Sender: TObject);
begin
shellexecute( handle,'open','http://www.specosoft.com?portio.exe',nil,nil,SW_SHOW);
end;
procedure TMain.cbDirectClick(Sender: TObject);
begin
zliosetiopm(cbDirect.Checked);
end;
end.