1 | unit Unit1;
|
2 |
|
3 | interface
|
4 |
|
5 | uses
|
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
7 | StdCtrls, Spin, CH341DLL;
|
8 |
|
9 | type
|
10 | TForm1 = class(TForm)
|
11 | ChipIndex: TSpinEdit;
|
12 | OpenBtn: TButton;
|
13 | CloseBtn: TButton;
|
14 | LEDBtn: TButton;
|
15 | ReadBtn: TButton;
|
16 | Label1: TLabel;
|
17 | ReportList: TListBox;
|
18 | procedure OpenBtnClick(Sender: TObject);
|
19 | procedure CloseBtnClick(Sender: TObject);
|
20 | procedure LEDBtnClick(Sender: TObject);
|
21 | procedure ReadBtnClick(Sender: TObject);
|
22 | procedure AddReport(aLine: String);
|
23 | private
|
24 | { Private-Deklarationen }
|
25 | LEDStatusByte: Byte;
|
26 | public
|
27 | { Public-Deklarationen }
|
28 | end;
|
29 |
|
30 | var
|
31 | Form1: TForm1;
|
32 |
|
33 | implementation
|
34 |
|
35 | {$R *.DFM}
|
36 |
|
37 | procedure TForm1.OpenBtnClick(Sender: TObject);
|
38 | begin
|
39 | //Verbindung zum Chip herstellen... ChipIndex: 0= 1.Chip am USB, 1= 2.Chip, usw.
|
40 | if (CH341OpenDevice(ChipIndex.Value)>0) then AddReport('DeviceOpen...OK')
|
41 | else AddReport('DeviceOpen...error!');
|
42 | LEDBtnClick(self);
|
43 | end;
|
44 |
|
45 |
|
46 | procedure TForm1.CloseBtnClick(Sender: TObject);
|
47 | begin
|
48 | //Verbindung schliessen...
|
49 | CH341CloseDevice(ChipIndex.Value);
|
50 | AddReport('Closed');
|
51 | end;
|
52 |
|
53 | procedure TForm1.LEDBtnClick(Sender: TObject);
|
54 | var Buffer: Byte;
|
55 | BufferLen: cardinal;
|
56 | begin
|
57 | if LEDStatusByte=0 then LEDStatusByte:=1;
|
58 |
|
59 | // Ein Byte senden... (LED 0...7)
|
60 | BufferLen:=1;
|
61 | Buffer:=not LEDStatusByte; //Output LOW = LED eingeschaltet!
|
62 | if CH341MemWriteAddr0(ChipIndex.Value,@Buffer,@BufferLen) then AddReport('Write...OK --- Status = '+IntToStr(Buffer))
|
63 | else AddReport('Write error!');
|
64 | LEDStatusByte:=LEDStatusByte shl 1; //Lauflicht
|
65 | end;
|
66 |
|
67 | procedure TForm1.ReadBtnClick(Sender: TObject);
|
68 | var Buffer: Byte;
|
69 | BufferLen: cardinal;
|
70 | begin
|
71 | //Ein Byte lesen (DIL-Schalter 0...7); Schalterposition ON = Input LOW)
|
72 | BufferLen:=1;
|
73 | if CH341MemReadAddr0(ChipIndex.Value,@Buffer,@BufferLen) then AddReport('Read...OK --- Status = '+IntToStr(Buffer))
|
74 | else AddReport('Read error!');
|
75 | end;
|
76 |
|
77 | procedure TForm1.AddReport(aLine: String);
|
78 | begin
|
79 | ReportList.items.Add('Device '+IntToStr(ChipIndex.Value)+': '+aLine);
|
80 | if ReportList.items.Count>10 then ReportList.items.Delete(0);
|
81 | end;
|
82 |
|
83 | end.
|