📄 修改comm.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 + -