📄 monit.c
字号:
width = 4; if(width == TDS_SAMPLING_8BIT) width = 8; if(ch == TDS_SAMPLING_4CH) ch = 4; else ch =1; printf("sampling setting is %d kHz %d BIT %d CH\n",freq,width,ch); } /* board time get */ /* rv = ioctl(fd_in, TDSIO_GET_TIME, &time); if (rv == -1) { perror("ioctl() time get failed "); return -1; } day=TDS_GET_DAYS(time); sec=TDS_GET_SEC(time); sec2hms(sec,&h,&m,&s); //printf("get count day from device [%5d]\n",TDS_GET_DAYS(time)); //printf("get count sec from device [%5d]\n",TDS_GET_SEC(time)); printf("%03d %02d:%02d:%02d\n",day,h,m,s); */ rv = ioctl(fd_in, TDSIO_BUFFER_CLEAR); // 儃乕僪忋偺FIFO偺僋儕傾乕 if (rv == -1) { perror("ioctl() FIFO clear failed "); goto end; } else { printf("ioctl() FIFO clear succeed\n"); }/* rv = ioctl(fd_in, TDSIO_SYNC_1PPS); // 侾俹俹俽傊偺摨婜 obsoleted 2002-10-3 if (rv == -1) { // perror("ioctl() 1pps sync failed "); goto end; } else { printf("ioctl() 1pps sync succeed\n"); }*//* rv = ioctl(fd_in, TDSIO_SYNC_TIME); // 奜晹帪崗擖椡偼巊梡偟側偄 if (rv == -1) { perror("ioctl() time sync failed "); goto end; } else { printf("ioctl() time sync succeed\n"); }*/ rv = ioctl(fd_in, TDSIO_SAMPLING_START); if (rv == -1) { perror("ioctl() start sampling failed "); printf("Probably time was not set for the IP-VLBI board.\n"); printf("Please set time using timesettk and try again.\n"); goto end; } else { printf("ioctl() start sampling succeed\n"); } /* MONITOR START */ printf("\033[2J"); // Erase the screen ( move the cursor to home ) for VT100 printf("\033[H"); // move the cursor to home printf("*****************************************************************\n"); printf("* *\n"); printf("* MONIT (siganl input level monitor through IP-VLBI board) *\n"); printf("* (Ver 2.01 2002-10-03) *\n"); printf("* by *\n"); printf("* T. Kondo *\n"); printf("* *\n"); printf("* CTRL C for STOP *\n"); printf("* *\n"); printf("*****************************************************************\n"); printf("\n"); { if(numch == 1) { printf(" CH 1\n"); } else { printf(" CH 1 CH 2 CH 3 CH 4\n"); } c = 0; /* histgram data initialize */ for(k=0; k<8; k++) { for(w1=0; w1<4; w1++) { ihist[w1][k]=0; } } //while (c < BUFSIZ * BUFSIZ) { while (c <= allbyte) { int nbyte = sizeof(buf); // nbyte = 8192 rv = read(fd_in, buf, nbyte); if (rv == -1) { perror("read() failed "); goto end; } // if((c != 1) && (c !=0)){ goto bypass1;} parseADdata(buf, rv, adbit, xdata, &pos); /* Histgram Statistics */ w3=0; for(k=0; k<pos; k++) { w1=xdata[k]; if(adbit == 8) {w2=w1/32; } if(adbit == 4) {w2=w1/2; } if(adbit == 2) {w2=w1; } if(adbit == 1) {w2=w1; } ihist[w3][w2]+=1; w3++; if( w3 == 4 ) { w3 =0; } if( numch == 1 ) { w3 =0; } } if((c != 1) && (c !=0)){ goto bypass1;} /* Maximum found by Channel */ for(mm=0; mm<numch; mm++) { w3=0; for(k=0; k<8; k++) { if(ihist[mm][k] > w3){ w3=ihist[mm][k]; } } hmax[mm]=w3; } // printf("debug4\n"); // debug // printf(" MAX %d %d %d %d\n",hmax[0],hmax[1],hmax[2],hmax[3]); if(c !=0 ) { printf("\033[9A"); // 僇乕僜儖傪忋偵俋峴摦偐偡 } /* Histgram Plot by Level */ for(k=7; k>=0; k--) { if(k==7 || k==0) { if(k==7) {strcpy(iline, " + FULL ");} if(k==0) {strcpy(iline, " - FULL ");} } else { strcpy(iline, " "); } for(mm=0; mm<numch; mm++) { strcat(iline, " |"); w3=hmax[mm]; if(w3 < 10){ w3=10;} w2=w3/10; w1=ihist[mm][k]; // printf(" k = %d ch = %d W3 = %d w1= %d\n",k,mm,w3,w1); w1=w1/w2; if((w1 >= 0) && (w1 <= 10)) { if(w1 == 0 ){ strcat(iline,lev0);} if(w1 == 1 ){ strcat(iline,lev1);} if(w1 == 2 ){ strcat(iline,lev2);} if(w1 == 3 ){ strcat(iline,lev3);} if(w1 == 4 ){ strcat(iline,lev4);} if(w1 == 5 ){ strcat(iline,lev5);} if(w1 == 6 ){ strcat(iline,lev6);} if(w1 == 7 ){ strcat(iline,lev7);} if(w1 == 8 ){ strcat(iline,lev8);} if(w1 == 9 ){ strcat(iline,lev9);} if(w1 == 10 ){ strcat(iline,lev10);} } else { strcat(iline,lev0); } } printf(" %s\n",iline); // printf(" k = %d %d %d %d %d\n",k,ihist[0][k],ihist[1][k], // ihist[2][k],ihist[3][k]); } printf("\n"); /* histgram data initialize */ for(k=0; k<8; k++) { for(w1=0; w1<4; w1++) { ihist[w1][k]=0; } } //printf("\033[9A"); // 僇乕僜儖傪忋偵俋峴摦偐偡 bypass1: ; //printf(" nbyte = %d\n",nbyte); // debug // rv = write(fd_out, buf, rv); //c= c+ nbyte; c++; if(c == 40*numch ){c=1;} } } rv = ioctl(fd_in, TDSIO_SAMPLING_STOP); if (rv == -1) { perror("ioctl() stop sampling failed "); goto end; } else { printf("ioctl() stop sampling succeed\n"); }/* close(fd_out);*/ /* board time get *//* rv = ioctl(fd_in, TDSIO_GET_TIME, &time); if (rv == -1) { perror("ioctl() time get failed "); return -1; } day=TDS_GET_DAYS(time); sec=TDS_GET_SEC(time); sec2hms(sec,&h,&m,&s); //printf("get count day from device [%5d]\n",TDS_GET_DAYS(time)); //printf("get count sec from device [%5d]\n",TDS_GET_SEC(time)); printf("%03d %02d:%02d:%02d\n",day,h,m,s);*/ end: close(fd_in); return rv;}int main(int argc, char **argv){ //char dev[] = "/dev/tds0"; char outfile[] = "./tds.data"; int rv; int span, sfreq, adbit, numch; if(argc != 2){ printf("Usage: monit numch\n"); printf(" where numch ---- number of channel used\n"); printf(" 1,4\n"); exit(0); } numch = atoi(*(argv + 1 )); if(numch != 1) {numch=4;} span=100; sfreq=1; adbit = 8;/* printf(" span = %d\n",span); // debug printf(" sfreq= %d\n",sfreq); // debug printf(" adbit= %d\n",adbit); // debug printf(" numch= %d\n",numch); // debug*/ printf("*******************************************\n"); printf("* IP-VLBI board signal monitor *\n"); printf("* MONIT (Ver 2.0 2002/05/26) *\n"); printf("* by *\n"); printf("* T. Kondo/CRL *\n"); printf("*******************************************\n"); printf(" \n"); SetHandler(); rv=sampleget_monit(outfile, span, sfreq, adbit, numch); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -