📄 main.cpp
字号:
for(int j=0;j<176;j++){
value=buff[i*176+j];
//LBMain->Items->Add(buf);
LBMain->Canvas->Pixels[2*i+0][j]=(TColor)RGB(value,value,value);
LBMain->Canvas->Pixels[2*i+1][j]=(TColor)RGB(value,value,value);
}
}
//List(0x0000C204,buff,6336);
}
//---------------------------------------------------------------------------
// 在ListBox中显示
//---------------------------------------------------------------------------
void TFmMain::List(DWORD addr,PUCHAR pBuf,DWORD len)
{
int m,n;
int i,j;
char buf[65536];
m=len/16;
n=len%16;
for(i=0;i<m;i++){
wsprintf(buf,"%08X: ",addr+i*16);
for(j=0;j<16;j++){
wsprintf(buf+10+j*3,"%02X ",pBuf[i*16+j]);
}
wsprintf(buf+10+16*3," ");
for(j=0;j<16;j++){
if(pBuf[i*16+j]>=0x20)
wsprintf(buf+10+16*3+1+j,"%c ",pBuf[i*16+j]);
else
wsprintf(buf+10+16*3+1+j,".",pBuf[i*16+j]);
}
LBMain->Items->Add(buf);
}
if(n!=0){
wsprintf(buf,"%08X:",addr+i*16);
for(j=0;j<n;j++){
wsprintf(buf+10+j*3,"%02X ",pBuf[i*16+j]);
}
wsprintf(buf+10+16*3," ");
for(j=0;j<n;j++){
if(pBuf[i*16+j]>=0x20)
wsprintf(buf+10+16*3+1+j,"%c",pBuf[i*16+j]);
else
wsprintf(buf+10+16*3+1+j,".",pBuf[i*16+j]);
}
LBMain->Items->Add(buf);
}
}
//---------------------------------------------------------------------------
// 清除ListBox内容
//---------------------------------------------------------------------------
void __fastcall TFmMain::BitBtn6Click(TObject *Sender)
{
LBMain->Items->Clear();
Cyc->Text=" ";
Enum->Text=" ";
PnText->Caption=" ";
CG->Progress=0;
}
//---------------------------------------------------------------------------
//读写数据测试
//---------------------------------------------------------------------------
void __fastcall TFmMain::Button5Click(TObject *Sender)
{
PnText->Caption=" ";
PnText->Caption="数据读写测试正在进行...";
DWORD i,j,k;
char tempbuf[32];
BOOL symbol=false;
static UINT count;
static UINT succ;
CG->Progress=0;
for(k=0;k<10;k++){
PnText->Caption="数据读写测试正在进行...";
for(i=0;i<96000;i++){
wdata[i]=i+k;
}
Writedata(0xB0000000,96000,wdata);
Sleep(1);
SGetBuff4B(0xB0000000,96000,buff);
for(j=4;j<96000;j++){
if(buff[j]!=wdata[j]){
symbol=true;
break;
}
}
CG->Progress=(k+1)*100/10;
if(symbol){
Cyc->Text=k;
PnText->Caption="数据读写测试正在进行...";
sprintf(tempbuf,"%x",j);
Enum->Text=tempbuf;
LBMain->Items->Add("读出数据:");
List(0xB0000000,buff,96000);
LBMain->Items->Add("写入数据:");
List(0xB0000000,wdata,96000);
break;
}
for(j=0;j<96000;j++){
buff[j]=0x00;
}
}
count++;
Ecount->Text=count;
Cyc->Text=k;
if(!symbol){
succ++;
LBMain->Items->Add("写入数据成功!");
PnText->Caption="数据读写测试完成";
List(0xB0000000,wdata,96000);
Esucc->Text=succ;
}
else
PnText->Caption="数据读写测试失败";
}
//---------------------------------------------------------------------------
//发送n字节数据
//---------------------------------------------------------------------------
void TFmMain::Writedata(DWORD addr,DWORD n,UCHAR *pdata)
{
DWORD i;
succ=SetPortVal(CTL,0xE5,1); // EPP输出
succ=SetPortVal(EPA,0x00,1); // 写地址(计数器复位)
Put4B(0x00000008);
Put4B(addr);
for(i=0;i<n;i++){
if(i%4==0){
succ=SetPortVal(EPD,*(pdata+i+3),1);
succ=SetPortVal(EPD,*(pdata+i+2),1);
succ=SetPortVal(EPD,*(pdata+i+1),1);
succ=SetPortVal(EPD,*(pdata+i+0),1);
}
}
Fill();
succ=SetPortVal(CTL,0xE4,1); // EPP输入
}
//---------------------------------------------------------------------------
// 向Flash写一个字节
//---------------------------------------------------------------------------
void TFmMain::FSendByte(UINT addr,UCHAR data)
{
int i;
SetPortVal(CTL,0xE5,1); // 允许EPP写(IZ)
for(i=0;i<3;i++){
SetPortVal(EPA,0x00,1); // 写地址(计数器复位)
Put4B(0x00000008);
Put4B(0x90000000+PBD[i*2]*4);
Put4B(PBD[i*2+1]);
}
SetPortVal(EPA,0x00,1); // 写地址(计数器复位)
Put4B(0x00000008);
Put4B(0x90000000+addr*4);
Put4B((UINT)data);
Fill();
SetPortVal(CTL,0xE4,1); // 允许EPP读(IZ)
}
//---------------------------------------------------------------------------
// 缓冲区填充
//---------------------------------------------------------------------------
void TFmMain::Fill()
{
SetPortVal(EPA,0x00,1); // 写地址(计数器复位)
Put4B(0x00080008); // 写HPIC
Put4B(0xFFFFFFFC); // 写HPIA
Put4B(0xFFFFFFFF); // 写HPID
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//读取图像函数
//---------------------------------------------------------------------------
void __fastcall TFmMain::RImageClick(TObject *Sender)
{
UINT i,j;
UCHAR value;
ULONG addr;
ULONG LnStt;
ULONG LnEnd;
TCanvas *pCanvas = LBMain->Canvas;
//ReadData(Buff,0x01F8,8);
//succ=dsk6x_open("dsk6x11.cfg",&hBoard); // 打开与DSK的连接
//succ=dsk6x_hpi_open(hBoard); // 打开与HPI的连接
//length=4; // Rows数组起始地址为4字节
//succ=dsk6x_hpi_read(hBoard,&addr,&length,0x01F0); // 读取Rows数据起始地址到addr
//length=4*256; // Rows数组内容为4*256字节
//succ=dsk6x_hpi_read(hBoard,Rows,&length,addr); // 读取Rows数组内容到Rows数组
//succ=dsk6x_hpi_close(hBoard); // 断开与HPI的连接
//succ=dsk6x_hpi_open(hBoard); // 打开与HPI的连接
//for(i=0;i<120;i++){ // 行
// length=800;
// CG->Progress=i*120/(90);
// succ=dsk6x_hpi_read(hBoard,(PULONG)(&datas[800*i]),&length,0x80000000+800*i);
// Application->ProcessMessages();
//}
/* for(i=0;i<96000;i=i+10){
datas[i]=0x00;
datas[i+1]=0x00;
datas[i+2]=0x00;
datas[i+3]=0x00;
datas[i+4]=0x00;
datas[i+5]=0xff;
datas[i+6]=0xff;
datas[i+7]=0xff;
datas[i+8]=0xff;
datas[i+9]=0xff;
}*/
SGetBuff4B(0xB0000000,96000,datas);
for(i=0;i<120;i++){ // 循环画点
for (j=0;j<800;j++){
value=datas[800*i+j];
value=wdata[800*i+j];
pCanvas->Pixels[j][2*i+0]=(TColor)RGB(value,value,value);
pCanvas->Pixels[j][2*i+1]=(TColor)RGB(value,value,value);
}
CG->Progress=i;
}
CG->Progress=100;
// succ=dsk6x_hpi_close(hBoard); // 断开与HPI的连接
// succ=dsk6x_close(hBoard); // 打开与DSK的连接
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//写入图像测试函数(图像数据为黑白条文)
//---------------------------------------------------------------------------
void __fastcall TFmMain::WIdataClick(TObject *Sender)
{
DWORD i;
PnText->Caption="数据写入正在进行...";
for(i=0;i<96000;i=i+10){
wdata[i]=0x00;
wdata[i+1]=0x00;
wdata[i+2]=0x00;
wdata[i+3]=0x00;
wdata[i+4]=0x00;
wdata[i+5]=0xff;
wdata[i+6]=0xff;
wdata[i+7]=0xff;
wdata[i+8]=0xff;
wdata[i+9]=0xff;
}
Writedata(0xB0000000,96000,wdata);
PnText->Caption="数据完成";
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// 程序结束
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -