Изменил логику опроса
This commit is contained in:
parent
0ac7db0b0d
commit
2033cc1137
49
endpoint.py
49
endpoint.py
@ -179,41 +179,38 @@ class Endpoint(Thread):
|
||||
last_row = None
|
||||
|
||||
while True:
|
||||
# время следующего опроса
|
||||
need_time = last_query + scan_rate
|
||||
try:
|
||||
row = self.__mb_read_all_regs()
|
||||
|
||||
while True:
|
||||
try:
|
||||
row = self.__mb_read_all_regs()
|
||||
|
||||
if self.log_type == LOG_TYPE_ON_SCAN:
|
||||
if self.log_type == LOG_TYPE_ON_SCAN:
|
||||
self.__insert_db_row(row)
|
||||
last_row = row
|
||||
else:
|
||||
equal = True
|
||||
if last_row is None:
|
||||
equal = False
|
||||
else:
|
||||
for i in range(0, len(last_row)):
|
||||
if last_row[i] != row[i]:
|
||||
equal = False
|
||||
break
|
||||
if not equal:
|
||||
self.__insert_db_row(row)
|
||||
last_row = row
|
||||
else:
|
||||
equal = True
|
||||
if last_row is None:
|
||||
equal = False
|
||||
else:
|
||||
for i in range(0, len(last_row)):
|
||||
if last_row[i] != row[i]:
|
||||
equal = False
|
||||
break
|
||||
if not equal:
|
||||
self.__insert_db_row(row)
|
||||
last_row = row
|
||||
|
||||
last_query = need_time
|
||||
break
|
||||
except Exception as ex:
|
||||
journal.log(f"Exception: {ex}")
|
||||
time.sleep(1) # небольшая задержка, чтоб не спамить запросами
|
||||
need_time = datetime.now() + scan_rate
|
||||
break
|
||||
except Exception as ex:
|
||||
journal.log(f"Exception: {ex}")
|
||||
|
||||
# вычислим время до следующего опроса и подождем
|
||||
# время следующего опроса
|
||||
need_time = last_query + scan_rate
|
||||
curr_time = datetime.now()
|
||||
if need_time > curr_time:
|
||||
delta = need_time - curr_time
|
||||
time.sleep(delta.seconds + (delta.microseconds / 1000000))
|
||||
last_query = need_time
|
||||
else:
|
||||
last_query = datetime.now()
|
||||
|
||||
def run(self):
|
||||
# запускаем клиента модбас
|
||||
|
Loading…
x
Reference in New Issue
Block a user