Совместное использование последовательного порта между двумя процессами
Поскольку невозможно напрямую разделить последовательный порт между двумя процессами, использующими Linux, я ищу другой способ добиться этого, я слышал о socat, но не смог найти конкретный пример того, как реализовать следующее:
Разделите один физический последовательный порт (/dev/ttyUSB0) на два виртуальных порта, один для чтения и один для записи, поскольку одному процессу требуется только отправка данных, а одному - только получение данных.
Я не могу изменить отправку заявки, к сожалению.
1 ответ
В Linux всегда было проблемой получить эксклюзивный доступ к последовательным портам, так как единственный способ ограничить нежелательное вмешательство - это права доступа пользователя / группы.
Со временем было установлено соглашение о том, как указывать другим процессам не открывать устройство последовательного порта, когда какой-либо процесс желает "владеть" им: процесс, который собирается открыть последовательный (параллельный) порт, сначала проверяет файл блокировки в /tmp
каталог (другие стандарты могут использовать /var/lock
каталог), например /tmp/LCK..ttyS0 в случае устройства ttyS0 и записывает его PID
в этот файл. Затем он читает его обратно, и если PID
совпадения затем процесс взял на себя владение портом. После того, как порт больше не нужен, процесс блокировки удаляет файл блокировки.
Таким образом, вы можете открыть его из разных процессов, если эти процессы имеют доступ к устройству.