📄 rtctest.c
字号:
/*
* Real Time Clock Driver Test/Example Program
*
* Compile with:
* gcc -s -Wall -Wstrict-prototypes rtctest.c -o rtctest
*
*/
#include <stdio.h>
#include <linux/rtc.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
int main(void) {
int fd, retval,i;
struct rtc_time rtc_tm;
fd = open ("/dev/rtc", O_RDONLY);
if (fd == -1) {
perror("/dev/rtc");
exit(errno);
}
fprintf(stderr, "\tRTC Driver Test Example.\n\n");
/* Read the RTC time/date */
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
if (retval == -1) {
perror("ioctl");
exit(errno);
}
fprintf(stderr, "Current RTC date/time is %02d-%02d-%d, %02d:%02d:%02d.\n\n",
rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
//SET RTC date/time
fprintf(stderr,"\t**** NOW SET TIME YOU WANT!!****\n\t****format: day month year hour min sec****\n");
scanf("%02d%02d%04d%02d%02d%02d",&rtc_tm.tm_mday,&rtc_tm.tm_mon,&rtc_tm.tm_year,&rtc_tm.tm_hour,&rtc_tm.tm_min,&rtc_tm.tm_sec);
rtc_tm.tm_mon-=1;
rtc_tm.tm_year-=1900;
retval = ioctl(fd, RTC_SET_TIME, &rtc_tm);
if (retval == -1) {
perror("ioctl");
exit(errno);
}
//Read back just wrote TIME
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
if (retval == -1) {
perror("ioctl");
exit(errno);
}
fprintf(stderr, "RTC date/time SET is %02d-%02d-%d, %02d:%02d:%02d.\n\n",
rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
//delay one sec
for(i=0;i<20000000;i++)
{}
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
if (retval == -1) {
perror("ioctl");
exit(errno);
}
fprintf(stderr, "Current RTC date/time is %02d-%02d-%d, %02d:%02d:%02d.\n\n",
rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
fprintf(stderr, "\t *** Test complete ***\n");
close(fd);
return 0;
} /* end main */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -