Как создать виртуальное устройство ввода-вывода в Linux, которое передает данные на реальное устройство?
У меня интересная проблема. Я работаю над встроенным ящиком с несколькими экземплярами Linux, работающими каждый на процессоре ARM. Они подключены по внутренней сети 1GBps. У меня есть узел устройства последовательного порта, подключенный к процессору A (скажем, Linux-a, работающий на нем). У меня есть программа, работающая на процессоре B (скажем, на Linux-B), доступ к устройству последовательного порта, как если бы он был подключен к Linux-B локально.
Моя программа вызывает API типа ввода-вывода term на узле устройства для управления tty Эхо, режим ввода символов. Мне интересно, есть ли способ создать виртуальное последовательное устройство, которое доступно на Linux-B, каким-то образом разговаривая с реальным последовательным устройством на Linux-a по внутренней сети.
Я думаю что-то вроде: Linux-B имеет /dev / ttyvirtual. Все, что записывается в него, переносится через сетевой сокет в Linux-serialserver. Последовательный сервер exrcises вызовы api на реальном устройстве позволяет сказать /dev / ttys0. Любые данные, ожидающие ttys0 возвращается в /dev / ttyvirtual.
что все это связано, чтобы сделать это быстро?
спасибо
Видеогуй
обновление:
Я нашел дискуссию на
http://fixunix.com/bsd/261068-network-socket-serial-port-question.html с большими указателями.
Еще одна полезная ссылка http://blog.philippklaus.de/2011/08/make-rs232-serial-devices-accessible-via-ethernet/
2 ответов
посмотри openpty(3). Это позволяет создать псевдо-TTY (например,/dev/pts/0
, вид, который используют ssh-соединения), который будет реагировать как обычный TTY, но даст вам прямой программный контроль над соединениями.
таким образом, вы можете разместить последовательного устройства (например. /dev/pts/5
), что вы пересылаете данные между сетевым подключением, а затем другие приложения могут выполнять последовательные операции над ним, не зная о базовом сетевом мосте.
Я закончил с помощью socat
примеры можно найти здесь:примеры socat
вы socat спина к спине на обеих машинах. Прослушивание tcp-порта и пересылка данных в локальный виртуальный порт или pty. Socat на другой коробке использует реальное устройство в качестве ввода и пересылает любые данные в tcp-порт.