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

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

?? main.~pas

?? W78E516B在系統編程的上位機程序
?? ~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}



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

//                    串口接收事件響應過程

// 功能:接收串口輸入數據

// 輸入:無

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

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

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

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

  BufferLength: Word);

var

  i:integer;
  numwrite:integer;

  tempstr,ShowStr:string;

begin

//接收數據

  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;

  //串口設置寫入配置文件

  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;



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

//          十六進制格式字符串轉換為整數

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

//  輸出: 轉換后對應的整數數值;若無法轉換則返回 "-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;

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

  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;

    //關閉串口,設置串口

    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本地調試助手  '+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;



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

//              串口發送函數

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

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

//       需要發送的字符串

// 輸出: 發送是否成功的布爾值

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

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

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

//       接收到的數據保存在ReadString中

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

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

var

  cmd:string;

begin

  Result:=False;

  cmd:=WriteStr;

  ReadString:='';

  //發送

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

  begin

    MessageDlg('數據發送出錯',mtError,[mbok],0);

    exit;

  end;

  Result:=True;

end;



procedure TFormMain.TimerOvertimeTimer(Sender: TObject);

begin

  Timeout:=True;

  TimerOvertime.Enabled :=False;

end;



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

//               二進制拆分函數

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

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

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

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

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

// 思路:循環用inttohex函數實現

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

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;



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

//              二進制融合函數

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

//        轉變成一半長度的字符串

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

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

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

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

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

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命令發送出錯',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('文件長度發送出錯',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('文件長度發送出錯',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('數據發送出錯',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);

end;

