📄 timesettk.c
字号:
/**************************************************************//* *//* Program Name : timesettk *//* *//* Version: 0.00 2001-08-16 *//* 1.00 2002-10-04 *//* *//* Copyright (c) 2002 T.Kondo/CRL All Right Reserved *//* *//**************************************************************//*/* Time Set Program 巊梡朄 timesettk year month day hour min sec 椺 俀侽侽侾擭俋寧俀侽擔侾俆帪侾侽暘侾俆昩偵僙僢僩 timesettk 2001 9 20 15 10 15 儕僞乕儞偺僞僀儈儞僌偼幚帪崗偑15昩偲側偭偨捈屻 帪崗僙僢僩偑惉岟偡傞偲丄悢昩娫儃乕僪偺帪崗偑昞帵偝傟傑偡偺偱 惓偟偄偐妋擣偡傞丅*/#include <stdio.h>#include <errno.h>#include <fcntl.h>#include <unistd.h>#include <sys/stat.h>#include <sys/tdsio.h>int y2k(int yyyy, int mm, int dd);int sec2hmss(unsigned int sec, int* hh, int* mm, int* ss);int y2k(int yyyy, int mm, int dd){ int i, sum = 0; int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30 , 31, 30, 31}; if(((yyyy % 4 == 0) && (yyyy % 100 != 0)) || (yyyy % 400 == 0)) month[1] = 29; for (i=0; i<mm-1; i++) { sum += month[i]; } sum += dd; return sum;}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) ; // sprintf(cbuf,"%02d:%02d:%02d",hh,mm,ss); //cout << cbuf << '\n'; return 0;}int main(int argc, char **argv){ int fd_in,rv; unsigned int time,day,sec; // 僨僶僀僗偐傜撉傒崬傫偩尰嵼偺帪崗忣曬傪奿擺 unsigned int secold, stat; int yyyy, mm, dd; // 帪娫愝掕(timeset)偱棙梡 int h, m, s; // 帪娫愝掕(timeset)偱棙梡 int counter; int i; if(argc != 7){ printf("Usage: timesettk year month day hour min sec\n"); exit(0); } fd_in = open("/dev/tds0", O_RDONLY); //僨僶僀僗偺僆乕僾儞 if (fd_in == -1) { perror("device open() error "); return -1; } printf("Device open successd No.[%d]\n",fd_in); /* board status check */ rv = ioctl(fd_in, TDSIO_GET_STATUS, &stat); if (rv == -1) { perror("ioctl() status get failed "); goto end; } else { /* satatus get again just in case */ rv = ioctl(fd_in, TDSIO_GET_STATUS, &stat); if (rv == -1) { perror("ioctl() status get failed "); goto end; } //printf("ioctl() status get succeed\n"); // printf(" status = %X\n",stat); if((stat & 1) != 1){ printf("Warning! 10MHz signal is not supplied. \n"); } if((stat & 2) != 2){ printf("Warning! 1PPS signal is not supplied. \n"); } if((stat & 3) != 3){ printf("Check above signal connection and try again!\n"); goto end; } } //僨僶僀僗偐傜帪崗忣曬偺庢摼 /* rv = ioctl(fd_in, TDSIO_GET_TIME, &time); if (rv == -1) { perror("ioctl() time get failed "); return -1; } printf("get count day from device [%5d]\n",TDS_GET_DAYS(time)); printf("get count sec from device [%5d]\n",TDS_GET_SEC(time)); */ /* 帪崗愝掕 */ yyyy = atoi(*(argv + 1 )); mm = atoi(*(argv + 2 )); dd = atoi(*(argv + 3 )); h = atoi(*(argv + 4 )); m = atoi(*(argv + 5 )); s = atoi(*(argv + 6 )); printf("%d,%d,%d,%d,%d,%d\n",yyyy,mm,dd,h,m,s); day = y2k(yyyy, mm, dd); sec = ((h * 60) + m) * 60 + s; time = TDS_MAKE_TIME(day,sec); printf("All count day [%5d] \n",day); printf("All count sec [%5d] \n",sec); //僨僶僀僗偵帪崗忣曬偺僙僢僩 rv = ioctl(fd_in, TDSIO_SET_TIME, &time); if (rv == -1) { perror("ioctl() time set failed "); return -1; } //printf("time set ok\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; //僨僶僀僗偐傜帪崗忣曬偺庢摼偟偰僠僃僢僋偺偨傔侾侽昩娫僟僀僫儈僢僋昞帵 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 <=10); printf("\n\n***time setting successd***\n");end: close(fd_in);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -