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

📄 tableoperation.cpp

📁 测井软件刻度的框价程序,对测井软件的开发有价值.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	 MCTBL[i].OPTIONS.tp=0;
	 MCTBL[i].OPTIONS.cp=0;
	 MCTBL[i].OPTIONS.sp=0;
                              /*根据读取值设置选择项值*/
	 if(((buff1[12])&(0x80))!=0x00)MCTBL[i].OPTIONS.ac=1;
	 if(((buff1[12])&(0x20))!=0x00)MCTBL[i].OPTIONS.cm=1;
	 if(((buff1[12])&(0x10))!=0x00)MCTBL[i].OPTIONS.lg=1;
	 if(((buff1[12])&(0x08))!=0x00)MCTBL[i].OPTIONS.tp=1;
	 if(((buff1[12])&(0x04))!=0x00)MCTBL[i].OPTIONS.cp=1;
	 if(((buff1[12])&(0x01))!=0x00)MCTBL[i].OPTIONS.sp=1;

	 MCTBL[i].GALVOS.x10=buff1[29];//读取检流计号
	 MCTBL[i].GALVOS.x2=buff1[30];
     MCTBL[i].GALVOS.bu=buff1[31];

	 MCTBL[i].AOPTION.crtflg=0;  // 设置附加OPTIONS项参数(crtflg,corcrv,crvoff,spcrv)
	 MCTBL[i].AOPTION.corcrv=0;      
	 MCTBL[i].AOPTION.crvoff=0;
	 MCTBL[i].AOPTION.spcrv=0;


	 tem1=buff1[14];      /* 读取刻度乘因子 */
	 tem2=buff1[15];
	 x1=256*tem1+tem2;

	 tem1=buff1[16];
	 tem2=buff1[17];
	 x2=256*tem1+tem2;

	 MCTBL[i].MULT=f3786(x1,x2);

	 tem1=buff1[18];      /* 读取刻度加因子 */
	 tem2=buff1[19];
	 x1=256*tem1+tem2;

	 tem1=buff1[20];
	 tem2=buff1[21];
	 x2=256*tem1+tem2;

	 MCTBL[i].ADD=f3786(x1,x2);

	 tem1=buff1[50];      /* 读取记录仪的低工程值LOW */
	 tem2=buff1[51];
	 x1=256*tem1+tem2;

	 tem1=buff1[52];
	 tem2=buff1[53];
	 x2=256*tem1+tem2;

	 MCTBL[i].LOW=f3786(x1,x2);

	 tem1=buff1[54];      /* 读取记录仪的高工程值LOW */
	 tem2=buff1[55];
	 x1=256*tem1+tem2;

	 tem1=buff1[56];
	 tem2=buff1[57];
	 x2=256*tem1+tem2;

	 MCTBL[i].HIGH=f3786(x1,x2);

	 tem1=buff1[36];      /* 读取CRT乘因子 */
	 tem2=buff1[37];
	 x1=256*tem1+tem2;

	 tem1=buff1[38];
	 tem2=buff1[39];
	 x2=256*tem1+tem2;

	 MCTBL[i].CRTMULT=f3786(x1,x2);

	 tem1=buff1[40];      /* 读取CRT加因子 */
	 tem2=buff1[41];
	 x1=256*tem1+tem2;

	 tem1=buff1[42];
	 tem2=buff1[43];
	 x2=256*tem1+tem2;

	 MCTBL[i].CRTADD=f3786(x1,x2);

	 MCTBL[i].CRTMIN=256*buff1[44]+buff1[45];//读取CRT最小和最大坐标
	 MCTBL[i].CRTMAX=256*buff1[46]+buff1[47];

     MCTBL[i].filter=buff1[32];        /* 读取滤波器号 */

	 MCTBL[i].DELAY=256*buff1[8]+buff1[9];  /* 读取延迟量 */

	 MCTBL[i].POSLO=buff1[48];    /* 读取 high P/R and low P/R */
	 MCTBL[i].POSHI=buff1[49];

	 MCTBL[i].BACKUP.O=0;     /* 初始化后备计算信息*/
	 MCTBL[i].BACKUP.C=0;
	 MCTBL[i].BACKUP.U=0;

	 MCTBL[i].GALVOS.pr=(0x000f)&(buff1[28]);//读取主检流计号以及设置越界处理标志
	 if(((0x0040)&(buff1[28]))==0x00)   MCTBL[i].BACKUP.O=1;
	 if(((0x0010)&(buff1[28]))==0x00)   MCTBL[i].BACKUP.C=1;
	 if(((0x0020)&(buff1[28]))!=0x00)   MCTBL[i].BACKUP.U=1;

	 MCTBL[i].GALVOS.x10=buff1[29];   /* 读取 x10 和 x0.2检流计号 */
	 MCTBL[i].GALVOS.x2=buff1[30];
   }
     file.Close();
   
	}
}




TableOperation::OnTableDisplay()
{
}


TableOperation::OnTableWrite()
{   
	unsigned int i,i1,x1,x2,curvetrue=0;
	unsigned char buff1[64];
    unsigned int y[4]={0,0,0,0};
    for(i=0;i<2560;i++)
	   buffer[i]=0x00;//清空存储缓冲区buffer

    CFileDialog WriteFileDialog(0,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"测井服务表(*.*)|*.*|");	
	if(WriteFileDialog.DoModal()==IDOK)
	{    
		for(i=0;i<6;i++)
			tablenum[i]=0;
		CString filename=WriteFileDialog.GetFileName();
	    memcpy(tablenum,filename,6); //将CString类转换为Z字符数组的第一种解决方法
		//tablenum=filename.GetBuffer(filename.GetLength());//第二种解决方法
	    //tablenum=(LPSTR)(LPCTSTR)filename; //第三种解决方法
	
		for(i=0;i<6;i++)
			buffer[i]=(unsigned char)tablenum[i];  //保存服务表号
       
//************************************************************************************			
//保存CRT表至存储缓冲区buffer

	    if(crttbl.UNITS[0]=='E')
		{
		buffer[2176+16]=0x00;
		buffer[2176+17]=0x00;
		}
	    if(crttbl.UNITS[0]=='M')
		{
			buffer[2176+16]=0x00;
			buffer[2176+17]=0x01;
		}
	    for(i=0;i<8;i++)
		{
		buffer[i+2560-36]=0x20;
		}
    	i1=0;
    	for(i=2560-36;i<2560-36+3;i++)
		{
		buffer[i]=crttbl.UPPGRID[i1];
		i1=i1+1;
		}
	    i1=0;
    	for(i=2560-36+4;i<2560-36+4+3;i++)
		{
		buffer[i]=crttbl.LOWGRID[i1];
		i1=i1+1;
		}
		
//************************************************************************
//保存表SRTTBL至存储缓冲区buffer
		i=6;
		for(i1=0;i1<20;i1++)
		{
			buffer[i]=(int)(order[i1]/256);
			i=i+1;
			buffer[i]=order[i1]-256*buffer[i];
			i=i+1;
			if(order[i1]==0x8000)
				break;
		}
		if(order[i1]!=0x8000)
		{
			i=53;
			for(i1=20;i1<25;i1++)
			{
				buffer[i]=(int)(order[i1]/256);
				i=i+1;
				buffer[i]=order[i1]-256*buffer[i];
				i=i+1;
				if(order[i1]==0x8000)
					break;
			}
		}
//**************************************************************************
//保存表STATBL至存储缓冲区buffer

		buffer[32+14]=samrate;
		i1=0;
		for(i=32+15;i<32+15+18;i++)
		{
			buffer[i]=relay[i1];
			if(relay[i1]==0xff)
				break;
			i1=i1+1;
		}

//*************************************************************************
//保存表CALTBL至存储缓冲区buffer

		for(i=0;i<=10;i++)
		{
			if((TNAME[i].toolname[0]=='F')&&(TNAME[i].toolname[1]=='F'))
			{
				for(i1=0;i1<2;i1++)
				{
					buffer[64+16+i*6+i1]=0xff;
				}
				break;
			}
			else
			{
				for(i1=0;i1<=5;i1++)
				{
					buffer[64+16+i*6+i1]=TNAME[i].toolname[i1];
				}
			}
		}
//***************************************************************************
//保存表CMLTBL至存储缓冲区buffer

		buffer[66]=UPP_SCALE_COM;
		buffer[67]=LOW_SCALE_COM;
		x1=0;
		x2=1;
		for(i=1;i<16;i++)
		{
			x1=x1+(TYPE[i].BIT.uall)*x2;
			x2=x2*2;
		}
		buffer[64+4]=x1/256;
		buffer[64+5]=x1-256*buffer[64+4];
		/*****************/
		x1=0;
		x2=1;
		for(i=1;i<16;i++)
		{
			x1=x1+(TYPE[i].BIT.lall)*x2;
			x2=x2*2;
		}
		buffer[64+4+2]=x1/256;
		buffer[64+5+2]=x1-256*buffer[64+4+2];
		/*****************/
		x1=0;
		x2=1;
		for(i=1;i<16;i++)
		{
			x1=x1+(TYPE[i].BIT.udotted)*x2;
			x2=x2*2;
		}
		buffer[64+4+4]=x1/256;
		buffer[64+5+4]=x1-256*buffer[64+4+4];
		/*****************/
		x1=0;
		x2=1;
		for(i=1;i<16;i++)
		{
			x1=x1+(TYPE[i].BIT.ldotted)*x2;
			x2=x2*2;
		}
		buffer[64+4+6]=x1/256;
		buffer[64+5+6]=x1-256*buffer[64+4+6];
		/*****************/
		x1=0;
		x2=1;
		for(i=1;i<16;i++)
		{
			x1=x1+(TYPE[i].BIT.udashed)*x2;
			x2=x2*2;
		}
		buffer[64+4+8]=x1/256;
		buffer[64+5+8]=x1-256*buffer[64+4+8];
		/*****************/
		x1=0;
		x2=1;
		for(i=1;i<16;i++)
		{
			x1=x1+(TYPE[i].BIT.ldashed)*x2;
			x2=x2*2;
		}
		buffer[64+4+10]=x1/256;
		buffer[64+5+10]=x1-256*buffer[64+4+10];
		
//***********************************************************************
//保存表MCTBL至存储缓冲区buffer

    for(i=0;i<32 /*curvenumber*/;i++)
      {
	for(i1=0;i1<64;i1++)
	   {
	     buff1[i1]=0x00;
	   }
	if ((MCTBL[i].crvnam[0]=='/')||(MCTBL[i].crvnam[1]=='/')
	   ||(MCTBL[i].crvnam[2]=='/')||(MCTBL[i].crvnam[3]=='/'))
	  {
	    MCTBL[i].crvnam[0]='/';
	    MCTBL[i].crvnam[1]='\0';
	    MCTBL[i].LOW=0.0;
	    MCTBL[i].HIGH=0.0;
	  }
	f8637(MCTBL[i].LOW,y);
	buff1[50]=y[0];
	buff1[51]=y[1];
	buff1[52]=y[2];
	buff1[53]=y[3];

	f8637(MCTBL[i].HIGH,y);
	buff1[50+4]=y[0];
	buff1[51+4]=y[1];
	buff1[52+4]=y[2];
	buff1[53+4]=y[3];

	for(i1=0;i1<6;i1++)
	  {
	    if (((MCTBL[i].crvnam[i1]>='A')&&(MCTBL[i].crvnam[i1]<='Z'))
               ||((MCTBL[i].crvnam[i1]>='0')&&(MCTBL[i].crvnam[i1]<='9')))
		 buff1[i1]=MCTBL[i].crvnam[i1];
		   else buff1[i1]=' ';               /*1997.1.7*/
	    /*buff1[i1]=MCTBL[i].crvnam[i1];*/
	  }

	buff1[4]=((MCTBL[i].DLSTAD)&(0xff00))>>8;
	buff1[5]=(MCTBL[i].DLSTAD)&(0x00ff);

/*	buff1[6]=((MCTBL[i].DLSTLN)&(0xff00))>>8;
	buff1[7]=(MCTBL[i].DLSTLN)&(0x00ff);
*/
	buff1[8]=((MCTBL[i].DLIPTR)&(0xff00))>>8;
	buff1[9]=(MCTBL[i].DLIPTR)&(0x00ff);

	buff1[6]=buff1[8];
	buff1[7]=buff1[9]+1;
	if(buff1[7]==0x00)buff1[6]=buff1[6]+1;
	if(MCTBL[i].DLSTLN==0xffff){buff1[6]=0xff;buff1[7]=0xff;}

	buff1[10]=((MCTBL[i].DLOPTR)&(0xff00))>>8;
	buff1[11]=(MCTBL[i].DLOPTR)&(0x00ff);

	buff1[12]=(0x80)*(MCTBL[i].OPTIONS.ac)+(0x20)*(MCTBL[i].OPTIONS.cm)
		 +(0x10)*(MCTBL[i].OPTIONS.lg)+(0x08)*(MCTBL[i].OPTIONS.tp)
		 +(0x04)*(MCTBL[i].OPTIONS.cp)+(0x01)*(MCTBL[i].OPTIONS.sp);

	buff1[31]=MCTBL[i].GALVOS.bu;
	buff1[30]=MCTBL[i].GALVOS.x2;
	buff1[29]=MCTBL[i].GALVOS.x10;

	f8637(MCTBL[i].MULT,y);
	buff1[14]=y[0];
	buff1[15]=y[1];
	buff1[16]=y[2];
	buff1[17]=y[3];

	f8637(MCTBL[i].ADD,y);
	buff1[18]=y[0];
	buff1[19]=y[1];
	buff1[20]=y[2];
	buff1[21]=y[3];

	f8637(MCTBL[i].CRTMULT,y);
	buff1[36]=y[0];
	buff1[37]=y[1];
	buff1[38]=y[2];
	buff1[39]=y[3];

	f8637(MCTBL[i].CRTADD,y);
	buff1[40]=y[0];
	buff1[41]=y[1];
	buff1[42]=y[2];
	buff1[43]=y[3];

	buff1[32]=MCTBL[i].filter;
	buff1[48]=MCTBL[i].POSLO;
	buff1[49]=MCTBL[i].POSHI;

	buff1[28]=MCTBL[i].GALVOS.pr+(0x40)*(!(MCTBL[i].BACKUP.O))
		  +(0x10)*(!(MCTBL[i].BACKUP.C))+(0x20)*(MCTBL[i].BACKUP.U);

	if ((MCTBL[i].crvnam[0]!='?')&&(MCTBL[i].crvnam[1]!='?')
	      &&(MCTBL[i].crvnam[2]!='?')&&(MCTBL[i].crvnam[3]!='?'))
	  {
	    for(i1=0;i1<64;i1++)
	      {
		 buffer[128+14+64*curvetrue+i1]=buff1[i1];
	      }
	    if ((MCTBL[i].crvnam[0]==0xff)&&(MCTBL[i].crvnam[1]==0xff))
			break;
	    curvetrue++;
	  }
     }

//********************************************************************************		
//将存储缓冲区数据写入磁盘

    CString szlstfile = WriteFileDialog.GetPathName();
	CFile file;
	if(!file.Open(szlstfile,CFile::modeWrite|CFile::modeCreate,NULL))
		AfxMessageBox("保存失败");
		
	CArchive ar(&file,CArchive::store);//构建CArchive 对象
	for(i=0;i<2560;i++)
		ar<<buffer[i];//写入磁盘
	ar.Flush();	//写完毕,关闭文件流
	ar.Close();
	file.Close();   
	
	}   
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -