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 >
Pascal/Delphi Source File  |  2001-06-30  |  4KB  |  202 lines

  1. unit mainform;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls,zlportio, ComCtrls, shellapi;
  8.  
  9. type
  10.   TMain = class(TForm)
  11.     lb1: TLabel;
  12.     ePort: TEdit;
  13.     lb2: TLabel;
  14.     eData: TEdit;
  15.     eRData: TEdit;
  16.     btnExit: TButton;
  17.     lb3: TLabel;
  18.     coDataType: TComboBox;
  19.     Lb4: TLabel;
  20.     gb1: TGroupBox;
  21.     sbBar: TStatusBar;
  22.     lb5: TLabel;
  23.     btnWrite: TButton;
  24.     btnRead: TButton;
  25.     btn1: TButton;
  26.     cbDirect: TCheckBox;
  27.     procedure btnExitClick(Sender: TObject);
  28.     procedure ePortKeyUp(Sender: TObject; var Key: Word;
  29.       Shift: TShiftState);
  30.     procedure ePortKeyPress(Sender: TObject; var Key: Char);
  31.     procedure FormCreate(Sender: TObject);
  32.     procedure coDataTypeChange(Sender: TObject);
  33.     procedure ePortKeyDown(Sender: TObject; var Key: Word;
  34.       Shift: TShiftState);
  35.     procedure btnWriteClick(Sender: TObject);
  36.     procedure eDataKeyDown(Sender: TObject; var Key: Word;
  37.       Shift: TShiftState);
  38.     procedure btnReadClick(Sender: TObject);
  39.     procedure btn1Click(Sender: TObject);
  40.     procedure cbDirectClick(Sender: TObject);
  41.   private
  42.     { Private declarations }
  43.   public
  44.     { Public declarations }
  45.    procedure setrdata(const Data:dword);
  46.    function str2int(const value:string;const HEX:boolean):integer;
  47.   end;
  48.  
  49. var
  50.   Main: TMain;
  51. implementation
  52.  
  53. {$R *.DFM}
  54. {$R-}
  55.  
  56. function TMain.str2int(const value:string;const HEX:boolean):integer;
  57. begin
  58.   if HEX then
  59.      result := strtoint('$' + value)
  60.     else
  61.      result := strtoint(value);
  62. end;
  63.  
  64.  
  65. procedure TMain.btnExitClick(Sender: TObject);
  66. begin
  67.  close;
  68. end;
  69.  
  70. procedure TMain.ePortKeyUp(Sender: TObject; var Key: Word;
  71.   Shift: TShiftState);
  72. begin
  73. try
  74.  Case key of
  75.   38: begin
  76.        key := 0;
  77.       end;
  78.   40: begin
  79.        key := 0;
  80.       end
  81.  end;
  82. except
  83. end;
  84. end;
  85.  
  86. procedure TMain.ePortKeyPress(Sender: TObject; var Key: Char);
  87. begin
  88.   // filter on hex
  89.  if pos(key,#13#8'0123456789abcdefABCDEF')=0 then
  90.    key := #0;
  91. end;
  92.  
  93. procedure TMain.FormCreate(Sender: TObject);
  94. begin
  95.  coDataType.itemindex :=0;
  96.  coDataType.Tag := 2;
  97.  if ZLIOStarted then
  98.   sbBar.SimpleText := 'Driver successfully started !';
  99. end;
  100.  
  101. procedure TMain.coDataTypeChange(Sender: TObject);
  102. var s:string;
  103. begin
  104.  coDataType.Tag := 2 shl (coDataType.itemindex);
  105.  erdata.MaxLength := coDataType.Tag;
  106.  edata.MaxLength := coDataType.Tag;
  107.  s := edata.Text;
  108.  delete(s,1,length(s)-coDataType.Tag);
  109.  edata.text := s;
  110. end;
  111.  
  112. procedure TMain.ePortKeyDown(Sender: TObject; var Key: Word;
  113.   Shift: TShiftState);
  114. var Port,data:dword;
  115. begin
  116. try
  117.       try
  118.        Port := str2int(ePort.Text,true);
  119.       except
  120.        Port := 0;
  121.       end;
  122.  Case key of
  123.   13: begin
  124.         zlioportwrite(port,coDataType.itemindex,str2int(eData.Text, true));
  125.       end;
  126.   38: begin
  127.        inc(Port);
  128.        ePort.Text := inttohex(Port,3);
  129.        key := 0;
  130.       end;
  131.   40: begin
  132.        if port > 0 then
  133.         dec(Port);
  134.        ePort.Text := inttohex(Port,3);
  135.        key := 0;
  136.       end
  137.  end;
  138.  data := zlioportread(Port,coDataType.itemindex);
  139.  setrdata(data);
  140. except
  141. end;
  142.  
  143. end;
  144.  
  145. procedure TMain.setrdata(const Data:dword);
  146. begin
  147.  erData.Text := inttohex(Data,coDataType.Tag);
  148. end;
  149.  
  150. procedure TMain.btnWriteClick(Sender: TObject);
  151. var i:word;
  152. begin
  153.  i := 13;
  154.  ePortKeyDown( self,i,[])
  155. end;
  156.  
  157.  
  158.  
  159. procedure TMain.eDataKeyDown(Sender: TObject; var Key: Word;
  160.   Shift: TShiftState);
  161. var data:dword;
  162. begin
  163.       try
  164.        Data := str2int(eData.Text,true);
  165.       except Data := 0; end;
  166.  Case key of
  167.   13: begin
  168.         ePortKeyDown( self,key,[])
  169.       end;
  170.   38: begin
  171.        inc(Data);
  172.        eData.Text := inttohex(Data,coDataType.Tag);
  173.        key := 0;
  174.       end;
  175.   40: begin
  176.         dec(Data);
  177.        eData.Text := inttohex(Data,coDataType.Tag);
  178.        key := 0;
  179.       end
  180.  end;
  181.  
  182. end;
  183.  
  184. procedure TMain.btnReadClick(Sender: TObject);
  185. var k:word;
  186. begin
  187.  k := 0;
  188.  ePortKeyDown(self, k,[]);
  189. end;
  190.  
  191. procedure TMain.btn1Click(Sender: TObject);
  192. begin
  193.  shellexecute( handle,'open','http://www.specosoft.com?portio.exe',nil,nil,SW_SHOW);
  194. end;
  195.  
  196. procedure TMain.cbDirectClick(Sender: TObject);
  197. begin
  198. zliosetiopm(cbDirect.Checked);
  199. end;
  200.  
  201. end.
  202.