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

📄 thread.~cp

📁 数据采集
💻 ~CP
📖 第 1 页 / 共 5 页
字号:
              Synchronize(show_offset);
            }else cnt_for_show++;
          }
          SetEvent(g_hEvent);
        }//else
      }else{
        Sleep(10);
      }
  } //while(1)
}

void __fastcall TGetdataThread::get_data_from_port()
{
  int i,kk;
  int len;//,len2,len3;
  unsigned char buf[2048];//,buf2[2048]buf3[2048];
  static int seri_no=0;//,seri_no2=0,seri_no3=0;
  static char rec[20];//, rec2[20], rec3[20];
  int total;//,total2,total3;
  static int cnt_for_show=0;

  if(bd.hq_mode==HQ_NEWCPZ){
  }//if

  else{
    while(1){
      if(flag_collect==1){  // for test_com
        if(this->Terminated==TRUE) return;
        len = sio_read( port, (char *)buf, 2048);
        if(len<=0){ Sleep(1);continue;}
        else{
          for(i=0;i<len;i++){
            seri_no++;
            if(seri_no<20) rec[seri_no]=buf[i];
            if(buf[i]==0xff){ // 0xff is the flag byte
              if(seri_no!=11) com_err_cnt++; // 8(data)+1(kg)+1(校验和)+1(0xff)
              else{
                for(total=0,kk=1;kk<10;kk++) total+=rec[kk];
                if( (total&0x7f)!=rec[10] ) com_err_cnt++; // 校验和
                else{
                  jin_z1[jin_ofst]=(short)(rec[1]*256+rec[2]*2);
                  jin_z2[jin_ofst]=(short)(rec[3]*256+rec[4]*2);
                  jin_j1[jin_ofst]=(short)(rec[5]*256+rec[6]*2);
                  jin_j2[jin_ofst]=(short)(rec[7]*256+rec[8]*2);
                  if(bd.pb_mode!=PB_WAVE && flag_don_runing==TRUE)
                    get_kg(rec[9]);
                  if(don_flag==TRUE && flag_test==0){ // test_one donot collect
                    if(offset_buf==0){ // 2001-8-7加,将静态buf的数据加到动态buf的首部
                      for(int i=jin_ofst;i<JIN_SIZE+jin_ofst;i++,offset_buf++){
                        *(p_buf_z1+offset_buf)=jin_z1[i%JIN_SIZE];
                        *(p_buf_j1+offset_buf)=jin_j1[i%JIN_SIZE];
                        *(p_buf_z2+offset_buf)=jin_z2[i%JIN_SIZE];
                        *(p_buf_j2+offset_buf)=jin_j2[i%JIN_SIZE];
                      }
                    }

                    *(p_buf_z1+offset_buf)=jin_z1[jin_ofst];
                    *(p_buf_z2+offset_buf)=jin_z2[jin_ofst];
                    *(p_buf_j1+offset_buf)=jin_j1[jin_ofst];
                    *(p_buf_j2+offset_buf)=jin_j2[jin_ofst];
                    for_fx();
                    if(offset_buf<BUF_SIZE-1) offset_buf++;
                  }
                  if(jin_ofst<JIN_SIZE-1) jin_ofst++;
                  else{
                    jin_ofst=0;
                    if(flag_collect_over==false)flag_collect_over=true;
                  }
                }//else
              }//else
              seri_no=0;
            }//if
          }//for
          if(bd.use_status!=USE_ZC){
            if(cnt_for_show>100){
              cnt_for_show=0;
              Synchronize(show_offset);
              Synchronize(show_comm_error);
            }else cnt_for_show++;
          }
          SetEvent(g_hEvent);
        } // else
      } //if
    }//while
  }//else
}

void __fastcall TGetdataThread::show_offset()
{
  char str[20];
  form_main->Canvas->Font->Size=8;
  sprintf(str,"%06ld",offset_buf);
  form_main->Canvas->TextOut(8,536,"                 ");
  form_main->Canvas->TextOut(lock_flag?18:8,536,str);
}

void __fastcall TGetdataThread::show_comm_error()
{
  char str[20];
  form_main->Canvas->Font->Size=8;
  sprintf(str,"%5d",com_err_cnt);
  form_main->Canvas->TextOut(8,550,"               ");
  form_main->Canvas->TextOut(8,550,str) ;
}


void __fastcall TGetdataThread::show_kg()
{
  char str[20];
  form_main->Canvas->Font->Size=8;
  sprintf(str,"%4d  %4d ",k1,k4);
  form_main->Canvas->TextOut(360,536,"          ") ;
  form_main->Canvas->TextOut(360,536,str) ;
}

void __fastcall TDonThread::show_kg()
{
  char str[20];
  form_main->Canvas->Font->Size=8;
  sprintf(str,"%4d  %4d ",k1,k4);
  form_main->Canvas->TextOut(360,536,"          ") ;
  form_main->Canvas->TextOut(360,536,str) ;
}

