/* CONTUR.C - ง ค ็  p กฎโ๋ แ ชฎญโใp ฌจ */ #include "complex.h" #include "screen.h" #include "graf.h" char * formt(); word_s col_a(analog *ptr); void stat_grc(word_s nomgr,word_s nscr); void stat_analog(analog *ptr,word_s nomc); void stat_digit(digit *ptr,word_s nomc); void dinam_grc(word_s nscr); void dinam_analog(analog *ptr,word_s nomc,word_s nscr); void dinam_digit(digit *ptr,word_s nomc,word_s nscr); void ext_help_contr(byte tip,word_s nscr); //„ฎฏฎซญจโฅซ์ญ ๏ ฏฎฌฎ้์ ฎ ชฎญโเฎซซฅเฅ void din_var(analog *ptr,word_s nomc); void din_set(analog *ptr,word_s nomc); void din_out(analog *ptr,word_s nomc); void din_pos(analog *ptr,word_s nomc); void din_mod(analog *ptr,word_s nomc,word_s nscr); void din_dt_st(digit *ptr,word_s nomc,word_s nscr); void din_dt1(digit *ptr,word_s nomc); void din_dt2(digit *ptr,word_s nomc); void din_dt3(digit *ptr,word_s nomc); void din_dt4(digit *ptr,word_s nomc); void din_dt5(digit *ptr,word_s nomc); void din_par(digit *ptr,word_s nomc); void din_dot(digit *ptr,word_s nomc); void set_cur(word_s nompar, word_s flag, word_s nscr); void image_cont(word_s nompar,word_s nscr); void set_vso(word_s pos,word_s nscr); void switch_so(word_s curs,word_s nscr); void set_mode(word_s mode,word_s nscr); void set_so(word_s action,word_s nscr); void switch_d(word_s ky,word_s nscr); void inform(word_s help,word_s nscr); word_s lenbar(analog *ptr, word_s cod); void varcod(word_s keycod, word_s *pc, word_s nscr); void varpuls(word_s keycod, word_s *pc); extern word_s mode_contr(controller *ctr , analog *anal, word_s mod); extern word_s so_contr(controller *ctr, analog *anal, word_s mod); extern int so_contr_dir(controller *ctr, analog *anal, word_s key); void sav_parm(analog *ptra); extern word_s algkoef(word_s nscr,char tip,word_s contr,word_s nomsert); extern word_s regul(word_s nscr); object * ptr_o[DISPLAY]; word_s info[4] = { 0, 0, 0, 0 }; word_s i_grc[4] = { 0, 0, 0, 0 }; /* โฅชใ้. ญฎฌฅp ฃpใฏฏ๋ ข ฎก๊ฅชโฅ */ gr_cont * p_grc[DISPLAY]; //char mas_v[4][580]; /* ฌ แแจข ๅp ญฅญจ๏ ชใpแฎp  ่จไp  */ //char mas_s[4][56]; /* ฌ แแจข ๅp ญฅญจ๏ ชใpแฎp  "‡" */ //char mas_o[4][56]; /* ฌ แแจข ๅp ญฅญจ๏ ชใpแฎp  "‚" */ char *on_n[5]={"OTŠ","“‘Š","‚Š‹ "," ŽŒ€ ","‹Š "}; char *st_n[5]={"‘’Ž","" ,"" ,"" ,"" }; char *of_n[5]={"‡€Š","‘’Ž","‚›Š‹","€“˜…ˆ…","„‹Š"}; word_s cur_so[DISPLAY]; /* ฏpจงญ. ใแโ. ชใpแฎp  ญ  ‡ จซจ ‚ */ word_s x_v[DISPLAY], x_s[DISPLAY], x_o[DISPLAY]; /* ชฎฎpคจญ โ๋ ชใpแฎpฎข */ word_s i_par[4] = { 0, 0, 0, 0 }; /* โฅชใ้. ญฎฌฅp ชฎญโใp  ข ฃpใฏฏฅ */ controller *p_c[DISPLAY]; extern word_s i_par_sav[]; analog *p_a[DISPLAY]; digit *p_d[DISPLAY]; word_s key[DISPLAY]; /*-------------------------------------------------------------------*/ word_s conturs(word_s kc,word_s nscr) { int d; stat_grc(i_grc[nscr],nscr); while(!endrun) { key[nscr] = read_wpipe(scr_chn[nscr],0.5*HZ); if(key[nscr]==kc) continue; /* ฅแซจ ข๋งฎข ํโฎฉ ฆฅ ง ค ็จ */ if(list_func(key[nscr])) { /* ฅแซจ ข๋งฎข คpใฃฎฉ ง ค ็จ */ i_par_sav[nscr] = i_par[nscr]; return key[nscr]; } if(var_obj(key[nscr],nscr)) stat_grc(0,nscr); else if(ptr_o[nscr]->n_gr_c != 0) { //SWITCH if(key[nscr]==PgUp) {if(ptr_o[nscr]->n_gr_c > 1) stat_grc(i_grc[nscr] - 1,nscr); goto m1;} if(key[nscr]==PgDn) {if(ptr_o[nscr]->n_gr_c > 1) stat_grc(i_grc[nscr] + 1,nscr); goto m1;} if(i_par[nscr]== -1) continue; if(key[nscr]==Left) { // if(i_par[nscr]== -1) goto m1; do if(--i_par[nscr] < 0)i_par[nscr]=7; while(p_grc[nscr]->type_sert[i_par[nscr]]==EMPTY); set_cur(i_par[nscr],1,nscr); goto m1; } if(key[nscr]==Right) { // if(i_par[nscr]== -1) goto m1; do if(++i_par[nscr] > 7)i_par[nscr]=0; while(p_grc[nscr]->type_sert[i_par[nscr]]==EMPTY); set_cur(i_par[nscr],1,nscr); goto m1; } if(key[nscr]==K1) {if(p_grc[nscr]->type_sert[0] != EMPTY) set_cur(0, 1,nscr); goto m1;} if(key[nscr]==K2) {if(p_grc[nscr]->type_sert[1] != EMPTY) set_cur(1, 1,nscr); goto m1;} if(key[nscr]==K3) {if(p_grc[nscr]->type_sert[2] != EMPTY) set_cur(2, 1,nscr); goto m1;} if(key[nscr]==K4) {if(p_grc[nscr]->type_sert[3] != EMPTY) set_cur(3, 1,nscr); goto m1;} if(key[nscr]==K5) {if(p_grc[nscr]->type_sert[4] != EMPTY) set_cur(4, 1,nscr); goto m1;} if(key[nscr]==K6) {if(p_grc[nscr]->type_sert[5] != EMPTY) set_cur(5, 1,nscr); goto m1;} if(key[nscr]==K7) {if(p_grc[nscr]->type_sert[6] != EMPTY) set_cur(6, 1,nscr); goto m1;} if(key[nscr]==K8) {if(p_grc[nscr]->type_sert[7] != EMPTY) set_cur(7, 1,nscr); goto m1;} if(key[nscr]==ON || key[nscr]==OFF || key[nscr]==OP || key[nscr]==STP || key[nscr]==CL) {if(p_grc[nscr]->type_sert[i_par[nscr]] == DIGIT /*&& p_d[nscr]->type_par > 1*/) //!!!! switch_d(key[nscr],nscr); goto m1;} if(key[nscr]==Tab){ switch_so(Tab,nscr); goto m1;} if(key[nscr]==MAN || key[nscr]==AUTO || key[nscr]==CAS) {if(p_grc[nscr]->type_sert[i_par[nscr]] == ANALOG) set_mode(key[nscr],nscr);goto m1;} if(key[nscr]==MORE || key[nscr]==LESS || key[nscr]==QMORE || key[nscr]==QLESS) {if(cur_so[nscr]) set_so(key[nscr],nscr); goto m1;} #if (REGULAT) if(key[nscr]==ENTER) {if(p_grc[nscr]->type_sert[i_par[nscr]]==ANALOG && (p_a[nscr]->type_mech==NC || p_a[nscr]->type_mech==NO) && // p_a[nscr]->type_mech && p_a[nscr]->mod_cod && (p_ref+p_a[nscr]->i_reg_ar)->p_ar != NULL) { next: i_par_sav[nscr] = i_par[nscr]; key[nscr] = regul(nscr); d=0; i_par[nscr] = i_par_sav[nscr]; if(key[nscr]==PgUp) d=-1; if(key[nscr]==PgDn) d=1; if(d) { for(;;) { i_par[nscr]+=d; if(i_par[nscr] > 7)i_par[nscr]=0; if(i_par[nscr] < 0)i_par[nscr]=7; if(p_grc[nscr]->type_sert[i_par[nscr]] == ANALOG && (p_c[nscr]->a_ptr[p_grc[nscr]->nomsert[i_par[nscr]]].type_mech==NC || p_c[nscr]->a_ptr[p_grc[nscr]->nomsert[i_par[nscr]]].type_mech==NO)) { p_c[nscr] = c_ptr+p_grc[nscr]->nomcontr[i_par[nscr]]; p_a[nscr] = p_c[nscr]->a_ptr+p_grc[nscr]->nomsert[i_par[nscr]]; goto next; } } } if(list_func(key[nscr])) return key[nscr]; i_par[nscr] = i_par_sav[nscr]; stat_grc(i_grc[nscr],nscr); } else if((c_ptr+p_grc[nscr]->nomcontr[i_par[nscr]])->typcontr==4&& ((p_grc[nscr]->type_sert[i_par[nscr]]==ANALOG&&p_a[nscr]->nomin_var>=0)|| (p_grc[nscr]->type_sert[i_par[nscr]]==DIGIT&&p_d[nscr]->nom_var))) { if(t_kbd==0 || t_kbd==3)key[nscr]=algkoef(nscr,p_grc[nscr]->type_sert[i_par[nscr]],p_grc[nscr]->nomcontr[i_par[nscr]],p_grc[nscr]->nomsert[i_par[nscr]]); if(list_func(key[nscr])) return key[nscr]; stat_grc(i_grc[nscr],nscr); } goto m1; } #endif if(key[nscr]==Help) {inform(1,nscr); goto m1;} if(key[nscr]==ESC) inform(0,nscr); m1: if(check_flag(period_fl[nscr])) dinam_grc(nscr); } } return 0; } /*-------------------------------------------------------------------*/ void stat_grc(word_s nomgr,word_s nscr) { word_s i; char first= -1; request_resource(ekran, 0*HZ); bar_(0, 1, Y_T_SCR+1, X_SCR-1, Y_B_SCR-1); release_resource(ekran); ptr_o[nscr] = o_ptr+o_curr[nscr]; if(ptr_o[nscr]->n_gr_c == 0){ eprintf(YELLOW_," „ซ๏ ฎก๊ฅชโ  ญฅโ ฃpใฏฏ ชฎญโใpฎข");return;} eprintf(BLACK_,""); change_timer(period_tm[nscr], 3*HZ, 1); i_grc[nscr] = nomgr; if(i_grc[nscr] < 0) i_grc[nscr] = ptr_o[nscr]->n_gr_c - 1; else if(i_grc[nscr] >= ptr_o[nscr]->n_gr_c) i_grc[nscr] = 0; p_grc[nscr] = gr_c_p+ *(ptr_o[nscr]->nom_gr_c+i_grc[nscr]); //ptr_o[nscr]->nom_gr_c[i_grc[nscr]]; request_resource(ekran, 0*HZ); _settextcolor(WHITE_); gprintf(NOGR_L,NOGR_C,"%1d(%1d)",i_grc[nscr]+1,ptr_o[nscr]->n_gr_c); gprintf(CIPH_GR_L,CIPH_GR_C,"%s",p_grc[nscr]->cipher); gprintf(NAME_GR_L,NAME_GR_C,"%s",p_grc[nscr]->name); for(i=0; i < 8/*p_grc[nscr]->n_par*/; i++) { if(p_grc[nscr]->type_sert[i] == EMPTY) continue; if(p_grc[nscr]->type_sert[i] == ANALOG) stat_analog((c_ptr+p_grc[nscr]->nomcontr[i])->a_ptr+p_grc[nscr]->nomsert[i],i); else stat_digit((c_ptr+p_grc[nscr]->nomcontr[i])->d_ptr+p_grc[nscr]->nomsert[i],i); if(first== -1 || i == i_par[nscr] )first=i; } i_par[nscr]=first; if(i_par[nscr]== -1){release_resource(ekran);return;} // if(first== -1){release_resource(ekran);i_par[nscr]= -1;return;} set_vso(0,nscr); // if(p_grc[nscr]->type_sert[i_par[nscr]]==EMPTY) i_par[nscr] = first; // if(i_par[nscr] >= 8/*p_grc[nscr]->n_par*/) i_par[nscr] = first; set_cur(i_par[nscr],0,nscr); _setcolor(WHITE_BR_); line(0,YT_ER,X_SCR,YT_ER); line(XL_ER-1,YT_ER,XL_ER-1,YB_ER); ykstr(ptr_o[nscr]->n_gr_c,i_grc[nscr]+1); release_resource(ekran); dinam_grc(nscr); } /*-------------------------------------------------------------------*/ void stat_analog(analog *ptr,word_s nomc) { word_s i; word_s dc,x0,ym; dc=nomc*DC_C; x0=X1+nomc*DX; _settextcolor(GREEN_BR_); gprintf(CIPH_CO_L,CIPH_CO_C+dc,"%s",ptr->cipher); _settextcolor(WHITE_); gprintf(MEG_L,VAL_C-1+dc,"%s",ptr->unit); for(i=0; i <= NSEG_S; i++) { gprintf(SC_L-i*DM_S,SC_C+dc,"%3d",i*V_SEG); _setcolor(WHITE_); ym=Y0-i*DM_S*H_CH; line(x0,ym,x0+3,ym); } gprintf(SC_L- --i*DM_S,SC_C+dc+3,"%c",'%'); _setcolor(WHITE_); line(x0,Y0,x0,Y0-LSC); if(ptr->type_mech==NC || ptr->type_mech==NO) { _settextcolor(CYAN_); gprintf(OVS_L,OVS_C+dc,"‚"); _settextcolor(GREEN_BR_); gprintf(OVS_L,OVS_C+dc+2,""); _settextcolor(GREEN_); gprintf(OVS_L,OVS_C+dc+5,"‡"); _setcolor(WHITE_); line(x0+DSET,Y0,x0+DSET,Y0-LSC); line(x0-DOUT,Y0,x0-DOUT,Y0-LSC); _settextcolor(WHITE_); if(ptr->type_mech == NC) { gprintf(SC_L,C_C+dc,"‡"); gprintf(SCH,C_C+dc,"Ž"); } else { gprintf(SC_L,C_C+dc,"Ž"); gprintf(SCH,C_C+dc,"‡"); } } if(ptr->min_reg) { ym = Y0 - lenbar(ptr,ptr->min_reg); bar_(YELLOW_,x0-7,ym,x0-9,ym+1); } if(ptr->max_reg) { ym = Y0 - lenbar(ptr,ptr->max_reg); bar_(YELLOW_,x0-7,ym,x0-9,ym+1); } if(ptr->min_al) { ym = Y0 - lenbar(ptr,ptr->min_al); bar_(RED_,x0-7,ym,x0-9,ym+1); } if(ptr->max_al) { ym = Y0 - lenbar(ptr,ptr->max_al); bar_(RED_,x0-7,ym,x0-9,ym+1); } _settextcolor(CYAN_); if(ptr->pasive) gprintf(CIPH_CO_L-1,CIPH_CO_C+7+nomc*DC_C,""); else gprintf(CIPH_CO_L-1,CIPH_CO_C+7+nomc*DC_C,"A"); if(ptr->type_mech==M_INP) gprintf(CIPH_CO_L-1,CIPH_CO_C+1+nomc*DC_C,"‚›•Ž„"); if(ptr->type_mech==NO_REG) gprintf(CIPH_CO_L-1,CIPH_CO_C+1+nomc*DC_C,"‚•Ž„"); // if(ptr->type_mech==M_INP) //!! // {_settextcolor(CYAN_); gprintf(CIPH_CO_L-1,CIPH_CO_C+1+nomc*DC_C,"_‚‚Ž„"); } } /*-------------------------------------------------------------------*/ void dinam_grc(word_s nscr) { word_s i; controller *tmpPC; clear_flag(period_fl[nscr]); request_resource(ekran, 0*HZ); if(screen!=nscr) set_screen(nscr); tmpPC=p_c[nscr]; for(i=0; i < 8/*p_grc[nscr]->n_par*/; i++) { if(p_grc[nscr]->type_sert[i] == EMPTY) continue; p_c[nscr]=c_ptr+p_grc[nscr]->nomcontr[i]; if(p_grc[nscr]->type_sert[i] == ANALOG) dinam_analog(p_c[nscr]->a_ptr+p_grc[nscr]->nomsert[i],i,nscr); else dinam_digit(p_c[nscr]->d_ptr+p_grc[nscr]->nomsert[i],i,nscr); } p_c[nscr]=tmpPC; if(screen!=nscr) set_screen(screen); release_resource(ekran); } /*-------------------------------------------------------------------*/ void dinam_analog(analog *ptr,word_s nomc,word_s nscr) { din_var(ptr,nomc); if(ptr->type_mech != M_INP && ptr->type_mech != NO_REG) din_mod(ptr,nomc,nscr); //!! if(ptr->type_mech==NC || ptr->type_mech==NO || ptr->type_mech==PULS) { din_set(ptr,nomc); if(ptr->type_mech==PULS) din_pos(ptr,nomc); else din_out(ptr,nomc); } } /*-------------------------------------------------------------------*/ void din_var(analog *ptr,word_s nomc) { word_s x0,ym,color; if(ptr->novalid) color=8; else color=GREEN_BR_; _settextcolor(color); gprintf(VAR_L,VAL_C+nomc*DC_C,formt()/*"%8.2f"*/,ptr->var_tech); x0=X1+nomc*DX; ym = Y0 - lenbar(ptr,ptr->var_cod); bar_(col_a(ptr),x0-1,Y0,x0-5,ym); bar_(0,x0-1,ym-1,x0-5,Y0-LSC-1); } /*-------------------------------------------------------------------*/ void din_set(analog *ptr,word_s nomc) { word_s x0,ym,color; if(ptr->novalid) color=8; else color=GREEN_; _settextcolor(color); gprintf(SET_L,VAL_C+nomc*DC_C,formt()/*"%8.2f"*/, valtec(ptr,ptr->set_cod)); x0=X1+nomc*DX; ym = Y0 - lenbar(ptr,ptr->set_cod); bar_(color,x0+DSET+1,Y0,x0+DSET+4,ym); bar_(0,x0+DSET+1,ym-1,x0+DSET+4,Y0-LSC-1); } /*-------------------------------------------------------------------*/ void din_out(analog *ptr,word_s nomc) { word_s x0,ym,color,out; if(ptr->novalid) color=8; else color=CYAN_; _settextcolor(color); out =( ptr->out_cod > ADC_SC )?ADC_SC:(ptr->out_cod < 0 )?0:ptr->out_cod; gprintf(OUT_L,VAL_C+nomc*DC_C,"%8.2f",100.0*out/ADC_SC); x0=X1+nomc*DX; ym = Y0 - out * K_BAR0; bar_(color,x0-DOUT-1,Y0,x0-DOUT-3,ym); bar_(0,x0-DOUT-1,ym-1,x0-DOUT-3,Y0-LSC-1); } /*-------------------------------------------------------------------*/ void din_pos(analog *ptr,word_s nomc) { word_s x0,ym,color; if(ptr->novalid) color=8; else color=CYAN_; _settextcolor(color); gprintf(OUT_L,VAL_C+nomc*DC_C,"%8.2f",100.0*ptr->pos_cod/ADC_SC); x0=X1+nomc*DX; ym = Y0 - ptr->pos_cod * K_BAR0; bar_(color,x0-DOUT-1,Y0,x0-DOUT-3,ym); bar_(0,x0-DOUT-1,ym-1,x0-DOUT-3,Y0-LSC-1); } /*-------------------------------------------------------------------*/ void din_mod(analog *ptr,word_s nomc,word_s nscr) { static char mod[10][6] = { " ", "“— ", "€‚’ ", "Š€‘Š ", "-€‚’", "ˆ‘Š‹ ", "ˆ‘Š‹เ", "ˆ‘Š‹ ", "ˆ‘Š‹ช", "ˆ‘Š‹ฏ" }; word_s i; switch(ptr->mod_cod) { case R_MAN : i = 1; break; case R_AUTO : i = 2; break; case R_CAS : i = 3; break; case R_PULT : i = 4; break; default : i = 0; } i=i+ptr->no_uchet*5; if(ptr->no_uchet) _settextcolor(YELLOW_); else if(ptr->novalid) _settextcolor(8); else _settextcolor(GREEN_BR_); gprintf(CIPH_CO_L-1,CIPH_CO_C+1+nomc*DC_C,"%c%s",' ',mod[i]); if(nomc == i_par[nscr]) switch_so(p_a[nscr]->mod_cod,nscr); } /*-------------------------------------------------------------------*/ word_s col_a(analog *ptr) { if(ptr->novalid) return 8; // else if(ptr->max_al && ptr->var_cod > ptr->max_al || // ptr->min_al && ptr->var_cod < ptr->min_al) return(RED_); // else if(ptr->max_reg && ptr->var_cod > ptr->max_reg || // ptr->min_reg && ptr->var_cod < ptr->min_reg) return(YELLOW_); // else return(GREEN_BR_); if(ptr->bound_al) return(RED_); else if(ptr->bound_reg) return(YELLOW_); else return(GREEN_BR_); } /*-------------------------------------------------------------------*/ void stat_digit(digit *ptr,word_s nomc) { _settextcolor(GREEN_BR_); gprintf(CIPH_CO_L,CIPH_CO_C+nomc*DC_C,"%s",ptr->cipher); _settextcolor(3); if(ptr->type_par==1) gprintf(CIPH_CO_L-3,CIPH_CO_C+nomc*DC_C,"‘ฎแโฎ๏ญจฅ"); else if(ptr->type_par==0&&ptr->type_com==1) gprintf(CIPH_CO_L-3,CIPH_CO_C+nomc*DC_C+5,"Šฎฌ"); else if(ptr->type_par==0&&ptr->type_com==2) gprintf(CIPH_CO_L-3,CIPH_CO_C+nomc*DC_C,"‘ฎแโ"); else gprintf(CIPH_CO_L-3,CIPH_CO_C+nomc*DC_C,"‘ฎแโ Šฎฌ"); bar_(7,(CIPH_CO_C-1)*W_CH-1+nomc*DX,270,(CIPH_CO_C-1)*W_CH+nomc*DX+9*W_CH,160); _settextcolor(CYAN_); if(ptr->pasive) gprintf(CIPH_CO_L-1,CIPH_CO_C+7+nomc*DC_C,""); else gprintf(CIPH_CO_L-1,CIPH_CO_C+7+nomc*DC_C,"A"); if(ptr->type_par==0 && ptr->type_com ==1) {_settextcolor(CYAN_); gprintf(CIPH_CO_L-1,CIPH_CO_C+1+nomc*DC_C,"‚›•Ž„"); } if(ptr->type_par==0 && ptr->type_com ==2) {_settextcolor(CYAN_); gprintf(CIPH_CO_L-1,CIPH_CO_C+1+nomc*DC_C,"‚•Ž„"); } } /*-------------------------------------------------------------------*/ void dinam_digit(digit *ptr,word_s nomc,word_s nscr) { switch(ptr->type_par) { case 0 : din_dt_st(ptr,nomc,nscr); break; case 1 : din_dt1(ptr,nomc); break; case 2 : din_dt2(ptr,nomc); break; case 3 : din_dt3(ptr,nomc); break; case 4 : din_dt4(ptr,nomc); break; case 5 : din_dt5(ptr,nomc); break; } } /*-------------------------------------------------------------------*/ void din_dt_st(digit *ptr,word_s nomc,word_s nscr) { word_s color,x,tip=0; alg_str *algb; digit *ptrd1; if(ptr->type_com) { if(ptr->nom_var == -1) return; if(ptr->type_com==1) x=CIPH_CO_C+nomc*DC_C+5; else if(ptr->type_com==2) x=CIPH_CO_C+nomc*DC_C; else return; if(ptr->val_par) { if(ptr->novalid ) color=1; else if(ptr->signal != 2) color=GREEN_; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,x,"<1>"); if(!ptr->val_par) { if(ptr->novalid) color=1; else if(ptr->signal != 1) color=GREEN_; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,x,"<0>"); } else if(p_c[nscr]->typcontr==VIRT&&ptr->nom_var>0) { algb=p_alg1+ptr->nom_var-1; if((formuls1+algb->form)->tip==1) { tip=floor(algb->koef[3]); if(tip<0&&tip>4) tip=0; if(algb->inp[0].tip==DIGIT) if(algb->inp[2].tip==DIGIT) {ptrd1=(c_ptr+algb->inp[0].nc)->d_ptr+algb->inp[0].nz; if(ptrd1->val_par) { if(ptrd1->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+nomc*DC_C+5,on_n[tip]); ptrd1=(c_ptr+algb->inp[2].nc)->d_ptr+algb->inp[2].nz; if(ptrd1->val_par) { if(ptrd1->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+nomc*DC_C+5,of_n[tip]); } else { // if(algb->inp[1].tip==DIGIT) // ((c_ptr+algb->inp[0].nc)->d_ptr+algb->inp[0].nz)->val_par=((c_ptr+algb->inp[1].nc)->d_ptr+algb->inp[1].nz)->val_par; ptrd1=(c_ptr+algb->inp[0].nc)->d_ptr+algb->inp[0].nz; if(ptrd1->val_par) { if(ptrd1->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+nomc*DC_C+5,on_n[tip]); if(!ptrd1->val_par) { if(ptrd1->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+nomc*DC_C+5,of_n[tip]); } if(algb->inp[4].tip==DIGIT) {ptrd1=(c_ptr+algb->inp[4].nc)->d_ptr+algb->inp[4].nz; if(ptrd1->val_par) { if(ptrd1->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-9,CIPH_CO_C+nomc*DC_C+5,st_n[tip]); } if(algb->inp[1].tip==DIGIT) if(algb->inp[3].tip==DIGIT) {ptrd1=(c_ptr+algb->inp[1].nc)->d_ptr+algb->inp[1].nz; if(ptrd1->val_par) { if(ptrd1->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+nomc*DC_C,on_n[tip]); ptrd1=(c_ptr+algb->inp[3].nc)->d_ptr+algb->inp[3].nz; if(ptrd1->val_par) { if(ptrd1->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+nomc*DC_C,of_n[tip]); } else {ptrd1=(c_ptr+algb->inp[1].nc)->d_ptr+algb->inp[1].nz; if(ptrd1->val_par) { if(ptrd1->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+nomc*DC_C,on_n[tip]); if(!ptrd1->val_par) { if(ptrd1->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+nomc*DC_C,of_n[tip]); } if(algb->inp[6].tip==DIGIT) { ptrd1=(c_ptr+algb->inp[6].nc)->d_ptr+algb->inp[6].nz; _settextcolor(3); if(ptrd1->val_par) gprintf(CIPH_CO_L-3,CIPH_CO_C+nomc*DC_C," ซฎช "); else gprintf(CIPH_CO_L-3,CIPH_CO_C+nomc*DC_C," „ฅกซฎช "); } } } } /*-------------------------------------------------------------------*/ void din_dt1(digit *ptr,word_s nomc) { word_s color; if(ptr->nom_var != -1) { if(!ptr->val_par) { if(ptr->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+2+nomc*DC_C,"ŽŒ€"); if(ptr->val_par) { if(ptr->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+nomc*DC_C,"€“˜…ˆ…"); } } /*-------------------------------------------------------------------*/ void din_dt2(digit *ptr,word_s nomc) { word_s color; if(ptr->nom_var != -1) { if(ptr->val_par) { if(ptr->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+nomc*DC_C,"‹Š"); if(!ptr->val_par) { if(ptr->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+nomc*DC_C,"„‹Š"); } if(ptr->nom_dout != -1) { if(ptr->val_out) { if(ptr->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+5+nomc*DC_C,"‹Š"); if(!ptr->val_out) { if(ptr->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+5+nomc*DC_C,"„‹Š"); } } /*-------------------------------------------------------------------*/ void din_dt3(digit *ptr,word_s nomc) { word_s color; if(ptr->nom_var != -1) { if(ptr->val_par) { if(ptr->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+nomc*DC_C,"‚Š‹"); if(!ptr->val_par) { if(ptr->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+nomc*DC_C,"‚›Š‹"); } if(ptr->nom_dout != -1) { if(ptr->val_out) { if(ptr->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+5+nomc*DC_C,"‚Š‹"); if(!ptr->val_out) { if(ptr->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+5+nomc*DC_C,"‚›Š‹"); } } /*-------------------------------------------------------------------*/ void din_dt4(digit *ptr,word_s nomc) { word_s color; if(ptr->nom_var != -1) { if(ptr->val_par) { if(ptr->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+nomc*DC_C,"‚Š‹"); if(!ptr->val_par) { if(ptr->novalid) color=1; #if(PUMP_NORMAL) else color=GREEN_; #else else color=RED_; #endif } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+nomc*DC_C,"‚›Š‹"); } if(ptr->nom_dout != -1) { if(ptr->val_out) { if(ptr->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+5+nomc*DC_C,"“‘Š"); } if(ptr->nom_dot2 != -1) { if(ptr->val_ot2) { if(ptr->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+5+nomc*DC_C,"‘’Ž"); } } /*-------------------------------------------------------------------*/ void din_dt5(digit *ptr,word_s nomc) { word_s color; if(ptr->nom_var != -1) { if(ptr->val_par) { if(ptr->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+nomc*DC_C,"Ž’Š"); } if(ptr->nom_vr2 != -1) { if(ptr->val_pr2) { if(ptr->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+nomc*DC_C,"‡€Š"); } /*if(ptr->nom_vr3 != -1) { if(ptr->val_pr3) { if(ptr->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-5,CIPH_CO_C+nomc*DC_C,"Œ“”’"); } */ if(ptr->nom_vr4 != -1) { if(ptr->novalid) color=1; else color=GREEN_BR_; _settextcolor(color); if(ptr->val_pr4) gprintf(CIPH_CO_L-1,CIPH_CO_C+nomc*DC_C," „ˆ‘’"); else gprintf(CIPH_CO_L-1,CIPH_CO_C+nomc*DC_C," Œ…‘’"); } if(ptr->nom_dout != -1) { if(ptr->val_out) { if(ptr->novalid) color=1; else color=GREEN_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-11,CIPH_CO_C+5+nomc*DC_C,"Ž’Š"); } if(ptr->nom_dot2 != -1) { if(ptr->val_ot2) { if(ptr->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-7,CIPH_CO_C+5+nomc*DC_C,"‡€Š"); } /*if(ptr->type_com==1)*/ if(ptr->nom_dot3 !=-1) { if(ptr->val_ot3) { if(ptr->novalid) color=1; else color=RED_; } else color=8; _settextcolor(color); gprintf(CIPH_CO_L-9,CIPH_CO_C+5+nomc*DC_C,"‘’Ž"); } } /*-------------------------------------------------------------------*/ void set_cur(word_s nompar, word_s flag, word_s nscr) { if(flag) { _setcolor(BLACK_); _rectangle(_GBORDER,x_v[nscr]-1,y_v+H_CH-2,x_v[nscr]+9*W_CH+2,(MEG_L-1)*H_CH-2); line(x_v[nscr],y_v,x_v[nscr]+73,y_v); // _putimage(x_v[nscr], y_v, mas_v[nscr], _GPSET); if(cur_so[nscr] == CUR_S) _rectangle(_GBORDER,x_s[nscr]-1,y_s,x_s[nscr]+W_CH,y_s+H_CH); //_putimage(x_s[nscr], y_s, mas_s[nscr], _GPSET); else if(cur_so[nscr] == CUR_O) _rectangle(_GBORDER,x_o[nscr]-1,y_o,x_o[nscr]+W_CH,y_o+H_CH); //_putimage(x_o[nscr], y_o, mas_o[nscr], _GPSET); } i_par[nscr] = nompar; // if(i_par[nscr] < 0 ) i_par[nscr] = p_grc[nscr]->n_par - 1; // else if(i_par[nscr] >= p_grc[nscr]->n_par) i_par[nscr] = 0; p_c[nscr] = c_ptr+p_grc[nscr]->nomcontr[i_par[nscr]]; if(p_grc[nscr]->type_sert[i_par[nscr]]==ANALOG) p_a[nscr] = p_c[nscr]->a_ptr+p_grc[nscr]->nomsert[i_par[nscr]]; else p_a[nscr]=NULL; if(p_grc[nscr]->type_sert[i_par[nscr]]==DIGIT) p_d[nscr] = p_c[nscr]->d_ptr+p_grc[nscr]->nomsert[i_par[nscr]]; else p_d[nscr] =NULL; image_cont(i_par[nscr],nscr); if(p_grc[nscr]->type_sert[i_par[nscr]]==ANALOG&&p_a[nscr]->type_mech) switch_so(p_a[nscr]->mod_cod,nscr); if(p_grc[nscr]->type_sert[i_par[nscr]] == ANALOG) eprintf(GREEN_,p_a[nscr]->name); else eprintf(GREEN_,p_d[nscr]->name); if(info[nscr]) inform(info[nscr],nscr); } /*-------------------------------------------------------------------*/ void image_cont(word_s nomc,word_s nscr) { if(p_a[nscr]&&p_a[nscr]->type_mech==M_INP) cur_so[nscr]=M_INP; //!! else cur_so[nscr] = 0; x_o[nscr] = (OVS_C-1)*W_CH + nomc*DX; x_s[nscr] = x_o[nscr] + 5*W_CH; x_v[nscr] = (CIPH_CO_C-1)*W_CH-1 + nomc*DX; // _getimage(x_v[nscr], y_v, x_v[nscr]+9*W_CH, y_v+H_CH-2, mas_v[nscr]); // _putimage(x_v[nscr], y_v, mas_v[nscr], _GPRESET); _setcolor(WHITE_BR_); line(x_v[nscr],y_v,x_v[nscr]+73,y_v); _rectangle(_GBORDER,x_v[nscr]-1,y_v+H_CH-1,x_v[nscr]+9*W_CH+2,(MEG_L-1)*H_CH-2); } /*-------------------------------------------------------------------*/ void set_vso(word_s pos,word_s nscr) { _settextcolor(GREEN_BR_); gprintf(VAR_L,VSO_C+pos*DC_C,""); _settextcolor(GREEN_); gprintf(SET_L,VSO_C+pos*DC_C,"‡"); _settextcolor(CYAN_); gprintf(OUT_L,VSO_C+pos*DC_C,"‚"); // _getimage((VSO_C-1+pos*DC_C)*W_CH,(SET_L-1)*H_CH, // (VSO_C+pos*DC_C)*W_CH-1,SET_L*H_CH-2,mas_s[nscr]); // _getimage((VSO_C-1+pos*DC_C)*W_CH,(OUT_L-1)*H_CH, // (VSO_C+pos*DC_C)*W_CH-1,OUT_L*H_CH-2,mas_o[nscr]); } /*-------------------------------------------------------------------*/ void switch_so(word_s curs,word_s nscr) { if(curs==R_MAN) {if(cur_so[nscr] == CUR_S) {_setcolor(BLACK_); _rectangle(_GBORDER,x_s[nscr]-1,y_s,x_s[nscr]+W_CH,y_s+H_CH);}//_putimage(x_s[nscr], y_s, mas_s[nscr], _GPSET); _setcolor(WHITE_BR_); _rectangle(_GBORDER,x_o[nscr]-1,y_o,x_o[nscr]+W_CH,y_o+H_CH);//_putimage(x_o[nscr], y_o, mas_o[nscr], _GPRESET); cur_so[nscr] = CUR_O; goto m2;} if(curs==R_AUTO) {if(cur_so[nscr] == CUR_O) {_setcolor(BLACK_); _rectangle(_GBORDER,x_o[nscr]-1,y_o,x_o[nscr]+W_CH,y_o+H_CH);}//_putimage(x_o[nscr], y_o, mas_o[nscr], _GPSET); _setcolor(WHITE_BR_); _rectangle(_GBORDER,x_s[nscr]-1,y_s,x_s[nscr]+W_CH,y_s+H_CH); //_putimage(x_s[nscr], y_s, mas_s[nscr], _GPRESET); cur_so[nscr] = CUR_S; goto m2;} if(curs==R_CAS) {if(cur_so[nscr] == CUR_S) {_setcolor(BLACK_); _rectangle(_GBORDER,x_s[nscr]-1,y_s,x_s[nscr]+W_CH,y_s+H_CH);}//_putimage(x_s[nscr], y_s, mas_s[nscr], _GPSET); else if(cur_so[nscr] == CUR_O) {_setcolor(BLACK_); _rectangle(_GBORDER,x_o[nscr]-1,y_o,x_o[nscr]+W_CH,y_o+H_CH);}//_putimage(x_o[nscr], y_o, mas_o[nscr], _GPSET); cur_so[nscr] = 0; goto m2;} if(curs==Tab) if(cur_so[nscr] == CUR_O) {_setcolor(BLACK_); _rectangle(_GBORDER,x_o[nscr]-1,y_o,x_o[nscr]+W_CH,y_o+H_CH); //_putimage(x_o[nscr], y_o, mas_o[nscr], _GPSET); _setcolor(WHITE_BR_); _rectangle(_GBORDER,x_s[nscr]-1,y_s,x_s[nscr]+W_CH,y_s+H_CH);//_putimage(x_s[nscr], y_s, mas_s[nscr], _GPRESET); cur_so[nscr] = CUR_S; set_so(-1,nscr); } else if(cur_so[nscr] == CUR_S && p_a[nscr]->mod_cod == R_MAN) {_setcolor(BLACK_); _rectangle(_GBORDER,x_s[nscr]-1,y_s,x_s[nscr]+W_CH,y_s+H_CH); // _putimage(x_s[nscr], y_s, mas_s[nscr], _GPSET); _setcolor(WHITE_BR_); _rectangle(_GBORDER,x_o[nscr]-1,y_o,x_o[nscr]+W_CH,y_o+H_CH);//_putimage(x_o[nscr], y_o, mas_o[nscr], _GPRESET); cur_so[nscr] = CUR_O; } m2: return; } /*-------------------------------------------------------------------*/ void set_mode(word_s mode,word_s nscr) { word_s kz=0, r_mode; char *cop; if(mode==MAN) {cop="“—"; r_mode=R_MAN; goto m3;} if(mode==AUTO){cop=" €‚’"; r_mode=R_AUTO; goto m3;} if(mode==CAS) {cop="Š€‘Š"; r_mode=R_CAS; goto m3;} if(mode==COMP){cop="-//-"; r_mode=R_COMP; goto m3;} if(mode==PULT){cop="-//-"; r_mode=R_PULT; goto m3;} cop="-//-"; r_mode=0; m3: if(!p_a[nscr]->type_mech || !p_a[nscr]->mod_cod || p_a[nscr]->mod_cod == r_mode) return; //M kz=mode_contr(p_c[nscr], p_a[nscr], r_mode); if(!kz) { #if (PROTOC) arc_op1("%s - ฅฆจฌ %s",p_a[nscr]->cipher,cop); #endif p_a[nscr]->mod_cod = r_mode; p_a[nscr]->mod_din = 1; request_resource(ekran,0*HZ); din_mod(p_a[nscr],i_par[nscr],nscr); release_resource(ekran); } } /*-------------------------------------------------------------------*/ void set_so(word_s action,word_s nscr) { word_s kz, save, ok_lev; float val; char *cop, com=0; if(action==-1 && p_a[nscr]->set_cod == p_a[nscr]->var_cod) return; p_a[nscr]->nolog = 1; kz=0; if(action==-1) { save = p_a[nscr]->set_cod; p_a[nscr]->set_cod=p_a[nscr]->var_cod; din_set(p_a[nscr],i_par[nscr]); p_a[nscr]->set_din = 1; com=1; } else if(p_a[nscr]->type_mech==M_INP) //ใ็ญฎฉ ขขฎค { save = p_a[nscr]->var_cod; while(key[nscr] != -1) { varcod(key[nscr],&p_a[nscr]->var_cod,nscr); p_a[nscr]->var_tech=valtec(p_a[nscr],p_a[nscr]->var_cod); din_var(p_a[nscr], i_par[nscr]); key[nscr] = read_wpipe(scr_chn[nscr],T_KEY*HZ); } ok_lev=p_a[nscr]->var_cod; p_a[nscr]->var_cod=save; kz=SetAnalogVal(p_c[nscr],p_a[nscr],ok_lev); } else if(cur_so[nscr] == CUR_S) //‚ขฎค ง ค ญจ๏ { save = p_a[nscr]->set_cod; while(key[nscr] != -1) { varcod(key[nscr],&p_a[nscr]->set_cod,nscr); din_set(p_a[nscr], i_par[nscr]); p_a[nscr]->set_din = 1; key[nscr] = read_wpipe(scr_chn[nscr],T_KEY*HZ); } com=1; } else if(p_a[nscr]->type_mech==PULS) varpuls(key[nscr],&p_a[nscr]->out_cod); else //‚ขฎค ข๋ๅฎค  { if(!so_contr_dir(p_c[nscr], p_a[nscr], key[nscr])) { save = p_a[nscr]->out_cod; while(key[nscr] != -1) { varcod(key[nscr],&p_a[nscr]->out_cod,nscr); din_out(p_a[nscr], i_par[nscr]); p_a[nscr]->out_din = 1; key[nscr] = read_wpipe(scr_chn[nscr],T_KEY*HZ); } com=2; } else com=0; } if(com/*p_a[nscr]->type_mech!=M_INP*/) kz=so_contr(p_c[nscr], p_a[nscr], com /*cur_so[nscr]*/); if(!kz) { #if (PROTOC) if(p_a[nscr]->type_mech != PULS) { if(cur_so[nscr] == M_INP) { sav_parm(p_a[nscr]); cop="“—.‚‚Ž„"; val=p_a[nscr]->var_tech; } else if(cur_so[nscr] == CUR_S) { cop="‡ ค ญจฅ"; val=valtec(p_a[nscr],p_a[nscr]->set_cod); } else { cop="‚๋ๅฎค"; val=100.0*p_a[nscr]->out_cod/ADC_SC; } arc_op1("%s - %s %f",p_a[nscr]->cipher,cop,val); } } #endif else { if(action==-1) p_a[nscr]->set_cod = save; else if(p_a[nscr]->type_mech==M_INP) { p_a[nscr]->var_cod = save; p_a[nscr]->var_tech=valtec(p_a[nscr],p_a[nscr]->var_cod); } else if(cur_so[nscr] == M_INP) { p_a[nscr]->var_cod = save; p_a[nscr]->var_tech=valtec(p_a[nscr],p_a[nscr]->var_cod); } else if(cur_so[nscr] == CUR_S) { p_a[nscr]->set_cod = save; din_set(p_a[nscr],i_par[nscr]); p_a[nscr]->set_din = 1; } else if(p_a[nscr]->type_mech != PULS) { p_a[nscr]->out_cod = save; din_out(p_a[nscr],i_par[nscr]); p_a[nscr]->out_din = 1; } } p_a[nscr]->nolog = 0; } /*-------------------------------------------------------------------*/ void switch_d(word_s ky,word_s nscr) { word_s kf,tip=0,stat,kz; byte ab, *cop; alg_str *algb; digit *ptrd1; switch(p_d[nscr]->type_par) { case 0: cop=NULL; if(p_d[nscr]->type_com==1) { p_d[nscr]->nolog=1; if(ky==ON) if(!SetDigVal(p_c[nscr],p_d[nscr],1)) cop="<1>"; if(ky==OFF) if(!SetDigVal(p_c[nscr],p_d[nscr],0)) cop="<0>"; p_d[nscr]->nolog=0; } else if(p_c[nscr]->typcontr==VIRT&&p_d[nscr]->nom_var>0) { algb=p_alg1+p_d[nscr]->nom_var-1; if((formuls1+algb->form)->tip==1) { if(algb->koef[3]<.5) tip=0; else if(algb->koef[3]<1.5) tip=1; else if(algb->koef[3]<2.5) tip=2; else if(algb->koef[3]<3.5) tip=3; else if(algb->koef[3]<4.5) tip=4; else tip=0; stat=0; if(algb->inp[0].tip==DIGIT) stat|=0x01; if(algb->inp[2].tip==DIGIT) stat|=0x02; if(algb->inp[4].tip==DIGIT) stat|=0x04; kz=0; if(stat&0x01) if(stat&0x02) { // ptrd1=(c_ptr+algb->inp[0].nc)->d_ptr+algb->inp[0].nz; if((tip==0&&ky==OP)||(tip!=0&&ky==ON)) //{ptrd1->val_par=1; cop=on_n[tip];} { kz=SetDigVal(c_ptr+algb->inp[2].nc,(c_ptr+algb->inp[2].nc)->d_ptr+algb->inp[2].nz,0); if(!kz && stat&0x04) kz=SetDigVal(c_ptr+algb->inp[4].nc,(c_ptr+algb->inp[4].nc)->d_ptr+algb->inp[4].nz,0); if(!kz) kz=SetDigVal(c_ptr+algb->inp[0].nc,(c_ptr+algb->inp[0].nc)->d_ptr+algb->inp[0].nz,1); if(!kz) cop=on_n[tip]; } // ptrd1=(c_ptr+algb->inp[2].nc)->d_ptr+algb->inp[2].nz; if((tip==0&&ky==CL)||(tip!=0&&ky==OFF)) //{ptrd1->val_par=1; cop=of_n[tip];} { kz=SetDigVal(c_ptr+algb->inp[0].nc,(c_ptr+algb->inp[0].nc)->d_ptr+algb->inp[0].nz,0); if(!kz && stat&0x04) kz=SetDigVal(c_ptr+algb->inp[4].nc,(c_ptr+algb->inp[4].nc)->d_ptr+algb->inp[4].nz,0); if(!kz) kz=SetDigVal(c_ptr+algb->inp[2].nc,(c_ptr+algb->inp[2].nc)->d_ptr+algb->inp[2].nz,1); if(!kz) cop=of_n[tip]; } } else { ptrd1=(c_ptr+algb->inp[0].nc)->d_ptr+algb->inp[0].nz; if((tip==0&&ky==OP)||(tip!=0&&ky==ON)) //{ptrd1->val_par=1; cop=on_n[tip];} if(!SetDigVal(c_ptr+algb->inp[0].nc,ptrd1,1)) cop=on_n[tip]; if((tip==0&&ky==CL)||(tip!=0&&ky==OFF)) //{ptrd1->val_par=0; cop=of_n[tip];} if(!SetDigVal(c_ptr+algb->inp[0].nc,ptrd1,0)) cop=of_n[tip]; } if(algb->inp[4].tip==DIGIT&&tip==0&&ky==STP) { ptrd1=(c_ptr+algb->inp[4].nc)->d_ptr+algb->inp[4].nz; // ptrd1->val_par=1; cop=st_n[tip]; if(!SetDigVal(c_ptr+algb->inp[4].nc,ptrd1,1)) cop=st_n[tip]; } if(algb->inp[5].tip==DIGIT && ky==STP) { ptrd1=(c_ptr+algb->inp[5].nc)->d_ptr+algb->inp[5].nz; if(!ptrd1->val_par == SetDigVal(c_ptr+algb->inp[5].nc,ptrd1,!ptrd1->val_par) ) if(ptrd1->val_par) cop="‹ŽŠ"; else cop="„…‹ŽŠ"; } } } p_d[nscr]->nolog=1; #if (PROTOC) if(cop!=NULL) arc_op1("%s - %s",p_d[nscr]->cipher,cop); #endif if(cop!=NULL) p_d[nscr]->dif_out=1; dinam_digit(p_d[nscr],i_par[nscr],nscr); p_d[nscr]->nolog = 0; return; case 2: /* „‹Š , ‚Š‹ */ case 3: if(ky==STP || ky==OP || ky==CL || p_d[nscr]->nom_dout == -1 || ky==ON && p_d[nscr]->val_out || ky==OFF && !p_d[nscr]->val_out) return; if(ky==ON) if(p_d[nscr]->nom_dout) kf=4096; else kf=-4096; else kf=0; /* CL */ p_d[nscr]->nolog=1; #if (PROTOC) if(p_d[nscr]->type_par==2) if(ky==ON) cop=" ‹Š"; else cop="„‹Š"; /*‹Š,„‹Š*/ else if(ky==ON) cop=" ‚Š‹"; else cop="‚›Š‹"; /*‚Š‹,‚›Š‹*/ arc_op1("%s - %s",p_d[nscr]->cipher,cop); #endif p_d[nscr]->val_out=!p_d[nscr]->val_out; p_d[nscr]->dif_out=1; dinam_digit(p_d[nscr],i_par[nscr],nscr); p_d[nscr]->nolog = 0; return; case 4: /*  แฎแ */ if(ky==STP || ky==OP || ky==CL || ky==ON && (p_d[nscr]->nom_dout == -1) || ky==OFF && (p_d[nscr]->nom_dot2 == -1)) return; p_d[nscr]->nolog=1; if(ky==ON) {if(p_d[nscr]->nom_dout) kf=4096; else kf=-4096; ab=p_d[nscr]->nom_ab; } else {if(p_d[nscr]->nom_dot2) kf=4096; else kf=-4096; ab=p_d[nscr]->nom_a2; } #if (PROTOC) if(ky==ON) cop="“‘Š"; else cop="‘’Ž"; /*“‘Š,‘’Ž*/ arc_op1("%s - %s",p_d[nscr]->cipher,cop); #endif p_d[nscr]->val_out=0; p_d[nscr]->dif_out=1; p_d[nscr]->val_ot2=0; p_d[nscr]->dif_ot2=1; if(ky==ON) p_d[nscr]->val_out=1; else p_d[nscr]->val_ot2=1; dinam_digit(p_d[nscr],i_par[nscr],nscr); p_d[nscr]->nolog = 0; return; case 5: /* ‡ คขจฆช  */ if(ky==ON || ky==OFF || ky==STP && (/*p_d[nscr]->type_com==2 ||*/ p_d[nscr]->nom_dot3==-1) || ky==OP && (p_d[nscr]->nom_dout==-1) || ky==CL && (p_d[nscr]->nom_dot2==-1)) return; p_d[nscr]->nolog=1; if(ky==OP) {if(p_d[nscr]->nom_dout) kf=4096; else kf=-4096; ab=p_d[nscr]->nom_ab; } else if(ky==CL) {if(p_d[nscr]->nom_dot2) kf=4096; else kf=-4096; ab=p_d[nscr]->nom_a2; } else /* STP */ {if(p_d[nscr]->nom_dot3) kf=4096; else kf=-4096; ab=p_d[nscr]->nom_a3; } #if (PROTOC) if(ky==OP) cop="Ž’Š"; else if(ky==CL) cop="‡€Š"; /* Ž’Š,‡€Š */ else cop="‘’Ž"; /* ‘’Ž */ arc_op1("%s - %s",p_d[nscr]->cipher,cop); #endif p_d[nscr]->val_out=0; p_d[nscr]->dif_out=1; p_d[nscr]->val_ot2=0; p_d[nscr]->dif_ot2=1; p_d[nscr]->val_ot3=0; p_d[nscr]->dif_ot3=1; if(ky==OP) p_d[nscr]->val_out=1; else if(ky==CL) p_d[nscr]->val_ot2=1; else p_d[nscr]->val_ot3=1; dinam_digit(p_d[nscr],i_par[nscr],nscr); p_d[nscr]->nolog = 0; return; } } /*-------------------------------------------------------------------*/ void varcod(word_s keycod, word_s *pc, word_s nscr) { word_s delta; if(cur_so[nscr] == M_INP) delta=6; else delta=8; if(keycod==MORE) {*pc=*pc+delta; goto m4;} if(keycod==QMORE) {*pc=*pc+delta*20; goto m4;} if(keycod==LESS) {*pc=*pc-delta; goto m4;} if(keycod==QLESS) *pc=*pc-delta*20; m4:; if(cur_so[nscr] != M_INP) { if(keycod != LESS) *pc+=delta; *pc=*pc/K_R110; *pc=*pc*K_R110; } if(*pc < 0) *pc=0; else if(*pc > ADC_SC) *pc = ADC_SC; } /*-------------------------------------------------------------------*/ void varpuls(word_s keycod, word_s *pc) { if(keycod==MORE) {*pc = ADC_SC/4; return;} if(keycod==QMORE) {*pc = ADC_SC; return;} if(keycod==LESS) {*pc = -ADC_SC/4; return;} if(keycod==QLESS) {*pc = -ADC_SC; return;} } /*-------------------------------------------------------------------*/ void inform(word_s help,word_s nscr) { extern char typc[][5]; if(!info[nscr] && !help) return; info[nscr] = help; request_resource(ekran, 0*HZ); bar_(0,0,127,639,140); if(info[nscr] == 0) { release_resource(ekran); return; } _settextcolor(GREEN_); gprintf(HELP_L,2,"%s-#%d",typc[p_c[nscr]->typcontr],p_c[nscr]->nomcontr); if(p_grc[nscr]->type_sert[i_par[nscr]] == ANALOG) { gprintf(HELP_L,14,"˜%1d=%.1f-%.1f ƒ=%.1f-%.1f €ƒ=%.1f-%.1f ", p_a[nscr]->type_sc+1,p_a[nscr]->min_sc,p_a[nscr]->max_sc, valtec(p_a[nscr],p_a[nscr]->min_reg)+0.049,valtec(p_a[nscr],p_a[nscr]->max_reg)+0.049, valtec(p_a[nscr],p_a[nscr]->min_al)+0.049,valtec(p_a[nscr],p_a[nscr]->max_al)+0.049); } ext_help_contr(p_grc[nscr]->type_sert[i_par[nscr]],nscr); release_resource(ekran); } /*-------------------------------------------------------------------*/ word_s lenbar(analog *ptr, word_s cod) { if(ptr->type_sc == SC_SQRT) return (word_s)((float)sqrt((double)cod) * K_BAR1); else return (word_s)((float)cod * K_BAR0); } /*-------------------------------------------------------------------*/ char * formt() { static char frmt[6]="%8.2f"; /*frmt[3]=(6-(char)ceil(log10(fabs(ptr->max_sc)+1.1))) | '0';*/ /*-frmt[3]=(6-(char)ceil(log10(fabs(ptr->var_tech)+1.1))) | '0';*/ return frmt; } /*-------------------------------------------------------------------*/ char * formtalg(analog *ptr) { static char frmt[6]="%8.2f"; frmt[3]=(6-(char)ceil(log10(fabs(ptr->max_sc)+1.1))) | '0'; /*-frmt[3]=(6-(char)ceil(log10(fabs(ptr->var_tech)+1.1))) | '0';*/ return frmt; } /*-------------------------------------------------------------------*/ void sav_parm(analog *ptra) { word_s h, i, nf, zk; par_man *pf, *p_mem; if(!model_save) return; h=sopen(NameFile[24],O_BINARY|O_RDWR,SH_DENYNO,S_IREAD|S_IWRITE); p_mem=pf = (par_man *)calloc(1,filelength(h)); if(pf==NULL) { eprintf(RED_,"ฅโ ฏ ฌ๏โจ คซ๏ “—. ‚‚Ž„€"); close(h); return; } read(h, p_mem, (unsigned)filelength(h)); nf = filelength(h) / sizeof(par_man); for(i=0; i < nf; i++, pf++) if((zk=strncmp(ptra->cipher,pf->cipher,9)) == 0) break; if(!zk) pf->var_cod=ptra->var_cod; lseek(h,0L,SEEK_SET); write(h, p_mem, (unsigned)filelength(h)); free(p_mem); close(h); } /*-------------------------------------------------------------------*/