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

📄 修改comm.cpp

📁 利用VC编写的关于配料的动态库程序
💻 CPP
字号:



struct TJJ{
	int bh;
	char mc[40];
	float llz;
	int n;
	}tjj[30];

struct PF{
	int xh;
	int ch;
	int jlh;
	char mc[30];
	float bl;
	float llz;
	long hh;
	long hi;
	long ll;
	float tql;
	float tql0;
	float sjz;
	float csz;
	float xsz;
	float ccbj;
	float yxwc;
              } pf1[5][20],pf2[5][20],pf3[5][20],pf4[5][20],pf5[5][20];

static int end1[5],end2[5],end3[5],end4[5],end5[5], ppend1, ppend2;
static int start1, pover1, pl1 ,pp1,pp2, stch[6];
static int start10, start20;
static int start2, pover2, pl2;
static int start3, pover3, pl3;
static int start4, pover4, pl4;
static int start5, pover5, pl5;
static float w_jcz1, ybwc1, bpz1;
static float w_jcz2, ybwc2, bpz2;
static float w_jcz3, ybwc3, bpz3;
static float w_jcz4, ybwc4, bpz4;
static float w_jcz5, ybwc5, bpz5;
static int fl_n1,fl_n2,fl_n3,fl_n4,fl_n5;
static int fl_end1,fl_end2,fl_end3,fl_end4,fl_end5;
static float pzl1,pzl2;
static int scpf_XH=1, hhsj1,hhsj2;
char pfbh1[5],pfmc1[30],pfbh2[5],pfmc2[30];
static BOOL tql_chk=0, tql_mod=0;
static int PL_END1, PL_END2;

	
void pp_init1(void)
{
	int k;

	for(k=1;k<15;k++)
		{
			pf1[1][k].xsz = 0;
			pf1[1][k].sjz = 0;
		}
	for(k=1;k<15;k++)
		{
			pf2[1][k].xsz = 0;
			pf2[1][k].sjz = 0;
		}
	fl_n1=1;
	fl_n2=1;
	fl_n3=1;

	pover1=0;
	pover2=0;
	pover3=0;

	start1=1;
	start2=1;
	start3=1;

	pl1=0;
	pl2=0;
	pl3=0;

}
//==============================
void pp_init2(void)
{
	int k;
	for(k=1;k<15;k++)
		{
			pf3[1][k].xsz = 0;
			pf3[1][k].sjz = 0;
		}
	fl_n3=1;

	pover3=0;

	start3=1;

	pl3=0;
}
//====================================================
int pl_init(int scxh, char *pfbh, char *pfmc, int *hhsj, 
			float *tjjzl, float *oilzl, 
			int chn[2], int *oilmc, float *oildw)
{
	char txtSQL[200];
        char ss[200], temp[30];
	int RowCount;
	char Ret[50][200];
	int mm,k;
	int ppend;
	float pzl, xlwc;

	strcpy(txtSQL,"SELECT pfbh, pfmc, ps, pzl, hhsj from scpf where xh='");
	sprintf(ss, "%d号'", scxh);
	strcat(txtSQL, ss);
	

        mm = SelectSQL(txtSQL, 5, Ret, &RowCount);
	if(RowCount==0) 
		{
		//MessageBox(NULL,"全部生产完毕","提示信息",MB_OK);
		strcpy(pfbh,"");
		strcpy(pfmc,"");
		if(scxh==1)
		{
			ppend1=0;
			pp1=0;
			for(k=1;k<15;k++)
			{
				pf1[1][k].xsz = 0;
				pf1[1][k].llz = 0;
				strcpy(pf1[1][k].mc,"");

				pf2[1][k].xsz = 0;
				pf2[1][k].llz = 0;
				strcpy(pf2[1][k].mc,"");
			}
		}
		else
		{
			ppend2=0;
			pp2=0;
			for(k=1;k<15;k++)
			{
				pf3[1][k].xsz = 0;
				pf3[1][k].llz = 0;
				strcpy(pf3[1][k].mc,"");
			}
		}
		return 1;
	}

	
	sscanf(Ret[1],"%s%s%d%f%d%d", pfbh,pfmc,&ppend,&pzl,hhsj);

	//得到配方数据
	GetPF(scxh, pfbh, pzl, chn, tjjzl, oilzl, oilmc, oildw);

//sprintf(ss,"pzl=%f,1===%d,2===%d,*tjjzl=%f,*oilzl=%f",pzl,chn[0], chn[1], *tjjzl,*oilzl);
//MessageBox(NULL,pfbh,ss,MB_OK);

	fl_n1=1;
	fl_n2=1;
	fl_n3=1;
	fl_n4=1;
	fl_n5=1;

	//料柱检测设置值
	w_jcz1=(float)1;
	w_jcz2=(float)1;
	w_jcz3=(float)2;
	w_jcz4=(float)2;
	w_jcz5=(float)2;

	//仪表低低限,变频值
	GetPrivateProfileStringA( "仪表允许误差","仪表零位误差(公斤):",temp,ss,20,"d:\\zgpl\\pl.ini");
	ybwc1=(float)atof(ss);
	ybwc2=ybwc1; 
	GetPrivateProfileStringA( "仪表允许误差","液体仪表零位误差(公斤):",temp,ss,20,"d:\\zgpl\\pl.ini");
	ybwc3=(float)atof(ss);

	GetPrivateProfileStringA( "变频值","1号大秤变频值(公斤):",temp, ss, 20, "d:\\zgpl\\pl.ini");
	bpz1=(float)atof(ss);
	GetPrivateProfileStringA( "变频值","1号小秤变频值(公斤):",temp, ss, 20, "d:\\zgpl\\pl.ini");
	bpz2=(float)atof(ss);
	GetPrivateProfileStringA( "变频值","2号大秤变频值(公斤):",temp, ss, 20, "d:\\zgpl\\pl.ini");
	bpz3=(float)atof(ss);
	GetPrivateProfileStringA( "变频值","2号小秤变频值(公斤):",temp, ss, 20, "d:\\zgpl\\pl.ini");
	bpz4=(float)atof(ss);

	if(scxh==1)
	{
		 strcpy(pfbh1,pfbh);
		 ppend1=ppend;
		 pzl1=pzl;
		 PL_END1=0;
		 pp1=1;
		 pp_init1();	//每批开始前的初始化
		 if( (*tjjzl)>0.5)
		 {
		 //设置添加剂仪表
		GetPrivateProfileStringA( "仪表允许误差","1号小料称重误差(公斤):",temp, ss, 20, "d:\\zgpl\\pl.ini");
		xlwc=(float)atof(ss);
	//	yb_write(3, (int)((*tjjzl+xlwc)*10), (int)((*tjjzl-xlwc)*10), (int)(xlwc*10));
		 }
	}
	if(scxh==2 && (*tjjzl)>0.5)
	{
		 strcpy(pfbh2,pfbh);
		 ppend2=ppend;
		 pzl2=pzl;
		 PL_END2=0;
		 pp2=1;
		 pp_init2();	//每批开始前的初始化
		 //设置添加剂仪表
		 //设置添加剂仪表
		GetPrivateProfileStringA( "仪表允许误差","2号小料称重误差(公斤):",temp, ss, 20, "d:\\zgpl\\pl.ini");
		xlwc=(float)atof(ss);
		yb_write(5, (int)((*tjjzl+xlwc)*10), (int)((*tjjzl-xlwc)*10), (int)(xlwc*10));
		}

	return 0;
}
//====================================================

//====================================================
void GetPF1(char ylname[20][20], float llz[20], float tql[20], float yxwc[20], int ch[20], int *kk)
{
  int k;
  
  for(k=1;k<=end1[1];k++)
	{
	  sprintf(ylname[k],"%s(%0d)", pf1[1][k].mc, pf1[1][k].ch);
	  llz[k]=pf1[1][k].llz;
	  tql[k]=pf1[1][k].tql;
	  yxwc[k]=pf1[1][k].yxwc;
	  ch[k]=pf1[1][k].ch;
	}
 *kk=end1[1];
}
void GetPF2(char ylname[20][20], float llz[20], float tql[20], float yxwc[20], int ch[20], int *kk)
{
  int j;
  for(j=1;j<=end2[1];j++)
	{
	  sprintf(ylname[j],"%s(%0d)", pf2[1][j].mc, pf2[1][j].ch);
	  llz[j]=pf2[1][j].llz;
	  tql[j]=pf2[1][j].tql;
	  yxwc[j]=pf2[1][j].yxwc;
	  ch[j]=pf2[1][j].ch;
	}
   *kk=end2[1];
}
void GetPF3(char ylname[20][20], float llz[20], float tql[20], float yxwc[20], int ch[20], int *kk)
{
  int j;
  for(j=1;j<=end3[1];j++)
	{
	  sprintf(ylname[j],"%s(%0d)", pf3[1][j].mc, pf3[1][j].ch);
	  llz[j]=pf3[1][j].llz;
	  tql[j]=pf3[1][j].tql;
	  yxwc[j]=pf3[1][j].yxwc;
	  ch[j]=pf3[1][j].ch;
	}
   *kk=end3[1];
}

