文件读写

OnBnClickedWrite()
{
  // TODO: Add your control notification handler code here
 try
 {  
  CString pathName;
  WCHAR szFilters[]=
   _T("Hex Files (*.hex)|*.hex|All Files (*.*)|*.*||");

  CFileDialog fileDlg (TRUE, _T("my"), _T("*.hex"),
   OFN_FILEMUSTEXIST| OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT, szFilters, this);
  if( fileDlg.DoModal ()!=IDOK )
  {
   return ;
  }

  HANDLE pDev = NULL;
  int outLength;
  BYTE *outBuffer=NULL;
  outBuffer =(BYTE*) malloc(262144);
  CFile f;
  POSITION pos;
  int fileNum = 0;
  int a = 0;
  for (pos = fileDlg.GetStartPosition(); pos; )
  {
   fileNum++;
   pathName = fileDlg.GetNextPathName(pos);
   f.Open(pathName,CFile::bufferRead|CFile::modeRead,0);
   if (outBuffer)
   {
    outLength = f.GetLength();
    f.Read(outBuffer, outLength);
   }
   else
   {
    return ;
   }
   f.Close();

   char output[256];

   a = LoadToDdr(&pDev ,outLength,outBuffer);
  } 
  char output[256];
  sprintf( output,"测试成功!/r/n共发送%03d字节", a*512*fileNum);
  m_strTestDisplay=output;
  free(outBuffer);
  CloseHandle(pDev);
  UpdateData(false);  
 }
 catch(...)
 {
  //DISPLAY E
  MessageBox(_T("error!"));
 }
}

 

//

OnBnClickedRead()
{
 // TODO: Add your control notification handler code here
 try
 {
  HANDLE pDev = NULL;
  BYTE *inBuffer=NULL;
  char temp[256];
  inBuffer = (BYTE*)malloc(1536);
  char output[256];
  int a = ReadFromDdr2(&pDev ,startReAdd,
   1536,inBuffer);
  startReAdd += 192;
  //DISPLAY A
  sprintf( output,"测试成功!/r/n共接收了%03d字节/r/n", a );
  m_strTestDisplay=output;
  sprintf(output,"");
  
  for (int i=0;i<1536;i++)
  {
   sprintf(temp,"%02X ",inBuffer[i]);
   strcat(output,temp);
   m_strTestDisplay+=output;
   sprintf(output,"");
   if((i+1)%32==0 && i!=0) { 
    m_strTestDisplay+="/r/n";
    if(i%1536==0 && i!=0) UpdateData(FALSE);
   } 
  }
  m_strTestDisplay+="/r/n";

  
  free(inBuffer);
  CloseHandle(pDev);
  UpdateData(false);
 }
 catch(...)
 {
  //DISPLAY E
  MessageBox(_T("error!"));
 }
}

 

//

OnBnClickedReadToFile()
{
 // TODO: Add your control notification handler code here
 try
 {
  HANDLE pDev = NULL;
  BYTE *inBuffer = NULL;
  char temp[256];
  int readLength = 0;

  UpdateData(TRUE);
  std::wstring str(m_strReadLength.GetBuffer());  
  readLength = boost::lexical_cast<int,std::wstring>(str);
  inBuffer = (BYTE*)malloc(readLength);
  int sentCount = readLength / 1536;
  int i = 0;
  CString pathName;
  WCHAR szFilters[]=
   _T("Hex Files (*.hex)|*.hex|All Files (*.*)|*.*||");

  CFileDialog fileDlg (FALSE, _T("my"), _T("*.hex"),
   OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);
  if( fileDlg.DoModal ()==IDOK )
  {
   pathName = fileDlg.GetPathName();
   CString fileName = fileDlg.GetFileTitle ();

   SetWindowText(fileName);
  }
  else
  {   
   return ;
  }

  CFile f;
  f.Open(pathName,CFile::modeReadWrite|CFile::modeCreate,0);
  f.Close();
  char output[256];
  for (i = 0; i < sentCount; i++)
  { 
   int a = ReadFromDdr2(&pDev ,startReAdd,
    1536,inBuffer);
   startReAdd += 192;
   
   f.Open(pathName,CFile::modeReadWrite|CFile::shareExclusive,0);
   if (inBuffer)
   {    
    f.SeekToEnd();
    f.Write(inBuffer, 1536);
   }
   else
   {
    return ;
   }
   f.Close();
  }
  sprintf( output,"测试成功!/r/n共接收了%03d字节/r/n", 1536*i );
  m_strTestDisplay=output;

  free(inBuffer);
  CloseHandle(pDev);
  UpdateData(false);
 }
 catch(...)
 {
  //DISPLAY E
  MessageBox(_T("error!"));
 }
}

 

//

OnBnClickedWriteByAdd()
{
 // TODO: Add your control notification handler code here
 try
 {  
  UpdateData(TRUE);
  std::wstring strAdd(m_strWriteAdd.GetBuffer());  
  startWrAdd = boost::lexical_cast<unsigned,std::wstring>(strAdd);

  CString pathName;
  WCHAR szFilters[]=
   _T("Hex Files (*.hex)|*.hex|All Files (*.*)|*.*||");

  CFileDialog fileDlg (TRUE, _T("my"), _T("*.hex"),
   OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);
  if( fileDlg.DoModal ()==IDOK )
  {
   pathName = fileDlg.GetPathName();
   CString fileName = fileDlg.GetFileTitle ();

   SetWindowText(fileName);
  }
  else
  {   
   return ;
  }


  HANDLE pDev = NULL;

  int outLength;
  BYTE *outBuffer=NULL;
  outBuffer =(BYTE*) malloc(276480);
  CFile f;
  f.Open(pathName,CFile::bufferRead|CFile::modeRead,0);
  if (outBuffer)
  {
   outLength = f.GetLength();
   f.Read(outBuffer, outLength);
  }
  else
  {
   return ;
  }
  f.Close();

  char output[256];

  int a = LoadToDdr2(&pDev ,startWrAdd,
   outLength,outBuffer);
  startWrAdd += outLength/8;
  //DISPLAY A
  sprintf( output,"测试成功!/r/n共发送%03d字节", a*512);
  m_strTestDisplay=output;
  free(outBuffer);
  CloseHandle(pDev);
  UpdateData(false);  
 }
 catch (CMemoryException* e)
 {
  MessageBox(_T("CMemoryException!"));
 }
 catch (CFileException* e)
 {
  MessageBox(_T("CFileException!"));
 }
 catch (CException* e)
 {
  MessageBox(_T("CException!"));
 } 
 catch(...)
 {
  //DISPLAY E
  MessageBox(_T("error!"));
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值