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

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

?? eeprom_form.pas

?? 這是一個DELPHI與單片機相結合的應用例子 這個程序的主要功能是通過串口與單片機通訊
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{-----------------------------------------------------------------------------
 Unit Name:  Unit1
 Author :    A1.Aleyn.wu
 E-mail :    Aleyn@e-midas.cn
 QQ/Group:   2282902/7617215
 Purpose:
 History:    v1.0
-----------------------------------------------------------------------------}

unit EEPROM_form;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DB, DBGrids, StdCtrls, DBClient, ExtCtrls, ToolWin,
  ComCtrls, CPort, ActnList, CPortCtl, HMRegistry;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    cdsAVR: TClientDataSet;
    cdsAVRF1: TStringField;
    cdsAVRF2: TStringField;
    cdsAVRF3: TStringField;
    cdsAVRF4: TStringField;
    cdsAVRF5: TStringField;
    cdsAVRF6: TStringField;
    cdsAVRF7: TStringField;
    cdsAVRF8: TStringField;
    cdsAVRF9: TStringField;
    cdsAVRFA: TStringField;
    cdsAVRFB: TStringField;
    cdsAVRFC: TStringField;
    cdsAVRFD: TStringField;
    cdsAVRFE: TStringField;
    cdsAVRFF: TStringField;
    cdsAVRFS: TStringField;
    ToolBar1: TToolBar;
    ActionList1: TActionList;
    actHelp: TAction;
    actRead: TAction;
    actWrite: TAction;
    actExit: TAction;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    actStart: TAction;
    actStop: TAction;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    cdsAVRF0: TStringField;
    cdsAVRFI: TStringField;
    prs: TProgressBar;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    actOpen: TAction;
    actSave: TAction;
    ToolButton13: TToolButton;
    cdsImport: TClientDataSet;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    Splitter1: TSplitter;
    Memo1: TMemo;
    Panel2: TPanel;
    Splitter2: TSplitter;
    GroupBox1: TGroupBox;
    opnAddr1: TRadioButton;
    opnAddr2: TRadioButton;
    GroupBox2: TGroupBox;
    ra2: TCheckBox;
    ra1: TCheckBox;
    ra0: TCheckBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    wa2: TCheckBox;
    wa1: TCheckBox;
    wa0: TCheckBox;
    Label5: TLabel;
    ComPort1: TComPort;
    GroupBox3: TGroupBox;
    ComLed1: TComLed;
    ComLed3: TComLed;
    ComLed4: TComLed;
    ComLed5: TComLed;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    cmbPort: TComComboBox;
    cmbRate: TComComboBox;
    cmbData: TComComboBox;
    cmbFlow: TComComboBox;
    cmbParity: TComComboBox;
    cmbStop: TComComboBox;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    btnUpdate: TButton;
    Reg: THMRegistry;
    procedure actHelpExecute(Sender: TObject);
    procedure actStartExecute(Sender: TObject);
    procedure actStopExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure actReadExecute(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure actExitExecute(Sender: TObject);
    procedure actWriteExecute(Sender: TObject);
    procedure actOpenExecute(Sender: TObject);
    procedure actSaveExecute(Sender: TObject);
    procedure cdsAVRBeforePost(DataSet: TDataSet);
    procedure ComPort1RxChar(Sender: TObject; Count: Integer);
    procedure btnUpdateClick(Sender: TObject);
  private
    FBuffer: PChar;
    FBufIdx: integer;
    SBuffer: PChar;
  public
    procedure OpenPort;
    procedure ClosePort;
    procedure WritePort(Buffer: Pointer; Count: Integer);
    procedure PressBuffer(Buffer: Pointer; BufferLength: Integer);
  end;

type
  TWriteCommThread = class(TThread)
  private
    FAddrType: integer;
    procedure SetAddrType(const Value: integer);
  protected
    procedure Execute; override;
  public
    property AddrType: integer read FAddrType write SetAddrType;
  end;

const
  CMDBEGIN = #27;
  CMDEND = #28;
  CMDHELP = #72;
  CMDREAD = #82;
  CMDWRITE = #87;

var
  Form1: TForm1;
  VaildWrite: PChar;
  WriteResult: Boolean;

implementation

{$R *.dfm}

const
  Convert: array[0..15] of Char = '0123456789ABCDEF';

procedure TForm1.FormCreate(Sender: TObject);
begin
  Reg.OpenKey;
  if Reg.ValueExists('Port') then cmbPort.Text := Reg.SValue['Port'];
  if Reg.ValueExists('Rate') then cmbRate.Text := Reg.SValue['Rate'];
  if Reg.ValueExists('Data') then cmbData.Text := Reg.SValue['Data'];
  if Reg.ValueExists('Flow') then cmbFlow.Text := Reg.SValue['Flow'];
  if Reg.ValueExists('Parity') then cmbParity.Text := Reg.SValue['Parity'];
  if Reg.ValueExists('Stop') then cmbStop.Text := Reg.SValue['Stop'];
  Reg.CloseKey;
  btnUpdateClick(Sender);
  GetMem(FBuffer, 4096);
  GetMem(SBuffer, 4096);
  GetMem(VaildWrite, 3);
  cdsAVR.LoadFromFile('HexTable.cds');
  cdsAVR.Open;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Reg.OpenKey;
  Reg.SValue['Port'] := cmbPort.Text;
  Reg.SValue['Rate'] := cmbRate.Text;
  Reg.SValue['Data'] := cmbData.Text;
  Reg.SValue['Flow'] := cmbFlow.Text;
  Reg.SValue['Parity'] := cmbParity.Text;
  Reg.SValue['Stop'] := cmbStop.Text;

  FreeMem(FBuffer);
  FreeMem(SBuffer);
  FreeMem(VaildWrite);
  FBufIdx := 0;
end;

procedure TForm1.actHelpExecute(Sender: TObject);
var
  Buffer: PChar;
begin
  GetMem(Buffer, 32); //命令緩沖區
  try
    Buffer[0] := CMDBEGIN; //命令開始符
    Buffer[1] := CMDHELP; //標志這條命令是要求AVR發送HELP給PC
    Buffer[2] := CMDEND; //命令結束符
    //ComPort1.Write(Buffer, 4);
    WritePort(Buffer, 4); //從串口發出命令
    Sleep(100); //等待 100ms,此間AVR會發回信息
  finally
    FreeMem(Buffer);
  end;
end;

procedure TForm1.actStartExecute(Sender: TObject);
begin
  OpenPort;
  actStart.Enabled := False;
  actStop.Enabled := True;
end;

procedure TForm1.actStopExecute(Sender: TObject);
begin
  ClosePort;
  actStart.Enabled := True;
  actStop.Enabled := False;
end;

procedure TForm1.actReadExecute(Sender: TObject);
var
  Buffer: PChar;
  Buf2: array[1..2] of Byte;
begin
  GetMem(Buffer, 32);
  try
    Buffer[0] := CMDBEGIN;
    Buffer[1] := CMDREAD;

    if opnAddr1.Checked then
      Buf2[1] := 1
    else
      Buf2[1] := 2;
    Buf2[2] := 0;

    if ra0.Checked then Buf2[2] := Buf2[2] + 2;
    if ra1.Checked then Buf2[2] := Buf2[2] + 4;
    if ra2.Checked then Buf2[2] := Buf2[2] + 8;
    BinToHex(@Buf2[1], @Buffer[2], 2); //Memory Address Type and Chip Address

    Buf2[1] := $00;
    Buf2[2] := $00;
    BinToHex(@Buf2[1], @Buffer[6], 2); //Memory Address

    Buf2[1] := $01;
    Buf2[2] := $FF;
    BinToHex(@Buf2[1], @Buffer[10], 2); //Read Count

    Buffer[14] := CMDEND;
    //Comm1.WriteCommData(Buffer, 15);
    WritePort(Buffer, 15);
  finally
    FreeMem(Buffer);
  end;

end;

procedure TForm1.PressBuffer(Buffer: Pointer; BufferLength: Integer);
var
  Buf2: pchar;
  i: integer;
  pos, pos2: integer;
  s: string;
begin

  if BufferLength > 0 then
    begin
      if (PChar(Buffer)[0] = CMDBEGIN) then FBufIdx := 0;
      if (BufferLength + FBufIdx >= 4096) then BufferLength := 4096 - FBufIdx - 1;
      CopyMemory(@FBuffer[FBufIdx], Buffer, BufferLength);
      Inc(FBufIdx, BufferLength);
      //Memo2.Text:=StrPas(FBuffer);

      if (PChar(Buffer)[BufferLength - 1]) <> CMDEND then exit;
    end;

  if (FBufIdx <= 3) then exit;
  if (FBuffer[1] = CMDHELP) then
    begin
      GetMem(Buf2, FBufIdx - 2);
      try
        CopyMemory(Buf2, @FBuffer[2], FBufIdx - 3);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久一二三区| 亚洲视频在线观看三级| 国产欧美一区视频| 亚洲综合999| 久久精品国产澳门| 91在线视频网址| 欧美日韩国产天堂| 精品国产伦一区二区三区免费| 国产欧美精品在线观看| 五月激情综合色| 一本大道久久精品懂色aⅴ| 97se狠狠狠综合亚洲狠狠| 日韩视频在线观看一区二区| 国产精品久久免费看| 久久精品国产成人一区二区三区| 色先锋资源久久综合| 国产网站一区二区| 午夜精品一区二区三区三上悠亚 | 国产精品久久久久精k8 | 一区二区三区影院| 国产一区二区三区av电影| 日韩一区二区在线看| 午夜久久电影网| 欧美久久久久久久久久| 一区二区成人在线| a在线欧美一区| 国产精品传媒视频| 成人v精品蜜桃久久一区| 久久久综合视频| 国产麻豆精品在线观看| 精品三级在线看| 精品中文字幕一区二区 | 国产精品久久久久久一区二区三区 | 成人av资源站| 亚洲精品乱码久久久久久黑人| 99国产一区二区三精品乱码| 中文字幕日韩精品一区| 91小视频免费观看| 亚洲一二三四区不卡| 6080yy午夜一二三区久久| 日韩电影免费在线看| 欧美变态tickle挠乳网站| 国产精品一区二区在线播放| 国产精品欧美一区喷水| 在线视频一区二区免费| 奇米777欧美一区二区| 久久久www免费人成精品| 国产成人av影院| 一级精品视频在线观看宜春院 | 成人性生交大片免费看在线播放| 亚洲色欲色欲www| 欧美一区二区久久久| 高清国产一区二区三区| 亚洲午夜av在线| 久久久久久久久岛国免费| 一本一本大道香蕉久在线精品 | 国产欧美日韩不卡| 欧美性生活影院| 国产成人aaa| 日韩影视精彩在线| 欧美激情一区二区三区在线| 欧美日精品一区视频| 国产成人8x视频一区二区| 日韩精品一级二级| 成人免费在线播放视频| 欧美精品一区男女天堂| 欧美色视频在线| 成人美女视频在线观看18| 日韩成人免费电影| 成人免费在线视频观看| 国产欧美日产一区| 精品1区2区在线观看| 欧美日韩亚洲综合一区| 成人av电影在线观看| 国产成人一级电影| 狠狠色丁香婷婷综合| 日韩成人精品视频| 国产精品入口麻豆原神| 精品久久人人做人人爱| 91免费精品国自产拍在线不卡| 日韩二区在线观看| 亚洲一区二区高清| 亚洲最大成人网4388xx| 亚洲免费观看高清在线观看| **欧美大码日韩| 亚洲欧美日韩小说| 一区av在线播放| 亚洲成人av一区二区| 亚洲gay无套男同| 亚洲成人av一区| 日韩av一二三| 精品系列免费在线观看| 国产很黄免费观看久久| 国产麻豆日韩欧美久久| 大胆欧美人体老妇| 91免费在线视频观看| 欧美日韩在线一区二区| 91精品黄色片免费大全| 久久午夜免费电影| 中文字幕一区二区不卡| 亚洲综合视频网| 麻豆91精品视频| 国产91精品一区二区麻豆亚洲| 国产激情91久久精品导航| 色哟哟在线观看一区二区三区| 欧美日韩中文字幕一区二区| 日韩一区二区在线观看| 中文字幕精品—区二区四季| 夜夜嗨av一区二区三区| 国产美女久久久久| 91久久奴性调教| 久久久久久久久久看片| 亚洲久草在线视频| 久久99久久精品| 色www精品视频在线观看| 日韩视频中午一区| 亚洲男同1069视频| 国产一区二区精品久久99| 97精品国产97久久久久久久久久久久| 欧美精品三级日韩久久| 中文字幕视频一区| 九色综合狠狠综合久久| 欧美日韩高清一区二区三区| 欧美高清性hdvideosex| 国产精品色一区二区三区| 麻豆精品视频在线| 欧美综合天天夜夜久久| 国产精品午夜电影| 欧美日韩国产系列| 亚洲国产成人av好男人在线观看| 成人小视频在线| 色噜噜久久综合| 国产成人在线网站| 久久亚洲二区三区| 日日骚欧美日韩| 欧美三区免费完整视频在线观看| 日韩一区在线播放| 99免费精品在线| 国产精品美女久久久久久| 国产福利精品导航| www国产成人免费观看视频 深夜成人网| 亚洲成av人综合在线观看| 96av麻豆蜜桃一区二区| ...xxx性欧美| 欧美色大人视频| 日韩高清不卡在线| 欧美成人a∨高清免费观看| 美国av一区二区| 国产日韩亚洲欧美综合| 国产高清久久久| 亚洲日本va在线观看| 欧美视频你懂的| 奇米777欧美一区二区| 久久免费看少妇高潮| 国产成人h网站| 亚洲欧美视频在线观看视频| 欧美曰成人黄网| 日韩电影免费在线观看网站| 久久精品视频一区二区三区| 成人av第一页| 午夜av电影一区| 国产日韩欧美精品一区| 欧美日韩另类一区| 国产麻豆精品theporn| 亚洲欧美色一区| 精品三级在线看| 在线观看成人小视频| 日韩黄色一级片| 中文字幕在线一区免费| 91精品国产免费久久综合| 国产 日韩 欧美大片| 蜜臀久久久久久久| 亚洲欧美国产77777| 日韩午夜av一区| 一本色道久久综合亚洲aⅴ蜜桃| 激情国产一区二区| 日韩精品一二三四| 一区二区三区在线看| 欧美精彩视频一区二区三区| 日韩视频免费观看高清完整版| 91视频国产资源| 国产·精品毛片| 久久国产精品色| 日韩精品一级中文字幕精品视频免费观看| 国产精品欧美一区喷水| 久久久久久9999| 91精品中文字幕一区二区三区| 一道本成人在线| 91视频一区二区三区| 91丝袜高跟美女视频| 成人综合在线观看| 国产精品自拍av| 国产剧情一区二区| 国产综合色精品一区二区三区| 人人超碰91尤物精品国产| 无码av中文一区二区三区桃花岛| 亚洲国产综合在线| 亚洲精品乱码久久久久久| 亚洲欧美激情插 | 中文字幕 久热精品 视频在线 |