📄 global.~cp
字号:
for(int i=0;i<4;i++) tj+=(long)jin_j[i][tmp_ofst];
for(int i=0;i<2;i++) tz+=(long)jin_z[i][tmp_ofst];
*p_addon=tj/4*bd.k_j_z+tz/2;
}else if(bd.hq_mode==HQ_2J1Z){
*p_addon=((long)jin_j1[tmp_ofst]+(long)jin_j2[tmp_ofst])/2*bd.k_j_z +
(long)jin_z1[tmp_ofst];
}else{err("get_ad_don()");*p_addon=0;}
return 0;
}
}
long __fastcall ad_to_wei_jin(long ad)
{
int i,j,max;
double k;
long wei;
long ad_tmp=ad*2; //因为一次只称一半
int fdz=50;
/*
std_wei[0]=bd.wei[0];
std_wei[1]=bd.wei[2];
std_wei[2]=bd.wei[4];*/
for(j=1,max=0;j<3;j++){
if(bd.ad_jin[j]>bd.ad_jin[max])max=j;
}
try{
if(ad_tmp<=bd.ad_jin[0]) wei=(long)(1.0*bd.wei_j[0]/bd.ad_jin[0]*ad_tmp);
else if(ad_tmp>=bd.ad_jin[max]) wei=(long)(1.0*(bd.wei_j[max])/bd.ad_jin[max]*ad_tmp);
else{
for(i=1;(ad_tmp>bd.ad_jin[i])&&(i<3);i++);
k=(double)(bd.wei_j[i]-bd.wei_j[i-1])/(double)(bd.ad_jin[i]-bd.ad_jin[i-1]);
wei=(double)bd.wei_j[i-1]+k*(double)(ad_tmp-bd.ad_jin[i-1]);
}
if(wei>=0) return (long)((wei/2+fdz/2)/fdz)*fdz;//因为一次只称一半
else return (long)((wei/2-fdz/2)/fdz)*fdz;
}catch(...){return -1;}
}
bool __fastcall read_bd(void)
{
FILE *fp;
if((fp=fopen(BDFILE,"rb"))==NULL || fread(&bd,sizeof(bd),1,fp)!=1){
bd.ad_lr[0]=1000; bd.ad_rl[0]=1000; bd.wei[0]=1000;
for(int i=1;i<5;i++){
bd.ad_lr[i]=0; bd.ad_rl[i]=0; bd.wei[i]=0;
}
bd.wei_j[0]=1000;bd.wei_j[1]=0;bd.wei_j[2]=0;
bd.ad_jin[0]=1000;bd.ad_jin[1]=0;bd.ad_jin[2]=0;
strcpy(bd.name,"LEADER");
strcpy(bd.mima,"11");
bd.rr=70; // 50太小
bd.k_dz=0.72;
bd.ad_t=165535;
bd.use_status=0;
bd.len=3.6;
bd.k_j_z=0.9;
bd.zero=0;
bd.hpz=0.05; //横向偏载率
bd.zpz=5; //纵向偏载 t
bd.cz=100; //超载 t
bd.lw=0; //联网
bd.pb_mode=0;//判别方式
bd.hq_mode=1;//衡器类型
bd.sj_mode=0;//数据来源
bd.yh_mode=0;//用户类别
bd.irq = 5;
bd.if_auto=0; //无人职守
bd.fx =0; //判别方向
bd.if_autopi=0;//自动去皮
bd.which_com=1;
strcpy(bd.tele," ");
return FALSE;
}
fclose(fp);
return TRUE;
}
bool __fastcall write_bd(void)
{
FILE *fp;
if((fp=fopen(BDFILE,"wb"))==NULL) return FALSE;
if(fwrite(&bd,sizeof(bd),1,fp)!=1){fclose(fp);return FALSE;}
else{ fclose(fp); return TRUE;}
}
bool __fastcall read_bd2(void)
{
FILE *fp=0;
if((fp=fopen(BD2FILE,"rb"))==NULL || fread(&bd2,sizeof(bd2),1,fp)!=1){
for(int i=0;i<5;i++){
bd2.ad_lr[i]=0; bd2.ad_rl[i]=0; bd2.wei[i]=0;
}
return FALSE;
}
fclose(fp);
return TRUE;
}
bool __fastcall write_bd2(void)
{
FILE *fp;
if((fp=fopen(BD2FILE,"wb"))==NULL) return FALSE;
if(fwrite(&bd2,sizeof(bd2),1,fp)!=1){fclose(fp);return FALSE;}
else{ fclose(fp); return TRUE;}
}
/*
void __fastcall init_dlt()
{
for(int i=0;i<5;i++){
dlt.wei[i]=0;
dlt.h[i]=i+1;
}
dlt.cnt=5;
for(int i=0;i<5;i++){
dlt.azl[i]=i;
}
dlt.apzc[0]=-1;
dlt.apzc[1]=-1;
dlt.axh[0]=-1;
dlt.axh[1]=-1;
}
bool __fastcall read_dlt(char *dlt_file)
{
FILE *fp;
if((fp=fopen(dlt_file,"rb"))==NULL){
return false;
}else if( fread(&dlt,sizeof(dlt),1,fp)!=1){
fclose(fp);
return false;
}else{
if(dlt.check!=create_dlt_check()){
err(" read_dlt:check failed ");
fclose(fp);
return false;
}else{
for(int i=0;i<5;i++){
if(dlt.wei[i]>20000){
err("dlt.wei[i]>20000");
return false;
}
}
fclose(fp);
return true;
}
}
}
bool __fastcall write_dlt(void)
{
FILE *fp;
if((fp=fopen(DLTFILE,"wb"))==NULL) return false;
dlt.check=create_dlt_check();
if(fwrite(&dlt,sizeof(dlt),1,fp)!=1){fclose(fp);return false;}
else{ fclose(fp); return true;}
}
int __fastcall create_dlt_check()
{
int ret=0;
for(int i=0;i<5;i++){
ret+=dlt.wei[i];
ret+=dlt.h[i];
}
ret+=dlt.cnt;
for(int i=0;i<5;i++){
ret+=dlt.azl[i];
}
ret+=dlt.apzc[0];
ret+=dlt.apzc[1];
ret+=dlt.axh[0];
ret+=dlt.axh[1];
return ret;
} */
void __fastcall init_cpz_setup()
{
for(int i=0;i<5;i++){
cpz_setup.pzc[i]=0;
cpz_setup.pzl[i][0]=0.0;
cpz_setup.pzl[i][1]=0.0;
cpz_setup.dlt_wei[i]=0;
}
cpz_setup.hc[0]=5; // 20t-60t-70t-40t-80t -->
cpz_setup.hc[1]=2; // 5 - 4 - 3 - 2 - 1 -->
cpz_setup.hc[2]=4;
cpz_setup.hc[3]=3;
cpz_setup.hc[4]=1;
cpz_setup.cnt=5;
for(int i=0;i<5;i++){ cpz_setup.lock_wei[i]=true;}
cpz_setup.lock_flag=false;
cpz_setup.by_wei=true;
}
bool __fastcall read_cpz_setup(char *cpzsetup_file)
{
FILE *fp;
if((fp=fopen(cpzsetup_file,"rb"))==NULL ||
fread(&cpz_setup,sizeof(cpz_setup),1,fp)!=1){
fclose(fp);
return false;
}else{
for(int i=0;i<5;i++){
if(abs(cpz_setup.pzc[i])>30000){
err("cpz_setup.pzc[i])>30000");
fclose(fp);
return false;
}
for(int j=0;j<2;j++){
if(fabs(cpz_setup.pzl[i][j])>30.0){
err("cpz_setup.pzl[i][j])>30.0");
fclose(fp);
return false;
}
}
}
if(cpz_setup.cnt>20){
err(" cpz_setup.cnt> 20 ");
fclose(fp);
return false;
}
fclose(fp);
return true;
}
}
bool __fastcall write_cpz_setup()
{
FILE *fp;
if((fp=fopen(CPZSETUP,"wb"))==NULL){return false;}
fwrite(&cpz_setup,sizeof(cpz_setup),1,fp);
fclose(fp);
return true;
}
/*
int __fastcall create_cpzsetup_check()
{
int ret=0,i;
char *p;
try{
int size=sizeof(cpz_setup.pzc[0])*5 + sizeof(cpz_setup.pzl[0][0])*5*2+
sizeof(cpz_setup.cnt)+ sizeof(cpz_setup.sort_by_wei);
for(i=0,p=reinterpret_cast<char *>(&cpz_setup.pzc[0]);i<size;i++,p++){
ret+=*p;
}
}catch(Exception &e){err(e.Message.c_str());ret=0;}
return ret;
}
*/
// 为兼容双台面重写data_jz,参数wch_tm只对双台面有效
// 参数wch_tm对HQ_NEWCPZ也有效
// 参数wch_tm对HQ_BDG3, HQ_CPZ24, HQ_NEWBDG也有效
long data_jz(int wch_tm,long offset)
{
long tmp_ad,tmp_ad1,tmp_ad2,tmp_ad3,tmp_ad4;
if(bd.hq_mode==HQ_2J1Z){
tmp_ad1= *(p_buf_j1+offset)&0x7fff;
tmp_ad2= *(p_buf_j2+offset)&0x7fff;
tmp_ad3= *(p_buf_z1+offset)&0x7fff;
tmp_ad = bd.k_j_z*(tmp_ad1+tmp_ad2)/2+tmp_ad3;
return tmp_ad;
}else if(bd.hq_mode==HQ_CPZGZ){
long j1,j2,j3,j4,z1,z2;
long t1,t2,t;
j1= *(p_buf_j1+offset)&0x7fff;
j2= *(p_buf_j2+offset)&0x7fff;
j3= *(p_buf_j3+offset)&0x7fff;
j4= *(p_buf_j4+offset)&0x7fff;
z1= *(p_buf_z1+offset)&0x7fff;
z2= *(p_buf_z2+offset)&0x7fff;
t1= (j1+j2)/2*bd.k_j_z + z1;
t2= (j3+j4)/2*bd.k_j_z + z2;
t=t1+t2;
if(wch_tm==0) return t; // 返回两个台面之和
else if(wch_tm==1) return t1; // 返回台面1
else if(wch_tm==2) return t2; // 返回台面2
}else if(bd.hq_mode==HQ_DG){
return *(p_buf_z1+offset)&0x7fff ;
}else if(bd.hq_mode==HQ_BDG){
tmp_ad1 = *(p_buf_j1+offset)&0x7fff;
tmp_ad2 = *(p_buf_z1+offset)&0x7fff;
tmp_ad = bd.k_j_z*tmp_ad1 + tmp_ad2;
return tmp_ad;
}else if(bd.hq_mode==HQ_CPZ){
tmp_ad1= *(p_buf_j1+offset)&0x7fff;
tmp_ad2= *(p_buf_j2+offset)&0x7fff;
tmp_ad3= *(p_buf_z1+offset)&0x7fff;
tmp_ad4= *(p_buf_z2+offset)&0x7fff;
tmp_ad= bd.k_j_z*( tmp_ad1 + tmp_ad2 ) + tmp_ad3 + tmp_ad4;
return tmp_ad/2;
}else if(bd.hq_mode==HQ_STMDG){
tmp_ad1= *(p_buf_z1+offset)&0x7fff;
tmp_ad2= *(p_buf_z2+offset)&0x7fff;
if(wch_tm==0) return tmp_ad1+tmp_ad2; // 返回两个台面之和
else if(wch_tm==1) return tmp_ad1; // 返回台面1
else if(wch_tm==2) return tmp_ad2; // 返回台面2
}else if(bd.hq_mode==HQ_STMBDG||bd.hq_mode==HQ_BDG3){
tmp_ad1= *(p_buf_j1+offset)&0x7fff;
tmp_ad2= *(p_buf_j2+offset)&0x7fff;
tmp_ad3= *(p_buf_z1+offset)&0x7fff;
tmp_ad4= *(p_buf_z2+offset)&0x7fff;
tmp_ad1= bd.k_j_z*tmp_ad1 + tmp_ad3 ;
tmp_ad2= bd.k_j_z*tmp_ad2 + tmp_ad4 ;
if(wch_tm==0) return tmp_ad1+tmp_ad2; // 返回两个台面之和
else if(wch_tm==1) return tmp_ad1; // 返回台面1
else if(wch_tm==2) return tmp_ad2; // 返回台面2
}else if(bd.hq_mode==HQ_NEWCPZ){
long j1,j2,j3,j4,j5,j6,j7,j8,z1,z2,z3,z4;
long t1,t2,t3,t4;
long t;
j1= *(p_buf_j1+offset)&0x7fff;
j2= *(p_buf_j2+offset)&0x7fff;
j3= *(p_buf_j3+offset)&0x7fff;
j4= *(p_buf_j4+offset)&0x7fff;
j5= *(p_buf_j5+offset)&0x7fff;
j6= *(p_buf_j6+offset)&0x7fff;
j7= *(p_buf_j7+offset)&0x7fff;
j8= *(p_buf_j8+offset)&0x7fff;
z1= *(p_buf_z1+offset)&0x7fff;
z2= *(p_buf_z2+offset)&0x7fff;
z3= *(p_buf_z3+offset)&0x7fff;
z4= *(p_buf_z4+offset)&0x7fff;
t1= (j1+j3)/2*bd.k_j_z + z1;
t2= (j2+j4)/2*bd.k_j_z + z2;
t3= (j5+j7)/2*bd.k_j_z + z3;
t4= (j6+j8)/2*bd.k_j_z + z4;
t=(t1+t2+t3+t4)/4;
if(wch_tm==0) return t; // 返回四两个台面之和
else if(wch_tm==1) return t1; // 返回台面1
else if(wch_tm==2) return t2; // 返回台面2
else if(wch_tm==3) return t3; // 返回台面3
else if(wch_tm==4) return t4; // 返回台面4
}else if(bd.hq_mode==HQ_CPZ24){
// wch_tm=0,1,3,4,5,6,7,8
if(wch_tm<0||wch_tm>8){ err("data_jz()");return 0;}
long t[8];
for(int i=0;i<8;i++){
t[i] = i%2==0?(data_j(2*i, offset)+data_j(2*i+2,offset))/2*bd.k_j_z+data_z(i,offset):
(data_j(2*i-1,offset)+data_j(2*i+1,offset))/2*bd.k_j_z+data_z(i,offset);
}
if(wch_tm==0) (t[0]+t[1]+t[2]+t[3]+t[4]+t[5]+t[6]+t[7])/8;
else return t[wch_tm-1];
}else if(bd.hq_mode==HQ_NEWBDG){
if(wch_tm<0||wch_tm>2){ err("data_jz()");return 0;}
long j1,j2,j3,j4,z1,z2;
long t1,t2;
j1= *(p_buf_j1+offset)&0x7fff;
j2= *(p_buf_j2+offset)&0x7fff;
j3= *(p_buf_j3+offset)&0x7fff;
j4= *(p_buf_j4+offset)&0x7fff;
z1= *(p_buf_z1+offset)&0x7fff;
z2= *(p_buf_z2+offset)&0x7fff;
t1= bd.k_j_z*(j1+j2)/2 + z1 ;
t2= bd.k_j_z*(j3+j4)/2 + z2 ;
if(wch_tm==0) return t1+t2; // 返回两个台面之和
else if(wch_tm==1) return t1; // 返回台面1
else if(wch_tm==2) return t2; // 返回台面2
}else{ err("data_jz");}
return -1;
}
long data_jz1(long offset)
{
if(bd.hq_mode==HQ_NEWCPZ){
long j1,j3,z1,t1;
j1= *(p_buf_j1+offset)&0x7fff;
j3= *(p_buf_j3+offset)&0x7fff;
z1= *(p_buf_z1+offset)&0x7fff;
t1= (j1+j3)/2*bd.k_j_z + z1 ;
return t1;
}else{
long tmp_ad;
tmp_ad=(long)(*(p_buf_j1+offset)&0x7fff)*bd.k_j_z;
tmp_ad=tmp_ad+(long)(*(p_buf_z1+offset)&0x7fff);
return tmp_ad/2;
}
}
long data_jz2(long offset)
{
if(bd.hq_mode==HQ_NEWCPZ){
long j2,j4,z2,t2;
j2= *(p_buf_j2+offset)&0x7fff;
j4= *(p_buf_j4+offset)&0x7fff;
z2= *(p_buf_z2+offset)&0x7fff;
t2= (j2+j4)/2*bd.k_j_z + z2 ;
return t2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -