我正在使用raspberry pi进行物联网项目,
我想在06:00:00和12:00:00之间的某个时间举办活动
但我不能用jiffies这样做,因为jiffies只计算自os开始以来的时间。
我有一个想法:
我可以每秒提高一次中断并查看当地时间,并将其与特定时间进行比较。
但我认为这是非常糟糕的方式
你对这个问题有什么好主意吗?
提前致谢。
答案 0 :(得分:2)
在06:00:00和12:00:00运行cron。通过cron。How to create a cronjob
触发您的活动答案 1 :(得分:1)
如果您需要非常轻量级的解决方案,并且想要使用RTC。然后有另一种解决方案:
RTC芯片通常包含报警功能。如果中断信号从RTC连接到CPU,则可以通过linux的rtc API使用它。
对于设置和等待计时器,你需要这样的东西(不是一个完整的例子):
struct rtc_time rtc_tm = {....};
fd = open("/dev/rtc0", O_RDONLY, 0); // Open the RTC device
ioctl(fd, RTC_AIE_ON, 0); // Enable alarm interrupt
ioctl(fd, RTC_ALM_SET, &rtc_tm); // Set the alarm time
read(fd, &x, sizeof(x)); // Wait the alarm
完整示例here。
答案 2 :(得分:1)
不是使用cron,而是可以做cron自己做的事情。像这样:
struct timespec target = { ... };
int ret;
while((ret = clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &target, NULL)) == EINTR)
;
/* if !ret, current time is $target here */
需要循环来处理可能的中断; check clock_nanosleep(2)。