Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: управление ttyS устройствами  (Прочитано 4814 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн serrggeee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
управление ttyS устройствами
« : 15 Декабря 2015, 16:02:48 »
Здравствуйте интересует такая тема, как работа с оборудованием, которые конектсятся с помощью com port как навывается в виндоус или как в линукс ttyS*. Тема для меня новая и что то не пойму каким путем идти. Вообще планирую законктиться к весам и управлять по средством языка python. Но на первых парах хочу управлять через терминал и  не висами а что есть под рукой например бесперебойник или старый модем. Что одно что другое устройство подсоединял и при вводе этой команды ls -l /dev/ttyS* или этой dmesg | grep tty что с устройством что без него изменений не вижу, а до того как ним управлять тем более не дашел, тоесть управлением его ай пи. По аналогии с usb то нужен драйвер, здесь как я понимаю ничего не нужно. Жду хорошие советы))

Оффлайн suslikk

  • Старожил
  • *
  • Сообщений: 2488
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #1 : 15 Декабря 2015, 16:05:46 »
serrggeee, у вас на комьютере com порт?
Нарисуй свой город на openstreetmap.org

Оффлайн serrggeee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #2 : 15 Декабря 2015, 16:13:32 »
нет встроенного нет, но на матириноской плате есть разъемы для подключения com порта.

Оффлайн suslikk

  • Старожил
  • *
  • Сообщений: 2488
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #3 : 15 Декабря 2015, 16:30:30 »
serrggeee, т.е. вы испольузете usb to com?
Нарисуй свой город на openstreetmap.org

Оффлайн serrggeee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #4 : 15 Декабря 2015, 16:36:17 »
нет com to com, на материнской плате есть девять контактов на которых написано com, вот на них надевается конектор, съемного com порта.

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3229
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #5 : 15 Декабря 2015, 23:33:38 »
В программах на C я настраиваю COM-порт через termios, а для чтения из него
использую системную read, но обращаюсь к ней через свою подпрограмму,
зависящую от конкретной задачи, для открытия и записи опять же системные open
и write. Для программ на Qt когда-то сделал два класса для работы с ним -
базовый вместо QIODevice и собственно класс для COM-порта и в нём опять же
настройка через termios, однако сейчас в Qt для этого есть класс QSerial
с большим количеством возможностей.
Пётр.

Оффлайн serrggeee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #6 : 16 Декабря 2015, 08:20:26 »
а через терминал это возможно, первым делом нужно же узнать взаимодействует вообще комп с обарудованием или нет ну и чтото простое попробовать сделать, прежде чем выполнять уже серьёзные задачи.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #7 : 16 Декабря 2015, 09:39:16 »
нет com to com, на материнской плате есть девять контактов на которых написано com, вот на них надевается конектор, съемного com порта.
:2funny:

Я так понимаю дополнительных USB-портов там тоже нет, только штырьки с надписью usb куда можно подключить съёмный usb-порт

Спасибо, развеселили.

Пользователь решил продолжить мысль 16 Декабря 2015, 09:43:54:
а по сути вопроса: в первую очередь этот порт должно увидеть ядро
Это выглядит примерно так
~$ dmesg | grep tty
[    0.000000] console [tty0] enabled
[    0.515380] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    0.515603] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[    0.516568] 00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    0.516916] 00:0a: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
У Вас есть подобное? Показывайте
« Последнее редактирование: 16 Декабря 2015, 09:43:55 от fisher74 »

Оффлайн serrggeee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #8 : 16 Декабря 2015, 09:59:32 »
у меня вот что
serrrggggeee@serrrggggeee-Arbyte-Quint-B-M4D3A-H61 ~ $ dmesg | grep tty
[    0.000000] console [tty0] enabled
[    0.636138] 00:02: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
но это и с подсоединенным com и без него, может там распиновка не правильная или com виден только после перезагрузки?

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #9 : 16 Декабря 2015, 10:18:25 »
У Вас в этом направлении похоже бардак в голове.
Com-порт - это фактически физический ИНТЕРФЕЙС протокола RS-232. То что Вы называете "съёмным" - не что иное как обычный разъём DB-9, к которому можно подвести любой интерфейс (знаю пару производителей, которые на такой разъём выводят Ethernet).
Ваша задача - соединить 2 устройства по протоколу RS-232.
Как известно, стандартные протоколы в современных системахреализуются с помощью аппаратных средств, которые часто называют чипами. Для программного управления ими применяют специализированное ПО, называемое драйверами, которые в линуксе называются модулями и могут быть встроенными в ядро, а могут быть подгружаемыми... Это не Важно, главное, чтобы ядро умело работать с этим чипом. В Вашем и моём выхлопе показано, что ядро видит чип 16550А на котором и реализован интерфейс протокола RS-232
То есть первый шаг к задаче выполнен: чип есть и система его видит на прикладном уровне. Больше в ядерном логе Вы ничегошеньки не увидите, так как потоками информации через этот интерфейс теперь управляет Ваше ПО. Будь то терминал или свой софт. Ядру по барабану, что Вы будете передавать или принимать, главное, чтобы обмен шёл "по правилам". И уж тем более оно не знает - есть на том конце слушатель или нет.
Следующая задача - физическое соединение. Если с DB-9 почти всё понятно (бывают чудаки), то на плате "штырьки" могут расставить как душе угодно, а потому есть 2 варианта - найти описане материнки, гдеэти контакты расписаны, либо методом научного тыка найти нужные контакты. Тут уже без мультиметра обойтись сложно, но можно. Но это не относится к теме форума.
После того, как оборудование соединено на физическом уровне, вот дальше уже нужно пробовать связаться с ним. Но и тут много подводных камней, самым первым из которых является скорость обмена.

Ну как-то так. Сорри за многобукв.
« Последнее редактирование: 16 Декабря 2015, 10:23:54 от fisher74 »

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #10 : 16 Декабря 2015, 10:32:13 »
Добавлю: для работы с последовательными портами (com, ttySx) через терминал есть программа minicom

sudo apt-get install minicom

И еще одно: для работы с последовательными портами пользователь должен входить в группу dialout

Оффлайн serrggeee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #11 : 16 Декабря 2015, 10:53:22 »
ну допустим у меня все есть настройки правильные, как после этого я могу увидеть что устройство работает и можно передавать и получать от него данные?

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #12 : 16 Декабря 2015, 11:31:20 »
Запускаете minicom, настраиваете на нужный порт, стартовые и стоповые биты, четность и скорость, передаете данные и видите на экране принимаемые данные. Или передаете файл и получаете принимаемые данные в файл (смотря по тому, какой протокол используется).

man minicom

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #13 : 16 Декабря 2015, 11:53:21 »
Если связаться с оборудование не получается, стоит начать с тестирования собственного интерфейса Для этого на нём заворачивается TX->RX  (в стандартном разъёме DB-9 - это 2 и 3 ноги) и в порт посылается любая последовательность, соответсвенно её же видно в качестве ответа. Ну и понятное дело при разрыве петли эти сообщения должны перестать идти.
Пример как это деалется гуглиться за секунды, вот один из примеров (не реклама)

Оффлайн serrggeee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: управление ttyS устройствами
« Ответ #14 : 16 Декабря 2015, 13:18:11 »
ну данный момент спасибо куча советов и литературы, потом если что буду спрашивать если будет не понятно. :)

 

Страница сгенерирована за 0.032 секунд. Запросов: 25.