我使用Busware中的扩展名SD0
作为Raspberry Pi。 On就是OS Raspbian。 Raspberry Pi没有互联网连接。 SD0包含RTC ds1338
。
如何用语言C或C ++设置Raspberry Pi的时间和日期?
我或多或少知道如何通过I2C连接。
答案 0 :(得分:2)
您始终可以在C代码中调用命令行工具:
settimeofday(timeval, NULL);
system("hwclock --systohc")
或者您可以通过ioctl接口直接访问您的rtc设备驱动程序。 (http://lxr.free-electrons.com/source/include/uapi/linux/rtc.h)
示例:
struct rtc_time rtc = {};
tnow.tm_year = 2015; /* fill up entire struct */
int fd = open("/dev/rtc0", O_RDWR)
ioctl(fd, RTC_SET_TIME, &tnow);
close(fd);
答案 1 :(得分:2)
如果这是您要问的问题:settimeofday(2)
系统调用会在Unix上设置时间。
你需要成为root用户才能这样做。松散:
#include <sys/time.h>
struct timeval tv;
tv.tv_sec = seconds since 1 jan 1970;
tv.tv_usec = 0; /* microseconds */
if(settimeofday(&tv, NULL) == 0)// it was ok
请参阅mktime(3)
了解如何在C中将日期转换为秒。
答案 2 :(得分:2)
除了使用库中的settimeofday()之外我还想添加您想要确保在pi上配置I2C并在pi上打开ds1338时钟的驱动程序,看这里: https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=25399
我假设你会做类似的事情:
modprobe i2c-bcm2708
echo ds1338 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
modprobe rtc-ds1338
hwclock -s
非常酷的entension board btw,不知道这个聪明的读者存在。