⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 LOM-ARM7的Flash烧写的windows版程序
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons,S3C4510Func,FlashPGMFunc,SST39VF160Func,Define,
  HWINTERFACELib_TLB;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    FontDialog1: TFontDialog;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure BitBtn9Click(Sender: TObject);
    procedure UserClose(var Msg:TMessage);Message WM_CLOSE;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TMyThread=class(TThread)
    procedure Execute;override;
  end;

var
  Form1: TForm1;
  JTAG_Connected:boolean;
  MyThread:TMyThread;
  JTAG_Busy:boolean;

implementation

uses Unit2, Unit3;

{$R *.dfm}
procedure TMyThread.Execute;
begin
  Suspend;
  while(true)do
  begin
    JTAG_Busy:=true;  //防止出现多个请求
    case OperateType of
      optLoad:     load_binfile(fname,pos);
      optEraseSec: erase_sectors(sector_addr, sector_count);
      optEraseBlk: erase_blocks(block_addr, block_count);
      optEraseAll: sst_erase_chip;
      optSave:     save_binfile(fname,pos,read_size);
    end;
    JTAG_Busy:=false;
    Suspend;
  end;
end;

procedure TForm1.UserClose(var Msg:TMessage);
begin
  if(JTAG_Busy) then
  begin
    if(MessageDlg( 'Task Uncompleted!  Exit now?',
       mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
    begin
      MyThread.Terminate;
      Inherited;
    end;
  end
  else
    Inherited;
end;

//加载二进制文件
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  //如果JTAG端口正忙着呢,那么退出此过程。并发声报警
  if(JTAG_Busy) then
  begin
    Beep;
    Memo1.Lines.Add('JTAG port is busy,cannot response!');
    Exit;
  end;
  if Form1.OpenDialog1.Execute then
    fname:=Form1.OpenDialog1.FileName
  else
    Exit;
  OperateType:=optLoad;
  Form2.ShowModal;
  if(Form2.ModalResult=mrCancel) then
    Exit;
  MyThread.Resume;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
  //如果JTAG端口正忙着呢,那么退出此过程。并发声报警
  if(JTAG_Busy) then
  begin
    Beep;
    Memo1.Lines.Add('JTAG port is busy,cannot response!');
    Exit;
  end;
  if(MessageDlg( 'All data on chip will be lost,continue anyway?',
       mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
  begin
    OperateType:=optEraseAll;
    MyThread.Resume;
  end;
end;

procedure TForm1.BitBtn6Click(Sender: TObject);
begin
  //如果JTAG端口正忙着呢,那么退出此过程。并发声报警
  if(JTAG_Busy) then
  begin
    Beep;
    Memo1.Lines.Add('JTAG port is busy,cannot response!');
    Exit;
  end;
  OperateType:=optEraseSec;
  Form2.ShowModal;
  if(Form2.ModalResult=mrCancel) then
    Exit;
  MyThread.Resume;
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
  //如果JTAG端口正忙着呢,那么退出此过程。并发声报警
  if(JTAG_Busy) then
  begin
    Beep;
    Memo1.Lines.Add('JTAG port is busy,cannot response!');
    Exit;
  end;
  OperateType:=optEraseBlk;
  Form2.ShowModal;
  if(Form2.ModalResult=mrCancel) then
    Exit;
  MyThread.Resume;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
  //如果JTAG端口正忙着呢,那么退出此过程。并发声报警
  if(JTAG_Busy) then
  begin
    Beep;
    Memo1.Lines.Add('JTAG port is busy,cannot response!');
    Exit;
  end;
  if SaveDialog1.Execute then
    fname:=Form1.SaveDialog1.FileName
  else
    Exit;
  OperateType:=optSave;
  Form2.ShowModal;
  if(Form2.ModalResult=mrCancel) then
    Exit;
  MyThread.Resume;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if(JTAG_Connected) then
  begin
    if(JTAG_Busy) then
    begin
      showmessage('JTAG port is busy,cannot exit!');
    end;
    JTAG_Connected:=false;
    BitBtn1.Caption:='连接JTAG设备';
    BitBtn2.Enabled:=false;
    BitBtn3.Enabled:=false;
    BitBtn4.Enabled:=false;
    BitBtn5.Enabled:=false;
    BitBtn6.Enabled:=false;
    io_access_off( lpt_address );
  end
  else if(connect_device=0) then
  begin
    JTAG_Connected:=true;
    BitBtn1.Caption:='断开JTAG连接';
    BitBtn2.Enabled:=true;
    BitBtn3.Enabled:=true;
    BitBtn4.Enabled:=true;
    BitBtn5.Enabled:=true;
    BitBtn6.Enabled:=true;
  end;
end;

procedure TForm1.BitBtn7Click(Sender: TObject);
begin
  SendMessage(Form1.Handle,WM_CLOSE,0,0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  JTAG_Connected:=false;
  MyPar:=THWinterface.Create(Form1);
  MyThread:=TMyThread.Create(false);
  JTAG_Busy:=false;
end;

procedure TForm1.BitBtn8Click(Sender: TObject);
begin
  FontDialog1.Font:=Memo1.Font;
  if FontDialog1.Execute then
    Memo1.Font:=FontDialog1.Font;
end;

procedure TForm1.BitBtn9Click(Sender: TObject);
begin
  Form3.Left:=Form1.Left+(Form1.Width-Form3.Width)div 2;
  Form3.Top:=Form1.Top+(Form1.Height-Form3.Height)div 2;
  Form3.Show;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -