diff --git a/endpoint.py b/endpoint.py index 9ddf520..c77b14c 100644 --- a/endpoint.py +++ b/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): # запускаем клиента модбас