У меня есть две программы на Python, которые должны общаться друг с другом через последовательное соединение «точка-точка». Чтобы имитировать соединение, я создаю двунаправленный поток байтов, используя socat, как здесь:
socat -d -d pty,raw,echo=0 pty,raw,echo=0
Консоль возвращает следующее, указывающее два порта pty, которые теперь соединены вместе:
2018/04/15 22:33:03 socat[18197] N PTY is /dev/pts/2
2018/04/15 22:33:03 socat[18197] N PTY is /dev/pts/3
2018/04/15 22:33:03 socat[18197] N starting data transfer loop with FDs [5,5] and [7,7]
Затем мне нужно изменить каждую из двух программ вручную, чтобы указать последовательное соединение для каждой, например:
В программе A.py:
import serial
...
ser = serial.Serial('/dev/pts/2')
В программе B.py:
import serial
...
ser = serial.Serial('/dev/pts/3')
Что мне нужно, так это сценарий, который бы устанавливал соединение socat, затем выполнял A.py с одним номером порта, переданным ему в качестве аргумента, и выполнял B.py с другим номером порта, переданным ему в качестве аргумента.
Я пробовал сценарий bash, но команда socat
блокируется, и я не могу записать ее вывод stderr, чтобы поместить его в переменную. Если бы я мог, я мог бы проанализировать переменную и продолжить свой путь.
Любые идеи? Или, может быть, лучший способ сделать это?
Благодарю вас!