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

📄 main.cpp

📁 dsp下载器上位机程序 感兴趣的朋友可以下来
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        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 + -