/******************************************* * Look the parameters in the CAEN Mail_box * * * *******************************************/ #include #include #include #include "../lib/mylib1.h" #include "a200.h" /* definitions relative to the CAEN system */ #define NMAX 45 #define NOK 40 #define SECONDS #define MINUTES * 60 #define FINE 1001 SY227_MBOX *hv_mod; int mev_id; char *caller; sighand(signal) register int signal; { printf(" %s : signal %d received \n", *caller, signal); if ( signal >= 2 && signal <= 3){ /* ^C or ^E ? */ sem_unl(mev_id, "sy227mod", caller); munlink(hv_mod); exit(0); } } main(argc, argv) int argc; char *argv[]; { int nwrite_st, nerror_st; int nwrite_vi, nerror_vi; short ndata, data[45], on_off, hv_in; int hra[6]; short i, ir, j, k, chan, value, code; int crate, slot, datv[32], dati[32], dats[32]; intercept(sighand); caller = argv[0]; if (argc < 3) { printf(" usage : guardad crate_nr slot_nr \n"); exit(0); } else crate = atoi(argv[1]) - 1; slot = atoi(argv[2]); if (crate < 0 || crate > 7 || slot < 0 || slot > 3){ printf(" invalid parameters: crate %d, slot %d\n", crate, slot); exit(0); } if((hv_mod = (SY227_MBOX *)modlink("sy227mod", 0)) == (SY227_MBOX *) -1) exit(_errmsg(errno,"guarda: err. link data module\n")); mev_id = sem_link_cr("SY227mod", argv[0]); sem_wait(mev_id, argv[0]); for (i=0; i<6; i++) hra[i] = hv_mod->sta_tim[i]; on_off = hv_mod->sl_par[crate][slot].onoff; hv_in = hv_mod->sl_par[crate][slot].hvin; for(i = 0; i < 32; i++){ datv[i] = hv_mod->sl_par[crate][slot].vmon[i]; dati[i] = hv_mod->sl_par[crate][slot].imon[i]; dats[i] = hv_mod->sl_par[crate][slot].status[i]; } nwrite_st = hv_mod->nsta; nerror_st = hv_mod->nsta_err; nwrite_vi = hv_mod->nvim; nerror_vi = hv_mod->nvim_err; sem_free(mev_id, argv[0]); munlink(hv_mod); printf(" date of last update %d-%d-%d %d:%d:%d\n", hra[2],hra[1],hra[0],hra[3],hra[4],hra[5]); printf(" readouts: status: %d ( errors %d )",nwrite_st,nerror_st); printf("; V/I: %d ( errors %d)\n",nwrite_vi,nerror_vi); if (on_off D_SWITCH_IS_ON) printf(" Switch ON;"); else printf(" Switch OFF;"); if (on_off D_RELAY_IS_ON) printf(" Relay ON;"); else printf(" Relay OFF;"); if (hv_in D_NO_HV) printf(" NO Input HV ( read : "); else if(hv_in D_POS_HV) printf(" Positive Input HV ( read : "); else if(hv_in D_NEG_HV) printf(" Negative Input HV ( read : "); else printf(" ?? ( read : "); printf("%d ) \n\n", datv[0]); printf(" Ch Imon(nA) Status "); printf(" Ch Imon(nA) Status \n"); for (i = 0; i < 16; i++){ printf(" %2d %6d ", i, dati[i]); if (dats[i] D_IS_OK) printf(" OK "); else printf(" ->> "); if (dats[i] D_IS_OVC) printf(" OVC"); else printf(" "); if (dats[i] D_IS_OFS) printf(" OFS"); else printf(" "); if (dats[i] D_IS_OVC) printf(" OVM"); else printf(" "); printf(" "); printf(" %2d %6d ", i + 16, dati[i + 16]); if (dats[i + 16] D_IS_OK) printf(" OK "); else printf(" ->> "); if (dats[i + 16] D_IS_OVC) printf(" OVC"); else printf(" "); if (dats[i + 16] D_IS_OFS) printf(" OFS"); else printf(" "); if (dats[i + 16] D_IS_OVC) printf(" OVM"); else printf(" "); printf("\n"); } sem_unl(mev_id, "SY227mod", caller); }