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

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

?? main.pas

?? W78E516B在系統(tǒng)編程的上位機程序
?? PAS
字號:
unit main;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, SPComm, ComCtrls, StdCtrls, ExtCtrls, Mask,inifiles,

  Menus, Buttons, XPMan,StrUtils;



type

  TFormMain = class(TForm)

    PageControl1: TPageControl;

    TabSheet2: TTabSheet;

    TabSheet4: TTabSheet;

    ButtonExit: TButton;

    RGCom: TRadioGroup;

    Comm: TComm;

    TimerOvertime: TTimer;

    ButtonCMGF: TButton;

    MemoData: TMemo;

    Label3: TLabel;

    EditBaudRate: TEdit;

    Label4: TLabel;

    EditDelay: TEdit;

    Label5: TLabel;

    Button4: TButton;

    Button5: TButton;

    Panel1: TPanel;

    CheckBox1: TCheckBox;

    ButtonAt: TButton;

    EditAt: TEdit;

    Button2: TButton;

    TabSheet1: TTabSheet;

    Label1: TLabel;

    LabelDelayLoop: TLabel;

    ButtonOpen: TButton;

    EditFileName: TEdit;

    ButtonDownload: TButton;

    TrackBar: TTrackBar;

    OpenDialog: TOpenDialog;

    Label2: TLabel;

    LabelSentNum: TLabel;

    CheckBox2: TCheckBox;
    Button1: TButton;

    procedure CommReceiveData(Sender: TObject; Buffer: Pointer;

      BufferLength: Word);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure ButtonExitClick(Sender: TObject);

    procedure FormActivate(Sender: TObject);

    procedure RGComClick(Sender: TObject);

    procedure TimerOvertimeTimer(Sender: TObject);

    procedure ButtonAtClick(Sender: TObject);

    procedure CheckBox1Click(Sender: TObject);

    procedure ButtonCMGFClick(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure EditBaudRateChange(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure ButtonOpenClick(Sender: TObject);

    procedure TrackBarChange(Sender: TObject);

    procedure ButtonDownloadClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

    function hextoint(hexvalue:string):integer;

    function RFWrite(TheComm:TComm;WriteStr:string):Boolean;

    function OpenComm:Boolean;

    function BinaryDivide(SourceStr:string):string;

    function BinaryFuse(SourceStr:string):string;

    function EncodeGb(var s:WideString):String;


  public

    { Public declarations }

  end;



var

  FormMain: TFormMain;

  ReadString:string;

  rbuf,sbuf: array[1..512] of byte;

  DataReady:Boolean=False;

  ComChanged:Boolean=True;

  Timeout:Boolean=False;
 // destfile:file of byte;





implementation



{$R *.dfm}



//////////////////////////////////////////////////////

//                    串口接收事件響應(yīng)過程

// 功能:接收串口輸入數(shù)據(jù)

// 輸入:無

// 輸出:接收到的字符串==>ReadString(全局變量)

//      串口接收成功標(biāo)志==>DataReady(全局變量)->True

//////////////////////////////////////////////////////

procedure TFormMain.CommReceiveData(Sender: TObject; Buffer: Pointer;

  BufferLength: Word);

var

  i:integer;
  numwrite:integer;

  tempstr,ShowStr:string;

begin

//接收數(shù)據(jù)

  tempstr:='';

  Showstr:='';

  move(buffer^,pchar(@rbuf)^,bufferlength);
 // blockwrite(destfile,buffer^,bufferlength,numwrite);

  for i:=1 to BufferLength do

  begin

    ShowStr:=ShowStr+inttohex(rBuf[i],2);

    tempstr:=tempstr+chr(rbuf[i]);

  end;

  ReadString:=tempstr;

  DataReady:=True;

  if Not CheckBox1.Checked then

    MemoData.Lines.Add(BinaryDivide(ReadString))

  else

    MemoData.Lines.Add(Readstring);

end;



procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);

var

  Inifilename:string;

  MyIniFile:TIniFile;

begin

  comm.StopComm;

  //串口設(shè)置寫入配置文件

  IniFileName:=ExtractFileDir(Application.ExeName)+'\comset.ini' ;

  MyIniFile := TIniFile.Create(IniFileName);

  MyIniFile.WriteInteger('COM', 'comport',RGCom.ItemIndex);

  MyIniFile.Writestring('COM','baudrate',EditBaudRate.Text);

  MyIniFile.Writestring('COM','Delay',EditDelay.Text);

  MyIniFile.Free;


end;



////////////////////////////////////////////////

//          十六進制格式字符串轉(zhuǎn)換為整數(shù)

//  輸入: 壓縮BCD碼格式的兩位十六進制數(shù)字符串

//  輸出: 轉(zhuǎn)換后對應(yīng)的整數(shù)數(shù)值;若無法轉(zhuǎn)換則返回 "-1"

//  說明: 暫時只能處理兩位字符串

////////////////////////////////////////////////

function TFormMain.hextoint(hexvalue: string): integer;

var

  i,tempint,sum:integer;

  thechar:char;

begin

  sum:=0;

  for i:=1 to 2 do

  begin

    thechar:=hexvalue[i];

    case thechar of

      '0'..'9':tempint:=strtoint(thechar);

      'a','A':tempint:=10;

      'b','B':tempint:=11;

      'c','C':tempint:=12;

      'd','D':tempint:=13;

      'e','E':tempint:=14;

      'f','F':tempint:=15;

      else

        //MemoData.Lines.Add('錯誤的16進制字符類型');

        result:=-1;

        exit;

    end;

    sum:=sum*16+tempint;

  end;

  result:=sum;

end;
   ////////////////////////////////
function  TFormMain.EncodeGb(var s:WideString):String;
var
    i,len:integer;
    cur:integer;
    t:String;
begin
      Result:='';
      len:=Length(s);
      i:=1;
      while i<=len do
      begin
             cur:=ord(s[i]);
             FmtStr(t,'%4.4X',[cur]);
             Result:=Result+t;
             inc(i);
      end;

end;
 ///////////////////////
procedure TFormMain.ButtonExitClick(Sender: TObject);

begin

  close;

end;



procedure TFormMain.FormActivate(Sender: TObject);

var

  Inifilename:string;

  MyIniFile:TIniFile;

  comport:integer;


begin

  comport:=0;

  //若存在串口配置文件,則從文件中讀出串口設(shè)置值

  IniFileName:=ExtractFileDir(Application.ExeName)+'\comset.ini' ;

  if FileExists(IniFileName) then

  begin

    MyIniFile := TIniFile.Create(IniFileName);

    comport:=MyIniFile.ReadInteger('COM', 'comport',0);

    EditBaudRate.Text :=MyIniFile.ReadString('COM', 'baudrate','11520');

    EditDelay.Text :=Myinifile.ReadString('COM','Delay','100');

    MyIniFile.Free;

  end;

  RGCom.ItemIndex :=comport;
 



  if OpenComm=False then exit;

end;



procedure TFormMain.RGComClick(Sender: TObject);

begin

  ComChanged:=True;

  if OpenComm=False then exit;

end;



function TFormMain.OpenComm: Boolean;

begin

  if ComChanged then

  begin

    Result:=False;

    //關(guān)閉串口,設(shè)置串口

    comm.StopComm;

    if RGCom.ItemIndex=0 then

      comm.CommName:='COM1'

    else

    if RGCom.ItemIndex=1 then

      Comm.CommName :='COM2'

    else

    if RGCom.ItemIndex=2 then

      comm.CommName:='COM3'

    else

    if RGCom.ItemIndex=3 then

      Comm.CommName :='COM4'

    else

    begin

      MessageDlg('沒有選擇有效串口',mtError,[mbok],0);

      exit;

    end;

    Comm.BaudRate:=strtoint(trim(EditBaudrate.Text ));

    //打開串口

    try

      comm.StartComm;

      Result:=True;

      FormMain.Caption :='BTS本地調(diào)試助手  '+Comm.CommName;

    except

      on E:Exception do

      begin

        MessageDlg('打開串口出錯'+#13+e.Message,mtError,[mbok],0);

        exit;

      end;

    end;

    sleep(100);      //等待串口打開

    ComChanged:=False;

  end

  else

    Result:=True;

end;



////////////////////////////////////////////////////////////

//              串口發(fā)送函數(shù)

// 功能: 將一個字符串發(fā)送到指定的串口

// 輸入: 已經(jīng)打開的串口  TheComm(全局變量)

//       需要發(fā)送的字符串

// 輸出: 發(fā)送是否成功的布爾值

// 思路: 將數(shù)據(jù)寫入串口,并且開啟超時定時器。若超時事件發(fā)生前全局變量DataReady仍

//       然為False,表示沒有接收到返回數(shù)據(jù),則超時退出

// 說明:在該函數(shù)中,用到了全局變量 ReadString、DataReady、TimeOut和定時器控件TimerOvertime。

//       接收到的數(shù)據(jù)保存在ReadString中

///////////////////////////////////////////////////////////

function TFormMain.RFWrite(TheComm:TComm;WriteStr:string): Boolean;

var

  cmd:string;

begin

  Result:=False;

  cmd:=WriteStr;

  ReadString:='';

  //發(fā)送

  if comm.WriteCommData(pchar(cmd),length(cmd))<>True then

  begin

    MessageDlg('數(shù)據(jù)發(fā)送出錯',mtError,[mbok],0);

    exit;

  end;

  Result:=True;

end;



procedure TFormMain.TimerOvertimeTimer(Sender: TObject);

begin

  Timeout:=True;

  TimerOvertime.Enabled :=False;

end;



/////////////////////////////////////////////////////////////

//               二進制拆分函數(shù)

// 功能:將輸入的字符串進行如下處理,逐個字符轉(zhuǎn)換成ASCII碼

//       8比特的十六進制數(shù)被劃分成為高4bits和低4bits,對于高4bits和低4bits,

//       若其數(shù)字為0x00~0x09,則加上0x30,若其數(shù)字為0x0A~0x0F,則加上0x37

// 輸入:可能包含非ASCII碼字符的源字符串

// 輸出:拆分后的ASCII碼字符串,長度為源字符串的兩倍

// 思路:循環(huán)用inttohex函數(shù)實現(xiàn)

/////////////////////////////////////////////////////////////

function TFormMain.BinaryDivide(SourceStr: string): string;

var

  i,Strlen,CharValue:integer;

  DestStr:string;

begin

  Strlen:=length(SourceStr);

  for i:=1 to Strlen do

  begin

    CharValue:=ord(SourceStr[i]);

    DestStr:=DestStr+inttohex(CharValue,2);

  end;

  Result:=DestStr;

end;



///////////////////////////////////////////////////

//              二進制融合函數(shù)

//  功能: 將輸入的壓縮BCD碼格式的ASCII字符串,按照每兩位結(jié)合成所代表整數(shù)的原則

//        轉(zhuǎn)變成一半長度的字符串

//  輸入: 壓縮BCD碼格式的ASCII字符串

//  輸出: 融合后的字符串,可以包含各種字符

//        若融合成功,則長度是輸入字符串的一半;若融合失敗,則原字串返回

//  說明: 若輸入字符串長度為奇數(shù),則最后一位字符忽略

///////////////////////////////////////////////////

function TFormMain.BinaryFuse(SourceStr: string): string;

var

  i,charvalue:integer;

  unitnumber,DestStr:string;

begin

  for i:=1 to (length(Sourcestr) div 2) do

  begin

    unitnumber:=copy(SourceStr,i*2-1,2);

    charvalue:=hextoint(unitnumber);

    if charvalue<0 then

    begin

      //MemoData.Lines.Add('格式有誤,無法進行二進制融合!');

      DestStr:=sourcestr;

      break;

    end

    else

      DestStr:=DestStr+chr(charvalue);

  end;

  Result:=DestStr;

end;



procedure TFormMain.ButtonAtClick(Sender: TObject);

var

  Cmd:string;

  i:integer;

  tempstr:string;

begin

  MemoData.Clear;

  Editat.Text :=trim(Editat.Text);

  if EditAt.Text ='' then

  begin

    showmessage('命令為空');

    exit;

  end;
  
  if length(EditAt.Text) >50 then

  begin

    showmessage('Command Too long !');

    exit;

  end;


  if OpenComm=False then exit;

  if CheckBox2.Checked then

  Cmd:=BinaryFuse(EditAt.Text)+#13

  else

  Cmd:=EditAt.Text+#13;

  EditAt.SelectAll;

  if PageControl1.ActivePage =TabSheet2 then

  EditAt.SetFocus;

  for i:=1 to length(cmd) do

  begin

    tempstr:=cmd[i];

    if Not RFWrite(comm,tempstr) then

    begin

      MessageDlg('At命令發(fā)送出錯',mtError,[mbok],0);

      exit;

    end;

    sleep(strtoint(EditDelay.Text));

  end;

  CheckBox1.Checked:=True;

  if AnsiContainsStr( cmd,'get') then

   CheckBox1.Checked:=False;



end;



procedure TFormMain.CheckBox1Click(Sender: TObject);

begin

  if Not CheckBox1.Checked then

    MemoData.Text :=BinaryDivide(MemoData.Text)

  else

    MemoData.Text :=BinaryFuse(MemoData.Text);

end;



procedure TFormMain.ButtonCMGFClick(Sender: TObject);

begin

  EditAt.Text :='at+cmgf=1';

  ButtonAt.OnClick (self);

end;



procedure TFormMain.Button2Click(Sender: TObject);

begin

  MemoData.SelectAll;

  MemoData.CutToClipboard;

end;



procedure TFormMain.EditBaudRateChange(Sender: TObject);

begin

  ComChanged:=True;

end;



procedure TFormMain.Button4Click(Sender: TObject);

begin

  EditAt.Text :='atz';

  ButtonAt.OnClick (self);

end;



procedure TFormMain.Button5Click(Sender: TObject);

begin

  EditAt.Text :='atz;e';

  ButtonAt.OnClick (self);

end;



procedure TFormMain.ButtonOpenClick(Sender: TObject);

begin

  if OpenDialog.Execute then

  EditFileName.Text :=OpenDialog.FileName;

end;



procedure TFormMain.TrackBarChange(Sender: TObject);

begin

  LabelDelayLoop.Caption :=inttostr(TrackBar.Position );

end;



procedure TFormMain.ButtonDownloadClick(Sender: TObject);

var

  sourcefile:file of byte;

  buff:array[1..1024] of char;

  i,j,DelayLoop,numread:integer;

  size,sentnum:Longint;

  cmd:string;

  oldbaudrate:string;

begin

  if NOT FileExists(EditFileName.Text) then

  begin

    MessageDlg('錯誤的下載文件',mtError,[mbok],0);

    exit;

  end;

  DelayLoop:=TrackBar.Position;

  oldbaudrate:=EditBaudrate.Text;

  EditBaudrate.Text:='115200';

  ComChanged:=True;

  if OpenComm=False then exit;

  try

    assignfile(sourcefile,EditFileName.Text);

    reset(sourcefile);

    size:=FileSize(sourcefile);

    cmd:=chr(size mod 256);

    if comm.WriteCommData(pchar(cmd),length(cmd))<>True then

    begin

      MessageDlg('文件長度發(fā)送出錯',mtError,[mbok],0);

      exit;

    end;

    for j:=0 to DelayLoop do Application.ProcessMessages ;

    cmd:=chr(size div 256);

    if comm.WriteCommData(pchar(cmd),length(cmd))<>True then

    begin

      MessageDlg('文件長度發(fā)送出錯',mtError,[mbok],0);

      exit;

    end;

    sleep(20);

    sentnum:=0;

    while not eof(sourcefile) do

    begin

      blockread(sourcefile,buff,sizeof(buff),numread);

      for i:=1 to numread do

      begin

        cmd:=buff[i];

        if comm.WriteCommData(pchar(cmd),length(cmd))<>True then

        begin

          MessageDlg('數(shù)據(jù)發(fā)送出錯',mtError,[mbok],0);

          exit;

        end;

        sentnum:=sentnum+1;

        LabelSentNum.Caption :=inttostr(sentnum);

        for j:=0 to DelayLoop do Application.ProcessMessages ;

      end;

    end;

    showmessage('下載完成');

  finally

    closefile(sourcefile);

    EditBaudrate.Text:=oldbaudrate;

    ComChanged:=True;

  end;

end;



procedure TFormMain.Button1Click(Sender: TObject);
var
    Widesms:WideString;
    temp:string;
begin
    Widesms:=WideString(EditAt.Text);
    temp:=EncodeGb(Widesms);
    MemoData.Lines.Add(temp);
    EditAt.Text:=inttostr(length(temp));

end;

end.


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
xf在线a精品一区二区视频网站| 99这里只有精品| 日韩欧美一级精品久久| 免费观看久久久4p| 欧美一区日韩一区| 久久99国产精品成人| 久久嫩草精品久久久精品| 国产91清纯白嫩初高中在线观看 | 日韩一区二区高清| 久久精品99久久久| 久久精品欧美一区二区三区不卡| 成人app在线观看| 亚洲一区免费观看| 日韩精品专区在线影院观看| 国产99久久久国产精品潘金网站| 国产精品久久网站| 欧美性感一类影片在线播放| 日韩电影免费在线看| 久久婷婷国产综合精品青草| 91丨porny丨国产| 午夜电影一区二区| 国产欧美精品区一区二区三区| 99久久久免费精品国产一区二区| 亚洲国产成人av好男人在线观看| xvideos.蜜桃一区二区| 成人午夜视频福利| 无码av免费一区二区三区试看| 久久久久久毛片| 日本道精品一区二区三区| 国内成人自拍视频| 一区二区三区不卡视频| 久久嫩草精品久久久久| 欧美性欧美巨大黑白大战| 国产一区二区视频在线| 一级特黄大欧美久久久| 久久精子c满五个校花| 欧美猛男男办公室激情| 成人免费精品视频| 免费亚洲电影在线| 亚洲色图第一区| 久久久久综合网| 欧美精选午夜久久久乱码6080| 大胆亚洲人体视频| 久久精品国产亚洲aⅴ| 洋洋av久久久久久久一区| 国产婷婷色一区二区三区四区 | 欧美视频一区二区| 国产91丝袜在线播放0| 久久国产精品99久久人人澡| 一区二区三区在线视频免费| 欧美激情一区在线| 精品免费视频一区二区| 欧美色爱综合网| 成人国产视频在线观看| 激情综合色综合久久综合| 午夜在线成人av| 亚洲综合激情另类小说区| 综合精品久久久| 亚洲国产精品成人久久综合一区| 欧美成人艳星乳罩| 日韩一区二区在线免费观看| 欧美日韩专区在线| 色激情天天射综合网| 99re这里只有精品6| 成人开心网精品视频| 国产ts人妖一区二区| 国产精品一区久久久久| 国产一区二区三区电影在线观看| 毛片av一区二区三区| 日韩制服丝袜av| 亚洲123区在线观看| 亚洲午夜免费视频| 亚洲影院在线观看| 亚洲国产精品人人做人人爽| 亚洲成人av一区二区| 视频一区二区欧美| 日本三级亚洲精品| 美日韩黄色大片| 国产一区二区影院| 国产不卡视频一区| 99精品热视频| 欧美综合亚洲图片综合区| 91激情在线视频| 欧美日韩国产综合草草| 91精品国产麻豆国产自产在线| 欧美一区二区三区播放老司机| 日韩一级完整毛片| 久久九九久精品国产免费直播| 久久久久久久久久久久久女国产乱| 久久精品亚洲国产奇米99| 中文字幕欧美激情一区| 一区二区三区在线影院| 日韩专区在线视频| 久久精品二区亚洲w码| 高清日韩电视剧大全免费| 成人免费观看视频| 色综合激情久久| 欧美一区日韩一区| 日本一区二区三区国色天香 | 国产精品天美传媒沈樵| 亚洲欧洲日韩女同| 婷婷一区二区三区| 精品一区二区免费| 99久久婷婷国产综合精品| 欧美性色欧美a在线播放| 欧美电影免费观看高清完整版在| 国产亚洲欧美在线| 亚洲午夜影视影院在线观看| 久久国产成人午夜av影院| 国产91在线观看| 欧美日韩在线不卡| 国产女主播一区| 亚洲va欧美va天堂v国产综合| 国产一区二区三区四| 在线观看免费视频综合| 精品国产一区二区三区四区四 | 亚洲激情校园春色| 麻豆高清免费国产一区| 白白色亚洲国产精品| 91麻豆精品国产91久久久久久| 久久精品一区八戒影视| 亚洲高清在线精品| 国产成人精品亚洲777人妖| 欧美私模裸体表演在线观看| 国产视频一区二区在线观看| 亚洲成人免费影院| 国产91丝袜在线播放| 欧美一卡2卡三卡4卡5免费| 一区二区中文视频| 韩国女主播一区| 欧美另类变人与禽xxxxx| 国产精品久久久久9999吃药| 日本系列欧美系列| 在线看不卡av| 中文字幕在线免费不卡| 国内精品免费**视频| 欧美一区二区三区人| 亚洲影视在线播放| 成人av在线资源| 欧美精品一区二区精品网| 亚洲午夜在线观看视频在线| eeuss鲁片一区二区三区在线观看| 精品少妇一区二区三区日产乱码| 亚洲图片欧美综合| 99re66热这里只有精品3直播 | 精品久久久久久综合日本欧美| 一个色妞综合视频在线观看| 成人毛片老司机大片| 久久夜色精品国产噜噜av| 蜜桃精品视频在线| 日韩限制级电影在线观看| 亚洲一区二区三区四区在线观看 | 亚洲伦理在线免费看| 成人综合在线视频| 国产清纯美女被跳蛋高潮一区二区久久w| 日韩不卡免费视频| 91麻豆精品国产91久久久久| 亚洲高清一区二区三区| 欧美日韩国产首页| 亚洲影视在线播放| 欧美日韩视频在线观看一区二区三区| 亚洲国产成人午夜在线一区| 懂色av噜噜一区二区三区av| 国产日韩欧美不卡在线| 国产一区二区免费在线| 久久综合九色综合欧美98| 国产中文字幕精品| 欧美成人猛片aaaaaaa| 久久99精品一区二区三区| 欧美精品一区二区不卡| 国产精品一区二区三区四区| wwwwww.欧美系列| 国产成人精品www牛牛影视| 日本一区二区电影| av一区二区三区| 亚洲综合区在线| 欧美一区二区三区喷汁尤物| 久久97超碰国产精品超碰| 久久精品欧美一区二区三区不卡 | 亚洲va天堂va国产va久| 欧美日韩亚洲综合一区二区三区| 婷婷综合久久一区二区三区| 日韩欧美二区三区| 国产精品中文字幕欧美| 国产精品久久久久久久久久久免费看| jizz一区二区| 亚洲图片自拍偷拍| 精品福利一区二区三区免费视频| 国产suv精品一区二区三区| 国产精品久久久久久户外露出| 在线欧美日韩精品| 日韩精品电影在线| 久久久99免费| 色偷偷一区二区三区| 日本不卡不码高清免费观看| 久久九九全国免费| 欧美在线你懂得| 久久99久久99精品免视看婷婷| 国产精品久久久久久久久快鸭| 欧美日韩中文字幕一区|