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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? umain.pas

?? 利用ymodem協議通過串口傳輸數據或文件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, SPComm, Menus;
const SOH = $01;
const STX = $02;
const EOT = $04;
const ACK = $06;
const NAK = $15;
const CAN = $18;
const CAC = $43; //'C'

{//幀格式
<SOH>  <blk#> <255 - blk#> <data 128> <crch> <crcl>       //128字節數據幀
<STX>  <blk#> <255 - blk#> <data 1024> <crch> <crcl>     //1024字節數據幀

//應答方式
       Sender                                            Receiver
                                            <-                 <C>
<soh> <00> <255> ........<crch> <crcl>     ->                         //filename and length etc
                                           <-                 <ack>
                                           <-                 <C>
<sxt>  <01> <254>  .......<crch> <crcl>    ->                       //data
                                           <-                 <ack>    //nak for tars again
<sxt> <02>  <253> ........ <crch> <crcl>   ->
                                           <-                 <ack>
............................................................
                                           <-                  <ack>
<eot>                                      ->                            //tarsmition over
                                           <-                  <ack>
                                           <-                  <C>   //next file
<soh> <00> .... <crch> <crcl>              ->
..................................................................}

type
  TFmain = class(TForm)
    OpenDialog1: TOpenDialog;
    Comm1: TComm;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Panel2: TPanel;
    Memo1: TMemo;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    ComboBox1: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    ComboBox4: TComboBox;
    ComboBox5: TComboBox;
    ComboBox6: TComboBox;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Shape1: TShape;
    ProgressBar1: TProgressBar;
    PopupMenu1: TPopupMenu;
    copy1: TMenuItem;
    cut1: TMenuItem;
    N1: TMenuItem;
    exit1: TMenuItem;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure BitBtn1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    procedure copy1Click(Sender: TObject);
    procedure cut1Click(Sender: TObject);
    procedure exit1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    FBlockNumber: integer;
    FUse1KBlocks: Boolean;
    FModeChar: integer;
    { Private declarations }
    MyFile: TMemoryStream;
    LastSize: integer;
    ByteID: byte;
    ReceiveQuestOfSendFlag, ReceiveQuestOfSendNextFlag, ReceiveReSendFlag, ReceiveRightFlag, ReceiveCancelFlag: boolean;
    HasSendHeadFlag, HasSendEndFlag, RecACKAfterSendEnd: boolean;
    FName: string; FSize: integer;
    FComOpenFlag: boolean;
    FSendCnt, FRecAckCnt: integer;
    FQuestNextStr: string;
    FSendTime: integer;
    procedure OpenCom;
  public
    { Public declarations }

    function SendHead(FName: string; Fsize: integer): integer;
    function SendData_1K: integer;
    function SendData_128: integer;
    function SendEnd: integer;

    procedure ReSetFlag;
  end;

var
  Fmain: TFmain;

implementation
uses uFunction;
{$R *.dfm}

{ TForm1 }

procedure TFmain.Timer1Timer(Sender: TObject);
var iTime: integer; s: string;
begin
  if not ReceiveQuestOfSendFlag then exit;
  if (ReceiveQuestOfSendFlag) and (not HasSendHeadFlag) then
  begin
    FSendCnt := 0;
    FSendTime := GetTickCount;
    SendHead(FName, FSize);
    inc(FSendCnt);
    HasSendHeadFlag := true;
    HasSendEndFlag := false;
    ReceiveRightFlag := false;
    ProgressBar1.Position := ProgressBar1.Position + 10;
    exit;
  end;

  if (HasSendHeadFlag) and (LastSize > 128) then //and (ReceiveRightFlag)
  begin
    SendData_1K;
    inc(FSendCnt);
    ReceiveRightFlag := false;
    ProgressBar1.Position := ProgressBar1.Position + 10;
    exit;
  end
  else if (HasSendHeadFlag) and (LastSize > 0) and (LastSize <= 128) then // and (ReceiveRightFlag)
  begin
    SendData_128;
    inc(FSendCnt);
    ReceiveRightFlag := false;
    ProgressBar1.Position := ProgressBar1.Position + 10;
    exit;
  end
  else if (HasSendHeadFlag) and (LastSize <= 0) and (not HasSendEndFlag) then // and (ReceiveRightFlag)
  begin
    SendEnd;
    inc(FSendCnt); //有時此次發送會返回一個確認,有時會有兩個確認,故后面判斷時應為(FRecAckCnt>=FSendCnt)
    HasSendEndFlag := true;
    ReceiveRightFlag := false;
    ProgressBar1.Position := ProgressBar1.Position + 10;
    UFunction.RecordLogToMemo(FName+'發送完畢!', memo1);
    exit;
  end
  else if (HasSendHeadFlag) and (ReceiveRightFlag) and (LastSize <= 0) and (HasSendEndFlag) then
  begin
    if (FRecAckCnt >= FSendCnt) then
    begin
      timer2.Enabled := false;
      iTime := GetTickCount - FSendTime;
      s := '共耗時' + inttostr(iTime div 1000) + '秒';
      timer1.Enabled := false;
      ReSetFlag;
      ProgressBar1.Position := ProgressBar1.Max;
      UFunction.RecordLogToMemo('確認發送完畢!' + s, memo1);
    end
    else if ReceiveQuestOfSendNextFlag then
    begin
      timer2.Enabled := false;
      iTime := GetTickCount - FSendTime;
      s := '共耗時' + inttostr(iTime div 1000) + '秒';
      ProgressBar1.Position := ProgressBar1.Max;
      UFunction.RecordLogToMemo('確認發送完畢!' + s, memo1);
      UFunction.RecordLogToMemo(FQuestNextStr, memo1);
      ReSetFlag;
      timer1.Enabled := false;
    end
    else timer2.Enabled:=true;
  end;
end;

procedure TFmain.Timer2Timer(Sender: TObject);
var iTime: integer; s: string;
begin
  if RecACKAfterSendEnd then
  begin
    iTime := GetTickCount - FSendTime;
    s := '共耗時' + inttostr(iTime div 1000) + '秒';
    UFunction.RecordLogToMemo('延時確認發送完畢!' + s, memo1);
    timer2.Enabled := false;
  end;
end;

procedure TFmain.BitBtn1Click(Sender: TObject);
var Cnt: integer;
begin
  if not FComOpenFlag then
  begin
    UFunction.RecordLogToMemo('串口未打開,不能發送...', memo1);
    exit;
  end;
  FName := trim(edit1.Text);
  if not FileExists(FName) then
  begin
    UFunction.RecordLogToMemo('您所發送的文件不存在...', memo1);
    exit;
  end;
  if MyFile <> nil then MyFile.Free;
  MyFile := TMemoryStream.Create; //創建流
  MyFile.LoadFromFile(FName);
  FSize := MyFile.Size;
  UFunction.RecordLogToMemo('File('+FName+')[Size=' + inttostr(FSize) + 'Byte]等待發送...', Memo1);
  LastSize := FSize;
  Cnt := 0;
  if FSize <= 1024 then cnt := 3 //包括頭和尾的發送
  else if FSize > 1024 then
  begin
    Cnt := FSize div 1024 + 1;
    cnt := cnt + 2; //加上頭和尾的發送
  end;
  ProgressBar1.Min := 0;
  ProgressBar1.Max := Cnt * 10;
  ProgressBar1.Position := ProgressBar1.Min;

  timer1.Enabled := true;
  {SendHead(FName, FSize);

  if LastSize > 128 then
  begin
    while LastSize > 128 do //>128則用1K發送
      SendData_1K;

    if (LastSize > 0) and (LastSize <= 128) then //<128則用128發送]
      SendData_128;
  end
  else if (LastSize > 0) and (LastSize <= 128) then
    SendData_128;

  if LastSize <= 0 then
    SendEnd; }
end;

