#include <uRTCLib.h>//这里要先安装相Naguissa的库DS1307
#include <Wire.h>//IIC libraries
uRTCLib rtc(0x68);//rtc_address
char TimeStampWrite[6]; // LabVIEW下发的时间戳
char TimeStampReturn[14]; //Arduino要返回的时间戳
void setup() {
Serial.begin(115200); //初始化串口,波特率115200,与LabVIEW保持一致
Wire.begin();
//rtc.set(Second_set, Minute_set, Hour_set, 5, Day_set, Month_set, Year_set);
// RTCLib::set(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)
}
void loop() {
if (Serial.available() > 7)//LabVIEW程序运行后,发送字符下来,如果”Serial.available() > 7”成立,运行以下程序
{
if (Serial.read() == 0x55) {
if (Serial.read() == 0xAA) {//如果串口读取到的字符为“55AA”,运行以下程序
for (int i = 0; i < 6; i++)
{
TimeStampWrite[i] = Serial.read();//将串口读取到的字符赋值到数组TimeStampWrite[]里
}
rtc.set(TimeStampWrite[5], TimeStampWrite[4], TimeStampWrite[3], 5, TimeStampWrite[2], TimeStampWrite[1], TimeStampWrite[0]);//配置LabVIEW发下来的时间戳
// RTCLib::set(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)
rtc.refresh();//RTC模块更新“rtc.set”所配置的时间
sprintf(TimeStampReturn, "20%02d-%02d-%02d %02d:%02d:%02d", rtc.year(), rtc.month(), rtc.day(), rtc.hour(), rtc.minute(), rtc.second());//读取RTC时间并格式化
Serial.println(TimeStampReturn);//将RTC模块的时间通过串口返回给LabVIEW,“Serial.println”带回车换行符,labview程序默认将其视为结束符
}
}
}
}