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

📄 global.cpp

📁 数据采集
💻 CPP
📖 第 1 页 / 共 5 页
字号:
      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 + -