Второй оператор if в середине этого кода использует 'или' между двумя условиями. Это вызывает проблему, я просто не знаю, как обойти это. Код проходит через файл данных и включает заданный номер реле в определенное время c, мне нужно сделать это только один раз для каждого реле. Если я использую 'и' между условиями, он включит только первое реле, которое соответствует текущему времени, будет ждать следующего часа и включит следующее заданное реле.
Может кто-нибудь предложить что-то, чтобы решить эту проблему, спасибо!
def schedule():
metadata, sched = dbx.files_download(path=RELAYSCHEDULE)
if not sched.content:
pass # If file is empty then exit routine
else:
relaySchedule = str(sched.content)
commaNum = relaySchedule.count(',')
data1 = relaySchedule.split(',')
for i in range(commaNum):
data2 = data1[i].split('-')
Time1 = data2[1]
currentRN = data2[0]
currentDT = datetime.datetime.now()
currentHR = currentDT.hour
global RN
global T
if str(currentHR) == str(Time1):
if T != currentHR or RN != currentRN:
relaynum = int(data2[0])
relaytime = int(data2[2])
T = currentHR
RN = currentRN
k = threading.Thread(target=SendToRelay(relaynum, relaytime)).start()
else:
print("Pass")
Желаемые входные данные:
sched.content = '1-19 -10,3-9-20,4-9-10, '
T =' '
RN =' '
T и RN являются глобальными переменными, поскольку l oop работает бесконечно, они там, чтобы сообщить l oop, были ли уже использованы указанные c Time (T) и номер реле (RN).
Желаемые выходы:
Если время равно 9:00, тогда
T = 9
RN должно быть любым заданным номером реле, поэтому RN = 3, но не уверен, что это правильная вещь.
Извините, если это сбивает с толку. Мне в основном нужно, чтобы программа считала набор запланированного времени для включения определенных реле c, мне нужно, чтобы он прочитал текущее время и, если он соответствует времени в расписании, то проверит, какое реле находится в это время, и включите его на какое-то время. После того, как он завершил это, мне нужно, чтобы он go превысил тот же набор данных в случае, если в это же время есть еще один ретранслятор, который также должен быть включен, проблема в том, что если я не использую переменные T и RN чтобы проверить, было ли установлено предыдущее реле, он будет читать файл и снова и снова включать одно и то же реле.