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

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

?? co_main.~pas

?? 很好用的串口通信工具軟件。Comport目錄下是用到的通信控件。
?? ~PAS
?? 第 1 頁 / 共 2 頁
字號:
unit Co_Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Forms, CPort, StdCtrls,
  IniFiles, Syncobjs, ComCtrls, ImgList, Buttons, ToolWin, ExtCtrls,
  TriggerUtil,Dialogs;

const
  sVerInfo = '串口測試程序 Ver1.0';
  cmdBuffCapacity = 100;

type

  TFrm_Main = class(TForm)
    Panel1: TPanel;
    ToolBar1: TToolBar;
    btn_Open: TToolButton;
    btn_Close: TToolButton;
    btn_Clear: TToolButton;
    btn_Exit: TToolButton;
    TitleImageList: TImageList;
    btn_Trigger: TToolButton;
    ToolButton1: TToolButton;
    ToolButton3: TToolButton;
    sb: TStatusBar;
    Panel2: TPanel;
    Panel3: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Combo_Port: TComboBox;
    Combo_BaudRate: TComboBox;
    GroupBox1: TGroupBox;
    CB_RTS: TCheckBox;
    CB_DTR: TCheckBox;
    GroupBox2: TGroupBox;
    CB_CRLF: TCheckBox;
    CB_Hex: TCheckBox;
    Panel4: TPanel;
    Splitter1: TSplitter;
    Pc_Info: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    ComPort: TComPort;
    Panel5: TPanel;
    btn_Send: TSpeedButton;
    Panel6: TPanel;
    CB_CMD: TComboBox;
    btn_ClearCmd: TToolButton;
    Label3: TLabel;
    Mem_Hex: TMemo;
    Mem_Text: TMemo;
    Mem_Info: TMemo;
    Label4: TLabel;
    Cb_DataBits: TComboBox;
    Label5: TLabel;
    CB_StopBits: TComboBox;
    Label6: TLabel;
    Cb_ParityBits: TComboBox;
    tbAutoSend: TToolButton;
    TimerAutoSend: TTimer;
    tbByteSend: TToolButton;
    TimerByteSend: TTimer;
    procedure Combo_BaudRateChange(Sender: TObject);
    procedure Combo_PortChange(Sender: TObject);
    procedure CB_RTSClick(Sender: TObject);
    procedure CB_DTRClick(Sender: TObject);
    procedure Btn_ExitClick(Sender: TObject);
    procedure Btn_OpenClick(Sender: TObject);
    procedure Btn_CloseClick(Sender: TObject);
    procedure Btn_SendClick(Sender: TObject);
    procedure Btn_ClearClick(Sender: TObject);
    procedure ComPortTxEmpty(Sender: TObject);
    procedure ComPortRxChar(Sender: TObject; Count: Integer);
    procedure ComPortError(Sender: TObject; Errors: TComErrors);
    procedure ComPortDSRChange(Sender: TObject; OnOff: Boolean);
    procedure ComPortCTSChange(Sender: TObject; OnOff: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ComPortAfterOpen(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure Panel1Resize(Sender: TObject);
    procedure btn_ClearCmdClick(Sender: TObject);
    procedure CB_CMDKeyPress(Sender: TObject; var Key: Char);
    procedure btn_TriggerClick(Sender: TObject);
    procedure Cb_DataBitsChange(Sender: TObject);
    procedure CB_StopBitsChange(Sender: TObject);
    procedure Cb_ParityBitsChange(Sender: TObject);
    procedure ComPortAfterClose(Sender: TObject);
    procedure tbAutoSendClick(Sender: TObject);
    procedure TimerAutoSendTimer(Sender: TObject);
    procedure tbByteSendClick(Sender: TObject);
    procedure TimerByteSendTimer(Sender: TObject);
  private
    { Private declarations }
    LineData: string;
    TriggerBuff: string;
    Inis: TIniFile;
    FTrigger: TTrigger;
    FTriggerFileName: string;
    con: Boolean;
    FAutoSend:Boolean;
    FAutoIntervel:Cardinal;
    procedure SetCommStatus;
    procedure LinkToTrigger(var buf: string);
  public
    { Public declarations }
  end;

var
  Frm_Main: TFrm_Main;

implementation


uses Trigger, dlgByteSend, UnitPublic;

{$R *.DFM}

function StrToDataBits(str: string): TDataBits;
begin
  str := Trim(Str);
  if str = '5' then Result := dbFive
  else if str = '6' then Result := dbSix
  else if str = '7' then Result := dbSeven
  else Result := dbEight;
end;

function DataBitsToStr(Bits: TDataBits): string;
begin
  case Bits of
    dbFive: Result := '5';
    dbSix: Result := '6';
    dbSeven: Result := '7';
    else Result := '8';
  end;
end;

function StrToStopBits(str: string): TStopBits;
begin
  str := Trim(Str);
  if Str = '1' then Result := sbOneStopBit
  else if Str = '1.5' then Result := sbOne5StopBits
  else Result := sbTwoStopBits;
end;

function StopBitsToStr(Bits: TStopBits): string;
begin
  Case Bits of
    sbOneStopBit: Result := '1';
    sbOne5StopBits: Result := '1.5';
    else Result := '2';
  end;
end;

function StrToParityBits(str: string): TParityBits;
begin
  str := UpperCase(Trim(str));
  if str = 'EVEN' then Result := prEven
  else if str = 'MARK' then Result := prMark
  else if str = 'SPACE' then Result := prSpace
  else if str = 'NONE' then Result := prNone
  else Result := prOdd;
end;

function ParityBitsToStr(Bits: TParityBits): string;
begin
  case Bits of
    prEven: Result := 'EVEN';
    prMark: Result := 'MARK';
    prSpace: Result := 'SPACE';
    prNone: Result := 'NONE';
    prOdd: Result := 'ODD';
  end;
end;

procedure TFrm_Main.Combo_BaudRateChange(Sender: TObject);
begin
  con := ComPort.Connected;
  ComPort.Connected := False;
  ComPort.BaudRate := TBaudRate(Combo_BaudRate.ItemIndex + 1);
  ComPort.Connected := Con;
end;

procedure TFrm_Main.Combo_PortChange(Sender: TObject);
begin
  Con := ComPort.Connected;
  ComPort.Connected := False;
  ComPort.Port := Combo_Port.Text;
  ComPort.Connected := Con;
end;

procedure TFrm_Main.CB_RTSClick(Sender: TObject);
begin
  if ComPort.Connected then
    ComPort.SetRTS(CB_RTS.Checked);
end;

procedure TFrm_Main.CB_DTRClick(Sender: TObject);
begin
  if ComPort.Connected then
    ComPort.SetDTR(CB_DTR.Checked);
end;

procedure TFrm_Main.Btn_ExitClick(Sender: TObject);
begin
  Close;
end;

procedure TFrm_Main.Btn_OpenClick(Sender: TObject);
begin
  if ComPort.Connected then Exit;
  try
    ComPort.Port := Combo_Port.Text;
    ComPort.BaudRate := TBaudRate(Combo_BaudRate.ItemIndex + 1);
    ComPort.Open;
    tbAutoSend.Enabled :=true;
  except
    MessageBox(Handle, PChar('無法打開端口' + ComPort.Port), '錯誤', MB_OK + MB_ICONError);
  end;
  SetCommStatus;
end;

procedure TFrm_Main.Btn_CloseClick(Sender: TObject);
begin
  if ComPort.Connected then
  begin
    tbAutoSend.Enabled :=false;
    ComPort.Close;
  end;  
  SetCommStatus;
end;

procedure TFrm_Main.Btn_SendClick(Sender: TObject);
var
  DataStr: string;
  i, Idx: Integer;
  cmd: string;
begin
  SB.Panels[0].Text := '';
  if not ComPort.Connected then Exit;
  DataStr := '';
  cmd := CB_CMD.Text;
  if length(cmd) = 0 then Exit;
  if CB_Hex.Checked then
  begin
    if (Length(cmd) mod 2) <> 0 then
    begin
      MessageBox(Handle, '要發送的數據長度錯誤。十六進制數據長度必須為雙數', '錯誤', MB_OK + MB_ICONError);
      Exit;
    end;
    for i := 1 to Length(cmd) do
      if not (cmd[i] in ['0'..'9', 'A'..'F', 'a'..'f']) then
      begin
        MessageBox(Handle, '數據內容錯誤。十六進制數據必須為0..9, A..F', '錯誤', MB_OK + MB_ICONError);
        Exit;
      end;

    for i := 0 to (Length(cmd) div 2) - 1 do
    begin
      DataStr := DataStr + Chr(StrToInt('$' + Copy(cmd, i * 2 + 1, 2)));
    end;
  end
  else
    DataStr := cmd;

  if CB_CRLF.Checked then
    DataStr := DataStr + #$0D;
  ComPort.WriteStr(DataStr);
  Idx := CB_CMD.Items.IndexOf(CMD);
  if Idx = -1 then
  begin
    CB_CMD.Items.Insert(0, CMD);
    if CB_CMD.Items.Count > cmdBuffCapacity then
      for i := cmdBuffCapacity + 1 to CB_CMD.Items.Count do
        CB_CMD.Items.Delete(cmdBuffCapacity);
  end
  else
    Cb_Cmd.Items.Move(Idx, 0);
end;

procedure TFrm_Main.Btn_ClearClick(Sender: TObject);
begin
  Mem_Info.Lines.Clear;
  Mem_Hex.Clear;
  Mem_Text.Clear;
end;

procedure TFrm_Main.ComPortTxEmpty(Sender: TObject);
begin
  Sb.Panels[0].Text := '◆ 發送完畢';
end;

function FmtNow: string;
begin
  Result := FormatDateTime('hh:nn:ss zzz ', Now);
end;

procedure TFrm_Main.ComPortRxChar(Sender: TObject; Count: Integer);
type
  CharBuf = array[0..9999] of Char;
var
  Buffer: ^CharBuf;
  Bytes, P: Integer;
  dats: string;
begin
  Sb.Panels[0].Text := '√ 收到數據';
  GetMem(Buffer, Count);
  try
    Fillchar(Buffer^, Count, 0);
    Bytes := ComPort.Read(Buffer^, Count);
    dats := '';
    for P := 0 to Bytes - 1 do
    begin
      Dats := Dats + IntToHex(Ord(CharBuf(Buffer^)[P]), 2);
      TriggerBuff := TriggerBuff + Buffer^[P];
      case Buffer^[P] of
        #0, #10: ;
        #13:
          begin
            Mem_Text.Lines.Add(FmtNow + LineData);
            LineData := '';
          end;
      else
        LineData := LineData + CharBuf(Buffer^)[P];
      end;
    end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产高清一区| 色88888久久久久久影院按摩| 一本到一区二区三区| 欧美—级在线免费片| 国产一区二区三区黄视频| 日韩免费高清视频| 美女精品一区二区| 日韩欧美国产综合在线一区二区三区| 午夜精品久久久久久久| 国产一区二区三区蝌蚪| 26uuu精品一区二区在线观看| 蜜臀国产一区二区三区在线播放| 日本道精品一区二区三区| 综合久久一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 成人欧美一区二区三区视频网页| 99re在线视频这里只有精品| 日本亚洲视频在线| 欧美精品一区二区三区在线 | 中文字幕欧美激情一区| 国产v综合v亚洲欧| 国产精品成人免费在线| 一本大道综合伊人精品热热| 亚洲高清免费视频| 日韩女优电影在线观看| 国产91丝袜在线观看| 中文字幕综合网| 精品视频999| 久久精品99国产精品| 久久一日本道色综合| 成人手机电影网| 一卡二卡三卡日韩欧美| 这里只有精品视频在线观看| 国产在线麻豆精品观看| 国产精品欧美久久久久无广告 | 日本欧美久久久久免费播放网| 欧美sm极限捆绑bd| 国产一区二区视频在线| 亚洲欧美另类综合偷拍| 这里是久久伊人| 国产成人免费视频精品含羞草妖精 | 国产精品久久久久久久第一福利 | 丁香亚洲综合激情啪啪综合| 亚洲三级电影全部在线观看高清| 欧美精品v国产精品v日韩精品| 美女在线视频一区| 欧美经典一区二区三区| 91福利在线免费观看| 日本v片在线高清不卡在线观看| 国产日韩成人精品| 欧美性生活久久| 亚州成人在线电影| 精品国产一区二区三区久久影院| 成人avav在线| 老司机午夜精品| 亚洲综合精品自拍| 国产精品伦理一区二区| 91精品国产综合久久久久久漫画| 成人精品小蝌蚪| 日韩电影在线一区| 国产精品国产精品国产专区不片| 5566中文字幕一区二区电影| 成人免费电影视频| 久久99九九99精品| 亚洲18影院在线观看| 26uuu色噜噜精品一区| 精品污污网站免费看| 波多野结衣亚洲一区| 精品一区二区三区视频在线观看| 亚洲综合在线五月| 国产精品精品国产色婷婷| 欧美大片在线观看一区| 欧美性色黄大片手机版| 99久久久免费精品国产一区二区| 精品一区二区三区免费播放| 亚洲国产一区二区三区| 成人欧美一区二区三区| 久久久久久久久免费| 日韩欧美成人激情| 777xxx欧美| 911精品产国品一二三产区| 91亚洲国产成人精品一区二三| 国产乱人伦偷精品视频免下载| 美女视频黄 久久| 日韩专区在线视频| 亚洲成a人片在线不卡一二三区 | 5月丁香婷婷综合| 欧美三区免费完整视频在线观看| 91免费视频观看| a在线欧美一区| 成人激情动漫在线观看| 成人97人人超碰人人99| 成人精品免费看| 成人黄色在线看| 99久久er热在这里只有精品15 | 亚洲青青青在线视频| 国产精品电影一区二区三区| 国产精品嫩草影院av蜜臀| 亚洲国产激情av| 中文字幕一区免费在线观看| 国产精品久久久久三级| 欧美激情一区二区三区四区| 国产欧美一区二区精品忘忧草| 日韩欧美在线网站| 日韩精品中文字幕在线不卡尤物| 欧美二区三区91| 日韩小视频在线观看专区| 欧美tickling挠脚心丨vk| www国产亚洲精品久久麻豆| 国产午夜精品一区二区三区视频| 精品视频一区二区三区免费| 成人网在线免费视频| 色伊人久久综合中文字幕| 7777精品伊人久久久大香线蕉超级流畅| 日韩女同互慰一区二区| 成人欧美一区二区三区白人| 婷婷激情综合网| 成人午夜在线播放| 欧美日韩国产区一| 国产精品污污网站在线观看| 一区二区在线观看免费 | 午夜在线成人av| 国产一区二区91| 欧美性猛交一区二区三区精品| 精品美女被调教视频大全网站| 中文字幕一区二区三区蜜月| 另类小说视频一区二区| 97久久精品人人爽人人爽蜜臀| 欧美电视剧在线看免费| 国产精品91一区二区| 欧美亚洲国产一区二区三区 | 国产精品系列在线观看| 欧美日本韩国一区二区三区视频 | 欧美大片顶级少妇| 一区二区三区不卡视频 | 日韩va亚洲va欧美va久久| 成人h精品动漫一区二区三区| 欧美精品一级二级| 亚洲人快播电影网| 国产精品综合网| 在线电影院国产精品| 亚洲柠檬福利资源导航| 国产精品123| 精品福利在线导航| 五月天欧美精品| 91成人免费在线| 国产精品国产精品国产专区不片| 日本欧美一区二区三区乱码| 91福利在线导航| 亚洲女人小视频在线观看| 国产69精品久久99不卡| 精品伦理精品一区| 日本视频中文字幕一区二区三区| 欧美最猛性xxxxx直播| 亚洲欧美在线视频| 丁香婷婷深情五月亚洲| 久久久久综合网| 精品在线一区二区| 日韩一区二区免费在线电影| 视频一区在线播放| 欧美日韩三级在线| 亚洲综合免费观看高清完整版| 91视频在线观看免费| 国产精品美女久久久久久久久久久 | 99热国产精品| 亚洲色图20p| 91在线码无精品| 国产成人精品亚洲777人妖| 欧美成人video| 久久精品国产99国产精品| 欧美一区二区久久| 蜜乳av一区二区| 精品久久久久一区二区国产| 久草热8精品视频在线观看| 欧美一区二区三区日韩| 美脚の诱脚舐め脚责91| 日韩一区国产二区欧美三区| 捆绑调教美女网站视频一区| 欧美videos大乳护士334| 看电视剧不卡顿的网站| 久久综合久久综合九色| 国产成人av在线影院| 欧美国产日本视频| www.欧美.com| 亚洲一二三级电影| 91精品国产综合久久小美女| 免费观看在线色综合| 亚洲精品一区在线观看| 国产91精品露脸国语对白| 国产精品久久久久国产精品日日| 色婷婷亚洲精品| 免费一级片91| 国产校园另类小说区| 91污在线观看| 亚洲一区电影777| 精品久久久久久久久久久院品网| 粉嫩在线一区二区三区视频| 一区二区在线观看免费 | 91成人免费网站| 久久国产生活片100|