| 657,10 → 657,12 |
| } |
| if (gFp) { |
| fp=gFp; |
| } else { |
| } |
| else { |
| if (append) { |
| fp=fopen(filename,"ab"); |
| } else { |
| } |
| else { |
| fp=fopen(filename,"wb"); |
| } |
| } |
| 678,7 → 680,8 |
| runinfo.writemode= towrite; |
| sa02Printf("RUNINFO x0=%d nx=%d dx=%d\n", runinfo.x0,runinfo.dx,runinfo.nx); |
| nbtotal+=fwrite(&runinfo, 1,sizeof(runinfo),fp); //gzip |
| } else { |
| } |
| else { |
| if (sa02Verbose) { |
| sa02Printf("Data are not written to the file!\n"); |
| } |
| 716,9 → 719,9 |
| GetPanelAttribute (p6h, ATTR_VISIBLE, &icfa_visible); |
| GetCtrlVal (p6h, MINIRICH_ADD, &icfa_add); |
| if (icfa_visible) { |
| icfa_Init(); |
| icfa_Init(); |
| icfa_Histo(); |
| } |
| } |
| /////////////////////////////////////////////////////////////// |
| SetCtrlAttribute (p1h, P1_GRAPH2D, ATTR_LABEL_TEXT , title); |
| H2DInit(h2, "h2d",title, 144*4, 0,1,neve,data0, dstep); |
| 758,7 → 761,8 |
| } |
| if (towrite==3) { |
| SetCtrlVal(p1h,P1_SETVALUE, chip*36+ch ); |
| } else { |
| } |
| else { |
| SetCtrlVal(p1h,P1_SETVALUE, data); |
| } |
| |
| 783,7 → 787,8 |
| do { |
| if (sendswtrg == 1) Sa02SoftwareTrigger(); |
| nb = sa02Read(mask, &rdata[count+2] ); |
| } while ( nb==0 && !ctrl_c); |
| } |
| while ( nb==0 && !ctrl_c); |
| if (nb==0) sa02Printf("nb==0 LINE=%d\n",__LINE__); |
| |
| if (testfixeddata && nb>0) { |
| 802,7 → 807,8 |
| ctrl_c = 1; |
| system("date >> firmware.lock"); |
| } |
| } else { |
| } |
| else { |
| readerror= 0; |
| } |
| |
| 810,9 → 816,9 |
| int xch = (143 - ich%144) + ich/144*144; |
| H2DFillBin(h2, xch,i,rdata[count+2+ich]); |
| } |
| |
| |
| if (icfa_visible) icfa_Event(&rdata[count+2], icfa_add ); |
| |
| |
| /* |
| for (ich=0; ich<144; ich++) { |
| // id=(35-ich/4)+gBoardNumber*36; |
| 858,7 → 864,8 |
| if (nb==0) { |
| nerrors++; |
| //j--; /// kako potem pride cez zeljeno stevil ozadetkov? |
| } else { |
| } |
| else { |
| ncount++; |
| } |
| } |
| 897,7 → 904,8 |
| ch-=36; |
| chip++; |
| } |
| } else { |
| } |
| else { |
| data += dstep; |
| } |
| if (ctrl_c ) { |
| 908,7 → 916,7 |
| } |
| } |
| plot2d(h2, i-1); |
| if (icfa_visible) icfa_Draw(); |
| if (icfa_visible) icfa_Draw(); |
| |
| if (output) { |
| sprintf(scmd,"channel;daqtime=%f", Timer()-t0 ); |
| 1164,7 → 1172,7 |
| break; |
| case MENU_MINIRICH: |
| DisplayPanel(p6h); |
| break; |
| break; |
| case MENU_OPERATIO_EXIT : |
| quit(0,0,NULL,0,0); |
| exit(0); |
| 1212,7 → 1220,8 |
| do { |
| if (sendswtrg==1) Sa02SoftwareTrigger(); |
| nb = sa02Read(mask, data ); |
| } while ( nb==0 && !ctrl_c); |
| } |
| while ( nb==0 && !ctrl_c); |
| if (nb==0) sa02Printf("nb==0 LINE=%d\n",__LINE__); |
| |
| if (ctrl_c==1) break; |
| 1563,11 → 1572,12 |
| retval=sa02Cmd(board, FEB_VTH1 , k , chip, channel ,1, response); |
| val=sa02Cmd(board, FEB_ADC_READ, data, chip, channel ,1,response); |
| if (sa02BoardType>2) |
| doubleval = (2*((val & 0xFFF) + 0.5)/0x1000 - 1.) * 3.3; |
| doubleval = sa02adc2Vm(val); |
| else |
| doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3; |
| |
| |
| doubleval = sa02adc2V(val); |
| // doubleval = (2*((val & 0xFFF) + 0.5)/0x1000 - 1.) * 3.3; |
| // else |
| // doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3; |
| H1DFillBin(h1+board, k, doubleval); |
| if (t!=told || k==kmax-1 ||k==0 ) { |
| H1DDraw(h1+board,p1h, P1_GRAPH, &phandle[board]); |
| 1661,7 → 1671,8 |
| switch (cmd & (~ FEB_RO)) { |
| case FEB_ADC_READ: |
| case FEB_ADC_RESET: |
| doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3; |
| doubleval = sa02adc2V(val); |
| // doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3; |
| sa02Printf("ADC %f, 0x%08x\n", doubleval, val ) ; |
| break; |
| case FEB_TMON1: |
| 1682,9 → 1693,11 |
| val=sa02Cmd(board, FEB_MUX, val, 0, 0 ,1,response); |
| val=sa02Cmd(board, FEB_ADC_READ, 0, 0, 0, 1,response); |
| if (sa02BoardType>2) |
| doubleval = (2*((val & 0xFFF) + 0.5)/0x1000 - 1.) * 3.3; |
| doubleval = sa02adc2Vm(val); |
| // doubleval = (2*((val & 0xFFF) + 0.5)/0x1000 - 1.) * 3.3; |
| else |
| doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3; |
| doubleval = sa02adc2V(val); |
| // doubleval = ((val & 0xFFF) + 0.5)/0x1000 * 3.3; |
| sa02Printf("%5d %6.3f\n",data, doubleval); |
| break; |
| case SA0x_ASIC0_GREG: |
| 1808,7 → 1821,8 |
| break; |
| } |
| h2=0; |
| } else { |
| } |
| else { |
| switch (control) { |
| case P2_PRINTXY: |
| id= P2_GRAPH_1; |
| 1827,7 → 1841,8 |
| sa02Printf("H2D image saved as %s\n", dfile); |
| sprintf(name ,"C:\\root\\bin\\root.exe ..\\macros\\H2Dload.cxx(\\\"%s\\\")", dfile); |
| LaunchExecutable(name); |
| } else { |
| } |
| else { |
| sprintf(dfile ,"data/%d_%d_%d_%d_%d_%s.bmp",year,month,day,hours,minutes, name ); |
| SaveCtrlDisplayToFile (panel,id, 0, -1, -1, dfile); |
| sa02Printf("bmp image saved as %s\n", dfile); |
| 1957,7 → 1972,8 |
| GetCtrlVal(panel,ctrlID, &ch); |
| if (ch) { |
| H3DDrawSliceXY(100+board,ch-1,panel,graph, plot); |
| } else { |
| } |
| else { |
| H2DDraw(100+board,panel,graph, plot); |
| } |
| } |
| 1990,7 → 2006,8 |
| monrec.imon[ii] = buf[2]*1000;//zapisano v nA |
| monrec.vset[ii] = buf[3]*1000;//zapisano v mV |
| monrec.iset[ii] = buf[4]*1000;//zapisano v nA |
| } else { |
| } |
| else { |
| buf[0]=(unsigned short) (channels[ii]<<8) | ReadStatus; |
| if (gCAEN_V288) { |
| V288_Send(0,SYS403mid,1,buf); |
| 2131,20 → 2148,20 |
| } |
| time (&t0); |
| sa02Printf("---->daq_scan\n"); |
| |
| |
| if (dsave) { |
| sprintf(dfile,"%s_file%02d.dat",dfile0,fcount); |
| //gFp = fopen (dfile, "ab"); |
| gFp = fopen (dfile, "ab"); |
| if (gFp==NULL) sa02Printf("----> !!! gFp==NULL !!!\n"); |
| if (ferror (gFp)) sa02Printf("----> !!! ferror (gFp) after fopen !!!\n"); |
| if (ferror (gFp)) sa02Printf("----> !!! ferror (gFp) after fopen !!!\n"); |
| //time ((time_t *) &runrec.time); |
| time (&cas); |
| runrec.time = (uint32_t) cas; |
| status = (int) fwrite (&runrec, 1, runrec.len, gFp); |
| if(status != runrec.len) sa02Printf("----> !!! status != runrec.len (= %d) !!!\n", status); |
| if (ferror (gFp)) sa02Printf("----> !!! ferror (gFp) = %d !!!\n", ferror (gFp)); |
| |
| if(status != runrec.len) sa02Printf("----> !!! status != runrec.len (= %d) !!!\n", status); |
| if (ferror (gFp)) sa02Printf("----> !!! ferror (gFp) = %d !!!\n", ferror (gFp)); |
| |
| } |
| |
| |
| 2158,7 → 2175,8 |
| if (scanunitsx) { |
| H2DSetTitleX(hxy+i,"x (channels)"); |
| H3DSetTitleX(hxy+i,"x (channels)"); |
| } else { |
| } |
| else { |
| H2DSetTitleX(hxy+i,"x (stage steps)"); |
| H3DSetTitleX(hxy+i,"x (stage steps)"); |
| } |
| 2165,7 → 2183,8 |
| if (scanunitsy) { |
| H2DSetTitleY(hxy+i,"y (channels)"); |
| H3DSetTitleY(hxy+i,"y (channels)"); |
| } else { |
| } |
| else { |
| H2DSetTitleY(hxy+i,"y (stage steps)"); |
| H3DSetTitleY(hxy+i,"y (stage steps)"); |
| } |
| 2174,7 → 2193,8 |
| if (runrec.direction) { |
| ny = runrec.ny; |
| nx = runrec.nx; |
| } else { |
| } |
| else { |
| ny = runrec.nx; |
| nx = runrec.ny; |
| } |
| 2194,7 → 2214,8 |
| if (scanunitsy) { |
| if (posrec.yset>5) { |
| addgap=gapy * fx; |
| } else { |
| } |
| else { |
| addgap=0; |
| } |
| posrec.yset = (int32_t)(y0+dy *fx * posrec.yset + addgap); |
| 2207,13 → 2228,15 |
| |
| SetCtrlVal (p2h, P2_Y, posrec.yset); |
| SetCtrlVal (p2h, P2_IY, posrec.iy); |
| } else { |
| } |
| else { |
| posrec.ix = iy; |
| posrec.xset=runrec.x0+posrec.ix*runrec.dx; |
| if (scanunitsx) { |
| if (posrec.xset>5) { |
| addgap=gapx * fx; |
| } else { |
| } |
| else { |
| addgap=0; |
| } |
| posrec.xset = (int32_t)(x0+dx *fx * posrec.xset + addgap); |
| 2235,7 → 2258,8 |
| if (scanunitsx) { |
| if (posrec.xset>5) { |
| addgap=gapx * fx; |
| } else { |
| } |
| else { |
| addgap=0; |
| } |
| posrec.xset = (int32_t)(x0+dx *fx * posrec.xset + addgap); |
| 2247,13 → 2271,15 |
| } |
| SetCtrlVal (p2h, P2_X, posrec.xset); |
| SetCtrlVal (p2h, P2_IX, posrec.ix); |
| } else { |
| } |
| else { |
| posrec.iy = ix; |
| posrec.yset=runrec.y0+posrec.iy*runrec.dy; |
| if (scanunitsy) { |
| if (posrec.yset>5) { |
| addgap=gapy * fx; |
| } else { |
| } |
| else { |
| addgap=0; |
| } |
| posrec.yset = (int32_t)(y0+dy *fx * posrec.yset + addgap); |
| 2317,7 → 2343,8 |
| for (k=0; k<4; k++) sa02Printf(" CNTR%d=%d (ERR=%d)\t",k,c[k],e[k]); |
| sa02Printf("\nsa02Read bytes = %d mask=%d neve=%d (%d # %d)\n", nb, mask, runrec.nev, Sa02GetNeve( &inputtriggers ) , inputtriggers); |
| */ |
| } while ( nb==0 && !ctrl_c); |
| } |
| while ( nb==0 && !ctrl_c); |
| |
| |
| |
| 2357,7 → 2384,8 |
| if (dsave) { |
| if (Random(0,1)<fraction) { |
| writeevents=1; |
| } else { |
| } |
| else { |
| writeevents=0; |
| } |
| if (writeevents) { |
| 2392,7 → 2420,8 |
| for (board=0; board<4; board++) { |
| if (ch) { |
| H3DDrawSliceXY(hxy+board,ch,p2h, p2graph[board], &p2plothandle[board]); |
| } else { |
| } |
| else { |
| H2DDraw(hxy+board,p2h, p2graph[board], &p2plothandle[board]); |
| } |
| } |
| 2463,7 → 2492,8 |
| monrec.imon[i] = buf[2]*1000;//zapisano v nA |
| monrec.vset[i] = buf[3]*1000;//zapisano v mV |
| monrec.iset[i] = buf[4]*1000;//zapisano v nA |
| } else { |
| } |
| else { |
| buf[0]=(unsigned short) (channels[i]<<8) | ReadStatus; |
| if (gCAEN_V288) { |
| V288_Send(0,SYS403mid,1,buf); |
| 2504,7 → 2534,8 |
| sprintf(name ,"%s -f %d",palaser, val); |
| sa02Printf("%s\n", name); |
| system(name); |
| } else { |
| } |
| else { |
| GetCtrlVal (p5h, P5_DAC_OFF, &val); |
| sprintf(name ,"%s -p %d",palaser, val); |
| sa02Printf("%s\n", name); |
| 2539,7 → 2570,8 |
| else if(buf[0]&0x1E) { |
| sa02Printf("status: 0x%x\n",buf[0]); |
| return -1; |
| } else sa02Printf("status: 0x%x\n",buf[0]); |
| } |
| else sa02Printf("status: 0x%x\n",buf[0]); |
| Delay(2); |
| buf[0]=(unsigned short) (channel<<8) | ReadOperationalParam; |
| V288_Send(0,N470mid,1,buf); |
| 2915,7 → 2947,7 |
| LaunchExecutable(cmdCommand); |
| |
| |
| |
| |
| /****** 2D v X ******/ |
| // Panel 2 settings |
| SetCtrlVal (p2h, P2_SCANUNITSX, 0); // Continuous scan over X (1 Ch, 0 Step) |
| 2969,8 → 3001,8 |
| daq_scan(NULL); |
| |
| sprintf(cmdCommand,"cmd.exe /c mkdir ..\\modules\\%04d & ..\\sa02read -i %s_file01.dat -o ..\\modules\\%04d\\%s.root ", current_run, line, current_run, buf); |
| system(cmdCommand); // wait here to finish to proceed to next step |
| |
| system(cmdCommand); // wait here to finish to proceed to next step |
| |
| sprintf(cmdCommand,"cmd.exe /c ..\\thisroot.bat & cd analysis & root script.c(%d)",current_run); |
| LaunchExecutable(cmdCommand); |
| |
| 3042,7 → 3074,8 |
| gUirCtrlMap[gNUirCtrlMap].id = ctrlid; |
| gUirCtrlMap[gNUirCtrlMap].handle = GetPanelHandle(ctrl); |
| gNUirCtrlMap++; |
| } else { |
| } |
| else { |
| sa02Printf("ERROR: Increase gNUirCtrlMap\n"); |
| } |
| } |
| 3099,7 → 3132,8 |
| if (count > 0) { |
| newlen = strlen(new); |
| retlen = orglen + (newlen - oldlen) * count; |
| } else retlen = orglen; |
| } |
| else retlen = orglen; |
| ret = malloc(retlen + 1); |
| if (ret == NULL) { |
| goto end_repl_str; |
| 3108,7 → 3142,8 |
| if (count == 0) { |
| /* If no matches, then just duplicate the string. */ |
| strcpy(ret, str); |
| } else { |
| } |
| else { |
| /* Otherwise, duplicate the string whilst performing |
| * the replacements using the position cache. */ |
| pret = ret; |
| 3137,7 → 3172,7 |
| FILE *fp = NULL; |
| FILE *fpout =NULL; |
| |
| |
| |
| char *line; |
| char buf[MAX_PATHNAME_LEN]; |
| int status; |
| 3163,45 → 3198,61 |
| return -1; |
| } |
| while (fgets(buf,MAX_PATHNAME_LEN,fp)!=NULL ) { |
| |
| |
| if (buf[0]!='#' && strlen(buf)>2) { |
| if (strstr(buf, "%RUN%")!=NULL) { |
| char srun[16]; |
| sprintf(srun,"%04d",runno); |
| line = str_replace(buf,"%RUN%", srun); |
| } else { |
| line = buf; |
| char srun[16]; |
| sprintf(srun,"%04d",runno); |
| line = str_replace(buf,"%RUN%", srun); |
| } |
| sa02Printf("#[%d] %s",strlen(buf),buf); |
| |
| else { |
| line = buf; |
| } |
| sa02Printf("#[%d] %s",strlen(buf),buf); |
| |
| sscanf(line,"%s",type); |
| |
| |
| if (strstr(type,"SetCtrlVal")!=NULL) { |
| int pID; |
| int pID; |
| int rID; |
| int datatype; |
| sscanf(line,"%*s%s%s",param,paramValue); |
| |
| pID= GetPanelHandle(param); |
| |
| pID= GetPanelHandle(param); |
| rID= GetControlID(param); |
| if (rID>0 && pID>0) { |
| GetCtrlAttribute (pID, rID, ATTR_DATA_TYPE, &datatype); |
| |
| switch (datatype){ |
| case VAL_INTEGER: SetCtrlVal (pID, rID, atoi(paramValue)); break; |
| case VAL_UNSIGNED_INTEGER: SetCtrlVal (pID, rID, strtoul(paramValue,NULL,0)); break; |
| case VAL_SHORT_INTEGER: SetCtrlVal (pID, rID, atoi(paramValue)); break; |
| case VAL_UNSIGNED_SHORT_INTEGER: SetCtrlVal (pID, rID, strtoul(paramValue,NULL,0)); break; |
| case VAL_DOUBLE : SetCtrlVal (pID, rID, atof(paramValue)); break; |
| case VAL_STRING : SetCtrlVal (pID, rID, paramValue ); break; |
| default: sa02Printf("[%s] ATTR_DATA_TYPE of the %s not supported datatype %d p4h=%d\n\n", type, param, datatype, p4h); |
| |
| switch (datatype) { |
| case VAL_INTEGER: |
| SetCtrlVal (pID, rID, atoi(paramValue)); |
| break; |
| case VAL_UNSIGNED_INTEGER: |
| SetCtrlVal (pID, rID, strtoul(paramValue,NULL,0)); |
| break; |
| case VAL_SHORT_INTEGER: |
| SetCtrlVal (pID, rID, atoi(paramValue)); |
| break; |
| case VAL_UNSIGNED_SHORT_INTEGER: |
| SetCtrlVal (pID, rID, strtoul(paramValue,NULL,0)); |
| break; |
| case VAL_DOUBLE : |
| SetCtrlVal (pID, rID, atof(paramValue)); |
| break; |
| case VAL_STRING : |
| SetCtrlVal (pID, rID, paramValue ); |
| break; |
| default: |
| sa02Printf("[%s] ATTR_DATA_TYPE of the %s not supported datatype %d p4h=%d\n\n", type, param, datatype, p4h); |
| } |
| //sa02Printf("[%s] SetCtrlVal %s %s panel=%d control=%d\n",type,param, paramValue,pID,rID); |
| } else { |
| sa02Printf("[%s] Invalid Ctrl %s %s panel=%d control=%d\n",type,param, paramValue,pID,rID); |
| } |
| |
| } else if (strstr(type,"2D")!=NULL) { |
| //sa02Printf("[%s] SetCtrlVal %s %s panel=%d control=%d\n",type,param, paramValue,pID,rID); |
| } |
| else { |
| sa02Printf("[%s] Invalid Ctrl %s %s panel=%d control=%d\n",type,param, paramValue,pID,rID); |
| } |
| |
| } |
| else if (strstr(type,"2D")!=NULL) { |
| sscanf(line,"%*s%d%d%d%d%d%d%d%d%d%d%d%s",&scx,&nx,&xstep,&xmin,&scy,&ny,&ystep,&ymin,&direction,&nevents,&tresh,outputFileSuffix); |
| sprintf(test,"%d %d %d %d %d %d %d %d %d %d %d %s *\n",scx,nx,xstep,xmin,scy,ny,ystep,ymin,direction,nevents,tresh,outputFileSuffix); |
| sa02Printf("%s *\n\n",test); |
| 3225,7 → 3276,8 |
| |
| daq_scan(NULL); |
| |
| } else if (strstr(type,"Delay")!=NULL) { |
| } |
| else if (strstr(type,"Delay")!=NULL) { |
| int idelay=0; |
| sscanf(line,"%*s%s",paramValue); |
| for (idelay=atoi(paramValue) ; idelay>0; idelay--) { |
| 3234,14 → 3286,15 |
| ProcessSystemEvents(); |
| if (ctrl_c) break; |
| } |
| } else if (strstr(type,"ThresholdLinearity")!=NULL) { |
| } |
| else if (strstr(type,"ThresholdLinearity")!=NULL) { |
| char *fname; |
| uint16_t mask = GetConnectedFebMask(); |
| |
| sscanf(line,"%*s%s",paramValue); |
| fname = paramValue; |
| |
| |
| |
| ThresholdLinearityCB (p1h, P1_THRVSADC, EVENT_COMMIT, NULL, 0, 0 ); |
| fpout = fopen(fname,"ab"); |
| if(fpout) { |
| 3249,27 → 3302,30 |
| fclose(fpout); |
| } |
| |
| } else if (strstr(type,"LaunchExecutable")!=NULL) { |
| } |
| else if (strstr(type,"LaunchExecutable")!=NULL) { |
| int index = FindPattern (line, 0, -1, "LaunchExecutable", 0, 0) + 17; |
| |
| |
| char *cmd = &line[index]; |
| sa02Printf("cmd %d=%s\n",index, cmd); |
| if (strlen(cmd)>0) LaunchExecutable( cmd ); |
| } else if (strstr(type,"CAEN_V729")!=NULL) { |
| } |
| else if (strstr(type,"CAEN_V729")!=NULL) { |
| char *fname; |
| //FILE *fpmon=NULL; |
| |
| |
| sscanf(line,"%*s%s",paramValue); |
| fname=paramValue; |
| |
| fname=paramValue; |
| |
| fpout = fopen(fname,"ab"); |
| if (fpout) { |
| |
| |
| V729_SetFilePointer(fpout); |
| V729_daq(NULL); |
| fclose(fpout); |
| } |
| } else if (strstr(type,"HvMonitor")!=NULL) { |
| } |
| else if (strstr(type,"HvMonitor")!=NULL) { |
| int nrepetitions; |
| int delaytime; |
| int k=0; |
| 3276,7 → 3332,7 |
| FILE *fpmon=NULL; |
| sscanf(line,"%*s%s%d%d",paramValue, &delaytime, &nrepetitions ); |
| fpmon = fopen(paramValue,"ab"); |
| |
| |
| if ( fpmon ) { |
| hvmonFirst = 0; |
| for (k=0; k<nrepetitions; k++) { |
| 3283,17 → 3339,17 |
| double thv0,thv1; |
| thv0 = Timer(); |
| GetHvMonitor(); |
| for (int board=0;board<4;board++){ |
| for (int board=0; board<4; board++) { |
| double sdata[12]; |
| for (int k=0;k<6;k++){ |
| sdata[k] = monrec.imon[k+4*board]; |
| sdata[k+6] = 0; |
| for (int k=0; k<6; k++) { |
| sdata[k] = monrec.imon[k+4*board]; |
| sdata[k+6] = 0; |
| } |
| |
| |
| SetAxisScalingMode (p1h, chart_control[board], VAL_LEFT_YAXIS, VAL_AUTOSCALE, 0, 1); |
| SetAxisScalingMode (p1h, chart_control[board], VAL_RIGHT_YAXIS, VAL_AUTOSCALE, 0, 1); |
| PlotStripChart (p1h, chart_control[board], sdata, 12, 0, 0, VAL_DOUBLE); |
| } |
| } |
| monrec.id = MONREC_ID; |
| monrec.len = sizeof(monrec); |
| thv1=Timer(); |
| 3303,29 → 3359,34 |
| Delay(1); |
| SetCtrlVal(p1h, P1_DELAY, idelay); |
| ProcessSystemEvents(); |
| if (ctrl_c) break; |
| if (ctrl_c) break; |
| } |
| if (ctrl_c) break; |
| if (ctrl_c) break; |
| } |
| fclose(fpmon); |
| } else { |
| } |
| else { |
| sa02Printf("%s cannot open file %s\n",param, paramValue ); |
| } |
| |
| } else if (strstr(type,"GetRunNumberFromFile")!=NULL) { |
| } |
| else if (strstr(type,"GetRunNumberFromFile")!=NULL) { |
| sscanf(line,"%*s%s",paramValue); |
| runno = GetRunNumberFromFile(paramValue); |
| SetCtrlVal(p1h, P1_RUNNO, runno); |
| sa02Printf("%s %s run=>%d\n",type, paramValue, runno ); |
| } else if (strstr(type,"IncreaseNumberInFile")!=NULL) { |
| } |
| else if (strstr(type,"IncreaseNumberInFile")!=NULL) { |
| sscanf(line,"%*s%s",paramValue); |
| runno = IncreaseRunNumberInFile(paramValue); |
| sa02Printf("%s %s run=>%d\n",type, paramValue, runno ); |
| SetCtrlVal(p1h, P1_RUNNO, runno); |
| } else if (strstr(type,"LoadParameters")!=NULL) { |
| } |
| else if (strstr(type,"LoadParameters")!=NULL) { |
| LoadParameters(p3h, P3_LOADPAR,EVENT_COMMIT,NULL,0,0); |
| sa02Printf("Loading parameters *\n\n"); |
| } else if (strstr(type,"QueueUserEvent")!=NULL || strstr(type,"ProcessUserEvent")!=NULL) { |
| } |
| else if (strstr(type,"QueueUserEvent")!=NULL || strstr(type,"ProcessUserEvent")!=NULL) { |
| char scontrol[0xFF]; |
| int panelHandle=0; |
| int controlID; |
| 3334,17 → 3395,19 |
| controlID = GetControlID(scontrol); |
| sa02Printf("UserEvent %s panelHandle %d controlID %d\n",scontrol, panelHandle, controlID ); |
| if (panelHandle>=0 && controlID >=0 ) { |
| if (strstr(type,"ProcessUserEvent")!=NULL) { |
| if (strstr(type,"ProcessUserEvent")!=NULL) { |
| ProcessUserEvent(panelHandle, controlID,0); |
| } else { |
| } |
| else { |
| data[1] = controlID; |
| data[0] = panelHandle; |
| |
| |
| status = CmtWriteTSQData (pTSQ, data, 1, TSQ_INFINITE_TIMEOUT, NULL); |
| } |
| } |
| } |
| |
| } else if (strstr(type,"SetPositionAndMux")!=NULL) { |
| } |
| else if (strstr(type,"SetPositionAndMux")!=NULL) { |
| int ix,iy; |
| sscanf(line,"%*s%d%d",&ix,&iy); |
| sa02Printf("SetPositionAndMux %d %d \n", ix,iy); |
| 3353,7 → 3416,8 |
| SetCtrlVal (p2h, P2_CHY, iy); |
| SetPositionAndMux( p2h,0, EVENT_COMMIT , NULL,0,0); |
| |
| } else if (strstr(type,"Treshold")!=NULL) { |
| } |
| else if (strstr(type,"Treshold")!=NULL) { |
| sscanf(line,"%*s%s",outputFileSuffix); |
| |
| GetCtrlVal (p1h, P1_SERIAL_1, HAPDserialNumber); |
| 3364,29 → 3428,36 |
| sa02Printf("%s *\n\n", test); |
| |
| daq(NULL); |
| } else if (strstr(type,"Fitanje")!=NULL) { |
| } |
| else if (strstr(type,"Fitanje")!=NULL) { |
| FitH2DCoarse(p3h, P3_CALIBRATION_2,EVENT_COMMIT,NULL,0,0); |
| sa02Printf("Coarse fit parameters *\n\n"); |
| } else if (strstr(type,"UploadChannelParameters")!=NULL) { |
| } |
| else if (strstr(type,"UploadChannelParameters")!=NULL) { |
| UploadChannelParameters(p3h, P3_CPARLOAD,EVENT_COMMIT,NULL,0,0); |
| sa02Printf("Loading channel parameters *\n\n"); |
| } else if (strstr(type,"KalibracijaMizice")!=NULL) { |
| } |
| else if (strstr(type,"KalibracijaMizice")!=NULL) { |
| SetHome(p2h, P2_HO,EVENT_COMMIT,NULL,0,0); |
| SetCtrlVal(p2h,P2_XC,gCENTER_X); |
| SetCtrlVal(p2h,P2_YC,gCENTER_Y); |
| sa02Printf("Calibration *\n\n"); |
| } else if (strstr(type,"LaserHVOn")!=NULL) { |
| } |
| else if (strstr(type,"LaserHVOn")!=NULL) { |
| set_dac(1); |
| sa02Printf("Low intensity laser *\n\n"); |
| } else if (strstr(type,"LaserHVOff")!=NULL) { |
| } |
| else if (strstr(type,"LaserHVOff")!=NULL) { |
| set_dac(0); |
| sa02Printf("High intensity laser *\n\n"); |
| } else if (strstr(type,"Gain")!=NULL) { |
| } |
| else if (strstr(type,"Gain")!=NULL) { |
| sscanf(line,"%*s%d",paramValue); |
| sprintf(test," %d", atoi(paramValue)); |
| sa02Printf("%s *\n\n", test); |
| changeGlobalParam(12, atoi(paramValue)); // Global parameter Gain has ID 12 |
| } else if (strstr(type,"ShapingTime")!=NULL) { |
| } |
| else if (strstr(type,"ShapingTime")!=NULL) { |
| sscanf(line,"%*s%s",paramValue); |
| sprintf(test," %d", atoi(paramValue)); |
| sa02Printf("%s *\n\n", test); |
| 3625,13 → 3696,16 |
| imin= trange.top - 1; |
| imax= imin + trange.height; |
| |
| } else { |
| } |
| else { |
| if (!GetActiveTableCell(p3h, P3_GREG, &cell)) { |
| imin = cell.y-1; |
| imax = imin; |
| } else return 0; |
| } |
| else return 0; |
| } |
| } else { |
| } |
| else { |
| imin=0; |
| imax=4*4; |
| } |
| 3699,16 → 3773,20 |
| imin= trange.top-1; |
| imax= imin + trange.height; |
| |
| } else { |
| } |
| else { |
| if (!GetActiveTableCell(p3h, P3_CREG, &cell)) { |
| imin = cell.y-1; |
| imax = imin+1; |
| } else return 0; |
| } |
| else return 0; |
| } |
| } else if ((panel==p1h)&&(control==P1_CHPARLOAD)) { |
| } |
| else if ((panel==p1h)&&(control==P1_CHPARLOAD)) { |
| GetCtrlVal(p1h,P1_NSLIX,&imin); |
| imax=imin+1; |
| } else { |
| } |
| else { |
| imin=0; |
| imax=144*4; |
| } |
| 3920,13 → 3998,16 |
| if (x>0) { |
| if (x - ix > 0.5 ) { |
| return ix+1; |
| } else { |
| } |
| else { |
| return ix; |
| } |
| } else { |
| } |
| else { |
| if (x - ix < -0.5 ) { |
| return ix-1; |
| } else { |
| } |
| else { |
| return ix; |
| } |
| } |
| 4090,7 → 4171,7 |
| } |
| FitGraph(fitmode, npt, datax , datay, fpar); |
| mean[ix]=fpar[0]; |
| rms[ix] =fpar[1]; |
| rms[ix]=fpar[1]; |
| offset = offsets[ix*2]; |
| fineadj_unipol = offsets[ix*2+1]; |
| |
| 4173,7 → 4254,8 |
| |
| if (value==2) { |
| value=0x7600; |
| } else { |
| } |
| else { |
| value=0; |
| } |
| VME_A32D32_W(address+4,value); // enable outputs |
| 4306,7 → 4388,8 |
| spar=scanpar-10; |
| nch=4*4; |
| |
| } else { |
| } |
| else { |
| cid=P3_CREG; |
| spar=scanpar; |
| nch=144*4; |
| 4508,83 → 4591,84 |
| |
| |
| |
| int ProcessUserEvent(int pID, int rID,int mode){ |
| ThreadFunctionPtr mythread = NULL; |
| if (pID ==p1h && rID == P1_DAQ ) mythread=daq; |
| if (pID ==p1h && rID == P1_READOUT ) mythread=daq_readonly; |
| if (pID ==p1h && rID == P1_FPGAWRITE ) mythread=MultiFpgaWrite; |
| if (pID ==p1h && rID == P1_MULTIFPGAWRITE ) mythread=MultiFpgaWrite; |
| if (pID ==p1h && rID == P1_TESTING ) mythread=Testing; |
| if (pID ==p2h && rID == P2_DAQ ) mythread=daq_scan; |
| if (pID ==p6h && rID == MINIRICH_START ) mythread=daq; |
| if (pID ==p2h && rID == P2_RUNSCRIPT ) { |
| char scriptname[MAX_PATHNAME_LEN] ; |
| int ProcessUserEvent(int pID, int rID,int mode) { |
| ThreadFunctionPtr mythread = NULL; |
| if (pID ==p1h && rID == P1_DAQ ) mythread=daq; |
| if (pID ==p1h && rID == P1_READOUT ) mythread=daq_readonly; |
| if (pID ==p1h && rID == P1_FPGAWRITE ) mythread=MultiFpgaWrite; |
| if (pID ==p1h && rID == P1_MULTIFPGAWRITE ) mythread=MultiFpgaWrite; |
| if (pID ==p1h && rID == P1_TESTING ) mythread=Testing; |
| if (pID ==p2h && rID == P2_DAQ ) mythread=daq_scan; |
| if (pID ==p6h && rID == MINIRICH_START ) mythread=daq; |
| if (pID ==p2h && rID == P2_RUNSCRIPT ) { |
| char scriptname[MAX_PATHNAME_LEN] ; |
| |
| int status = FileSelectPopup ("./scripts/", "*.txt", "*.txt", |
| "Select Script file", VAL_LOAD_BUTTON, 0, 0, |
| 1, 0, scriptname); |
| if (status) { |
| SetCtrlVal(p1h, P1_SCRIPTNAME, scriptname ); |
| mythread=run_script; |
| } |
| int status = FileSelectPopup ("./scripts/", "*.txt", "*.txt", |
| "Select Script file", VAL_LOAD_BUTTON, 0, 0, |
| 1, 0, scriptname); |
| if (status) { |
| SetCtrlVal(p1h, P1_SCRIPTNAME, scriptname ); |
| mythread=run_script; |
| } |
| if (pID ==p1h && rID == P1_RUNSCRIPT ) mythread=run_script; |
| if (pID ==p3h && rID == P3_DAQ ) mythread=daq_scanpar; |
| if (pID ==p4h && rID == P4_DAQ ) mythread=V729_daq; |
| if (mythread!=NULL) { |
| sa02Printf("New Thread panel=%d button=%d\n", pID, rID); |
| ctrl_c=0; |
| daq_on = 1; |
| SetDimming(1); |
| if (mode){ |
| CmtScheduleThreadPoolFunctionAdv (poolHandle, mythread, &rID, |
| } |
| if (pID ==p1h && rID == P1_RUNSCRIPT ) mythread=run_script; |
| if (pID ==p3h && rID == P3_DAQ ) mythread=daq_scanpar; |
| if (pID ==p4h && rID == P4_DAQ ) mythread=V729_daq; |
| if (mythread!=NULL) { |
| sa02Printf("New Thread panel=%d button=%d\n", pID, rID); |
| ctrl_c=0; |
| daq_on = 1; |
| SetDimming(1); |
| if (mode) { |
| CmtScheduleThreadPoolFunctionAdv (poolHandle, mythread, &rID, |
| DEFAULT_THREAD_PRIORITY, |
| EndOfThread, |
| EVENT_TP_THREAD_FUNCTION_END, |
| NULL, RUN_IN_SCHEDULED_THREAD, |
| &tfID); |
| } else { |
| mythread(NULL); |
| } |
| } |
| |
| if ( pID==p1h && rID == P1_SLOWC ) { |
| uint32_t board; |
| GetCtrlVal(p1h,P1_BOARDNUMBER, &board); |
| SlowControl(board, NULL); |
| else { |
| mythread(NULL); |
| } |
| // if ( pID==p1h && rID == P1_STEPONE ) StepOne(); |
| if ( pID==p1h && rID == P1_FEBTESTANA ) FebTestAna(); |
| if ( pID==p1h && rID == P1_TEST ) FebTest(); |
| if ( pID==p1h && rID == P1_MODULETEST ) ModuleTest(); |
| } |
| |
| if ( pID==p1h && rID == P1_GET_FPGA_SERIAL ) { |
| int ison=0; |
| GetCtrlVal(p1h,P1_BOARDTYPE,&sa02BoardType); |
| for (int board=0; board<4; board++) { |
| char saddress[0xff]=""; |
| GetCtrlVal(p1h, hapd_onoff[board], &ison); |
| sa02GetSerial(board, saddress); |
| sa02Printf("SERIAL FPGA = %s \n", saddress); |
| SetCtrlVal(p1h,fpga_serials[board],saddress); |
| } |
| }; |
| if ( pID==p1h && rID == P1_SLOWC ) { |
| uint32_t board; |
| GetCtrlVal(p1h,P1_BOARDNUMBER, &board); |
| SlowControl(board, NULL); |
| } |
| // if ( pID==p1h && rID == P1_STEPONE ) StepOne(); |
| if ( pID==p1h && rID == P1_FEBTESTANA ) FebTestAna(); |
| if ( pID==p1h && rID == P1_TEST ) FebTest(); |
| if ( pID==p1h && rID == P1_MODULETEST ) ModuleTest(); |
| |
| if ( ( pID==p1h && rID == P1_STOP ) |
| || ( pID==p2h && rID == P2_STOP ) |
| || ( pID==p3h && rID == P3_STOP ) |
| || ( pID==p6h && rID == MINIRICH_STOP ) |
| || ( pID==p4h && rID == P4_STOP ) ) { |
| sa02Printf("Stopping the Thread %d\n", tfID); |
| ctrl_c=1; |
| if ( pID==p1h && rID == P1_GET_FPGA_SERIAL ) { |
| int ison=0; |
| GetCtrlVal(p1h,P1_BOARDTYPE,&sa02BoardType); |
| for (int board=0; board<4; board++) { |
| char saddress[0xff]=""; |
| GetCtrlVal(p1h, hapd_onoff[board], &ison); |
| sa02GetSerial(board, saddress); |
| sa02Printf("SERIAL FPGA = %s \n", saddress); |
| SetCtrlVal(p1h,fpga_serials[board],saddress); |
| } |
| if (pID ==p5h) { |
| if (rID == P5_SET_DAC_HV_ON) set_dac(1); |
| if (rID == P5_SET_DAC_HV_OFF) set_dac(0); |
| if (rID == P5_SET_HV_ON) set_hv(1); |
| if (rID == P5_SET_HV_OFF) set_hv(0); |
| } |
| return 0; |
| }; |
| |
| if ( ( pID==p1h && rID == P1_STOP ) |
| || ( pID==p2h && rID == P2_STOP ) |
| || ( pID==p3h && rID == P3_STOP ) |
| || ( pID==p6h && rID == MINIRICH_STOP ) |
| || ( pID==p4h && rID == P4_STOP ) ) { |
| sa02Printf("Stopping the Thread %d\n", tfID); |
| ctrl_c=1; |
| } |
| if (pID ==p5h) { |
| if (rID == P5_SET_DAC_HV_ON) set_dac(1); |
| if (rID == P5_SET_DAC_HV_OFF) set_dac(0); |
| if (rID == P5_SET_HV_ON) set_hv(1); |
| if (rID == P5_SET_HV_OFF) set_hv(0); |
| } |
| return 0; |
| } |
| |
| |
| 4605,7 → 4689,7 |
| char title[0xFF]; |
| char saddress[0xff]=""; |
| //uint32_t board; |
| int i; |
| int i; |
| int status=0; |
| |
| if (InitCVIRTE (hInstance, 0, 0) == 0) { |
| 4618,7 → 4702,7 |
| if ( (status = CmtNewTSQ (1, 2*sizeof(int), OPT_TSQ_AUTO_FLUSH_ALL, &pTSQ)) <0) |
| printf("CmtNewTSQ cannot be installed\n"); |
| if ( (status = CmtInstallTSQCallback (pTSQ, EVENT_TSQ_ITEMS_IN_QUEUE, EVENT_TSQ_QUEUE_SIZE, |
| QueueUserEventCallback, pTSQData, CmtGetCurrentThreadID(), NULL)) <0) |
| QueueUserEventCallback, pTSQData, CmtGetCurrentThreadID(), NULL)) <0) |
| printf("CmtInstallTSQCallback cannot be installed\n"); ; |
| |
| SetStdioPort (CVI_STDIO_WINDOW ); |
| 4643,7 → 4727,7 |
| if ((p3h = LoadPanel (0, "sa02_CVI.uir", P3)) < 0) return -1; |
| if ((p4h = V729_LoadPanel (0, "CAEN_V729\\CAEN_V729_CVI.uir", P4)) < 0) return -1; |
| if ((p5h = LoadPanel (0, "sa02_CVI.uir", P5)) < 0) return -1; |
| if ((p6h = LoadPanel (0, "ICFA\\minirich.uir", MINIRICH)) < 0) return -1; |
| if ((p6h = LoadPanel (0, "ICFA\\minirich.uir", MINIRICH)) < 0) return -1; |
| if ((pm1 = LoadMenuBar (p1h, "sa02_CVI.uir", MENU)) < 0) return -1; |
| |
| SetPanelMenuBar(p1h, pm1); |
| 4672,6 → 4756,7 |
| if (gVME_CONTROLLER == WIENER_VMEMM) sprintf( title, "%s + WIENER_VMEMM", title ); |
| if (gVME_CONTROLLER == WIENER_VMUSB) sprintf( title, "%s + WIENER_VMUSB", title ); |
| if (gVME_CONTROLLER == CAEN_V1718) sprintf( title, "%s + CAEN_V1718", title ); |
| if (gVME_CONTROLLER == SIS3153_USB) sprintf( title, "%s + SIS3153_USB", title ); |
| if (gCAEN_V1495) sprintf( title, "%s + CAEN_V1495", title ); |
| if (gCAEN_V288 ) sprintf( title, "%s + CAEN_V288", title ); |
| |
| 4703,13 → 4788,14 |
| |
| LoadElectronicMap("eid2hapdxy.map"); |
| icfa_Init(); |
| |
| |
| |
| |
| loop_on=1; |
| do { |
| GetUserEvent (1, &pID, &rID); |
| GetUserEvent (1, &pID, &rID); |
| ProcessUserEvent(pID,rID,1); |
| } while (loop_on); |
| } |
| while (loop_on); |
| |
| CmtDiscardThreadPool (poolHandle); |
| DiscardPanel (p4h); |
| 4821,7 → 4907,8 |
| return -1; |
| } |
| (c == 0xff) ? dummyword++ : (dummyword=0); |
| } while( dummyword < 4 ); |
| } |
| while( dummyword < 4 ); |
| |
| if( mode == SLAVESERIAL_MODE ) { |
| if(verbose) sa02Printf("slave serial mode"); |
| 4835,7 → 4922,8 |
| sa02Printf( "#"); |
| } |
| } |
| } else if( mode == SELECTMAP_MODE ) { |
| } |
| else if( mode == SELECTMAP_MODE ) { |
| if( verbose ) sa02Printf("select map mode\n"); |
| Pts_write( addr + ADR_MODE, SELECTMAP_MODE ); |
| Pts_erase( addr, verbose ); |
| 4857,7 → 4945,8 |
| } |
| } |
| VME_MWEXEC(); |
| } else { |
| } |
| else { |
| if(verbose) { |
| sa02Printf( "\nIllegal mode\n"); |
| |
| 4880,7 → 4969,8 |
| if(csr1_value&CSR1_DONE) { |
| if(verbose) sa02Printf("configure complete.\n"); |
| return 1; |
| } else { |
| } |
| else { |
| if(verbose) sa02Printf("configure not complete."); |
| return -1; |
| } |
| 4903,7 → 4993,8 |
| GetCtrlVal(p3h,P3_PTSMODE,&mode); |
| if(VME_CONNECTED() >=0 ) { |
| Pts_configure_bit( addr , filename, mode, 1 ); |
| } else { |
| } |
| else { |
| MessagePopup ("Warning", "Connect VME!!"); |
| } |
| break; |