DIY编程器网

标题: uuprog开发教程:芯片支持库维护7 [打印本页]

作者: liyf    时间: 2015-1-1 11:52
标题: uuprog开发教程:芯片支持库维护7
这个是个很重要的功能,保存功能必须和加载的对应,不然你知道的,读出来肯定不是你需要的,再然后操作芯片也不是你需要的,再然后出问题也不是你需要的。
下面就是操作函数,非常乏味的处理过程,有兴趣的一定要跟一遍,不然你肯定不明白。
  1. void CProgDeviceManage::OnOK()
  2. {
  3.         // TODO: Add extra validation here
  4.         CFile savefile;
  5.         TypeStruct* pTypeStruct;
  6.         TypeStruct1* pTypeStruct1;

  7.         //保存文件代码
  8.         parent->SetAppLog("保存开始...");
  9.         if(savefile.Open(parent->m_sAppPath+"device.pdl",CFile::shareCompat|CFile::modeCreate|CFile::modeWrite,NULL))
  10.         {
  11.         ZeroMemory(&m_stDFileHead, sizeof(DeviceListFileHeadStruct));
  12.         strcpy(m_stDFileHead.Appname,"UUProg V"+parent->m_sAppVer);
  13.         strcpy(m_stDFileHead.DeviceListFileVer,parent->m_sAppVer);
  14.         m_stDFileHead.DeviceCount = parent->m_arDeviceList.GetSize();
  15.         m_stDFileHead.TypeListCount = parent->m_arTypeList.GetSize();
  16.         m_stDFileHead.OperationListCount = parent->m_arOperationList.GetSize();
  17.         m_stDFileHead.SizeListCount = parent->m_arSizeList.GetSize();
  18.         m_stDFileHead.PinListCount = parent->m_arPinList.GetSize();
  19.         m_stDFileHead.DataWidthListCount = parent->m_arDataWidthList.GetSize();
  20.         m_stDFileHead.PackageListCount = parent->m_arPackageList.GetSize();
  21.         m_stDFileHead.VCCListCount = parent->m_arVCCList.GetSize();
  22.         m_stDFileHead.VPPListCount = parent->m_arVPPList.GetSize();
  23.         m_stDFileHead.AdapterListCount = parent->m_arAdapterList.GetSize();
  24.         
  25.         savefile.Write(&m_stDFileHead,sizeof(DeviceListFileHeadStruct));
  26.                 //Type List
  27.                 for (int i=0; i<parent->m_arTypeList.GetSize(); i++)
  28.                 {
  29.                         pTypeStruct = &parent->m_arTypeList.GetAt(i);
  30.                         savefile.Write(pTypeStruct,sizeof(TypeStruct));
  31.                 }

  32.                 //Operation List
  33.                 for (i=0; i<parent->m_arOperationList.GetSize(); i++)
  34.                 {
  35.                         pTypeStruct = &parent->m_arOperationList.GetAt(i);
  36.                         savefile.Write(pTypeStruct,sizeof(TypeStruct));
  37.                 }

  38.                 //Size List
  39.                 for (i=0; i<parent->m_arSizeList.GetSize(); i++)
  40.                 {
  41.                         pTypeStruct = &parent->m_arSizeList.GetAt(i);
  42.                         savefile.Write(pTypeStruct,sizeof(TypeStruct));
  43.                 }

  44.                 //Pin List
  45.                 for (i=0; i<parent->m_arPinList.GetSize(); i++)
  46.                 {
  47.                         pTypeStruct = &parent->m_arPinList.GetAt(i);
  48.                         savefile.Write(pTypeStruct,sizeof(TypeStruct));
  49.                 }

  50.                 //DataWidth List
  51.                 for (i=0; i<parent->m_arDataWidthList.GetSize(); i++)
  52.                 {
  53.                         pTypeStruct = &parent->m_arDataWidthList.GetAt(i);
  54.                         savefile.Write(pTypeStruct,sizeof(TypeStruct));
  55.                 }

  56.                 //Package List
  57.                 for (i=0; i<parent->m_arPackageList.GetSize(); i++)
  58.                 {
  59.                         pTypeStruct = &parent->m_arPackageList.GetAt(i);
  60.                         savefile.Write(pTypeStruct,sizeof(TypeStruct));
  61.                 }
  62.                
  63.                 //VCC List
  64.                 for (i=0; i<parent->m_arVCCList.GetSize(); i++)
  65.                 {
  66.                         pTypeStruct1 = &parent->m_arVCCList.GetAt(i);
  67.                         savefile.Write(pTypeStruct1,sizeof(TypeStruct1));
  68.                 }

  69.                 //VPP List
  70.                 for (i=0; i<parent->m_arVPPList.GetSize(); i++)
  71.                 {
  72.                         pTypeStruct1 = &parent->m_arVPPList.GetAt(i);
  73.                         savefile.Write(pTypeStruct1,sizeof(TypeStruct1));
  74.                 }

  75.                 //Adapter List
  76.                 for (i=0; i<parent->m_arAdapterList.GetSize(); i++)
  77.                 {
  78.                         pTypeStruct = &parent->m_arAdapterList.GetAt(i);
  79.                         savefile.Write(pTypeStruct,sizeof(TypeStruct));
  80.                 }

  81.                 //Device List
  82.                 for (i=0; i<parent->m_arDeviceList.GetSize(); i++)
  83.                 {
  84.                         m_stDFile = parent->m_arDeviceList.GetAt(i);
  85.                         savefile.Write(&m_stDFile,sizeof(DeviceListFileStruct));
  86.                 }
  87.                 savefile.Close();
  88.         parent->SetAppLog("保存完成");
  89.         }        
  90.         else
  91.         {
  92.                 parent->SetAppLog("保存失败");
  93.         }
  94.         
  95.         CDialog::OnOK();
  96. }
复制代码
基本就是不停的循环,不停的写盘。


作者: dna-jm    时间: 2017-10-19 09:26
感谢分享,不错的编程器




欢迎光临 DIY编程器网 (http://www.diybcq.com/) Powered by Discuz! X3.2