亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.pas

?? Delphi直接控制usb-232接口的例子
?? PAS
字號:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ImgList, ToolWin, ComCtrls, StdCtrls, ExtCtrls, ActnList, Buttons;

type
  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    ImageList1: TImageList;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Panel1: TPanel;
    Memo1: TMemo;
    Help1: TMenuItem;
    About1: TMenuItem;
    ActionList1: TActionList;
    FTPort_Configure: TAction;
    Timer1: TTimer;
    Device1: TMenuItem;
    Configure1: TMenuItem;
    FTSendFile: TAction;
    FTReceiveFile: TAction;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    SendFile1: TMenuItem;
    ReceiveFile1: TMenuItem;
    N1: TMenuItem;
    FTQuit: TAction;
    FTResend: TAction;
    SndRxvCmp: TAction;
    N2: TMenuItem;
    Exit1: TMenuItem;
    ReSend1: TMenuItem;
    SendRxvCompare1: TMenuItem;
    ListView1: TListView;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    procedure FormShow(Sender: TObject);
    procedure Memo1KeyPress(Sender: TObject; var Key: Char);
    procedure FTPort_ConfigureExecute(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FTSendFileExecute(Sender: TObject);
    procedure FTReceiveFileExecute(Sender: TObject);
    procedure FTQuitExecute(Sender: TObject);
    procedure FTResendExecute(Sender: TObject);
    procedure SndRxvCmpExecute(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure ListView1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses CfgUnit,D2XXUnit;

var
 DevicePresent : Boolean;
 Selected_Device_Serial_Number : String;
 Selected_Device_Description : String; 

{$R *.DFM}

procedure TForm1.FormShow(Sender: TObject);
var S : String; I : Integer; DeviceIndex : DWord; LV : TListItem;
begin
Memo1.Clear;
FT_Enable_Error_Report := true; // Error reporting = on
SaveDialog1.InitialDir := ExtractFilePath(Application.ExeName);
OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName);
DevicePresent := False;
Memo1.Enabled := False;
FTSendFile.Enabled := False;
FTReceiveFile.Enabled := False;
FTPort_Configure.Enabled := False;
Timer1.Enabled := True;
FTSendFile.enabled := false;
FTReceiveFile.Enabled := false;
FTResend.Enabled := false;
SndRxvCmp.Enabled := false;
ListView1.Items.clear;
GetFTDeviceCount;
S := IntToStr(FT_Device_Count);
Caption := 'D2XX Delphi Demo - '+S+' Device(s) Present ...';
DeviceIndex := 0;
If FT_Device_Count > 0 then
  For I := 1 to FT_Device_Count do
  Begin
  LV := ListView1.Items.Add;
  LV.Caption := 'Device '+IntToStr(I);
  GetFTDeviceSerialNo( DeviceIndex );
  LV.SubItems.Add(FT_Device_String);
  GetFTDeviceDescription ( DeviceIndex );
  LV.SubItems.Add(FT_Device_String);
  DeviceIndex := DeviceIndex + 1;
  End;
end;

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
// Caption := Key;
Key := Chr(0);
end;

procedure TForm1.FTPort_ConfigureExecute(Sender: TObject);
begin
Repeat
SetupForm.ShowModal;
If FT_SetUperror then
  MessageDlg('Configuration Error ...', mtError, [mbOk], 0);
Until Not FT_SetUpError;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
Var PortStatus : FT_Result;  S : String; DeviceIndex : DWord;  I : Integer;
begin

Exit; //debug
FT_Enable_Error_Report := False; // Turn off error dialog
If Not DevicePresent then
  Begin
  PortStatus := Close_USB_Device; // In case device was already open
  PortStatus := Open_USB_Device;  // Try and open device
  If PortStatus = FT_OK then      // Device is Now Present !
    Begin
    DevicePresent := True;
    Caption := 'D2XX Delphi Demo - Device Present ...';
    Memo1.Enabled := True;
    FTPort_Configure.Enabled := True;
    FTSendFile.Enabled := True;
    FTReceiveFile.Enabled := True;
    Reset_USB_Device;     // warning - this will destroy any pending data.
    Set_USB_Device_TimeOuts(500,500); // read and write timeouts = 500mS
    End;
  End
else
  Begin
  PortStatus := Get_USB_Device_QueueStatus;
  If PortStatus <> FT_OK then
    Begin   // Device has been Unplugged
    DevicePresent := False;
    Caption := 'D2XX Delphi Demo - No Device Present ...';
    Memo1.Enabled := False;
    FTSendFile.Enabled := False;
    FTReceiveFile.Enabled := False;
    FTPort_Configure.Enabled := False;
    End;
  End;

end;

procedure TForm1.FTSendFileExecute(Sender: TObject);
Var OpenFile : File;  OpenFileName : String;
    FC1,Total,I : Integer;
    S : String;
begin
If OpenDialog1.Execute then
  Begin
  Total := 0;
  FT_Enable_Error_Report := true; // Enable Error Reporting
  Timer1.Enabled := False;  // Stop Polling for Device Present
  OpenFileName := OpenDialog1.FileName;
  OpenDialog1.InitialDir := ExtractFilePath(OpenFilename);
  Memo1.Lines.Add('Opening - '+OpenFileName);
  AssignFile(OpenFile,OpenFileName);
  Reset(OpenFile,1);
    Repeat
    Application.ProcessMessages;
    BlockRead(OpenFile,FT_Out_Buffer,FT_Out_Buffer_Size,FC1);
    StatusBar1.Panels[0].Text := '   Bytes Sent = '+IntToStr(Total);
    If FC1 <> 0 then
      Begin
      I := Write_USB_Device_Buffer( FC1 );
      If I <> FC1 then Memo1.Lines.Add('USB Device Write TimeOut ...');
      Total := Total + I;
      End;
    Until ( FC1 <> FT_Out_Buffer_Size ); // Last Block of File ...
  S := IntToStr(Total)+ ' Bytes Sent ...';
  Memo1.Lines.Add(S);
  CloseFile(OpenFile);
  Timer1.Enabled := True;  // Resume Polling for Device Present
  End;
end;

procedure TForm1.FTReceiveFileExecute(Sender: TObject);
Var SaveFile : File;
    BytesWrote,Total,I : Integer;
    SaveFileName : String;
    PortStatus : FT_Result;
begin
If SaveDialog1.Execute then
  Begin
  FT_Enable_Error_Report := false; // Disable Error Reporting
  Timer1.Enabled := False;  // Stop Polling for Device Present
  SaveFileName := SaveDialog1.FileName;
  AssignFile(SaveFile,SaveFileName);
  SaveDialog1.InitialDir := ExtractFilePath(SaveFileName);
  ReWrite(SaveFile,1);
  Total := 0;
  StatusBar1.Panels[0].Text := 'Waiting for Data ...';
  Repeat
  Application.ProcessMessages;
  PortStatus := Get_USB_Device_QueueStatus;
  If PortStatus <> FT_OK then     // Device no longer present ...
    Begin
    CloseFile(SaveFile);
    Timer1.Enabled := True;
    StatusBar1.Panels[0].Text := '';
    Exit;
    End;
  Until FT_Q_Bytes > 0;
  Repeat
  Application.ProcessMessages;
  I := Read_USB_Device_Buffer(FT_In_Buffer_Size);
  Total := Total + I;
  StatusBar1.Panels[0].Text := 'Bytes Received = '+IntToStr(Total);
  If I > 0 then BlockWrite(SaveFile,FT_In_Buffer,I,BytesWrote);
  Until I = 0; // Nothing more to read !!!
  Memo1.Lines.Add('Done ...');
  CloseFile(SaveFile);
  Timer1.Enabled := True;  // Resume Polling for Device Present
  End;
end;

procedure TForm1.FTQuitExecute(Sender: TObject);
begin
If DevicePresent then Close_USB_Device;
Close;
end;

procedure TForm1.FTResendExecute(Sender: TObject);
Var SaveFile,OpenFile : File;
    BytesWrote,Total,I,FC1: Integer;
    SaveFileName,S : String;
    PortStatus : FT_Result;
begin
FT_Enable_Error_Report := false; // Disable Error Reporting
Timer1.Enabled := False;  // Stop Polling for Device Present
SaveFileName := 'SaveFile.tmp';
AssignFile(SaveFile,SaveFileName);
ReWrite(SaveFile,1);
Total := 0;
StatusBar1.Panels[0].Text := 'Waiting for Data ...';
Repeat
Application.ProcessMessages;
PortStatus := Get_USB_Device_QueueStatus;
If PortStatus <> FT_OK then     // Device no longer present ...
  Begin
  CloseFile(SaveFile);
  Timer1.Enabled := True;
  StatusBar1.Panels[0].Text := '';
  Exit;
  End;
Until FT_Q_Bytes > 0;
Repeat
Application.ProcessMessages;
I := Read_USB_Device_Buffer(FT_In_Buffer_Size);
Total := Total + I;
StatusBar1.Panels[0].Text := 'Bytes Received = '+IntToStr(Total);
If I > 0 then BlockWrite(SaveFile,FT_In_Buffer,I,BytesWrote);
Until I = 0; // Nothing more to read !!!
CloseFile(SaveFile);
Total := 0;
Memo1.Lines.Add('Opening - '+SaveFileName);
AssignFile(OpenFile,SaveFileName);
Reset(OpenFile,1);
Repeat
Application.ProcessMessages;
BlockRead(OpenFile,FT_Out_Buffer,FT_Out_Buffer_Size,FC1);
Total := Total + FC1;
StatusBar1.Panels[0].Text := '   Bytes Sent = '+IntToStr(Total);
If FC1 <> 0 then
  Begin
  I := Write_USB_Device_Buffer( FC1 );
  If I <> FC1 then Memo1.Lines.Add('USB Device Write TimeOut ...');
  End;
Until ( FC1 <> FT_Out_Buffer_Size ); // Last Block of File ...
S := IntToStr(Total)+ ' Bytes Sent ...';
Memo1.Lines.Add(S);
CloseFile(OpenFile);
Timer1.Enabled := True;  // Resume Polling for Device Present
end;

procedure TForm1.SndRxvCmpExecute(Sender: TObject);
Var OpenFile,SaveFile : File;  OpenFileName,SaveFileName : String;
    FC1,FC2,Total,I,SendTotal,BytesWrote : Integer;
    S : String;
    PortStatus : FT_Result;
    PassTest : Boolean;   
begin
If OpenDialog1.Execute then
  Begin
  Total := 0;
  FT_Enable_Error_Report := true; // Enable Error Reporting
  Timer1.Enabled := False;  // Stop Polling for Device Present
  OpenFileName := OpenDialog1.FileName;
  OpenDialog1.InitialDir := ExtractFilePath(OpenFilename);
  Memo1.Lines.Add('Opening - '+OpenFileName);
  AssignFile(OpenFile,OpenFileName);
  Reset(OpenFile,1);
    Repeat
    Application.ProcessMessages;
    BlockRead(OpenFile,FT_Out_Buffer,FT_Out_Buffer_Size,FC1);
    Total := Total + FC1;
    StatusBar1.Panels[0].Text := '   Bytes Sent = '+IntToStr(Total);
    StatusBar1.Update;
    Application.ProcessMessages;
    If FC1 <> 0 then
      Begin
      I := Write_USB_Device_Buffer( FC1 );
      If I <> FC1 then
        Begin
        Memo1.Lines.Add('USB Device Write TimeOut ...');
//        CloseFile(OpenFile);
//        Timer1.Enabled := True;
//        StatusBar1.Panels[0].Text := '';
//        Exit;
        End;
      End;
    Until ( FC1 <> FT_Out_Buffer_Size ); // Last Block of File ...
  S := IntToStr(Total)+ ' Bytes Sent ...';
  Memo1.Lines.Add(S);
  CloseFile(OpenFile);
  SendTotal := Total;
  SaveFileName := 'SaveFile.tmp';
  AssignFile(SaveFile,SaveFileName);
  ReWrite(SaveFile,1);
  Total := 0;
  StatusBar1.Panels[0].Text := 'Waiting for Data ...';
  Repeat
  Application.ProcessMessages;
  PortStatus := Get_USB_Device_QueueStatus;
  If PortStatus <> FT_OK then     // Device no longer present ...
    Begin
    CloseFile(SaveFile);
    Timer1.Enabled := True;
    StatusBar1.Panels[0].Text := '';
    Exit;
    End;
  Until FT_Q_Bytes > 0;
  Repeat
  Application.ProcessMessages;
  I := Read_USB_Device_Buffer(FT_In_Buffer_Size);
  Total := Total + I;
  StatusBar1.Panels[0].Text := 'Bytes Received = '+IntToStr(Total);
  If I > 0 then BlockWrite(SaveFile,FT_In_Buffer,I,BytesWrote);
  Until I = 0; // Nothing more to read !!!
  CloseFile(SaveFile);
  End;
If SendTotal <> Total then Memo1.Lines.Add('Test Failed - Bytes Sent <> Bytes Received') else
  Begin
  Memo1.Lines.Add('Comparing Data -');
  Passtest := True;
  Reset(OpenFile,1);
  Reset(SaveFile,1);
  Repeat
  BlockRead(OpenFile,FT_Out_Buffer,FT_In_Buffer_Size,FC1);
  BlockRead(SaveFile,FT_In_Buffer,FT_In_Buffer_Size,FC2);
  If FC1 <> FC2 then Memo1.Lines.Add('File Block Comapre Mismatch');
  If FC1 <> 0 then
    Begin
    For I := 0 to ( FC1 - 1 ) do
      If FT_Out_Buffer[I] <> FT_In_Buffer[I] then Passtest := False;
    End;
  Until FC1 <> FT_In_Buffer_Size;
  CloseFile(OpenFile);
  CloseFile(SaveFile);
  If PassTest then  Memo1.Lines.Add('Data Compares O.K. - PASS !') else
                    Memo1.Lines.Add('Data Compare Error - Fail !')
  End;
end;


procedure TForm1.BitBtn2Click(Sender: TObject);
var S:String; DeviceIndex : DWord; I : Integer; LV : TListItem;
begin
ListView1.Items.clear;
GetFTDeviceCount;
S := IntToStr(FT_Device_Count);
Caption := 'D2XX Delphi Demo - '+S+' Device(s) Present ...';
DeviceIndex := 0;
If FT_Device_Count > 0 then
  For I := 1 to FT_Device_Count do
  Begin
  LV := ListView1.Items.Add;
  LV.Caption := 'Device '+IntToStr(I);
  GetFTDeviceSerialNo( DeviceIndex );
  LV.SubItems.Add(FT_Device_String);
  GetFTDeviceDescription ( DeviceIndex );
  LV.SubItems.Add(FT_Device_String);
  DeviceIndex := DeviceIndex + 1;
  End;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.ListView1Click(Sender: TObject);
var LV : TListItem;
begin
If Listview1.SelCount > 0 then
  Begin
  LV := ListView1.Selected;
  BitBtn1.Enabled := True;
  Selected_Device_Serial_Number := LV.SubItems[0];
  Selected_Device_Description := LV.SubItems[1];
  End else
  BitBtn1.Enabled := False;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Caption := Selected_Device_Serial_Number;
If Open_USB_Device_By_Serial_Number(Selected_Device_Serial_Number) = FT_OK then
//Caption := Selected_Device_Description;
//If Open_USB_Device_By_Device_Description(Selected_Device_Description) = FT_OK then
  Begin
  BitBtn1.Enabled := False;
  BitBtn2.Enabled := False;
  BitBtn3.Enabled := true;
  BitBtn4.Enabled := False;
  FTSendFile.enabled := true;
  FTReceiveFile.Enabled := true;
  FTResend.Enabled := true;
  SndRxvCmp.Enabled := true;
  End;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Caption := 'D2XX Delphi Demo';
Close_USB_Device;
BitBtn1.Enabled := False;
BitBtn2.Enabled := True;
BitBtn3.Enabled := False;
BitBtn4.Enabled := True;
FTSendFile.enabled := false;
FTReceiveFile.Enabled := false;
FTResend.Enabled := false;
SndRxvCmp.Enabled := false;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区在线电影| 亚洲自拍与偷拍| 国产91丝袜在线播放九色| 欧美精品一区二| 国产不卡在线播放| 国产精品久久精品日日| 一本色道久久综合狠狠躁的推荐| 亚洲欧美激情插| 欧美日本乱大交xxxxx| 美女网站色91| 中文字幕第一区综合| 91久久人澡人人添人人爽欧美| 亚洲线精品一区二区三区八戒| 91精品在线一区二区| 国内精品伊人久久久久av一坑| 中文字幕av不卡| 色狠狠桃花综合| 免费人成精品欧美精品| 久久久不卡影院| 一本到不卡精品视频在线观看| 午夜视频在线观看一区二区| 精品国产一二三区| 91网站最新网址| 日韩国产欧美一区二区三区| 国产亚洲自拍一区| 欧美日韩一区二区三区四区五区| 美女在线一区二区| 亚洲少妇中出一区| 日韩欧美aaaaaa| 91首页免费视频| 麻豆精品久久精品色综合| 一区视频在线播放| 欧美一级爆毛片| 成人国产精品免费网站| 青青国产91久久久久久| 日韩一区中文字幕| 精品久久久影院| 在线免费一区三区| 国产精品综合在线视频| 亚洲成人黄色影院| 国产精品色眯眯| 日韩亚洲欧美高清| 91福利在线免费观看| 国内外精品视频| 天天操天天干天天综合网| 国产精品欧美久久久久无广告| 91麻豆精品国产91久久久使用方法 | 欧美一二三区在线观看| 97久久精品人人做人人爽50路| 日本 国产 欧美色综合| 亚洲精品ww久久久久久p站| 国产午夜精品久久久久久久| 欧美一区二区三区在线观看 | 亚洲免费观看高清完整| 久久精品人人做人人综合| 欧美一级xxx| 欧美日韩精品欧美日韩精品一| 成人动漫视频在线| 国产老妇另类xxxxx| 日韩国产一二三区| 亚洲丶国产丶欧美一区二区三区| 中文字幕一区不卡| 亚洲国产高清不卡| 国产亚洲短视频| 久久蜜桃一区二区| 26uuu欧美| 日韩丝袜情趣美女图片| 在线综合+亚洲+欧美中文字幕| 91精品1区2区| 色婷婷av一区二区三区gif| 99久久精品免费看国产| 成人一区二区三区在线观看| 国产精品一区一区三区| 国产自产v一区二区三区c| 另类小说图片综合网| 日本不卡1234视频| 久久国产精品露脸对白| 蜜臀av性久久久久av蜜臀妖精| 丝袜美腿亚洲色图| 舔着乳尖日韩一区| 免费不卡在线视频| 国产又黄又大久久| 国产成人精品aa毛片| 成人自拍视频在线观看| 成人夜色视频网站在线观看| proumb性欧美在线观看| 91蜜桃在线观看| 在线观看亚洲成人| 欧美蜜桃一区二区三区| 欧美一区二区三区人| 日韩精品一区二区三区老鸭窝 | 国产精品一区二区视频| 国产高清在线精品| av欧美精品.com| 在线观看91精品国产入口| 在线观看91av| 精品国产乱码久久久久久1区2区 | 成人免费高清视频| 一本一道久久a久久精品综合蜜臀| 欧美在线小视频| 91精品国产品国语在线不卡| 2021国产精品久久精品| 国产精品全国免费观看高清| 亚洲黄色在线视频| 男男视频亚洲欧美| 国产suv精品一区二区6| 色偷偷88欧美精品久久久| 欧美电影在哪看比较好| 国产午夜精品一区二区三区嫩草| 亚洲视频资源在线| 亚洲第一精品在线| 国产一区亚洲一区| 欧洲精品一区二区| 欧美成人精品1314www| 中文字幕在线观看一区| 偷拍一区二区三区| 丰满亚洲少妇av| 欧美日韩日日骚| 欧美一区二区久久| 亚洲国产精品传媒在线观看| 亚洲成人黄色小说| 国产成人一区在线| 欧美嫩在线观看| 国产精品国产三级国产普通话三级 | 国产一区二区h| 欧美性受xxxx黑人xyx| 久久久久久久性| 亚洲一区二区三区免费视频| 国产精品一区在线观看乱码 | 99re成人在线| 日韩欧美久久久| 樱花影视一区二区| 国产精品一区二区久久不卡 | 欧美自拍偷拍午夜视频| 久久综合久久综合亚洲| 性久久久久久久久久久久| 成人精品鲁一区一区二区| 欧美一区二区三区日韩| 一区二区三国产精华液| 成人激情校园春色| 91精品国产色综合久久久蜜香臀| 亚洲特黄一级片| 国产成人在线观看| 精品少妇一区二区三区视频免付费| 亚洲人成网站色在线观看| 国产999精品久久久久久| 日韩一区二区在线观看| 亚洲午夜在线观看视频在线| 成人精品电影在线观看| 精品国产免费一区二区三区四区| 亚洲va中文字幕| 欧洲一区二区三区在线| 最新热久久免费视频| 风间由美一区二区三区在线观看| 精品日韩欧美一区二区| 欧美96一区二区免费视频| 精品视频一区二区不卡| 不卡视频免费播放| 欧美精品一区二区在线观看| 免费观看在线综合色| 欧美男人的天堂一二区| 亚洲成av人影院在线观看网| 在线视频一区二区三| 亚洲靠逼com| jlzzjlzz亚洲日本少妇| 国产精品久久久久毛片软件| 国产成都精品91一区二区三| 欧美精品一区二区不卡| 国产一区91精品张津瑜| 国产亚洲欧洲一区高清在线观看| 国产乱人伦偷精品视频免下载| 2021中文字幕一区亚洲| 国产精品一区久久久久| 欧美国产1区2区| 成人网在线免费视频| 国产精品福利影院| 色哟哟精品一区| 亚洲a一区二区| 欧美一区二区精美| 国产在线精品一区二区不卡了| 久久精品欧美一区二区三区不卡| 国产福利精品一区二区| 最新欧美精品一区二区三区| 色欧美88888久久久久久影院| 夜夜精品浪潮av一区二区三区| 欧美日韩在线观看一区二区 | 91亚洲精品久久久蜜桃| 亚洲一区影音先锋| 欧美一区在线视频| 国产精品综合一区二区| 亚洲欧美日韩国产一区二区三区 | 日精品一区二区三区| 精品国产乱码久久久久久牛牛 | 韩国三级在线一区| 国产精品久久久久aaaa| 欧美体内she精高潮| 极品美女销魂一区二区三区免费 | 91麻豆免费视频| 亚洲成人一区在线| 久久久久久日产精品|