Linux ttys0 что это

Linux ttys0 что это

«tty» — сокращение от «телетайп». Первые терминалы были телетайпами (типа дистанционно управляемых пишущих машинок). См. подраздел «Телетайпы».

Компьютер рассматривает терминал как устройство на последовательном порту.

Для каждого такого терминала имеется специальный файл в каталоге (устройств) /dev. /dev/ttyS0 — специальный файл для последовательного порта, известный как COM1 в мире DOS/Windows. Чтобы посылать текст терминалу, вы можете переназначить стандартный вывод некоторой команды в командной строке соответствующему специальному файлу. Например команда «echo test> /dev/ttyS1» должна послать слово «test» на терминал, подключенный к COM2 (подразумевается, что вам разрешена запись в /dev/ttyS1). Точно так же «cat my_file > /dev/ttyS0» пошлет содержание файла my_file в COM1 (ttyS0).

В дополнение к ttyS0 (/dev/ttyS0), ttyS1, ttyS2, и т.д. («S» означает последовательный порт) имеется также ряд устройств «cua»: cua0, cua1, cua2, и т.д.

сua0 — тот же самый порт как ttyS0 и т.д. «Cu» cua означает CalloUt. Серия устройств ttyS соответствуют Posix, в то время как при использование cua можно открыть порт, про который линии управления модемом говорят, что он не готов. Это говорит о том, что ряд cua включен только для обратной совместимости, так что вы видимо должны использовать ряд ttyS.

Псевдо терминалы не имеют уникального физического разъема на компьютере.

Они используются для эмуляции последовательного порта. Например, если кто-то соединяется через telnet с вашим компьютером по сети, они могут подсоединиться к устройству /dev/ptyp2 (порт псевдотерминала). В XWINDOWS, программа эмуляции терминала xterm использует псевдотерминалы.

Также его используют программы любительского радио. При использовании некоторого прикладного программного обеспечения можно иметь 2 или более псевдотерминала, присоединенных на один и тот же физический последовательный порт.

Псевдотерминалы образуют пары типа ttyp3 и ptyp3. pty. — это хозяин или управляющий терминал, а tty. — подчиненный. ttyq5 — также псевдотерминал, как — ttysc (с — шестнадцатеричная цифра).

Более точно, главные псевдотерминалы — /dev/pty[p-s]n, а соответствующие подчиненные — /dev/tty[p-s]n, где n — шестнадцатеричная цифра.

/dev/tty означает управляющий терминал (если есть) для текущего процесса (процесс, который использует «/dev/tty» в команде). Чтобы выяснять, к которому tty присоединен процесс, используют команда «ps -a» в командной строке. Посмотрите столбец «tty». Для оболочки, в которой вы находитесь, /dev/tty — это терминал, который вы сейчас используете.

Напечатайте «tty» в командной строке, чтобы увидеть название терминала (см. man tty(1)). /dev/tty — нечто вроде связи с фактически именем устройства терминала с некоторыми дополнительными возможностями для программистов на C : см. man tty(4).

? означает целое число. Одно из применений их в Linux — пакетный драйвер ISDN: isdn4linux. ttyI? является неким подобием ttyS? . Имеется также cui? , который является кое-чем вроде cua?. ttyI и cui эмулируют модемы и могут принимать команды модемов.

В Linux монитор PC называется консолью и имеет несколько специальных файлов устройств, связанных с нею: tty0, tty1, tty2 и т.д. Когда вы входите в систему, то попадаете на tty1. Чтобы перейти на tty2 нажимите Alt-F2. tty1, tty2, и т.д. — «виртуальные терминалы» (иногда называются «виртуальными консолями»). вы можете регистрировать на различных виртуальных терминалах и таким образом осуществлять несколько различных сеансов с компьютером в одно и тоже время. вы переключаетесь между ними, используя клавиши Alt-F?, где «?» является номером виртуального терминала, на который вы хотите перейти. Консоль также известна как /dev/tty0, и сообщения системы могут идти на это устройство и отображаться на вашей консоли. Только система или root могут писать на /dev/tty0, с которым иногда компонуется /dev/console. Сообщения сстемы могут быть также записаны непосредственно по аппаратному адресу платы последовательного порта, таким минуя /dev/tty0. Для большего количества информации о консоли см. «Консоль Linux».

В каталоге /dev находится множество специальных файлов устройств. Если нужных вам файлов нет там, то вы можете попробовать создать их командой «mknod». См. man-страницу tty(4) для информации о том, как сделать это для последовательных портов. Чтобы использовать mknod, вы должны знать major и minor числа устройства. вы можете посмотреть нужные вам числа, используя команду «ls -l» в каталоге /dev. Она отобразит major и minor числа существующих специальных файлов.

