📄 unit1.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit3.h"
#include "Unit2.h"
#include "Unit4.h"
#include "WinIO.h"
#include "Unit5.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma link "WinIo_bc.lib"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
prom=NULL;
readbuff=NULL;
readchip=NULL;
promsize=0;
bWinIoInitOK=false;
BitBtn1->Hint="打开文件";
BitBtn2->Hint="保存文件";
BitBtn3->Hint="呼叫";
BitBtn4->Hint="擦除芯片";
BitBtn5->Hint="读芯片";
BitBtn6->Hint="写芯片";
BitBtn7->Hint="校验";
BitBtn8->Hint="写加密位";
BitBtn9->Hint="读加密位";
BitBtn10->Hint="读芯片ID";
BitBtn11->Hint="自动编程";
//================================
bWinIoInitOK = InitializeWinIo();
if(!bWinIoInitOK)
{
Application->MessageBox("不能装载 WinIO 程序!","错误信息",MB_OK|MB_ICONSTOP);
Application->Terminate();
}
outportb(0x37a,0);
enableoutput();
unlock();
setreset();
enableprogram=penable();
lock();
}
//================================
__fastcall TForm1::~TForm1()
{
if(bWinIoInitOK)
{
unlock();
clrreset();
lock();
disableoutput();
ShutdownWinIo();
}
if(readbuff!=NULL)
delete [] readbuff;
if(prom!=NULL)
delete [] prom;
if(readchip!=NULL)
delete [] readchip;
}
//---------------------------------------------------------------------------
//打开文件
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
showtime();
if(OpenDialog1->Execute())
{
Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
if(Form1->prom==NULL)
Form1->prom=hextobin(promsize);
else
{
delete [] Form1->prom;
Form1->prom=hextobin(promsize);
}
}
}
//---------------------------------------------------------------------------
//将Memo1的内容保存
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
showtime();
if(readchip!=NULL)
{
if(SaveDialog1->Execute())
{
Memo1->Lines->SaveToFile(SaveDialog1->FileName);
}
}
}
//---------------------------------------------------------------------------
//弹出About对话框
void __fastcall TForm1::N11Click(TObject *Sender)
{
TOKBottomDlg *about;
about=new TOKBottomDlg(this);
about->Show();
}
//---------------------------------------------------------------------------
//重新复位单片机,联络
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
showtime();
clrreset();
setreset();
enableprogram=penable();
if(enableprogram)
Memo2->Lines->Add("单片机处于编程状态了");
}
//---------------------------------------------------------------------------
//获取芯片ID
void __fastcall TForm1::BitBtn10Click(TObject *Sender)
{
showtime();
if(enableprogram)
readID();
}
//---------------------------------------------------------------------------
//自动完成烧写数据,校验操作
void __fastcall TForm1::BitBtn11Click(TObject *Sender)
{
if(promsize>getromsize())
Form1->Memo2->Lines->Add("错误!烧写文件大于芯片ROM容量,或者通讯设备错误!");
else
{
BitBtn6Click(Sender); //烧写数据
BitBtn7Click(Sender); //校验数据
}
}
//---------------------------------------------------------------------------
//擦除芯片
void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{
showtime();
if(enableprogram)
erase();
}
//---------------------------------------------------------------------------
//进行烧写芯片操作
void __fastcall TForm1::BitBtn6Click(TObject *Sender)
{
unsigned int maxromsize;
showtime();
maxromsize=getromsize();
if(prom!=NULL) //if1
{
if(promsize<maxromsize)
{
erase();
Form1->Memo2->Lines->Add("正进行写数据操作,请稍等......");
pagewrite(prom,promsize);
} //end if1
else
Form1->Memo2->Lines->Add("错误!烧写文件大于芯片ROM容量,或者通讯设备错误!");
}
else
Form1->Memo2->Lines->Add("您还没有打开文件!");
}
//---------------------------------------------------------------------------
//校验
void __fastcall TForm1::BitBtn7Click(TObject *Sender)
{
unsigned char order[4];
unsigned int i;
bool ok;
showtime();
if(prom!=NULL) //if1
{
ok=true;
if(readbuff!=NULL)
{
delete [] readbuff;
}
readbuff=new unsigned char[promsize];
Form1->Memo2->Lines->Add("正进行从芯片中读取数据进行校验,请稍等......");
pageread(readbuff,promsize);
for(i=0;i<promsize;i++)
{
if((*(Form1->prom+i))!=(*(readbuff+i)))
{
ok=false;
}
}
if(ok)
{
Memo2->Lines->Add("芯片内部的数据与打开文件的一样!");
}
else
{
Memo2->Lines->Add("校验出错");
delete [] readbuff;
readbuff=NULL;
}
}
else
Form1->Memo2->Lines->Add("您还没有打开文件!");
}
//---------------------------------------------------------------------------
//将芯片ROM中的所以数据都读取出来(进行页读)
void __fastcall TForm1::BitBtn5Click(TObject *Sender)
{
int i;
showtime();
if(enableprogram)
{
if(readchip!=NULL)
delete [] readchip;
i=getromsize();
if(i!=0)
{
readchip=new unsigned char [i];
Memo2->Lines->Add("正在读取芯片的数据,请稍等......");
pageread(readchip,i);
bintohex(readchip);
Memo2->Lines->Add("已经将数据转换为HEX文件格式,请参考左边的文本框。");
}
else
Memo2->Lines->Add("不能确定芯片ROM的大小!");
}
}
//---------------------------------------------------------------------------
//读取芯片的加密位情况
void __fastcall TForm1::BitBtn9Click(TObject *Sender)
{
showtime();
relockbit();
}
//---------------------------------------------------------------------------
//加密芯片
void __fastcall TForm1::BitBtn8Click(TObject *Sender)
{
showtime();
wrlockbit(3);
relockbit();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::showtime(void)
{
TDateTime DateTime;
AnsiString str;
DateTime=Time();
str=TimeToStr(DateTime);
Form1->Memo2->Lines->Add(str);
}
//====================================
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//菜单按钮
//open
void __fastcall TForm1::N3Click(TObject *Sender)
{
BitBtn1Click(Sender);
}
//---------------------------------------------------------------------------
//save
void __fastcall TForm1::N2Click(TObject *Sender)
{
BitBtn2Click(Sender);
}
//---------------------------------------------------------------------------
//quit
void __fastcall TForm1::exit1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
//recall
void __fastcall TForm1::N5Click(TObject *Sender)
{
BitBtn3Click(Sender);
}
//---------------------------------------------------------------------------
//erase
void __fastcall TForm1::N6Click(TObject *Sender)
{
BitBtn4Click(Sender);
}
//---------------------------------------------------------------------------
//read chip
void __fastcall TForm1::N7Click(TObject *Sender)
{
BitBtn5Click(Sender);
}
//---------------------------------------------------------------------------
//program
void __fastcall TForm1::N8Click(TObject *Sender)
{
BitBtn6Click(Sender);
}
//---------------------------------------------------------------------------
//verify
void __fastcall TForm1::N13Click(TObject *Sender)
{
BitBtn7Click(Sender);
}
//---------------------------------------------------------------------------
//write lock bit
void __fastcall TForm1::N9Click(TObject *Sender)
{
BitBtn8Click(Sender);
}
//---------------------------------------------------------------------------
//read lock bit
void __fastcall TForm1::N10Click(TObject *Sender)
{
BitBtn9Click(Sender);
}
//---------------------------------------------------------------------------
//read id
void __fastcall TForm1::ID1Click(TObject *Sender)
{
BitBtn10Click(Sender);
}
//---------------------------------------------------------------------------
//AUTO program
void __fastcall TForm1::N12Click(TObject *Sender)
{
BitBtn11Click(Sender);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -