📄 thread.~cp
字号:
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 + -