У меня проблема с попыткой измерить временной интервал между последовательной записью и последовательным чтением в python. Я использую python 3.8 и USB-> RS485 адаптер на windows. По сути, код выглядит следующим образом:
def write_packet(self, packet, flush=True):
if flush:
self.clear_buffers()
self.ser.write(packet)
self.tx_time = time.time_ns()
, за которым сразу следует:
def read_packet(self):
first_byte = True
while True:
byte = self.ser.read(1)
# Check if the read timed out:
if byte == b'':
**(notify of timeout)**
if byte == b'\x00':
**(end of packet, decode and break)**
else:
if first_byte:
self.time_rx = time.time_ns()
first_byte = False
Как вы, наверное, видите, я пытаюсь зафиксировать время между Передача и получение первого байта. После этого я делаю что-то вроде этого, чтобы получить время в мс:
time_diff_ms = (self.rx_time - self.tx_time)/1000000
Моя проблема в сроках time_diff_ms , похоже, далеко. Изображение области видимости сигналов RS485 показывает, что время чтения должно составлять ~ 1 мс, но скрипт считывает значения 6 мс, 11 мс и т. Д. c., Почти случайные значения.
https://i.stack.imgur.com/eJFAJ.jpg
Я также пытался запустить скрипт на Linux, но особой разницы нет. Я также работаю с довольно высокими скоростями передачи 921600.