//========================================================
int SaveData(int k, int n, float sjz)
{
  char txtSQL[250];
  char ss[200];
  int record;
  char strTime[30];
  float wc;

  SYSTEMTIME sysTime;

  GetLocalTime(&sysTime);
  sprintf(strTime,"%4d-%02d-%02d %02d:%02d:%02d",sysTime.wYear,sysTime.wMonth, sysTime.wDay,
		sysTime.wHour,sysTime.wMinute,sysTime.wSecond);

  strcpy(txtSQL, "INSERT INTO scdata(pfbh, pc, ch, llz, sjz, wc, rq, ylmc,tql) values('");
  
  if(k==1)
  {
	wc = sjz-pf1[fl_n1][n].llz;
	strcat(txtSQL, pfbh1);
    sprintf(ss, "',%d,'%02d',%1.3f,%1.3f,%1.3f,'%s','%s',%1.3f)", pp1, pf1[fl_n1][n].ch, 
	pf1[fl_n1][n].llz, 
	sjz, 
	sjz-pf1[fl_n1][n].llz,
	strTime,
	pf1[fl_n1][n].mc,
	pf1[fl_n1][n].tql);
  }
  if(k==2)
  {
	wc = pf2[fl_n2][n].sjz-pf2[fl_n2][n].llz;
	strcat(txtSQL, pfbh1);
	sprintf(ss, "',%d,'%02d',%1.3f,%1.3f,%1.3f,'%s','%s',%1.3f)", pp1, pf2[fl_n2][n].ch, 
	pf2[fl_n2][n].llz, 
	sjz, 
	sjz-pf2[fl_n2][n].llz,
	strTime,
	pf2[fl_n2][n].mc,
	pf2[fl_n2][n].tql);
  }
  if(k==3)
  {
	strcat(txtSQL, pfbh1);
	sprintf(ss, "',%d,'%02d',%1.3f,%1.3f,%1.3f,'%s','%s',%1.3f)", pp1, pf3[1][n].ch, 
	pf3[1][n].llz, 
	sjz, 
	sjz-pf3[1][n].llz,
	strTime,
	pf3[1][n].mc,
	pf3[1][n].tql);
  }
  strcat(txtSQL, ss);
  record=ExecSQL(txtSQL);
  if(record==1)
	{
	  MessageBox(NULL,txtSQL ,"错误信息",MB_OK);
	  return 2;
	  }
  return 0;
}
////存储小料重量
//==========================================================
void SaveXL()
{
 char ss[200], txtSQL[250], strTime[30];
 int k;
 
  SYSTEMTIME sysTime;

  GetLocalTime(&sysTime);
  sprintf(strTime,"%4d-%02d-%02d %02d:%02d:%02d",sysTime.wYear,sysTime.wMonth, sysTime.wDay,
		sysTime.wHour,sysTime.wMinute,sysTime.wSecond);

   for(k=1;k<20;k++)
   {
    if(tjj[k].llz<0.1) break;

    strcpy(txtSQL, "INSERT INTO scdata(pfbh, pc, ch, llz, sjz, wc, rq, ylmc,tql) values('");
	strcat(txtSQL, pfbh1);
	sprintf(ss, "',%d,'%02d',%1.3f,%1.3f,%1.3f,'%s','%s',%1.3f)", pp1, 51, 
			tjj[k].llz, 
			tjj[k].llz, 
			0.0,
			strTime,
			tjj[k].mc,
			0.0);
	strcat(txtSQL, ss);
	ExecSQL(txtSQL);
	 }
}
//======================================
//chn[0]--大秤几个仓下料,chn[1]--小秤几个仓下料
//tjjzl--添加剂重量
//oilzl--油脂重量
//oilmc--油脂脉冲
int GetPF(int xh, char *pfbh0, float pzl0, int chn[2], float *tjjzl, float *oilzl, int *oilmc, float *oildw)
{
	char txtSQL[200];
    char ss[200];
	int RowCount;
	char Ret[50][200];
	int flsx,ch,k1,k2,k3;
	char ylmc[30], ymc[20];
	float bl,tjjbl,oilbl,oildw1,oildw2;
	int mm, k;
	float tql[40],yxwc[40];

	*oilmc=0;
	*oildw=0;
	*tjjzl=0;
	*oilzl=0;
	//得到以前的提前量和超差报警值
	strcpy(txtSQL,"SELECT llzl, yxwc from lcyl order by ch");
    mm = SelectSQL(txtSQL, 2, Ret, &RowCount);
	for(k=1;k<=RowCount;k++)
		{
		sscanf(Ret[k],"%f%f",&tql[k],&yxwc[k]);
		}
	//配方中添加剂所占的总比例
	strcpy(txtSQL,"SELECT tjjbl,tjjmc from tjj where pfbh='");
	sprintf(ss, "%s'", pfbh0);
	strcat(txtSQL, ss);
	mm = SelectSQL(txtSQL, 2, Ret, &RowCount);

	*tjjzl=0;
	tjj[1].llz=0;
	for(k=1;k<=RowCount;k++)
		{
		sscanf(Ret[k],"%f%s",&tjjbl, tjj[k].mc);
		tjj[k].llz = tjjbl*pzl0/100;
		*tjjzl = (*tjjzl) + tjj[k].llz;	//添加剂总重量
		}

	//配方中油所占的比例
	strcpy(txtSQL,"SELECT ybl, ymc from pfmc where pfbh='");
	sprintf(ss, "%s'", pfbh0);
	strcat(txtSQL, ss);
	mm = SelectSQL(txtSQL, 2, Ret, &RowCount);
	if(RowCount>0) 
		sscanf(Ret[1],"%f %s", &oilbl, ymc);
	else
		oilbl=0; 
	*oilzl = oilbl*pzl0/100;	//油重量

	//MessageBox(NULL,"油所占的比例",Ret[1],MB_OK);

	//计算油脉冲数量
	strcpy(txtSQL,"SELECT dw1, dw2 from yy where oilmc='");
	sprintf(ss, "%s'", ymc);
	strcat(txtSQL, ss);
	mm = SelectSQL(txtSQL, 2, Ret, &RowCount);

	if(RowCount>0) 
	{
		sscanf(Ret[1],"%f%f", &oildw1, &oildw2);
		if(xh==1) 
		{
			*oilmc=(int)(*oilzl/oildw1);
			*oildw=oildw1;
		}
		if(xh==2) 
		{
			*oilmc=(int)(*oilzl/oildw2);
			*oildw=oildw2;
		}
	}
	else
	{
	 *oilmc=0;
	 *oildw=0;
	}
	//sprintf(ss,"%1.2f  %1.2f %d %s",*oilzl, *oildw, *oilmc, ymc);
	//MessageBox(NULL,"油所占的比例",ss,MB_OK);	
	
	//配方中各原料所占的比例
	strcpy(txtSQL,"SELECT flsx, ch, ylmc, bl from pf where pfbh='");
	sprintf(ss, "%s", pfbh0);
	strcat(txtSQL, ss);
	strcat(txtSQL, "' order by flsx");

	if(xh==1)
		{
		k1=0;	
		end1[1]=0;
		}
	if(xh==2)
		{
		k2=0;
		end2[1]=0;
		}
    mm = SelectSQL(txtSQL, 4, Ret, &RowCount);

	//	if(mm==1) return 1;
	for(k=1;k<=RowCount;k++)
	{
	sscanf(Ret[k],"%d%d%s%f",&flsx, &ch, ylmc, &bl);
	//sprintf(ss,"%d,%d,%s,%1.2f",flsx, ch, ylmc, bl);
	//MessageBox(NULL,pfmc1,ss,MB_OK);	
	if(xh==1)
	{
	  if(ch<13) 
		{
		 k1++;
		 pf1[1][k1].xh = k1;
		 pf1[1][k1].ch=ch;
		 pf1[1][k1].jlh=ch;
		 pf1[1][k1].bl=bl;
		 pf1[1][k1].llz = bl*pzl0/100;
		 pf1[1][k1].tql=tql[ch];
		 pf1[1][k1].tql0=tql[ch];
		 pf1[1][k1].yxwc=yxwc[ch];
		 strcpy(pf1[1][k1].mc, ylmc);
		 end1[1]=k1;		 
		 fl_end1=1;
		}
	}
	if(xh==2)
	{
	  if(ch>12 && ch<16) 
		{
		k2++;
		pf2[1][k2].xh = k2;
		pf2[1][k2].ch=ch;
		pf2[1][k2].jlh=ch;
		pf2[1][k2].bl=bl;
		pf2[1][k2].llz=bl*pzl0/100;
		pf2[1][k2].tql=tql[ch];
		pf2[1][k2].tql0=tql[ch];
		pf2[1][k2].yxwc=yxwc[ch];
		strcpy(pf2[1][k2].mc, ylmc);
		end2[1]=k2;
		fl_end2=1;
		}
	}
	}
	chn[0]=k1;
	chn[1]=k2;
	*oilzl=0;

	return 0;
}
//========================
//得到总批数以及当前批次
void GetPC1(int *zps, int *ps)
{
	*zps=ppend1;
	*ps=pp1;
}
//=========================================
//得到总批数以及当前批次
void GetPC2(int *zps, int *ps)
{
	*zps=ppend2;
	*ps=pp2;
}
//=========================================
//设置当前生产配方的总批数
void SetPC1(int zps)
{
    ppend1=zps;
}
//=========================================
//设置当前生产配方的总批数
void SetPC2(int zps)
{
    ppend2=zps;
}
//=========================================
//换仓设置
//h1--原来仓号
//h2--换后仓号
int SetHc(int h1, int h2)
{
  int i;

  if(h1<11 && h2<11) 
	  for(i=1;i<=end1[1];i++)
		if(pf1[1][i].jlh==h1) 
		{
			pf1[1][i].jlh=h2;
			pf1[1][i].ch=h2;
			return 1;
		}
  if(h1>10 && h1<21 && h2>10 && h2<21) 
 	for(i=1;i<=end2[1];i++)
		if(pf2[1][i].jlh==h1) 
		{
			pf2[1][i].jlh=h2;
			pf2[1][i].ch=h2;
			return 2;
		}
  return 0;
}

⌨️ 快捷键说明

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