遥望科西嘉 2015-04-22 03:57 采纳率: 0%
浏览 2517

程序运行CPU占用率过高,只是一个度读写得的程序,但是不明白为什么,代码如下

CFileDialog file_dlg(TRUE);

file_dlg.m_ofn.lpstrTitle="读取数据对话框  write by wang";
file_dlg.m_ofn.lpstrFilter="Text File(*.dat)\0*.dat\0All File(*.*)\0*.*\0\0";
if(IDOK==file_dlg.DoModal())
{
   CFile read_file(file_dlg.GetFileName(),CFile::modeRead);
   unsigned int file_length=read_file.GetLength();
   unsigned char *pbuf;
   unsigned int i,j,u,TotalNum,Pos=0;
   pbuf=new unsigned char[file_length];
   read_file.Read(pbuf,file_length);
   read_file.Close();
   TotalNum=file_length/204;
   unsigned int *TagTable=new unsigned int[TotalNum];
   memset(TagTable,0,TotalNum);


   for(i=0;i<file_length;i++)
   {
      if((pbuf[i]==0x46)&&(pbuf[i+1]==0x54)&&(pbuf[i+204]==0x24)&&(pbuf[i+205]==0x24))
      {
         TagTable[Pos++]=i;
      }
   }
   CString PointSaveCurrent;
   CString PointSave;
   PointSave=_T("");
   PointSaveCurrent=_T("");
   float *vertex=new float[(Pos)*200];
   float *angle=new float[Pos];
   double pi=3.1415926;
   unsigned int point=0;

   for(i=0;i<Pos;i++)
   {
        j=TagTable[i];
        PointSaveCurrent.Format("第%d帧:\r\n",i+1);
        PointSave+=PointSaveCurrent;
        for(u=0;u<100;u++)
        {
          point=pbuf[u*2+j+4]+pbuf[u*2+j+5]*256;
          vertex[u*2+i*200]=point*sin((50.0-u)/180*pi);
          vertex[u*2+1+i*200]=point*cos((50.0-u)/180*pi);
          angle[i]=(pbuf[j+206]*256.0+pbuf[j+207])/100.0;
          PointSaveCurrent.Format("x:%f   y:%f   角度:%f\r\n",vertex[u*2+i*200],vertex[u*2+1+i*200],angle[i]);
          PointSave+=PointSaveCurrent;
        }
       //memset(point,0,100);
   }
   CFile file("data.txt",CFile::modeCreate|CFile::modeWrite);
   file.Write(PointSave,strlen(PointSave));
   file.Flush();
   file.Close();
   delete[] vertex;
   delete[] angle;
   delete[] TagTable;
   delete[] pbuf;
   vertex=NULL;
   angle=NULL;
   TagTable=NULL;
   pbuf=NULL;
}
  • 写回答

4条回答 默认 最新

  • 宝龙哥 2015-04-22 04:07
    关注

    循环当中需要响应系统消息,这个不知道在你的开发工具中是否可以使用或有替代:Application->ProcessMessages(); // 在长时间循环中响应消息

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序