Источник

5. Специальные файлы терминалов: /dev/tty . и т.д.

«tty» — сокращение от «телетайп». Первые терминалы были телетайпами (типа дистанционно управляемых пишущих машинок). См. подраздел «Телетайпы».

5.1 Терминал на последовательном порту

Компьютер рассматривает терминал как устройство на последовательном порту.

Для каждого такого терминала имеется специальный файл в каталоге (устройств) /dev. /dev/ttyS0 — специальный файл для последовательного порта, известный как COM1 в мире DOS/Windows. Чтобы посылать текст терминалу, вы можете переназначить стандартный вывод некоторой команды в командной строке соответствующему специальному файлу. Например команда «echo test> /dev/ttyS1» должна послать слово «test» на терминал, подключенный к COM2 (подразумевается, что вам разрешена запись в /dev/ttyS1). Точно так же «cat my_file > /dev/ttyS0» пошлет содержание файла my_file в COM1 (ttyS0).

Читайте также:  Red hat enterprise linux gnome

В дополнение к ttyS0 (/dev/ttyS0), ttyS1, ttyS2, и т.д. («S» означает последовательный порт) имеется также ряд устройств «cua»: cua0, cua1, cua2, и т.д.

сua0 — тот же самый порт как ttyS0 и т.д. «Cu» cua означает CalloUt. Серия устройств ttyS соответствуют Posix, в то время как при использование cua можно открыть порт, про который линии управления модемом говорят, что он не готов. Это говорит о том, что ряд cua включен только для обратной совместимости, так что вы видимо должны использовать ряд ttyS.

5.2 Псевдотерминалы

Псевдо терминалы не имеют уникального физического разъема на компьютере.

Они используются для эмуляции последовательного порта. Например, если кто-то соединяется через telnet с вашим компьютером по сети, они могут подсоединиться к устройству /dev/ptyp2 (порт псевдотерминала). В XWINDOWS, программа эмуляции терминала xterm использует псевдотерминалы.

Также его используют программы любительского радио. При использовании некоторого прикладного программного обеспечения можно иметь 2 или более псевдотерминала, присоединенных на один и тот же физический последовательный порт.

Псевдотерминалы образуют пары типа ttyp3 и ptyp3. pty. — это хозяин или управляющий терминал, а tty. — подчиненный. ttyq5 — также псевдотерминал, как — ttysc (с — шестнадцатеричная цифра).

Более точно, главные псевдотерминалы — /dev/pty[p-s]n, а соответствующие подчиненные — /dev/tty[p-s]n, где n — шестнадцатеричная цифра.

5.3 Управляющие терминалы /dev/tty

/dev/tty означает управляющий терминал (если есть) для текущего процесса (процесс, который использует «/dev/tty» в команде). Чтобы выяснять, к которому tty присоединен процесс, используют команда «ps -a» в командной строке. Посмотрите столбец «tty». Для оболочки, в которой вы находитесь, /dev/tty — это терминал, который вы сейчас используете.

Напечатайте «tty» в командной строке, чтобы увидеть название терминала (см. man tty(1)). /dev/tty — нечто вроде связи с фактически именем устройства терминала с некоторыми дополнительными возможностями для программистов на C : см. man tty(4).

5.4 «Терминалы» /dev/ttyI?

? означает целое число. Одно из применений их в Linux — пакетный драйвер ISDN: isdn4linux. ttyI? является неким подобием ttyS? . Имеется также cui? , который является кое-чем вроде cua?. ttyI и cui эмулируют модемы и могут принимать команды модемов.

5.5 Консоль: /dev/tty?

В Linux монитор PC называется консолью и имеет несколько специальных файлов устройств, связанных с нею: tty0, tty1, tty2 и т.д. Когда вы входите в систему, то попадаете на tty1. Чтобы перейти на tty2 нажимите Alt-F2. tty1, tty2, и т.д. — «виртуальные терминалы» (иногда называются «виртуальными консолями»). вы можете регистрировать на различных виртуальных терминалах и таким образом осуществлять несколько различных сеансов с компьютером в одно и тоже время. вы переключаетесь между ними, используя клавиши Alt-F?, где «?» является номером виртуального терминала, на который вы хотите перейти. Консоль также известна как /dev/tty0, и сообщения системы могут идти на это устройство и отображаться на вашей консоли. Только система или root могут писать на /dev/tty0, с которым иногда компонуется /dev/console. Сообщения сстемы могут быть также записаны непосредственно по аппаратному адресу платы последовательного порта, таким минуя /dev/tty0. Для большего количества информации о консоли см. «Консоль Linux».

