|
1 / 1 / 0
Регистрация: 22.04.2012
Сообщений: 30
|
|
кроссплатформенный способ определения имен [активных] серийных портов (serial ports, COM1, /dev/ttyS0) и обращение к ним12.10.2012, 03:11. Показов 4981. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|