У меня есть устройство (которое закодировано в CPP), подключенное к моему ПК с Ubuntu, и я пытаюсь связаться с ним, используя мой узел Python. В основном, попытка получить сообщения от устройства, а затем отправлять сообщения на него (скорость передачи данных 230400). По умолчанию устройство публикует сообщение пульса только с очень низкой частотой. 0,1-0,2 Гц. Сообщения, которые отправляются на устройство, составляют около 2 Гц. (они могут быть до 200 Гц, когда я заканчиваю свою полную реализацию). В случае по умолчанию я могу получать биение и правильно отправлять свои сообщения с ПК.
Но поскольку мне нужно было больше информации, чем просто сердцебиение, я добавил еще несколько сообщений для отправки с устройства, увеличив частоту примерно до 2 Гц. Но тогда я могу получать эти сообщения с устройства должным образом, но сообщения, которые я отправляю на устройство, через некоторое время сбрасываются. На стороне ПК отправитель + получатель упакованы в один и тот же скрипт Python. Если я перезапущу скрипт, он снова будет работать некоторое время, а затем остановится.
Количество времени, необходимое для остановки, уменьшается по мере того, как я увеличиваю объем данных, отправляемых с устройства на ПК, или их частоту.
Подведем итог:
Случай 1: отправка устройства с частотой 0,1 Гц, отправка ПК с частотой 2 Гц, отправка / получение точной работы на обоих концах.
Случай 2: отправка устройства с частотой> 1-2 Гц, отправка ПК с частотой 2 Гц, отправка устройства, получение ПК. ПК отправляет, устройство перестает получать через некоторое время.
То, как порт открывается в Python, выглядит следующим образом
def __init__(self, device, baud=230400, autoreconnect=False, source_system=255):
import serial
self.baud = baud
self.device = device
self.autoreconnect = autoreconnect
self.port = serial.Serial(self.device, self.baud, timeout=0,
dsrdtr=False, rtscts=False, xonxoff=False)
Я не очень хорошо осведомлен о низкоуровневых аспектах связи через последовательный порт. Я попытался настроить параметры, такие как размер буфера, тайм-ауты и т. Д. На устройстве, но ничего не получалось. Было бы очень полезно, если бы кто-нибудь смог пролить свет на то, почему возникает эта проблема, или на какие красные флажки я должен обратить внимание в коде. К сожалению, полный код, который находится на устройстве, достаточно обширен для отображения здесь, поэтому я могу включить определенные части, если это необходимо. Заранее спасибо!
Задача ещё не решена.