5.6 Создание устройства командой mknod

В каталоге /dev находится множество специальных файлов устройств. Если нужных вам файлов нет там, то вы можете попробовать создать их командой «mknod». См. man-страницу tty(4) для информации о том, как сделать это для последовательных портов. Чтобы использовать mknod, вы должны знать major и minor числа устройства. вы можете посмотреть нужные вам числа, используя команду «ls -l» в каталоге /dev. Она отобразит major и minor числа существующих специальных файлов.

Источник

Заметки о Linux, электронике, радиолюбительстве

Личный блог Вадима Кузнецова, RA3XDH

воскресенье, 27 июля 2014 г.

Работа с последовательным портом из консоли Linux

В предыдущем посте было показано как запустить UART на отладочной плате Launchpad для MSP430. Теперь рассмотрим как общаться с платой при помощи средств командной строки Linux. Используется плата с прошивкой из предыдущего поста. Для подробностей — см. под кат

Как известно, все устройства последовательных портов представлены файлами устройств в каталоге /dev.Через эти файлы и происходит общение ОС Linux с внешним устройством на последовательном порту. Чтобы передать что-то на внешнее устройство нужно записать данные в файл устройства, а чтобы считать информацию из устройства — прочитать данные из файла устройства. Это можно делать при помощи команд cat и echo так же как для обычных файлов на диске. Или внутри программы на С при помощи вызовов ioctl(), read() и write() или библиотеки termios.

Физическим последовательным портам RS232, к которым подключались диалапные модемы на старых компьютерах, соответствуют файлы устройств /dev/ttyS*, начиная с /dev/ttyS0. Виртуальным последовательным портам, которые создаются различными конвертерами USB UART соответствуют файлы устройств /dev/ttyUSB* и /dev/ttyACM*. Ядро Linux автоматически разпознаёт подключенное устройство, загружает для него драйвер и создаёт файл устройства. Вручную устанавливать драйвер, как в ОС Windows не требуется. Например, если подключить к USB преобразователь USB UART FT232, то создаётся файл устройства /dev/ttyUSB0, с которым можно работать также как и с обычным последовательным портом. На плате Launcpad находится микросхема TUSB3410, которая тоже представляет собой конвертер USB UART. Если подключить её к USB, то создаётся файл устройства /dev/ttyACM0. Чтобы общаться с платой нужно что-либо писать/читать с этого файла.

Читайте также:  Aka ms pscore6 windows 10

Чтобы пользователь мог читать или писать в файл устройства последовательного порта, его нужно добавить в группу dialout. Иначе работать с последовательным портом сможет только администратор root.

Простейшим приложением с графическим интерфейсом, которое работает с последовательным портом, является CuteCOM. Он обычно уже есть в вашем дистрибутиве Linux. Его можно установить из репозиториев. При помощи CuteCOM мы работали с платой в предыдущем посте. Выглядит CuteCOM вот так:

Работать с ним крайне просто. Указываем нужное устройство, если его нет в списке, то его можно впечатать вручную. Затем указываем скорость и параметры и нажимаем OpenDevice. В окне видим данные, которые пришли от устройства. В поле ввода в нижней части можем печать строку символов, которые предаются на устройство. Чтобы передать данный нажимаем Enter и смотрим ответ устройства в окне.

Теперь рассмотрим как работать с COM-портом из командной строки. Для этого служат три команды: stty, cat и echo.

Команда stty устанавливает параметры и скорость COM-порта. Её формат:

stty -F

Чтобы установить параметры для платы Launchpad для соединения на скорости 9600 нужно выполнить:

$ stty 9600 -F /dev/ttyACM0 raw -echo

Параметр raw устанавливает, что данные в компьютер передаются байт за байтом так же как приходят в порт без преобразований. Аппаратное управление потоком отключено. Подробнее о том, что включает и выключает raw — см. man stty. Если не включить raw, то скорее всего ничего работать не будет.

Теперь в той же консоли нужно набрать

$ cat /dev/ttyACM0

И можно смотреть данные, которые приходят от платы. Выход — нажать Ctrl+C.

Теперь нажимаем на плате RESET и видим, что в консоди напечатался текст.

Чтобы передать в плату данные, в другой консоли нужно использовать команду echo и перенаправление вывода в файл устройства. Наберём в другой консоли:

$ echo "1">/dev/ttyACM0

Видим, что на плате загорелся красный светодиод и в первой консоли было выдано сообщение об этом. Чтобы убрать конец строки в передаваемых данных, то нужно использовать запуск echo -n, а чтобы интерпретировать 16-ричные коды — нужно echo -e. Ключи можно комбинировать.

В итоге должно получиться так:

Чтобы увидеть 16-ричные коды данных, приходящих от устройства, нужно использовать команду hexdump:

$ cat /dev/ttyACM0|hexdump -C

Получится вот так:

Чтобы иметь вывод данных от устройство на экран и в текстовый файл нужно использовать tee:

Источник

/dev/ttyS0

К /dev/ttyS0 через шнур подключено устройство.

Получаю с прибора данные

Всё ок. Пытаюсь сделать обратную операцию.

Прибор в режиме ожидания приёма. Данные не проступают. Заканчивается всё TIMEOUT-ом в приборе.

Что я делаю не так?

PS: Илюстрации по «теме»:

какой там физический проводник — есть реальный RS232/TTL или оно всё симулируется в какой-нибудь виртуальной микросхеме по USB? Если есть реальный — смотрите целостность контактов — ведь отправка и получение по разным проводам

Пытаюсь сделать обратную операцию.

А она имеет смысл? А то может прибор не ожидает, что ты ему обратно отправишь данные, которые только что от него же и получил.

Прибор в режиме ожидания приёма. Данные не проступают. Заканчивается всё TIMEOUT-ом в приборе.

Прибор в режиме ожидания приёма. Данные не проступают. Заканчивается всё TIMEOUT-ом в приборе.

Всё же не очень я себе представляю для чего может понадобиться отправка _тех_же_ данных обратно.

не очень я себе представляю для чего может понадобиться отправка _тех_же_ данных обратно

Данные — координаты точек. Вручную забивать — зае..шся.

не очень я себе представляю для чего может понадобиться отправка _тех_же_ данных обратно.

Это тест. Если тест я завершу, каким-то образом, то данные закачиваемые в прибор будут слегка другими.

Дай ссылку на исходники прошивки или хотя бы на протокол.

Ты вообще уверен, что прибор умеет принимать вот так — жирным буфером? Может, ему после каждой порции (скажем, строки) данных нужно подтверждение компьютеру отсылать и компьютер на это отвечать должен?

некоторым нужно «stty -clocal»

Если устройство принимает бинарные данные, то там еще какие-то настройки нужно крутить с помощью stty

А если заглянуть в дамп посмотреть, что там за байты (особенно интересует конец строки) а потом это сравнить с тем что ожидает твой тахеометр.

Ставлю на то, что драйвер tty меняет служебные символы для удобоваримой печати в консоль.

Уверен что это нужно? Твой девайс умеет в rts/cts?

А если заглянуть в дамп посмотреть

I. Сброс данных с прибора

1) Настраиваю прием:

5) Переданные данные

II. Заливка данных на прибор

2) Передача данных

Не уверен. Пользую метод «научного тыка». Устанавливаю все параметры по очереди в надежде отыскать «нужный». Без параметров результат то пока такой же.

Попробую завтра. А что он делает кстати?

Мне не нравятся непонятные символы в консоли.

Где гарантия, что один и тот же файл можно без изменений гонять туда и обратно?

Где гарантия, что при приеме, прибор не ждет какой-либо специальной преамбулы, которую, например, шлет оригинальная прога?

Для гарантированного разрешения этого вопроса лучше всего в параллель прицепить еще один последовательный порт и слить случай заливки в прибор координат с официальной утилиты на этот прибор. Не знаю как у вас с такими возможностями, но как вариант, можно в виртуалку с вендой пробросить сериал-порт, а в линуксе его распараллелить, чтобы либо не только в физический порт но и в файл.

Читайте также:  Обновление windows список по датам

Где гарантия, что один и тот же файл можно без изменений гонять туда и обратно?

Эти файлы гонялись туда сюда через USB-COM без проблем.

не ждет сигнала CD при открытии устройства.

Хотя, если ты успешно передаешь в устройство данные, то оно ничего не поменяет.

Возможно «stty raw -F /dev/ttyS0» поможет.

То есть вся разница только в ttyS0 и ttyUSB0 ?

Эти файлы гонялись туда сюда через USB-COM без проблем.

сравни вывод «stty -a -F /dev/ttyUSBX» c ttyS0

Дефолтные настройки терминальной дисцилины м.б. разные.

Хотя, если ты успешно передаешь в устройство данные, то оно ничего не поменяет.

Не передаю, принимаю успешно. А вот с передачей на прибор траблы.

Самый первый вариант по методу «научного тыка». Но нет. Без изменений.

То есть вся разница только в ttyS0 и ttyUSB0 ?

