⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autoobs.c

📁 实现ipvlbi数据记录
💻 C
📖 第 1 页 / 共 2 页
字号:
/**************************************************************//*                                                            *//*   Program Name :  autoobs                                  *//*                                                            *//*      Version:  0.0   2001-08-17                            *//*                2.21  2002-07-22                            *//*                                                            *//*      Copyright (c) 2002 T.Kondo/CRL All Right Reserved     *//*                                                            *//**************************************************************/#include <stdio.h>#include <errno.h>#include <fcntl.h>#include <unistd.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <sys/stat.h>#ifdef linux#include <sys/time.h>#else#include <time.h>#endif#include <sys/tdsio.h>#include "libipvlbi.h"  // IP-VLBI梡娭悢孮(by T.Kondo)#include "libipvlbi_board.h"  // IP-VLBI僒儞僾儔乕儃乕僪梡娭悢孮(by T.Kondo)#define SLEEP_USEC 10000    // watch dog timer sep (10msec)#define GET_TIME_FROM_BOARD 1  //  帺摦塣梡偺帪崗傪儃乕僪偐傜摼傞偐俹俠偺帪崗偐傜摼傞偐偺敾掕	                      //  1: 儃乕僪偐傜    0:俹俠偐傜/* 俬俹亅倁俴俛俬丂僆僼儔僀儞帺摦娤應儘僌儔儉        乮帪崗僙僢僩偼暿偺僜僼僩偱峴偆乯         by T.Kondo 2001.8.17            Ver 2.1 2002.5.26            Ver 2.2 2002.7.12            Ver 2.21 2002.7.22    憱傜偣曽丂autoobs sked_file station_id [span [sfreq [adbit [numch [outdir]]]]]         偙偙偱丂sked_file ---- 僗働僕儏乕儖僼傽僀儖柤                staion_id ---- 嬊 ID (僗働僕儏乕儖僼傽僀儖偱婰弎偝傟偰偄傞嬊俬俢)                span ---- 娤應帪娫 (sec)                          乮僗働僕儏乕儖僼傽僀儖偱婯掕偟偰偄傞                           娤應帪娫傛傝抁偔偡傞栚揑乯                           僨僼僅儖僩偼侾侽昩                           僗働僕儏乕儖僼傽僀儖捠傝偺娤應帪娫偲偡傞偲偒偼                           偙偙傪侽偲偡傞                sfreq  僒儞僾儕儞僌廃攇悢                       40,100,200,500  (kHz)                       1,2,4,8,16      (MHz)                          僨僼僅儖僩偼16                adbit  俙俢暘夝擻乮價僢僩)                       1,2,4,8                          僨僼僅儖僩偼1                numch  僠儍僱儖悢                       1丂傑偨偼 4                          僨僼僅儖僩偼1                outdir  僨乕僞僼傽僀儖弌椡僨傿儗僋僩儕                          僨僼僅儖僩偼僇儗儞僩僨傿儗僋僩儕*/int main(int argc, char *argv[]){       char dev[] = "/dev/tds0";       char outfile [80];       char fname [50];       char outdir [60];       char* dflt_dir="./";        // default out file directory       char skdname[80];       char mystation[11];       char stat_id[4];       char cbuf[60];       char afreq[20];       int fd_in,rv;       int i, span, sfreq, adbit, numch;       int nobs, obsspan, fixspan;         int year,ddd,hh,mm,ss ;       int yearf,dddf,hhf,mmf,ssf ;   // to keep 1st obs info       int yearl,dddl,hhl,mml,ssl ;   // to keep last obs info       int year1,ddd1,hh1,mm1,ss1 ;   //        int year2,ddd2,hh2,mm2,ss2 ;   //        int yearn,dddn,hhn,mmn,ssn ;       int yearPC;  // to keep yaer get from PC       int month,mday;       int monthf,mdayf;       int monthl,mdayl;       int month1,mday1;       int month2,mday2;       int monthn,mdayn;       int iofset;       int flagobs;       unsigned int time,day,sec; // 僨僶僀僗偐傜撉傒崬傫偩尰嵼偺帪崗忣曬傪奿擺       unsigned int secold, sec1st, seclast, secobsst, secobset, secnow, secnext;       int day1st, daylast, daynow, daynext;       int  h, m, s;                 int counter;       int time_mode;  // 帺摦塣梡偺帪崗傪儃乕僪偐傜摼傞偐俹俠偺帪崗偐傜摼傞偐偺敾掕                       //  0: 儃乕僪偐傜丂丂丂1:俹俠偐傜       float timeoffset;  //  PCI board time - CPU time label (in sec)       float tofset, fsec;       float w1,w2,w3,w4,w5 ;  // work       double dtime1st,dtimelast,dtimenow, dtimenext, dtimenext2;       double dtime1, dtime2;  // manually set obs time range       double dwork;       static sked_data_t skd;       if(argc == 1){          printf("autoobs Ver.2.21\n");          printf("Usage: autoobs sked_file station_id [span [sfreq [adbit [numch [outdir]]]]]\n");          printf("\n");          printf("         where  sked_file ---- schedule file name\n");          printf("                staion_id ---- station ID (A1)\n");          printf("                span ---- duration (sec)\n");          printf("                          compulsory shorten obs length!\n");          printf("                          default = 10 (sec)\n");          printf("                          =0 means no effect\n");          printf("                sfreq ---- sampling frequency\n");          printf("                           40,100,200,500 (for kHz)\n");          printf("                           1,2,4,8,16 (for MHz)\n");          printf("                          default is 16\n");          printf("                adbit ---- A/D bit\n");          printf("                           1,2,4,8\n");          printf("                          default is 1\n");          printf("                numch ---- number of channel\n");          printf("                           1,4\n");          printf("                          default is 1\n");          printf("                outdir ---- output file directory\n");          printf("                          default is current directory\n");          exit(0);       }       if (argc>=2)       {          strcpy(skdname,argv[1]);         }       if (argc>=3)       {          strcpy(stat_id,argv[2]);         }       else       {          strcpy(stat_id,"G");   // default set to KOGANEI       }       if (argc>=4)       {           fixspan = atoi(*(argv + 3 ));       }       else       {          fixspan=10;   // default fix span (sec)       }       if (argc>=5)       {           sfreq = atoi(*(argv + 4 ));       }       else       {          sfreq=16;       }       if (argc>=6)       {           adbit = atoi(*(argv + 5 ));       }       else       {          adbit=1;       }	   if (argc>=7)       {          numch = atoi(*(argv + 6 ));       }       else       {          numch=1;       }       if (argc>=8)       {          strcpy(outdir,*(argv+7));       }       else       {          strcpy(outdir,dflt_dir);       }       /* check out dir name accompanied by "/" or not */       i=strlen(outdir);       //printf("i= %d\n",i);       if(outdir[i-1] != '/') {          outdir[i]='/';          outdir[i+1]='\0';       }	time_mode=GET_TIME_FROM_BOARD;  //  current TIME get from IP-VLBI board or not	//time_mode=0;  //  current TIME get from PC board	       printf(" skedname = %s\n",skdname);    // debug       printf(" station_id = %s\n",stat_id);    // debug       printf(" span = %d\n",fixspan);    // debug       printf(" sfreq= %d\n",sfreq);   // debug       printf(" adbit= %d\n",adbit);   // debug       printf(" numch= %d\n",numch);   // debug       printf(" outdir= %s\n",outdir);   // debug       if(sfreq==40){ strcpy(afreq,"40kHz");}       else if(sfreq==100){ strcpy(afreq,"100kHz");}       else if(sfreq==200){ strcpy(afreq,"200kHz");}       else if(sfreq==500){ strcpy(afreq,"500kHz");}       else if(sfreq==1){ strcpy(afreq,"1MHz");}       else if(sfreq==2){ strcpy(afreq,"2MHz");}       else if(sfreq==4){ strcpy(afreq,"4MHz");}       else if(sfreq==8){ strcpy(afreq,"8MHz");}       else if(sfreq==16){ strcpy(afreq,"16MHz");}       else { strcpy(afreq,"INVALID");}       /* schedule file read and analysis */       readskd(skdname, &skd);       if (skd.nobs <= 0)  { goto exitend ; }       /* Observation Time Range Check */       yearf=skd.start[0][0]+2000;       dddf=skd.start[0][1];       hhf=skd.start[0][2];       mmf=skd.start[0][3];       ssf=skd.start[0][4];       sec1st=hhf*3600+mmf*60+ssf;       day1st=dddf;       printf("day1st  %d\n",day1st);       dtime1st=day1st+sec1st/86400.0;       ddd2md(yearf,dddf,&monthf,&mdayf);       printf("1st  Obseravtion : %04d/%02d/%02d %02d:%02d:%02d  %s\n",yearf,monthf,mdayf,hhf,mmf,ssf,                      skd.obsstar[0]);       yearl=skd.start[skd.nobs-1][0]+2000;       dddl=skd.start[skd.nobs-1][1];       hhl=skd.start[skd.nobs-1][2];       mml=skd.start[skd.nobs-1][3];       ssl=skd.start[skd.nobs-1][4];       seclast=hhl*3600+mml*60+ssl;       daylast=dddl;       dtimelast=daylast+seclast/86400.0;       ddd2md(yearl,dddl,&monthl,&mdayl);       printf("Last Obseravtion : %04d/%02d/%02d %02d:%02d:%02d  %s\n",yearl,monthl,mdayl,hhl,mml,ssl,                      skd.obsstar[skd.nobs-1]);       // printf("Date range %f -- %f\n",dtime1st,dtimelast);       dtime1=dtime1st;     dtime2=dtimelast;       year1=yearf;       year2=yearl;       ddd1=dddf;       ddd2=dddl;       month1=monthf;   month2=monthl;       mday1=mdayf;     mday2=mdayl;       hh1=hhf;        hh2=hhl;       mm1=mmf;        mm2=mml;       ss1=ssf;        ss2=ssl;       /* Observation range limit if selected so */       strcpy(cbuf,"\0");       //printf(" Observation Time range Change? (Y/[N]) ----> ");       printf(" Observation Time range Change? (Y/N) ----> ");       scanf("%s",&cbuf);       if(strncmp(cbuf,"Y",1)==0 || strncmp(cbuf,"y",1)==0 )       {            year1=yearf;            printf("Enter Start Time (month mday hour min sec)\n");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -