Не, как бы все понятно, но и втоже время нет. Как это все работает мне кажется я разобрался но программу составить не могу. Привожу пример моего использования USB?: по нажатию одной кнопки запрашиваю данные о производителе и серийном номере, по нажатию второй начинаю прием данных с порта. Данные в порт приходят, пакетом из 8 байт, каждые 0,5 с. Хотелось бы не просто каждые 0,5 секунды отсчетом таймера заходить и забирать данные, а вызывать событие которое будет обрабатыватся отдельной процедурой.
МОЖЕТ Я ИДИОТ И МНЕ НУЖНО ИЗУЧАТЬ МАТЧАСТЬ
Код
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, TeEngine, Series, TeeProcs, Chart,
AxCtrls, OleCtrls, VCF1,D2XXUnit;
type
TForm1 = class(TForm)
Button2: TButton;
Button4: TButton;
Memo: TMemo;
procedure LoadClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
temp: string;
tmp,I: integer;
Serial_Number : String;
Description : String;
Device_Location:DWord;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
deviceindex:integer;
begin
GetFTDeviceCount; {Количество FT устройств}
S := IntToStr(FT_Device_Count);
DeviceIndex := 0;
GetFTDeviceDescription ( DeviceIndex );
Description:=FT_Device_String;
Memo.Lines.Add('Устройство - '+FT_Device_String);
GetFTDeviceSerialNo( DeviceIndex );
Serial_Number:=FT_Device_String;
Memo.Lines.Add('Серийный Номер - '+FT_Device_String);
GetFTDeviceLocation(DeviceIndex);
Device_Location:=FT_Device_Location;
Memo.Lines.Add('Место подключения - '+IntToStr(Device_Location));
end;
procedure TForm1.Button4Click(Sender: TObject);
var
z,IL:integer;
s:byte;
slovo:string;
begin
If Open_USB_Device_By_Serial_Number(Serial_Number) = FT_OK then
Begin
Repeat
z:=Read_USB_Device_Buffer(8);
str(z,temp);
memo.Lines.add(temp);
if z>0 then
begin
slovo:='';
for IL:=0 to 8 do begin s:=FT_IN_BUFFER[IL];
temp:=chr(s);
slovo:=slovo+' '+temp;
end;
memo.Lines.add(slovo);
end;
Until z = 0;
Close_USB_Device;
End
else
Begin
Memo.Lines.Add('Ошибка открытия USB устройства')
End;
end;
END.