Разница в том, что раньше я мог одолжить шнурок с адаптером, а сейчас нет. Пытаюсь пользовать то что есть.

сравни вывод «stty -a -F /dev/ttyUSBX» c ttyS0

Не выйдет. Нет шнурка с адаптером = нет /dev/ttyUSBX.

я не про это. когда был usb-com вариант с cat > /dev/ttyUSB0 работал?

когда был usb-com вариант с cat > /dev/ttyUSB0 работал?

Не только. И «serial port terminal», и «minicom», и «cat». Всё работало.

тогда принципиальной разницы не вижу. заходи в миником и крути параметры, чтобы из прибора валился нормальный дамп. потом можешь спокойно выйти и попробовать через cat, и там же срисовать те параметры которые поставились через minicom.

заходи в миником и крути параметры

Следующий пункт в методе «научного тыка». Согласен.

Ведь «stty» я почти «отработал».

когда настраиваю обмен через serial то использую такие настройки:

Приму во внимание. Шаманить, так шаманить.

Прозвони шнур, точно TX не перебит?

не ждет сигнала CD при открытии устройства.
Хотя, если ты успешно передаешь в устройство данные, то оно ничего не поменяет.

Занудства ради: если установлено детектирование сигнала CD, то его отсутствие не дает именно принимать данные, а cts (clear to send) — передавать.

угу. Это было сделано для модемов, которые поднимали CD после установления коннекта.

угу. Это было сделано для модемов, которые поднимали CD после установления коннекта.

Удивительно, что вас всегда можно поправлять. Сигнал CD именно и означал, что модемы «зацепились», возможность подать команду (данные) на модем опеределяется сигналами DSR/DTR. Теоретически, отсуствие соединения при TTL логике тоже означает 1, потому, те «модемы», которые не имеют CD или даже DTR/DSR/CTS особо не требовали выключение опций у асинхронного порта, но для надежности таки не помешает указывать stty -XXX.

Скорее всего. Либо сам прибор «хандрит». Попытался через ЗЛО-ОСь TopoCad-ом, результат тот же. Принимает данные легко, передача — по нулям.

Если бы знал как, прозвонил бы. Интересно всё-таки, что сбоит, шнурок или прибор.

Заметка на «всякий случай»:

Для подбора параметров tty к геодезическим приборам есть tcl-скрипт ComEasy.

Мне быстро «помог» понять, что дело не в /dev/ttySX, а в «шнурке», либо приборе.

берёшь мультиметр, пинаут, смотришь сопротивление, если в мультиметре пищалки нет. Если сопротивление не нулевое — возможен обрыв.

В кабеле что втыкается в прибор закороти rx-tx и глянь в minicom есть ли эхо. Может с проводами что.

соедени ноги 2-3 если 9-контактный разъем и посмотри есть ли эхо в миникоме. С выключенным hardware flow control. Если нету — чини провод.

То есть провод одним концом в комп а на другом перемычка. Из прибора вытащен.

Ни к чему. «Звонилку» нашёл у электриков. Tx «глухой». COM-штекер разобрал — разрыва нет. А разрывать противоположный «заклёп» не вижу смысла, как и «обёртку» резать. Не судьба видать.

PS: Не нашёл нормальной схемы COM-разъёма, либо COM-штекера (Wiki походу таджик состовлял). Если кто найдёт стоящую, линьканите в тему, а то, что за «Tx», «Rx» и еже, не очень понятно окружающим.

Разница в том, что раньше я мог одолжить шнурок с адаптером, а сейчас нет. Пытаюсь пользовать то что есть.

Уже была такая же тема на лоре и, похоже, с таким же финалом. Ты, случаем, к TTL уарту не цепляешь ли напрямую выход RS-232 с ПК? Вангую, что с «одолженным шнурком» теперь тоже работать не будет. Хорошо, если в устройстве какой-то буфер есть, а если нет, то только контроллер менять.

А просто в гуглопоиске ввести «распайка последовательного порта»? Ещё употребляют слово «распиновка».

А просто в гуглопоиске ввести «распайка последовательного порта»?

Не нашёл нормальной схемы COM-разъёма, либо COM-штекера

а твое устройство точно cts выставляет в сторону компа? а то может там висячка.

и попробуй minicom запустить и с его помощью ручками пообщаться со своим устройством

и попробуй minicom запустить и с его помощью ручками пообщаться со своим устройством

Tx «глухой». На COM-штекере разрыва нет. «Заклёп» раздирать не собираюсь. «Обмотку» резать тоже.

PS: Более-менее достойная схема COM:

А просто в гуглопоиске ввести «распайка последовательного порта»?

Источник

Оцените статью