timesync.c

来自「实现ipvlbi数据记录」· C语言 代码 · 共 101 行

C
101
字号
/**************************************************************//*                                                            *//*   Program Name :  timesync                                 *//*                                                            *//*      Version:  0.00  2002-07-01                            *//*                1.00  2002-10-04                            *//*                                                            *//*      Copyright (c) 2002 T.Kondo/CRL All Right Reserved     *//*                                                            *//**************************************************************//* 俬俹亅倁俴俛俬儃乕僪  侾俹俹俽摨婜僾儘僌儔儉        乮帪崗僙僢僩偼暿偺僜僼僩偱峴偆乯         by T.Kondo 2002.7.1    憱傜偣曽 timesync [period]         偙偙偱 period  帪崗摨婜屻昞帵偡傞帪娫乮昩乯                       僨僼僅儖僩偼侾侽昩娫昞帵*/#include <stdio.h>#include <errno.h>#include <fcntl.h>#include <unistd.h>#include <sys/stat.h>#include <sys/tdsio.h>int sec2hmss(unsigned int sec, int* hh, int* mm, int* ss);int sec2hms(unsigned int sec, int* hh, int* mm, int* ss){	//char cbuf[60];	long int j;	*hh=sec/3600 ;       j=sec-*hh*(long)3600;       *mm=(int)(j/60) ;	*ss=(int)(j-*mm*(long)60) ;    return 0;}int main(int argc, char **argv){	int fd_in,rv;	unsigned int time,day,sec; // 僨僶僀僗偐傜撉傒崬傫偩尰嵼偺帪崗忣曬傪奿擺       unsigned int secold, secmax;	int  yyyy, mm, dd;      // 帪娫愝掕(timeset)偱棙梡	int  h, m, s;           // 帪娫愝掕(timeset)偱棙梡       int counter;       int i;	if(argc >= 2){	   secmax = atoi(*(argv + 1 ));          if(secmax <= 0) {secmax=10;}       } else {          secmax=10;       }	fd_in = open("/dev/tds0", O_RDONLY);  //僨僶僀僗偺僆乕僾儞	if (fd_in == -1) {		perror("device open() error ");		return -1;	}	printf("IP-VLBI Board 1PPS Time Sync  (by T.KONDO)\n");	//1昩摨婜偺愝掕	rv = ioctl(fd_in, TDSIO_SYNC_1PPS);	if (rv == -1) {		perror("ioctl() 1pps sync failed ");		return -1;	}	printf("1pps sync ok\n");	time = 0; //擮偺偨傔弶婜壔       secold=90000;       counter=0;	//僨僶僀僗偐傜帪崗忣曬偺庢摼 and display while       do{	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);       if (sec!=secold) {       i=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\033[A",day,h,m,s);      counter++;       }       secold=sec;       }while(counter <=secmax);	printf("\n\n");}

⌨️ 快捷键说明

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