Настройка RTC на основе данных GPS - PullRequest
0 голосов
/ 30 октября 2018

Я хочу подключиться к GPS и подождать, пока не будут найдены правильные спутники, чтобы узнать время и дату. Мой код для этого выглядит следующим образом. Это иногда работает, иногда нет ... Вопросы: my_gps.date всегда (0,0,0) внутри цикла while, но иногда rtc устанавливается правильно. Я мог бы использовать my_gps.timestamp для условий цикла while, но иногда у него есть некоторые неправильные значения у (0,0,0) В других случаях это работает отлично. (Обычно после нескольких прогонов .. (rtc все еще работает после завершения кода?) Можете ли вы дать мне совет, как я могу улучшить его? Какова лучшая практика для этого? (Я использую lopy4 с pytrack) Спасибо, :)

#Setting up the gps:
py = Pytrack()
my_gps = MicropyGPS(local_offset=1,location_formatting='dd')
L76micropyGPS = L76micropyGPS(my_gps, py)
gpsThread = L76micropyGPS.startGPSThread()
print("Waiting for gps signal")
counter = 0
while (my_gps.date == (0, 0, 0) and counter < 10):
    print("Waiting for gps signal: "+str(counter)+" "+str(my_gps.date)+" "+str(my_gps.timestamp))
    counter +=1
    time.sleep(1)
time.sleep(2)
print("Date: "+str(my_gps.date))
print("GPS signal is found")
print("Time: "+str(my_gps.timestamp))
time.sleep(2)
print(my_gps.date[0])
print(my_gps.date[1])
print(my_gps.date[2])


print("Setting up the RTC")
rtc = machine.RTC()
print("RTC before init: {}".format(rtc.now()))
dateYear = int(str(20) + str(my_gps.date[2]))
rtc.init((dateYear, my_gps.date[1], my_gps.date[0], my_gps.timestamp[0], my_gps.timestamp[1], int(my_gps.timestamp[2]), 0, 0)) #seting up the rtc 
print("RTC is set : {}".format(rtc.now()))
...