void __fastcall TGetdataThread::show_kgin()
{
  char str[20];
  sprintf(str,"%2x",kg_in);
  form_main->Canvas->TextOut(410,536,"        ") ;
  form_main->Canvas->TextOut(410,536,str) ;
}

void __fastcall TDonThread::show_ofst_time()
{
  char str[20];
  form_main->Canvas->Font->Size=8;
  end_tm=GetCurrentTime();
  sprintf(str,"ofst=%ld,tm=%ld",offset_buf,end_tm-start_tm);
  form_main->Canvas->TextOut(418,550,"                          ");
  form_main->Canvas->TextOut(418,550,str);
}

void __fastcall TDonThread::show_zero()
{
  char str[20];
  form_main->Canvas->Font->Size=8;

  if(bd.hq_mode==HQ_STMDG||bd.hq_mode==HQ_STMBDG||bd.hq_mode==HQ_BDG3|| bd.hq_mode==HQ_NEWBDG){
    sprintf(str,"z1=%6d,z2=%6d,z=%6d",zero1,zero2,zero1+zero2);
  }else{
    sprintf(str,"z=%6d",zero);
  }
  form_main->Canvas->TextOut(540,550,"                     ") ;
  form_main->Canvas->TextOut(540,550,str) ;

  form_main->Canvas->TextOut(510,550,IntToStr(dangzhou_cnt) );  // show_dangzhou
}

void __fastcall TGetdataThread::for_fx()
{
}

void __fastcall TGetdataThread::get_kg(unsigned kg_inn)
{
   char XXX=3; // <9
   bool flag_k=FALSE;

   if(bd.yh_mode>=YH_YB&&bd.yh_mode<=2*YH_YB){ // 仪表
     if((kg_inn&0x08)==0x0){k1_h=0; if(k1_l<9) k1_l++;  } else{k1_l=0;if(k1_h<9) k1_h++; } // <9 防止overflow
     if((kg_inn&0x02)==0x0){k2_h=0; if(k2_l<9) k2_l++;  } else{k2_l=0;if(k2_h<9) k2_h++; }
     if((kg_inn&0x01)==0x0){k3_h=0; if(k3_l<9) k3_l++;  } else{k3_l=0;if(k3_h<9) k3_h++; }
     if((kg_inn&0x04)==0x0){k4_h=0; if(k4_l<9) k4_l++;  } else{k4_l=0;if(k4_h<9) k4_h++; }
   }else{
     if((kg_inn&0x01)==0x0){k1_h=0; if(k1_l<9) k1_l++;  } else{k1_l=0;if(k1_h<9) k1_h++; } // <9 防止overflow
     if((kg_inn&0x04)==0x0){k2_h=0; if(k2_l<9) k2_l++;  } else{k2_l=0;if(k2_h<9) k2_h++; }
     if((kg_inn&0x10)==0x0){k3_h=0; if(k3_l<9) k3_l++;  } else{k3_l=0;if(k3_h<9) k3_h++; }
     if((kg_inn&0x40)==0x0){k4_h=0; if(k4_l<9) k4_l++;  } else{k4_l=0;if(k4_h<9) k4_h++; }
   }

   if(bd.pb_mode==PB_WG81 || bd.pb_mode==PB_SG || bd.pb_mode==PB_KP ||
      bd.pb_mode==PB_JG   || bd.pb_mode==PB_TG){
     if     (k1_l>=XXX){ state_1[0]=state_1[1]; state_1[1]=0;if(do_k1()) flag_k=true;}
     else if(k1_h>=XXX){ state_1[0]=state_1[1]; state_1[1]=1;if(do_k1()) flag_k=true;}
     if     (k4_l>=XXX){ state_4[0]=state_4[1]; state_4[1]=0;if(do_k4()) flag_k=true;}
     else if(k4_h>=XXX){ state_4[0]=state_4[1]; state_4[1]=1;if(do_k4()) flag_k=true;}
   }

   if(flag_k==true){ //show kg
     cnt_exit=0;
     kg_in=kg_inn;
     Synchronize(show_kg);
   }else if(cnt_exit<65530) cnt_exit++;

   if(bd.use_status==USE_TS){
     kg_in=kg_inn&0xff;
     Synchronize(show_kgin);
   }
}


bool __fastcall TGetdataThread::do_k1()
{
   if( state_1[0]==1 && state_1[1]==0 ){
      k1++;
      if(kg_now<KG_SIZE-1) kg_now++;
      kg[kg_now].k1=k1;
      kg[kg_now].k2=k2;
      kg[kg_now].k3=k3;
      kg[kg_now].k4=k4;
      kg[kg_now].who=1;
      kg[kg_now].ofst=(offset_buf==0?JIN_SIZE:offset_buf);
      return true;
   }
   return false ;
}

bool __fastcall TGetdataThread::do_k2()
{
   if( state_2[0]==1 && state_2[1]==0 ){
      k2++;
      if(kg_now<KG_SIZE-1) kg_now++;
      kg[kg_now].k1=k1;
      kg[kg_now].k2=k2;
      kg[kg_now].k3=k3;
      kg[kg_now].k4=k4;
      kg[kg_now].who=2;
      kg[kg_now].ofst=(offset_buf==0?JIN_SIZE:offset_buf);
      return true;
   }
   return false;
}

bool __fastcall TGetdataThread::do_k3()
{
   if( state_3[0]==1 && state_3[1]==0 ){
      k3++;
      if(kg_now<KG_SIZE-1) kg_now++;
      kg[kg_now].k1=k1;
      kg[kg_now].k2=k2;
      kg[kg_now].k3=k3;
      kg[kg_now].k4=k4;
      kg[kg_now].who=3;
      kg[kg_now].ofst=(offset_buf==0?JIN_SIZE:offset_buf);
      return true;
   }
   return false;
}

bool __fastcall TGetdataThread::do_k4()
{
   if( state_4[0]==1 && state_4[1]==0 ){
      k4++;
      if(kg_now<KG_SIZE-1) kg_now++;
      kg[kg_now].k1=k1;
      kg[kg_now].k2=k2;
      kg[kg_now].k3=k3;
      kg[kg_now].k4=k4;
      kg[kg_now].who=4;
      kg[kg_now].ofst=(offset_buf==0?JIN_SIZE:offset_buf);
      return true;
   }
   return false;
}

void __fastcall TDonThread::make_visible()
{
    form_main->status->Caption=" ";  // 过衡结束
    don_flag=FALSE;
    form_main->enable();
}


void __fastcall TDonThread::create_txt()
{
  fstream out;
  out.open("c:\\cb4\\wingdh\\data.txt",ios::out);
  if(!out){err("write txt failed");return;}

  TDateTime date;
  date=date.CurrentDateTime();
  String s=FormatDateTime("yyyymmddhhnnss",date);

  for(int i=0;i<ce_cnt;i++){
    out<<(i+1)<<"  "<<s.c_str()<<"  "<<wei[i]<<"  "<<spd[i]<<endl;
  }
  out.close();

  TMsgDlgButtons buttons;
  buttons<<mbYes;
  buttons<<mbNo;
  if(MessageDlg("   保 存  吗 ?     ",mtConfirmation,buttons,0)==mrNo) return;
  //system("Wordpad.exe");

  WinExec("c:\\cb4\\wingdh\\tt.exe",SW_SHOWDEFAULT);
}

void __fastcall TDonThread::create_txtfile_forlw()
{
  form_main->create_txtfile_forlw();
}


void __fastcall TDonThread::be_ready_for_suspend()
{
    flag_don_runing=FALSE;
    don_flag=FALSE;
    //Synchronize(make_visible);
    don_susp=TRUE;
}

void __fastcall TDonThread::save_zero_in_buf()
{
  if(bd.hq_mode==HQ_CPZ24){
    int i;
    for(i=0;i<16;i++) *p_buf_j[i]=(WORD)zero_j[i];
    for(i=0;i<8;i++)  *p_buf_z[i]=(WORD)zero_z[i];
  }else{
   *p_buf_j1=(WORD)zero_j1; *p_buf_z1=(WORD)zero_z1;
   *p_buf_j2=(WORD)zero_j2; *p_buf_z2=(WORD)zero_z2;
   *p_buf_j3=(WORD)zero_j3; *p_buf_z3=(WORD)zero_z3;
   *p_buf_j4=(WORD)zero_j4; *p_buf_z4=(WORD)zero_z4;
   *p_buf_j5=(WORD)zero_j5;
   *p_buf_j6=(WORD)zero_j6;
   *p_buf_j7=(WORD)zero_j7;
   *p_buf_j8=(WORD)zero_j8;
  }
}


int __fastcall TDonThread::weight_don_wave()
{

  try{
    // HQ_CPZ24
    /*       _______________________________
            |                               |
            |_______________________________|
              O    O                O    O
              L4   L3               L2   L1

    台面1,2,3,4,5,6,7,8波形

        3_______2 1_______0                         4_______5 6_______7
        |       | |       |   zp[][0]   zp[][1]     |       | |       |
     ___|       |_|       |_________________________|       |_|       |___
      --->  L1        L2                               L3        L4
      <---  L4        L3                               L2        L1


             台面2        台面4        台面6        台面8
    ----0------------0------------0------------0------------0-----
        j2     z2    j4j6   z4   j8j10   z6  j12j14    z8   j16

             台面1        台面3        台面5        台面7
    ----0------------0------------0------------0------------0-----
        j1     z1    j3j5   z3   j7j9    z5  j11j13    z7   j15

                             |------- |
                             | 控制室 |
                             |--------|

⌨️ 快捷键说明

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