📄 unit1.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 + -