end.


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91激情五月电影| 欧美一区二区黄色| 麻豆精品一区二区| 中文字幕亚洲区| 日韩午夜电影在线观看| 99v久久综合狠狠综合久久| 久久精品国产精品亚洲精品| 一区二区三区蜜桃网| 国产精品天美传媒| 精品国产免费人成在线观看| 欧美怡红院视频| thepron国产精品| 国模少妇一区二区三区| 丝袜亚洲精品中文字幕一区| 亚洲精品久久7777| 亚洲欧美在线aaa| 国产精品无遮挡| 久久亚洲一级片| 欧美r级电影在线观看| 91麻豆精品国产无毒不卡在线观看| 99久久99久久久精品齐齐| 国产成人三级在线观看| 韩国精品主播一区二区在线观看| 丝瓜av网站精品一区二区| 亚洲影院久久精品| 亚洲免费观看在线视频| 中文字幕一区二区三区四区不卡 | 欧洲亚洲国产日韩| 成人免费视频播放| 国产盗摄精品一区二区三区在线| 精品一区二区三区在线观看国产| 麻豆精品一区二区av白丝在线 | 国产成人免费xxxxxxxx| 国产精品自拍一区| 国产麻豆91精品| 国产成人综合视频| 成人综合婷婷国产精品久久免费| 国产一区二区成人久久免费影院| 久久成人羞羞网站| 精品综合久久久久久8888| 久久精品国产亚洲aⅴ| 久久99精品国产.久久久久久| 秋霞电影网一区二区| 久久99久国产精品黄毛片色诱| 日本va欧美va欧美va精品| 青青草91视频| 国模娜娜一区二区三区| 风间由美一区二区av101| 成人小视频免费观看| 色综合激情久久| 欧美剧情电影在线观看完整版免费励志电影| 欧美视频在线一区| 欧美一区午夜视频在线观看| 日韩欧美国产三级电影视频| 久久久精品国产免大香伊| 国产日韩综合av| 亚洲婷婷综合色高清在线| 亚洲综合一区二区| 麻豆精品一区二区| 国产黄色91视频| 在线看国产一区| 欧美一区在线视频| 国产欧美日本一区二区三区| 亚洲日本在线a| 亚洲成人免费视频| 狠狠色丁香婷婷综合| av一区二区三区在线| 欧美老年两性高潮| 国产网站一区二区三区| 亚洲精品乱码久久久久久| 免费久久精品视频| 成人久久18免费网站麻豆| 欧美三级在线播放| 久久久久久久久久久黄色| 亚洲人精品午夜| 蜜桃精品视频在线观看| 成人综合激情网| 欧美日韩国产另类不卡| 久久久久久久久99精品| 亚洲综合色丁香婷婷六月图片| 精品一区二区三区在线播放视频| av一二三不卡影片| 欧美电视剧免费全集观看| 中文字幕一区二区在线观看| 免费高清成人在线| 色综合久久99| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲欧美国产77777| 韩国成人精品a∨在线观看| 在线欧美日韩精品| 久久精品夜夜夜夜久久| 午夜电影一区二区| fc2成人免费人成在线观看播放| 欧美日韩国产在线播放网站| 国产精品福利一区二区| 麻豆精品新av中文字幕| 在线观看91视频| 国产精品女主播av| 国产一区二区福利| 日韩一区二区三区在线视频| 亚洲精品成人a在线观看| 成人中文字幕在线| 欧美变态tickling挠脚心| 亚洲h精品动漫在线观看| av高清不卡在线| 久久九九久久九九| 精品一区二区久久久| 欧美男同性恋视频网站| 亚洲欧美国产高清| 不卡的av在线| 亚洲国产精品精华液2区45| 麻豆久久一区二区| 3atv一区二区三区| 亚洲国产乱码最新视频| 色屁屁一区二区| 国产精品色婷婷| 国产高清在线观看免费不卡| 精品国产伦一区二区三区观看方式| 亚洲电影激情视频网站| 欧美丝袜第三区| 亚洲黄色av一区| 在线中文字幕一区二区| 亚洲九九爱视频| 91麻豆免费视频| 亚洲日穴在线视频| 91久久奴性调教| 亚洲影视资源网| 欧美视频在线一区| 午夜精品福利视频网站| 欧美日韩亚洲丝袜制服| 图片区小说区国产精品视频| 欧美色手机在线观看| 亚洲一二三四区不卡| 欧美在线啊v一区| 亚洲国产裸拍裸体视频在线观看乱了| 91精品福利视频| 亚洲国产精品嫩草影院| 8x8x8国产精品| 蜜桃av噜噜一区| 337p日本欧洲亚洲大胆精品| 精东粉嫩av免费一区二区三区| 精品88久久久久88久久久| 国产综合色在线视频区| 中文字幕va一区二区三区| 不卡一区二区在线| 一区二区三区在线观看网站| 欧美三级视频在线观看| 免费在线看一区| 26uuu色噜噜精品一区二区| 国产老女人精品毛片久久| 国产精品久久久久久久岛一牛影视| 99精品国产99久久久久久白柏| 亚洲天堂免费在线观看视频| 欧美性视频一区二区三区| 日韩电影在线免费看| 精品电影一区二区三区| 成人午夜视频在线观看| 亚洲男人的天堂在线aⅴ视频| 欧美午夜不卡视频| 男人的j进女人的j一区| 国产日本欧美一区二区| 欧洲精品一区二区三区在线观看| 日韩精品91亚洲二区在线观看| 久久亚洲一级片| 色婷婷久久久综合中文字幕| 日日夜夜免费精品视频| 久久久久久久电影| 91成人在线观看喷潮| 久久99久久99精品免视看婷婷| 亚洲色图清纯唯美| 日韩一级免费一区| 成人激情午夜影院| 视频一区在线视频| 国产精品久久久久影视| 欧美丰满少妇xxxxx高潮对白| 国产精品一卡二卡| 亚洲制服丝袜av| 国产亚洲污的网站| 欧美色偷偷大香| 国产mv日韩mv欧美| 三级欧美韩日大片在线看| 国产精品你懂的在线欣赏| 欧美男男青年gay1069videost| 国产精品资源在线看| 亚洲午夜久久久久久久久电影网 | 欧美日本视频在线| 国产露脸91国语对白| 亚洲国产成人va在线观看天堂| 2024国产精品| 欧美日韩国产三级| 91影视在线播放| 国产在线不卡视频| 日韩精品欧美精品| 亚洲靠逼com| 欧美国产日本韩| 欧美变态tickling挠脚心| 欧美三级在线播放| 一本一道波多野结衣一区二区| 国产麻豆欧美日韩一区| 免费成人在线网站|