function TFmain.SendHead(FName: string; Fsize: integer): integer;
var buf: array[0..1023] of byte;
  tmpByte: array[0..1023] of byte;
  tmpBuf: array[0..1023] of char;
  s: string;
  i: integer;
  index: integer;
  ctcBuf: TMyCTC16;
  backHexValue: string;
begin
  ZeroMemory(@buf, sizeof(buf));
  ZeroMemory(@tmpByte, sizeof(tmpByte));
  ZeroMemory(@tmpbuf, sizeof(tmpbuf));   
  //head:01 00 FF +Data{Data(128Byte)=test.txt+00+size(test.txt=1573)+00(一直到第126Byte)+66+57(后2位為CRC16校驗位)
  index := 0;
  s := copy(FName, 4, length(FName)); //D:\test.txt;從第3位開始
  for i := 1 to Length(S) do
  begin
    tmpByte[index] := ord(s[i]);
    inc(index);
  end; //文件名
  tmpByte[index] := $00; inc(index); //分隔符00

  s := IntToStr(Fsize);
  for i := 1 to length(s) do
  begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人午夜精品影院观看视频 | 中文字幕一区二区三中文字幕| 欧美一级午夜免费电影| 国产欧美日韩不卡免费| 一区二区欧美视频| 日本系列欧美系列| 91视频观看视频| 2014亚洲片线观看视频免费| 亚洲国产精品影院| 97se亚洲国产综合自在线不卡| 精品少妇一区二区三区 | 欧美高清一级片在线观看| 日韩有码一区二区三区| 91蜜桃在线观看| 国产目拍亚洲精品99久久精品| 麻豆国产欧美日韩综合精品二区 | 欧美成人精品福利| 一区二区三区四区乱视频| 国产一区二区三区电影在线观看| 欧美日韩精品三区| 亚洲精品菠萝久久久久久久| 国产成人午夜视频| 久久精品一区二区三区av| 蜜桃一区二区三区在线观看| 欧美高清www午色夜在线视频| 亚洲人成在线播放网站岛国| 97精品电影院| 国产精品沙发午睡系列990531| 日本欧美在线看| 4438x亚洲最大成人网| 一区二区三区高清不卡| 91毛片在线观看| 中文字幕va一区二区三区| 成人毛片在线观看| 欧美国产乱子伦| 成人国产精品免费观看动漫| 欧美国产激情一区二区三区蜜月| 国产激情精品久久久第一区二区| 精品国产一区二区三区久久久蜜月| 免费亚洲电影在线| 日韩视频免费观看高清完整版| 亚洲精品国产无套在线观| 国产精品白丝av| 中文字幕av不卡| 99精品国产热久久91蜜凸| 亚洲男人电影天堂| 欧美性受xxxx| 日韩精品亚洲一区二区三区免费| 欧美日韩一区二区三区在线看| 午夜a成v人精品| 日韩精品中文字幕一区二区三区| 黄色资源网久久资源365| 日韩欧美高清dvd碟片| 偷窥国产亚洲免费视频| 日韩一区二区在线观看视频播放| 六月丁香婷婷色狠狠久久| 久久影院午夜片一区| 99久久精品国产导航| 一区二区三区久久久| 91超碰这里只有精品国产| 激情综合亚洲精品| 中文字幕一区二区在线观看| 欧美色大人视频| 国产在线国偷精品产拍免费yy| 久久精品欧美一区二区三区不卡| 91在线观看污| 日韩国产精品久久久| 久久久无码精品亚洲日韩按摩| 国产91清纯白嫩初高中在线观看 | 久久久久国产精品厨房| 91麻豆精品一区二区三区| 轻轻草成人在线| 国产精品久久久久永久免费观看 | 538在线一区二区精品国产| 日韩电影一区二区三区| 成人黄色av电影| 亚洲色图欧洲色图婷婷| 日韩一区二区在线看| 亚洲欧洲成人精品av97| 91亚洲国产成人精品一区二三| 亚洲区小说区图片区qvod| 欧美一区二区三区在线观看 | 经典三级一区二区| 一区二区高清在线| 日本一区二区不卡视频| 日韩一区二区三区高清免费看看| 972aa.com艺术欧美| 精品一区二区三区在线播放视频| 一区二区三区中文字幕电影| 欧美精品一区二区三区视频| 欧美日韩欧美一区二区| 99久久久精品免费观看国产蜜| 精品在线播放免费| 天堂va蜜桃一区二区三区| 中文字幕亚洲一区二区av在线| 日韩欧美中文字幕公布| 日本韩国欧美在线| 国产v日产∨综合v精品视频| 免费视频一区二区| 同产精品九九九| 亚洲资源在线观看| 亚洲女子a中天字幕| 中文字幕视频一区| 国产欧美一区二区三区在线看蜜臀 | 亚洲第一成年网| 亚洲图片另类小说| 国产精品免费网站在线观看| 久久久三级国产网站| 精品捆绑美女sm三区| 91精品国产综合久久福利| aaa亚洲精品| 91网站最新地址| 不卡的av电影| 婷婷久久综合九色综合绿巨人| 亚洲国产精品一区二区www在线| 有坂深雪av一区二区精品| 亚洲精品视频一区| 综合分类小说区另类春色亚洲小说欧美| 国产清纯白嫩初高生在线观看91| 337p日本欧洲亚洲大胆精品 | 欧美在线你懂的| 99精品黄色片免费大全| 99这里都是精品| 波多野结衣一区二区三区| 国产高清在线观看免费不卡| 豆国产96在线|亚洲| 亚洲免费在线看| 亚洲无线码一区二区三区| 午夜精品aaa| 亚洲va欧美va人人爽| 秋霞成人午夜伦在线观看| 人禽交欧美网站| 免费看欧美美女黄的网站| 久久精品国产99久久6| 国产精品一区三区| 国产福利不卡视频| 97se亚洲国产综合自在线观| 91麻豆精东视频| 正在播放亚洲一区| 国产精品综合视频| 99精品偷自拍| 欧美日韩久久一区二区| 91精品国产高清一区二区三区蜜臀| 欧美一区二区视频免费观看| 日韩一卡二卡三卡国产欧美| 亚洲欧美日韩久久精品| 色天使色偷偷av一区二区| 成人免费黄色大片| 成人三级在线视频| 91老司机福利 在线| 国产一区二区在线观看免费 | 久久99精品久久久| 精品一区二区三区在线视频| 三级在线观看一区二区| 蜜臀va亚洲va欧美va天堂| 精品国内二区三区| 亚洲人成精品久久久久| 亚洲国产成人va在线观看天堂| 免费高清在线视频一区·| 久久成人久久爱| 欧美写真视频网站| 日韩欧美成人一区二区| 亚洲精品欧美在线| 免费成人结看片| av成人动漫在线观看| 日韩欧美一级特黄在线播放| 精品88久久久久88久久久| 亚洲综合激情小说| 精品一区二区在线播放| 欧美日韩在线播放一区| 欧美成人福利视频| 亚洲国产一区二区三区青草影视| 午夜视频一区二区三区| 韩国毛片一区二区三区| 91久久线看在观草草青青| 日韩一区二区三区观看| 亚洲日本va午夜在线影院| 另类综合日韩欧美亚洲| 欧美精品在线一区二区| 中文无字幕一区二区三区 | 6080午夜不卡| 亚洲欧美日韩小说| 国产精品一区免费视频| 日韩欧美一级片| 视频一区欧美精品| 91亚洲国产成人精品一区二三| 欧美激情一区二区三区| 美女视频免费一区| 欧美日韩精品久久久| 日韩欧美国产三级| 日产国产欧美视频一区精品| 欧美色手机在线观看| 国产精品超碰97尤物18| 国产福利一区在线| 欧美一区二区在线观看| 免费一级欧美片在线观看| 欧美日韩在线播| 日韩av在线播放中文字幕| 成人性生交大片免费看在线播放 | 亚洲欧美日韩久久|