- Linux список com устройств
- команда для определения портов устройства (например, / dev / ttyUSB0)
- Объяснение:
- Федоренко на связи
- Заметки на полях
- Проверка COM порта под linux
- 5 комментариев (and 38 trackbacks)
- Заметки о Linux, электронике, радиолюбительстве
- воскресенье, 27 июля 2014 г.
- Работа с последовательным портом из консоли Linux
- Подключенные устройства Linux
- Файлы устройств Linux
- Классификация файлов устройств
- Работа с устройствами в Linux
- Создание устройств в Linux
- Выводы
Linux список com устройств
Как получить список доступных системе COM портов в Linux? Раньше искал в /dev файлы типа ttyS*, но что-то тут не так. На моем компе имеется один физический компорт. В /dev есть 4 порта (ttyS0, ttyS1, ttyS2, ttyS3). Но, например когда пытаюсь добавить в систему принтер, визард просит выбрать порт и показывает только ОДИН доступный компорт. Всё правильно, порт всего один. Хотя в девах их 4, в визарде только 1. На другом компе физически есть 1 компорт, а в /dev их аш 5. Как из кода в Linux-e можно получить список доступных компортов? или как проверить все ttyS0, ttyS1, ttyS2, ttyS3 и найти среди них рабочий(е)(реальный(е))?
Оглавление |
|
Сообщения по теме | [Сортировка по времени | RSS] |
1. «Как получить список доступных системе COM портов? « | + / – | |
Сообщение от ACCA | ||
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору |
2. «Как получить список доступных системе COM портов? « | + / – | |
Сообщение от juvf | ||
Спасибо. Таким образом смог выделить из всех ttyS* только рабочие. А можно подобным образом получить инфу о портах типа ttyUSB*? Или достаточно по наличию в /dev/ttyUSB0 определить, что такой порт доступен системе? | ||
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору |
3. «Как получить список доступных системе COM портов? « | + / – | |
Сообщение от ACCA | ||
Смотря откуда этот /dev/ttyUSB* взялся. Если его udev или ещё какой hal сделал — почти достаточно. Посмотри, что такое /dev. Если udev filesystem, то скорее всего можно — /dev/ttyUSB* создаются и убираются динамически, если udev скрипт не глюканул. Сделай `lshal’, почитаешь много интересного про ttyUSB. dmesg | grep ttyUSB тоже поможет. Источник команда для определения портов устройства (например, / dev / ttyUSB0)У меня вопрос по поводу портов в Linux. Если я подключаю свое устройство через USB и хочу проверить его порт, я не могу сделать это с помощью команды lsusb, которая указывает только номер шины и номер устройства на этой шине: Есть ли команда, которая сообщает мне порт, к которому устройство подключено напрямую? Единственный способ сделать это до сих пор заключался в том, чтобы отключить и повторно подключиться и использовать команду: В последней строке видно, что мое устройство подключено к / dev / ttyUSB0 . Я не совсем уверен, что вы спрашиваете. Вы упоминаете «порт» несколько раз, но затем в своем примере вы говорите, что ответом является /dev/ttyUSB0 путь устройства, а не порт. Таким образом, этот ответ о поиске пути разработки для каждого устройства. Ниже приведен быстрый и грязный скрипт, который просматривает устройства в /sys поиске USB-устройств с ID_SERIAL атрибутом. Обычно только настоящие USB-устройства будут иметь этот атрибут, и мы можем фильтровать его. Если мы этого не сделаем, вы увидите в списке много вещей, которые не являются физическими устройствами. В моей системе это приводит к следующему: Объяснение:Устройства, которые отображаются в, /dev имеют dev файл в своем /sys каталоге. Поэтому мы ищем каталоги, соответствующие этим критериям. Нам нужен путь к каталогу, поэтому мы удалим его /dev . Это дает нам путь, /dev который соответствует этому /sys устройству. Это отфильтровывает вещи, которые не являются фактическими устройствами. В противном случае вы получите такие вещи, как USB-контроллеры и концентраторы. Команда udevadm info -q property —export выводит список всех свойств устройства в формате, который может быть проанализирован оболочкой в переменные. Поэтому мы просто призываем eval к этому. Это также причина, по которой мы заключаем код в круглые скобки, чтобы мы использовали подоболочку, а переменные стирались в каждом цикле. Больше фильтрации вещей, которые не являются реальными устройствами. Я надеюсь, что вы знаете, что делает эта строка 🙂 Источник Федоренко на связиЗаметки на поляхПроверка COM порта под linux
Для этого нам понадобятся:
Права доступапроверяем какие у нас в системе есть COM порты, а также наши права на них:
Как мы видим для работы с COM портом необходимы права root либо пользователь должен входить в группу dialout Провод для связи
Работа с программой minicomДля начала необходимо настроить программу minicom Выбираем «Настройка последовательного порта» Если нужно, меняем СОМ порт, нажимая «A» Собственно проверка СОМ портаЗапускаем minicom без параметров. Пробуем нажимать на клавиши. В ответ на экране должны появляться символы. Эта запись была сделана 21.12.2010, 13:50 под рубрикой Разное. Вы можете подписаться на эту запись с помощью RSS 2.0. Both comments and pings are currently closed. 5 комментариев (and 38 trackbacks)#1 by Евгений on 02.05.2012 — 12:50 А как им управлять через PHP скрипт? Спасибо за статью! Источник Заметки о 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. Чтобы общаться с платой нужно что-либо писать/читать с этого файла. Чтобы пользователь мог читать или писать в файл устройства последовательного порта, его нужно добавить в группу dialout. Иначе работать с последовательным портом сможет только администратор root. Простейшим приложением с графическим интерфейсом, которое работает с последовательным портом, является CuteCOM. Он обычно уже есть в вашем дистрибутиве Linux. Его можно установить из репозиториев. При помощи CuteCOM мы работали с платой в предыдущем посте. Выглядит CuteCOM вот так: Работать с ним крайне просто. Указываем нужное устройство, если его нет в списке, то его можно впечатать вручную. Затем указываем скорость и параметры и нажимаем OpenDevice. В окне видим данные, которые пришли от устройства. В поле ввода в нижней части можем печать строку символов, которые предаются на устройство. Чтобы передать данный нажимаем Enter и смотрим ответ устройства в окне. Теперь рассмотрим как работать с COM-портом из командной строки. Для этого служат три команды: stty, cat и echo. Команда stty устанавливает параметры и скорость COM-порта. Её формат: stty -F $ stty 9600 -F /dev/ttyACM0 raw -echo Теперь в той же консоли нужно набрать $ cat /dev/ttyACM0 Теперь нажимаем на плате RESET и видим, что в консоди напечатался текст. Чтобы передать в плату данные, в другой консоли нужно использовать команду echo и перенаправление вывода в файл устройства. Наберём в другой консоли: $ echo "1">/dev/ttyACM0 В итоге должно получиться так: Чтобы увидеть 16-ричные коды данных, приходящих от устройства, нужно использовать команду hexdump: $ cat /dev/ttyACM0|hexdump -C Чтобы иметь вывод данных от устройство на экран и в текстовый файл нужно использовать tee: Источник Подключенные устройства LinuxРабота с устройствами в Linux очень сильно отличается от Windows. Главная концепция Linux в том, что все есть файл, не только пользовательские файлы с информацией, но и различные настройки ядра, подключенные устройства, память, сетевые соединения, все это представлено в виде файлов, которые размещены в специальных файловых системах. С помощью этих файлов система работает с устройствами, и вы можете ими управлять с помощью различных утилит. В этой статье мы рассмотрим как выполняется работа с устройствами Linux, что из себя представляют устройства Linux, а также рассмотрим несколько примеров создания файлов устройств и обращения к ним. Это довольно интересная тема. Файлы устройств LinuxВсе файлы устройств расположены в каталоге /dev, который есть неотделимой частью корневой файловой системы, поскольку они должны быть доступны на всех этапах загрузки. Они также известны как специальные файлы устройств. Эти файлы используются операционной системой для обеспечения пользователю и программам интерфейса доступа к устройствам, подключенным к компьютеру. Самое важное, что нужно знать об этих файлах — это не драйверы устройств, их лучше рассматривать как интерфейс доступа к драйверам устройств. Приложение отправляет данные в файл устройства, откуда они читаются драйвером устройства и отправляются на физическое устройства. Обратная передача от физических устройств тоже проходит по этому пути через файл устройства. Давайте посмотрим как будет выглядеть поток передачи данных для типичной команды, например, cat: На схеме приведена схема передачи данных для команды cat /etc/resolv.conf. Вы выполняете команду из терминала, утилита отправляет запрос файла драйверу, который ищет файл на диске и читает его содержимое. Данные передаются через файл устройства, а затем опять же, через файл устройства псевдо-терминала передаются в эмулятор терминала 6, где они будут отображены. Если мы перенаправим вывод команды в файл, например, cat /etc/resolv.conf > /etc/resolv.bak, то левая часть схемы останется неизменной, а правая сторона будет вести к файлу устройства /dev/sda2. Эти устройства делают очень простым использование стандартных потоков ввода/вывода для доступа к каждому устройству. Простое перенаправление потока данных в файл устройства приведет к записи данных на устройство. Классификация файлов устройствФайлы устройств можно классифицировать по меньшей мере двумя способами. Первая и наиболее широкая классификация — на основе потока данных. В устройствах TTY и других символьных устройствах, данные обрабатываются по одному символу или байту за раз. В блочных устройствах, таких как жесткие диски данные передаются блоками, как правило, с размером, кратным 256 байт. Если вы еще этого не делали, то перейдите в папку /dev/ и посмотрите список находящихся там файлов с помощью команды ls. Вы увидите очень длинный список файлов с их правами доступа, владельцами и группами — это список устройств linux. Обратите внимание на самый первый символ в каждой строке. Он указывает тип устройства. Символом «b» — обозначаются блочные устройства linux (block), а символом «c» — символьные (character). Более точно можно идентифицировать устройства по их младшему и старшему номеру. Например, жесткие диски имеют старший номер 8, что обозначает их как блочные устройства SCSI. Обратите внимание, что все жесткие диски PATA и SATA находятся под управлением SCSI. Раньше использовалась подсистема ATA, но она уже устарела, поэтому диски, которые раньше обозначались как hd[a-z] теперь обозначаются sd[a-z]. Младший номер диска означает раздел устройства, например, номера 8/0 — это весь диск /dev/sda, а 8/1 уже файл первого раздела на диске, 8/6 — /dev/sda6. Файлы TTY именуются немного по-другому, от tty0 до tty63. Все значения старших номеров устройств Linux вы можете найти на официальном сайте ядра. Работа с устройствами в LinuxДавайте проведем несколько экспериментов, которые помогут вам понять как работают устройства Linux и как ими управлять в этой операционной системе. Большинство дистрибутивов Linux имеют несколько виртуальных консолей, обычно от 1 до 7, которые могут использоваться для входа в сеанс командной оболочки. К этим виртуальным консолям можно получить доступ с помощью сочетаний клавиш Ctrl+Alt+Fn, например, Ctrl+Alt+F1 для первой консоли, Ctrl+Alt+F2 для второй и так далее. Сейчас нажмите Ctrl+Alt+F2 для перехода во вторую консоль, в некоторых дистрибутивах, кроме запроса логина и пароля, будет выведена информация про активную TTY связанную с этой консолью. Но этой информации может и не быть. В данном случае консоль будет связана с устройством tty2. Войдите от имени обычного пользователя, затем наберите такую команду, чтобы посмотреть номер устройства tty: У меня вы видите устройство /dev/pts/0, это виртуальное устройство эмулятора терминала, но если вы будете выполнять задачу в tty2, то отобразиться именно она. Теперь давайте посмотрим список tty устройств с помощью команды ls: Нас будут интересовать не все устройства, а только первые три. В этих устройствах нет ничего особенного, это обычные устройства символьного типа. Устройство tty2 подключено к консоли 2, устройство tty3 подключено к консоли 3. Нажмите сочетание клавиш Ctrl+Alt+F3, чтобы переключиться в третью консоль, затем выполните команду: echo «Hello world» > /dev/tty2 Затем вернитесь во вторую консоль. Здесь вы увидите отправленную строку, Hello World. Все это можно повторить с помощью эмуляторов терминала в графическом интерфейсе, только здесь будут использоваться псевдо-терминальные устройства /dev/pts/*. Теперь попробуем отобразить содержимое файла fstab с помощью cat в другом терминале: cat /etc/fstab > /dev/tty2 С помощью cat вы можете отправить файл непосредственно на принтер. Например, если устройство принтера /dev/usb/lp0, то для печати файла будет достаточно выполнить: cat test.pdf > /dev/usb/lp0 Каталог /dev/ содержит много интересных файлов устройств. Это интерфейсы доступа к аппаратному обеспечению и вам не нужно думать, что это, жесткий диск или экран. Например, вся оперативная память компьютера доступна в виде устройства /dev/mem. С помощью него вы можете иметь прямой доступ к памяти. Мы можем вывести содержимое памяти в терминал: dd if=/dev/mem bs=2048 count=100 Утилита dd, в отличие от cat дает больше контроля над процессом и позволяет указать сколько данных нужно прочитать. Но не ко всей памяти вы можете получить доступ. В ядре встроена защита, поэтому обычно, вы можете читать память, только для своего процесса. Также тут есть файлы, которые несвязанны ни с какими реальными устройствами, это null, zero, random и urandom. Устройство /dev/null может использоваться для перенаправления вывода команд, чтобы данные никуда не выводились. Устройство /dev/zero используется для получения строки, заполненной нулями. Вы можете использовать ту же команду dd, чтобы попытаться вывести ряд символов с устройства /dev/null: dd if=/dev/null bs=512 count=500 | od -c Обратите внимание, что ничего выведено не будет, потому что это устройство пусто, оно только принимает данные и никуда их не сохраняет. Устройства /dev/random и /dev/urandom позволяют получить случайные комбинации чисел или байт. Вы можете использовать такую команду, чтобы получить случайные байты информации: Для остановки нажмите Ctrl+C. Устройство urandom позволяет генерировать случайные последовательности независимые от предыдущего числа, в качестве источника энтропии используется нажатия клавиш и движения мыши. Устройство /dev/zero позволяет получить строку, заполненную нулями. Для проверки используйте такую команду: dd if=/dev/zero bs=512 count=500 | od -c Обратите внимание, что восьмеричные нули и нули ASCII это не одно и то же. Создание устройств в LinuxВ прошлом все устройства из каталога /dev создавались во время установки системы, а это означало, что каталог содержал все возможные поддерживаемые устройства, даже если они не использовались. Если вам нужно было создавать или переинициализировать файлы устройств, использовалась утилита mknod. Но для работы с ней вам нужно знать старший и младший номер устройства. Сейчас ситуация изменилась и все файлы устройств linux создаются во время загрузки только для нужных устройств. Менеджер устройств следит за подключаемыми и отключаемыми устройствами и добавляет или удаляет соответствующие файлы. Вы можете убедиться, что устройства были созданы сейчас просмотрев дату создания в с помощью команды ls. Команда mknod все еще есть, но уже существует более новая разработка — makedev. Она предоставляет очень простой интерфейс для создания устройств. ВыводыВ этой статье мы рассмотрели подключенные устройства linux, а также как выполняется работа с устройствами в Linux. Конечно, в одной статье невозможно полностью охватить такую огромную тему, но я надеюсь что у вас появились некоторые базовые навыки работы использования файлов устройств и эта статья была вам полезной. Источник |