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

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

?? commmain.~pas

?? 這是我學習串口編程時從盒子上下的,相信對學習串口通訊的同行有幫助. 程序中用到了TApdComPort, 大家可以從盒子上下
?? ~PAS
字號:
//*********************************************************
//                 Kaersoft    卡爾軟件
//         *************************************
//          http://www.kaer.cn/default.aspx
//          Email:Sdwhxyr@YEAH.NET
//          QQ:54076683
//          Delphi 7.0   PASS
//**********************************************************
unit commmain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OoMisc, AdPort, StdCtrls, ExtCtrls, ComCtrls, AdStatLt,IniFiles;

type
  TMainForm = class(TForm)
    Memo_Show: TMemo;
    ComPort1: TApdComPort;
    Panel1: TPanel;
    SendMemo: TMemo;
    Panel2: TPanel;
    Panel3: TPanel;
    Btn_Send: TButton;
    Btn_ClearView: TButton;
    StatusBar: TStatusBar;
    Btn_SaveView: TButton;
    Panel4: TPanel;
    CB_StopBits: TComboBox;
    Label3: TLabel;
    Label5: TLabel;
    CB_DataBits: TComboBox;
    CB_Parity: TComboBox;
    Label4: TLabel;
    Label2: TLabel;
    CB_Baud: TComboBox;
    CB_ComNum: TComboBox;
    Label1: TLabel;
    Btn_Reset: TButton;
    SaveDialog1: TSaveDialog;
    CB_hexSend: TCheckBox;
    Btn_ClearMome: TButton;
    CB_AutoSend: TCheckBox;
    Edt_Interval: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Btn_OpenFile: TButton;
    OpenDialog1: TOpenDialog;
    Timer_AutoSend: TTimer;
    CB_Clear: TCheckBox;
    CB_Show: TCheckBox;
    CB_HexGet: TCheckBox;
    Btn_About: TButton;
    CB_StopShow: TCheckBox;
    Btn_CountReset: TButton;
    Timer_WatchState: TTimer;
    Shape_ComState: TShape;
    procedure ComPort1Trigger(CP: TObject; Msg, TriggerHandle,
      Data: Word);
    procedure diff(s:string);
    procedure Btn_ResetClick(Sender: TObject);
    procedure SendHex(S: String);
    procedure Btn_SendClick(Sender: TObject);
    procedure Btn_ClearViewClick(Sender: TObject);
    procedure CB_ComNumSelect(Sender: TObject);
    procedure Btn_SaveViewClick(Sender: TObject);
    procedure Btn_OpenFileClick(Sender: TObject);
    procedure Btn_ClearMomeClick(Sender: TObject);
    procedure CB_AutoSendClick(Sender: TObject);
    procedure Edt_IntervalKeyPress(Sender: TObject; var Key: Char);
    procedure Timer_AutoSendTimer(Sender: TObject);
    procedure Memo_ShowChange(Sender: TObject);
    procedure leijia(s:string);
    procedure zhuhang(s:string);
    procedure Btn_AboutClick(Sender: TObject);
    procedure ComPortInit;
    procedure InitDate;
    procedure FormShow(Sender: TObject);
    procedure Btn_CountResetClick(Sender: TObject);
    procedure Timer_WatchStateTimer(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    procedure myMemoAddText(strAdd : string);
  public
    { Public declarations }
  end;

const
  version='版本號:V1.12';
  SoftName='串口通訊控制器';
  {
   1.10:增加窗口定位記憶功能;保存相應設置 ;
   1.12:消除累加顯示時的閃爍感
  }

var
  MainForm  : TMainForm;
  JSdate,FSdate : integer;
implementation

uses about;

{$R *.dfm}

procedure TMainForm.myMemoAddText(strAdd : string);
var
  str : string;
begin
  str := Memo_Show.Lines[Memo_Show.Lines.Count-1];
  Memo_Show.Lines[Memo_Show.Lines.Count-1] := str + strAdd
end;

//累加顯示
procedure TMainForm.leijia(s:string);
begin
  myMemoAddText(s);
end;

//逐行顯示
procedure TMainForm.zhuhang(s:string);
begin
  Memo_Show.Lines.Add(s);
end;

procedure TMainForm.diff(s:string);
begin
  if not CB_StopShow.Checked then
    if CB_Show.Checked then
      zhuhang(s)
    else
      Leijia(s);
end;

//接收數據
procedure TMainForm.ComPort1Trigger(CP: TObject; Msg, TriggerHandle,
  Data: Word);
var
  I : Word;
  C : Char;
  s : String;
begin
  try
  case Msg of
    APW_TRIGGERDATA :
      {got 'login', send response}
      ;
    APW_TRIGGERAVAIL :
      {extract and display/process the data}
      begin
        s:='';
        for I:= 1 to Data do
        begin
          C := ComPort1.GetChar;
          if CB_hexGet.Checked then
          begin
            s:=s+inttohex(byte(c),2)+' ';
          end else
            s:=s+c;
          inc(JSdate);
        end;
        StatusBar.Panels.Items[2].Text:='接收:'+inttostr(JSdate);
        Diff(s);
      end;
    APW_TRIGGERTIMER :
      {timed out waiting for login prompt, handle error}
      ;
  end;
  except

  end;
end;

//發送16進制數據
procedure TMainForm.SendHex(S: String);
var
  s2:string;
  buf1:array[0..50000] of byte;
  i:integer;
begin
  s2:='';
    for i:=1 to  length(s) do
    begin
      if ((copy(s,i,1)>='0') and (copy(s,i,1)<='9'))or((copy(s,i,1)>='a') and (copy(s,i,1)<='f'))
        or((copy(s,i,1)>='A') and (copy(s,i,1)<='F')) then
      begin
        s2:=s2+copy(s,i,1);
      end;
    end;
    for i:=0 to (length(s2) div 2-1) do
    begin
      buf1[i]:=strtoint('$'+copy(s2,i*2+1,2));
    end;
    MainForm.ComPort1.PutBlock(buf1,(length(s2) div 2));
end;

//等待串口發送完畢
procedure waitcommEmpty;
var
  t:integer;
begin
  t:=0;
  while (MainForm.ComPort1.OutBuffUsed>0) or (t>100) do
  begin
    sleep(200);
    inc(t);
  end;
    sleep(200);
end;

// 設置串口
procedure TMainForm.ComPortInit;
begin
  try
    ComPort1.Open:=false;
    Shape_ComState.Brush.Color:=clRed;
    sleep(50);
    ComPort1.ComNumber:=CB_ComNum.ItemIndex+1;
    ComPort1.Baud:=strtoint(CB_Baud.Text);
    case CB_Parity.ItemIndex of
    0:
      ComPort1.Parity:=pEven;
    1:
      ComPort1.Parity:=pMark;
    2:
      ComPort1.Parity:=pNone;
    3:
      ComPort1.Parity:=pOdd;
    4:
      ComPort1.Parity:=pSpace;
    else
      ComPort1.Parity:=pNone;
    end;
    ComPort1.DataBits:=strtoint(CB_DataBits.Text);
    ComPort1.StopBits:=strtoint(CB_StopBits.Text);
    ComPort1.Open:=true;
  except
    showmessage('串口不存在或被占用。');
  end;
end;

//設置計數器
procedure TMainForm.InitDate;
begin
  JSdate:=0;
  FSdate:=0;
  StatusBar.Panels.Items[1].Text:='發送:0';
  StatusBar.Panels.Items[2].Text:='接收:0';
end;

procedure TMainForm.Btn_ResetClick(Sender: TObject);
begin
  ComPortInit;
end;

procedure TMainForm.Btn_SendClick(Sender: TObject);
var
  s:string;
begin
  s:=SendMemo.Text;
  if  ComPort1.Open then
  begin
    if CB_hexSend.Checked then
      SendHex(S)
    else
      ComPort1.PutString(s);
    FSdate:=FSdate+length(s);
    StatusBar.Panels.Items[1].Text:='發送:'+inttostr(FSdate);
    waitcommEmpty;
  end else
    showmessage('串口未打開。');
end;

procedure TMainForm.Btn_ClearViewClick(Sender: TObject);
begin
  Memo_Show.Clear;
end;

procedure TMainForm.CB_ComNumSelect(Sender: TObject);
begin
  ComPortInit;
end;

procedure TMainForm.Btn_SaveViewClick(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    Memo_Show.Lines.SaveToFile(SaveDialog1.FileName);
  end;
end;

procedure TMainForm.Btn_OpenFileClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    SendMemo.Lines.LoadFromFile(OpenDialog1.FileName);
  end;
end;

procedure TMainForm.Btn_ClearMomeClick(Sender: TObject);
begin
  SendMemo.Clear;
end;

procedure TMainForm.CB_AutoSendClick(Sender: TObject);
begin
  if CB_AutoSend.Checked then
  begin
    Timer_AutoSend.Interval:=strtoint(Edt_Interval.Text);
    Timer_AutoSend.Enabled:=true;
  end else
    Timer_AutoSend.Enabled:=false;
end;

procedure TMainForm.Edt_IntervalKeyPress(Sender: TObject; var Key: Char);
begin
  if key=#8  then
  begin
    ShowMessage('hello');
    exit;
  end;
  
  if (key>'9') or (key<'0') then
    key:=#0;
end;

procedure TMainForm.Timer_AutoSendTimer(Sender: TObject);
begin
  Btn_SendClick(Sender);
end;

procedure TMainForm.Memo_ShowChange(Sender: TObject);
begin
  if CB_Clear.Checked then
    if length(Memo_Show.Text)>10000 then
      Memo_Show.Clear;
end;

procedure TMainForm.Btn_AboutClick(Sender: TObject);
begin
  AboutBox.ShowModal;
end;

procedure TMainForm.FormShow(Sender: TObject);
begin
  MainForm.Caption:=Application.Title;
  CB_ComNum.ItemIndex:=0;
  InitDate;
  ComPortInit;
end;

procedure TMainForm.Btn_CountResetClick(Sender: TObject);
begin
  InitDate;
end;

procedure TMainForm.Timer_WatchStateTimer(Sender: TObject);
begin
  if  ComPort1.Open then
    Shape_ComState.Brush.Color:=clLime
  else
    Shape_ComState.Brush.Color:=clRed;
  StatusBar.Panels.Items[0].Text:=datetimetostr(now);
  StatusBar.Panels.Items[3].Text:=version;
end;

procedure TMainForm.FormResize(Sender: TObject);
begin
  if MainForm.Width<670 then  MainForm.Width:=670;
  if MainForm.Height<490 then  MainForm.Height:=490;
end;

//通過INI文件,記憶設置和窗口位置
procedure TMainForm.FormCreate(Sender: TObject);
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) );
  try
    Top     :=  Ini.ReadInteger( 'Form', 'Top', 100 );
    Left    :=  Ini.ReadInteger( 'Form', 'Left', 100 );
    Width   :=  Ini.ReadInteger( 'Form', 'Width', 500 );
    Height  :=  Ini.ReadInteger( 'Form', 'Height', 300 );
    Caption :=  Ini.ReadString( 'Form', 'Caption', SoftName );
    
    CB_HexGet.Checked:=Ini.ReadBool('Form', 'HexGet', false );
    CB_StopShow.Checked:=Ini.ReadBool('Form', 'StopShow', false);
    CB_Clear.Checked:=Ini.ReadBool('Form', 'Clear', true );
    CB_Show.Checked:=Ini.ReadBool('Form', 'Show', false );
    CB_hexSend.Checked:=Ini.ReadBool('Form', 'hexSend', false );

    Edt_Interval.Text:= inttostr(Ini.ReadInteger( 'Form', 'Interval', 1000 ));
    if Ini.ReadBool( 'Form', 'InitMax', false ) then
      WindowState := wsMaximized
    else
      WindowState := wsNormal;
  finally
    Ini.Free;
  end;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) );
  try
    Ini.WriteInteger( 'Form', 'Top', Top);
    Ini.WriteInteger( 'Form', 'Left', Left);
    Ini.WriteInteger( 'Form', 'Width',Width);
    Ini.WriteInteger( 'Form', 'Height',Height);
    Ini.WriteString( 'Form', 'Caption', Caption );
    Ini.WriteBool( 'Form', 'InitMax', WindowState = wsMaximized );
    Ini.WriteBool('Form', 'HexGet',CB_HexGet.Checked);
    Ini.WriteBool('Form', 'StopShow',CB_StopShow.Checked);
    Ini.WriteBool('Form', 'Clear',CB_Clear.Checked);
    Ini.WriteBool('Form', 'Show',CB_Show.Checked);
    Ini.WriteBool('Form', 'hexSend',CB_hexSend.Checked);
    Ini.WriteInteger( 'Form', 'Interval', strtoint(Edt_Interval.Text));
  finally
    Ini.Free;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情都市一区二区| 91麻豆精品国产自产在线 | 91精品黄色片免费大全| 久久久久久久久一| 一区二区日韩av| 精品制服美女丁香| 在线免费视频一区二区| 国产日韩欧美激情| 免费看日韩a级影片| av欧美精品.com| 亚洲精品一线二线三线| 亚洲国产日日夜夜| 成人av电影观看| 久久嫩草精品久久久精品一| 亚洲午夜羞羞片| aaa欧美大片| 国产亚洲欧美中文| 久久99日本精品| 欧美日韩不卡在线| 亚洲欧美色综合| 成人高清视频在线观看| wwwwxxxxx欧美| 裸体一区二区三区| 在线不卡中文字幕播放| 亚洲一区二区在线免费看| 99热在这里有精品免费| 国产欧美一区视频| 成人爽a毛片一区二区免费| 欧美一二三区在线| 日韩成人一区二区| 7777精品伊人久久久大香线蕉的| 亚洲精品高清在线| 色综合久久中文字幕| 国产精品久久久久久福利一牛影视| 国内精品不卡在线| 精品福利视频一区二区三区| 久久99热狠狠色一区二区| 欧美一区二区三区播放老司机| 午夜一区二区三区视频| 欧美亚洲国产一区二区三区va| 亚洲男同1069视频| 91搞黄在线观看| 悠悠色在线精品| 欧美日韩中文另类| 亚洲成av人片一区二区梦乃| 欧美精品一级二级三级| 美腿丝袜亚洲色图| 久久色视频免费观看| 国产精品一二三四| 亚洲天堂成人在线观看| 在线免费亚洲电影| 一区二区三区四区av| 欧美日韩在线三级| 天堂一区二区在线免费观看| 日韩一级高清毛片| 国产999精品久久久久久| 久久久久亚洲综合| 99这里都是精品| 亚洲精品国产高清久久伦理二区| 欧美精品粉嫩高潮一区二区| 久久99久久久久久久久久久| 国产亚洲人成网站| 97se亚洲国产综合自在线| 亚洲国产成人av网| 久久这里只有精品6| 97se亚洲国产综合自在线观| 日韩精品一二三区| 欧美国产精品v| 91色乱码一区二区三区| 日本一区中文字幕| 国产精品另类一区| 欧美久久高跟鞋激| 在线观看不卡视频| 日韩精品五月天| 亚洲国产精品黑人久久久| 欧美午夜精品理论片a级按摩| 日本亚洲视频在线| 综合色中文字幕| 91精品国产综合久久婷婷香蕉| 国产.精品.日韩.另类.中文.在线.播放 | 精品一区二区免费视频| 中文无字幕一区二区三区 | 亚洲综合在线电影| 久久久欧美精品sm网站| 在线区一区二视频| 国产精品538一区二区在线| 亚洲香肠在线观看| 国产精品网曝门| 欧美大胆人体bbbb| 欧美无砖专区一中文字| 成人中文字幕合集| 精品一区二区免费看| 亚洲黄网站在线观看| 久久精品免视看| 日韩一区二区三区三四区视频在线观看 | 亚洲欧美日韩国产中文在线| 日韩一区二区在线观看视频播放| 91在线无精精品入口| 国产精品一区一区| 美女脱光内衣内裤视频久久影院| 中文字幕视频一区| 国产亚洲精品aa| 精品免费国产一区二区三区四区| 欧美色网一区二区| 91免费观看视频| 成人高清av在线| 国产成人一区二区精品非洲| 国产91精品精华液一区二区三区| 天天做天天摸天天爽国产一区| 亚洲欧美电影一区二区| 亚洲欧洲美洲综合色网| 亚洲国产电影在线观看| 国产午夜亚洲精品午夜鲁丝片| 精品国产一二三| 欧美mv日韩mv国产网站| 日韩一级精品视频在线观看| 制服丝袜av成人在线看| 欧美色电影在线| 日本韩国精品一区二区在线观看| 成人黄色一级视频| av成人老司机| 97成人超碰视| 欧美日韩在线综合| 欧美美女喷水视频| 欧美精品1区2区3区| 91精品在线麻豆| 欧美一区二区三区电影| 精品福利一区二区三区免费视频| 久久婷婷国产综合国色天香| 久久精品水蜜桃av综合天堂| 国产亚洲视频系列| 1024成人网色www| 日韩毛片精品高清免费| 一区二区三区视频在线看| 亚洲电影一级黄| 美腿丝袜亚洲综合| 久久99热99| 国产成人精品免费| 91热门视频在线观看| 欧美在线不卡一区| 欧美男生操女生| 91精品啪在线观看国产60岁| 日韩精品一区在线| 国产精品欧美久久久久无广告 | 亚洲国产精品成人综合| 一区二区久久久| 六月丁香婷婷色狠狠久久| 国产精品一区在线观看乱码| 972aa.com艺术欧美| 91 com成人网| 国产欧美va欧美不卡在线| 亚洲精品成人精品456| 日韩国产一二三区| 国产成人精品免费| 欧美日韩综合不卡| 国产人成亚洲第一网站在线播放| 亚洲欧美日本在线| 激情成人综合网| 91福利在线播放| www精品美女久久久tv| 亚洲乱码日产精品bd| 男女激情视频一区| 91视频免费播放| 26uuu精品一区二区三区四区在线| 亚洲欧洲三级电影| 日本少妇一区二区| 色综合久久88色综合天天6| 欧美成人性战久久| 一区二区三区欧美久久| 国产一区二区视频在线播放| 日本国产一区二区| 欧美国产日韩精品免费观看| 亚洲成人精品一区二区| 风流少妇一区二区| 日韩欧美高清dvd碟片| 亚洲最快最全在线视频| 国产一区二区三区蝌蚪| 91精品欧美福利在线观看| 亚洲精品国产第一综合99久久| 久久精品国产第一区二区三区| 欧洲生活片亚洲生活在线观看| 久久久国产综合精品女国产盗摄| 午夜视频一区在线观看| 99久精品国产| www激情久久| 男女男精品网站| 欧美日韩成人综合| 亚洲欧美日韩国产综合在线| 韩国一区二区视频| 日韩欧美一级片| 首页国产欧美久久| 欧美日韩免费视频| 亚洲一区二区在线播放相泽| 不卡的av中国片| 亚洲国产精品激情在线观看| 国产99久久精品| 欧美国产国产综合| av男人天堂一区| 综合在线观看色| 91在线观看美女|