|
1 / 1 / 0
Регистрация: 22.04.2012
Сообщений: 30
|
|
кроссплатформенный способ определения имен [активных] серийных портов (serial ports, COM1, /dev/ttyS0) и обращение к ним12.10.2012, 03:11. Показов 4909. Ответов 15
Метки нет (Все метки)
Нашел библиотеку Boost.Asio
http://www.boost.org/doc/libs/... ports.html Она позволяет обращаться к серийным портам. Мне нужно для того чтобы написать программу, посылающую AT-команды модему. Вот только не знаю как по-нормальному получить список имен этих самых серийных портов, причем желательно активных, к которым подключены устройства. Пока у меня только один вариант: делать полный перебор всех возможных имен, и пытаться опрашивать их. Но дело в том, что например в линуксе спец файл девайса серийного порта вообще говоря может находиться в любом каталоге и даже не обязательно начинаться с ttyS (при желании пользователя, особенно если он вручную драйвера ставил и заводил модем). В крайнем случае могу сделать отдельную реализацию этого процесса для Windows и для Linux. Но в таком случае скажите какие реализации лучше использовать из легко доступных в C++. На форумах обычно не пишу, но в этом случае гугл упорно не помогает мне.
0
|
|
| 12.10.2012, 03:11 | |
|
Ответы с готовыми решениями:
15
Нужен кроссплатформенный способ работы с папками |
|
|
||||
| 12.10.2012, 10:36 | ||||
|
0
|
||||
|
1 / 1 / 0
Регистрация: 22.04.2012
Сообщений: 30
|
||||||||||
| 12.10.2012, 17:35 [ТС] | ||||||||||
|
1) Серийный порт также может иметь например виды: /dev/ttyUSB0 /dev/ttyACM1 помимо /dev/ttyS0 https://www.redhat.com/mirrors... TO-11.html 2) Просто с /dev/tty может начинаться имя отнюдь не серийного порта, а псевдо терминала /dev/ttyp3, controlling terminal текущего процесса /dev/tty, терминала /dev/ttyI0 (кстати тоже может принимать команды модема), консоли /dev/tty0 http://www.tldp.org/HOWTO/Text... WTO-7.html Добавлено через 4 минуты Добавлено через 2 минуты Добавлено через 4 минуты
0
|
||||||||||
|
1 / 1 / 0
Регистрация: 22.04.2012
Сообщений: 30
|
|||
| 12.10.2012, 17:56 [ТС] | |||
Ладно так и быть. В моей программе будет дополнительная возможность вручную указать название порта. Это логично для тех кто вручную собирает драйвера =) Но авто обнаружение портов в обычном случае мне все равно нужно, поэтому вопрос открыт пока что.
0
|
|||
|
1 / 1 / 0
Регистрация: 22.04.2012
Сообщений: 30
|
||
| 12.10.2012, 20:44 [ТС] | ||
|
Что-то мне совсем не хочется использовать .NET даже в виде такой реализации как Mono. К тому же там с этим делом сплошные проблемы: весьма неадекватное поведение в разных ОС: http://stackoverflow.com/quest... -platforms
0
|
||
|
1 / 1 / 0
Регистрация: 22.04.2012
Сообщений: 30
|
|
| 12.10.2012, 21:36 [ТС] | |
|
Так, я нагуглил реализацию через WinApi http://social.msdn.microsoft.c... bc2a263ea/
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2012
Сообщений: 30
|
|
| 12.10.2012, 21:55 [ТС] | |
|
Нашел еще 2 источника по теме:
1) EnumSerialPorts http://www.naughter.com/enumser.html 2) Simple Device Manager http://www.codeproject.com/Art... ce-Manager Наверно пора начать пробовать =)
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2012
Сообщений: 30
|
|||||||||||||||||||||||||||||||||
| 13.10.2012, 18:03 [ТС] | |||||||||||||||||||||||||||||||||
|
Касательно udev, dbus, hal...
Вот этот bash-скрипт показывает серийные устройства в линуксе:
Еще есть python скрипт.
А вот кусочек кода на C:
нужно вызвать "ioctl (fd, TIOCGSERIAL, &serinfo)", и если не будет ошибки, то серийное устройство (порт). Это решение подходит для полного перебора по "/dev/tty*". Другой вариант с использованием информации из каталога /sys и bash:
Готовый исполнимый файл выводит у меня:
0
|
|||||||||||||||||||||||||||||||||
|
1 / 1 / 0
Регистрация: 22.04.2012
Сообщений: 30
|
|
| 13.10.2012, 18:44 [ТС] | |
|
В случае попытки проверки USB-девайсов на то что они серийные получаем:
1) Нужны права рута для вызова: open((*it).c_str(), O_RDWR | O_NONBLOCK | O_NOCTTY) 2) Вызов ioctl(fd, TIOCGSERIAL, &serinfo) не возвращает ноль об успешном выполнении вообще никак. errno возвращает номер 22: EINVAL (Invalid Argument). Забавно... 3) Поэтому автор той программки на C++, которую я привел во вложении к прошлому сообщению проверяет через ioctl только обычные серийные девайсы (с драйвером serial8250, но мне не нравится привязка к названию драйвера), а USB девайсы заносит в список без какой-либо проверки. Это не очень хорошо.
0
|
|
|
1 / 1 / 0
Регистрация: 22.04.2012
Сообщений: 30
|
|||
| 14.10.2012, 20:06 [ТС] | |||
|
Но далее я писал про Linux, в котором реестра естественно нет.
0
|
|||
| 14.10.2012, 20:06 | |
|
Помогаю со студенческими работами здесь
16
Сканирование активных портов Кроссплатформенный вариант определения текущего времени Получение имён активных (залогиненных) пользователей на удалённом компьютере и их SID Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|