Используя Python, как мне сделать виртуальный последовательный порт в Linux?

У меня есть две программы на Python, которые нужно читать с одного последовательного порта через PySerial API.

Из того, что я понимаю, нельзя иметь две программы чтения с одного последовательного порта. Поэтому я планирую сделать так, чтобы одна программа на Python считывала с физического последовательного порта, а затем копировала ТОЧНЫЕ данные, полученные с последовательного порта, в виртуальные последовательные порты, где другие программы Python могли читать ее через pySerial API.

Из двух программ Python, которые будут использовать pySerial, только одна из них ответит что-нибудь.

Есть идеи, как это сделать?

1 ответ

Создание виртуального последовательного порта может быть тривиальным или сложным в зависимости от ваших требований.

Если вам нужно только распространять данные с реального порта на виртуальный порт (и наоборот), вы можете использовать такие инструменты, как socat, remserial, или же conserver, Смотрите примеры использования здесь: 1, 2, 3.

Такие инструменты создают pty (псевдо-tty) и передают данные между реальным портом и pty в обоих направлениях. Однако они не распространяют другие API, включая различные termios а также ioctl() звонки, специфичные для последовательного порта.

Если этого недостаточно, вам нужны более продвинутые инструменты, такие как tty0tty или же ser2net а также sercd (на основании RFC 2217) и другие. Смотрите этот пост.

Другие вопросы по тегам