как узнать номер порта usb модема
Программное определение используемого 3g модемом COM порта в Windows
ОС WIN ХР SP3, 3G-модем Huawei или 3G-модем Alcatel, установленные драйвера к ним и готовые подключения в папке «Сетевые подключения»
Известно также, что при непосредственном подсоединении модема к порту USB, создается несколько виртуальных COM-портов (для разных моделей число может быть различным, как правило — от 2 до 4 портов).
Номера портов, естественно, произвольные и при каждом подключении могут изменяться.
Один из этих портов распознается в Диспетчере устройств на вкладке «Модемы»как 3G-модем, а остальные порты располагаются во вкладке «Порты (COM и LPT)», и им присваиваются какие-либо номера.
При этом модем использует чаще всего один из COM-портов для чтения команд, а другой для записи ответов.
Иногда бывает, что один COM-порт используется для чтения команд, а ответ пишется сразу в несколько других COM-портов.
Вопрос: как программно(с помощью WINAPI, язык С/С++), определить для данного подключения, в какой (в какие) порты для этого модема осуществлять запись, а из какого (из каких) портов производить чтение ответов?
Моя идея была в том, чтобы программно получить название COM-порта из ярлыка Подключения (см.Исходные данные), а далее отправить стандартную команду AT, при этом в цикле перебирая и прослушивая все свободные COM-порты. Получив ответ на каком-либо из них(либо на нескольких сразу), считать что пара портов для записи-чтения найдена.
Проблема, с которой я столкнулся, заключается в том, что мне не удалось найти подходящей функции WINAPI, которая, грубо говоря, по входному параметру «Имя_подключения» вернула бы «Имя_COM_порта», соответствующее этому подключению.
При этом, в самом ярлыке Подключение этот COM-порт вполне хорошо виден.
(Для примера в случае Мегафона в его Подключении указан COM9, а на вкладке «Порты (COM и LPT)» виден COM10, соответственно пишем в COM9, читаем из COM10. А Alcatel вообще открывает 4 COM-порта).
Для решения этой задачи использовал подмножество функций и структур RAS из WINAPI, но, как сказал выше, не нашел подходящей функции для возврата имени COM-порта.
Возможно, задачу надо вообще решать по-другому. Как быть?
Определение номера подключенного COM порта
Для правильного подключения оборудования, необходимо определить номер COM порта.
Проверка проводится при условии, что сервер полностью развернут, и работает заведомо правильно.
Windows
Для определения номера COM порта на ОС Windows необходимо:
8. После того, как номер COM-порта определен его необходимо указать в схеме SCADA, для устройства, подключенного многожильным кабелем.
Linux
Для определения номера COM порта на ОС Linux необходимо:
4. После выполнения команды отобразится список всех доступных COM-портов
5. Установить программу minicom. Для этого вводим следующую команду:
6. Найти многожильный кабель в оплётке длиной 4-6 см.
7. Соединить 2 и 3 выводы COM порта перемычкой из кусочка многожильного провода. Оплётка будет удерживать провод на контактах, а металлические жилы внутри будут проводниками.
8. Настроить программу minicom. Для этого вводим следующую команду:
9. Выбрать «Настройка последовательного порта»
10. Нажимая А поочередно выбираем порты (если используется кабель-переходник из USB в COM то выбрать /dev/ttyUSB0)
11. Отключить аппаратное управление потоком, нажав «F»
12. Выйти из настроек нажав «Enter»
13. Сохранить настройки по умолчанию «Сохранить настройки как dfl»
14. Выйти из minicom
15. Запустить minicom выполнив команду:
16. Нажать на любую клавишу на клавиатуре
В случае, если символы не вводятся с клавиатуры, необходимо вернуться к пункту 10, и выбрать другой COM-порт
17. После того, как номер COM-порта определен его необходимо указать в схеме SCADA, для устройства, подключенного многожильным кабелем.
как определить номер com порта usb устройства
как определить номер ком порта устройства, подключенного через usb? по типу диспетчер устройств в windows
Но часто бывает что все физические comы заняты либо отсутствуют вовсе и приходится выполнять подключение через USB. В соответствии с технической документацией в этом случае в каталоге с ПО оборудования создаем символическую ссылку (драйвер) ttyS99 на /dev/ttyACM0. Как можно быстро узнать номер ком порта этого ttyACM0? Он определяется чаще всего как 9, но бывает какой-нибудь 61, 62 или вообще любой! начинаются танцы с бубном в виде бесконечного перебора.
При помощи udev создавай симлинк при подключении. И это будет уже не безымянный USB ACM, а /dev/чтототам. Конечно, если у железяки свои VID/PID, а не используется какой-нибудь ширпотребный.
Как можно быстро узнать номер ком порта этого ttyACM0? Он определяется чаще всего как 9
Ты что-то попутал. Какой, нафиг, «номер ком-порта»? Это тебе не прошивка для игровых приставок! Какое устройство создалось, такое и надо указывать в подключении.
В сопутствующем ПО необходимо прописать номер порта
До меня дошло! «сопутствующее ПО» писал вантузоид, да еще и не на ЯП, а на какой-нибудь «си-диезине»? И там нет устройства, а вместо него «номер порта»? Тогда смотри в исходники этого шлака. Я вообще не представляю, какой логикой мог автор руководствоваться, чтобы «номер порта».
проблема в том что одно и то же устройство с одним и тем же серийником, id, кодом или еще чем-то, на разных linux системах определяется под разным номером этого com. В основном это системы под ККТ, типо artix и проч. Нужен универсальный инструмент распознавания
на линукс я не знаю как определить поэтому и задал вопрос. что не так я спросил?
Объясняю: спрашивать надо того олуха, который это говно написал! Потому что в линуксе нет понятия «номер порта».
прописывается символическая ссылка (драйвер), эмулирующий этот ком.
Как она выглядит и куда прописывается?
Блин, ну неужели ты вообще в линуксе ниже плинтуса?
ОК, теперь хоть понятно.
Как ты думаешь, что означает «ttyS99»? Какой номер «ком-порта»? Давай подскажу: /dev/ttyS0 — это «ком1».
«Потому что в линуксе нет понятия «номер порта». »
он есть в windows, возможно разрабы перенесли его в linux под тем же названием «для простоты». какой-то параметр существует точно
«Как ты думаешь, что означает «ttyS99»? Какой номер «ком-порта»? Давай подскажу: /dev/ttyS0 — это «ком1». »
Не номер портта, а имя устройства. Смотри, что выводится в dmesg при подключении девайса
[17819.727106] usb 2-1.5: New USB device found, idVendor=079b, idProduct=0028 [17819.727111] usb 2-1.5: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [17819.727586] cdc_acm 2-1.5:1.0: ttyACM0: USB ACM device
это. чтобы запустить ‘это’ устройство, нужно в каталоге с его ПО в конфигурационном файле прописать comport=9. почему? почему если я поеду завтра в какой-нибудь леруомерлен со своим устройством, попробую воткнуть его им в ККТ, чтобы оно заработало у них, я должен буду у них в том же каталоге с ПО, прописать comport=61
Предположим номеров comпорт не существует и надписи на системниках рядом с разъёмами com1 com2 и т д это чушь, а разработчики написали бред. Все же я не знаю по другому как их обзывать, буду говорить номер компорт извините что мозолю вам глаза. Одно я могу утверждать на 100 процентов. Какой-то параметр компорта существует, потому что от него зависит работоспособность устройства, я просто не знаю, как его посмотреть, с этим и обратился к вам, прошаренным линуксоводам. Повторюсь, если устройство физически подключается по ком через разъём rs232, то решение сводится к осмотру системника и поиска надписи. Если же подключение выполняется по USB, приходится гадать, потому что это уже виртуальный компорт, но по моей практике, у него тоже есть свой номер.
“Блин, ну неужели ты вообще в линуксе ниже плинтуса?”
Да это так. Я в линуксе на уровне монтирования флешки под командой sudo. Ровно столько мне требуется для работы. И если честно, чем глубже я в него окунаюсь, тем больше меня выворачивает наизнанку
Под этим номером разработчик мог понимать что угодно,напиши ему письмо.
Конечно, если у железяки свои VID/PID, а не используется какой-нибудь ширпотребный.
Даже тут можно выйти из положения, если она одна. Либо привязаться к Bus, если разные разъёмы на разных.
Я вообще не представляю, какой логикой мог автор руководствоваться, чтобы «номер порта».
Писал под DOS в начале 90-ых?
Нужен универсальный инструмент распознавания
Какое слово непонятно в первом же ответе анонимуса? Он же написал: udev.
Если же подключение выполняется по USB, приходится гадать, потому что это уже виртуальный компорт, но по моей практике, у него тоже есть свой номер.
Да ну (: вот прям нет?
ок давай наведу на мысль, про правило для udev тебя уже тут ткнули, это хорошее решение, так как привяжешь конкретную железяку к конкретному симлинку.
если надо быстро посмотреть то
естественно твоя прога должна понимать не только запись в конфиге вида COMx. Если она настолько тупа, то кроме udev у тебя нет вариантов
ну и естественно это может не работать на всех зоопарках дистра, увы универсального способа нет
Спроси дебила, который этот софт писал!
чем глубже я в него окунаюсь, тем больше меня выворачивает наизнанку
Ну так раз ты — тупой геймер, не лезь, куда тебе не надо.
создаем символическую ссылку (драйвер) ttyS99 на /dev/ttyACM0
Символическая ссылка ≠ драйвер.
номер ком порта устройства, подключенного через usb?
У устройства подключенного по usb нет ком порта. Это драйвер юзбового ком адаптера при подключении устройства создаёт виртуальный ком порт.
Если ты хочешь писать в /dev/ttyACM0, то после создания симлинка ttyS99 тебе в твоей программе нужно указать порт 100. Но, емнип, оно у тебя не заработает, т.к. при подключении устройства, у тебя кроме ttyACM0 должен создаться ttyS*, номер которого тебе и нужно узнавать, если не хочешь копаться в правилах udev.
ttyACM0 — это не «ком порт», это юзбовый контроллер, который тебе ком порт добавляет.
Я давно юзбовые адаптеры не видел, могу что-нибудь перепутать, если что.
А вообще, нормальный адаптер тебе бы /dev/ttyUSB0 создал, и не сношал мозг.
Спасибо всем буду пробовать сегодня
[ 1328.568927] usb 2-1.5: new full-speed USB device number 6 using ehci-pci [ 1328.677761] usb 2-1.5: config 1 interface 0 altsetting 0 endpoint 0x85 has an invalid bInterval 0, changing to 10 [ 1328.678720] usb 2-1.5: New USB device found, idVendor=11ca, idProduct=0219 [ 1328.678725] usb 2-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1328.678728] usb 2-1.5: Product: Trident USB Device 1.1 [ 1328.678731] usb 2-1.5: Manufacturer: VeriFone Inc [ 1328.678734] usb 2-1.5: SerialNumber: 0123456789ABCD
добавляется только ttyACM0
то есть. я должен создать правило udev, по которому моя система запомнит мое устройство, например, по серийнику, и будет автоматом при его подключении привязывать к какому-нибудь порту, пусть будет 50, т е ttyS50, если я все правильно понаял. Осталось разобраться как создавать эти udev правила )
в /etc/udev/rules.d создать файл 90-VeriFone.rules с таким содержанием
писал по памяти, попробуй, если что-то не выйдет гугли
окей. создал правило. в папке dev создается файл ссылка @COM50 ссылающийся на ttyACM0 по типу того что я создавал вручную в папке с ПО только с названием ttyS99. Как мне это поможет в определении компорта?
кто-то писал здесь про систему DOS он прав, это ПО писали в т ч для него, т к есть соответствующая инструкция. если я наберу команду cat /proc/tty/driver/serial, выдаст такой список 0: uart:unknown port:000003F8 irq:4 1: uart:unknown port:000002F8 irq:3 2: uart:unknown port:000003E8 irq:4 3: uart:unknown port:000002E8 irq:3 4: uart:unknown port:00000000 irq:0 5: uart:unknown port:00000000 irq:0 6: uart:unknown port:00000000 irq:0 7: uart:unknown port:00000000 irq:0 8: uart:unknown port:00000000 irq:0 9: uart:unknown port:00000000 irq:0 10: uart:unknown port:00000000 irq:0 11: uart:unknown port:00000000 irq:0 12: uart:unknown port:00000000 irq:0 13: uart:unknown port:00000000 irq:0 14: uart:unknown port:00000000 irq:0 15: uart:unknown port:00000000 irq:03E8 16: uart:unknown port:00000000 irq:0 17: uart:unknown port:00000000 irq:0 18: uart:unknown port:00000000 irq:0 19: uart:unknown port:00000000 irq:0 20: uart:unknown port:00000000 irq:0 21: uart:unknown port:00000000 irq:0 22: uart:unknown port:00000000 irq:0 23: uart:unknown port:00000000 irq:0 24: uart:unknown port:00000000 irq:0 25: uart:unknown port:00000000 irq:0 26: uart:unknown port:00000000 irq:0 27: uart:unknown port:00000000 irq:0 28: uart:unknown port:00000000 irq:0 29: uart:unknown port:00000000 irq:0 30: uart:unknown port:00000000 irq:0 31: uart:unknown port:00000000 irq:0
так вот в системе DOS это значило бы, что
3F8 это COM1 2F8 это COM2 3E8 это COM3 2E8 это COM4
не знаю как это может помочь просто наткнулся на соответствие
полагаю что надо искать параметр устройства типо 3F8, потом расшифровать его
А порт теперь не 16-м стал?
Ищи быдлокодера, который это говно написал.
Что это за утилита, кстати? Может, за то время, что ты ищешь решения, проще было с нуля ее переписать?
ну так и обращайся к нему как com50, в какой порт его не ткни для него всегда будет именно этот симлинк, привязанный к vid pid serial и всегда будет трактоваться однозначно на машине с подобным udev правилом
А ТС не въезжает не только в линукс, но и в это говноПО. И, похоже, у него нет ни исходников, чтобы сделать нормально, ни того урода рядом, чтобы ему морду набить!
да похрен какой у него номер под капотом, работать можно через симлинк. и грубо говоря линукс сам еще тот рандом в нумерации и потому кроме udev и нет нормального способа. пусть пропишет в конфиг симлинк, если надо что-то специфичное вроде «фыва30» то просто заменить в правиле com50 на нужный фыва
да не, перечитал еще раз, порт указывается в конфиге софтины, тут походу тс в надмозга играет вместо того чтоб сесть и почитать
ну собственно беглый гуглинг по этим терминалам и привел меня к ответу в составе пакета есть сшаник в котором прописан порт, собственно не вижу драмы заглянуть в него и написать хоть удев правило, хоть симлинк руками, хоть сшаник переписать
«Это не одно и тоже, что я создал с помощью udev? описание одинаковое «/dev/ttyACM0», только название разное» помимо тогда что система его запоминает по серийнику
Да залезь же уже в скрипты программы, я ж вечером тебе писал, если не работает с ttyACM1, то в конфиге скорее всего захардкожено ttyACM0. Найди где оно, замени на что-то вменяемое например ttyVeriFone. создай udev правило и живи спокойно.
По поводу ковыряния в ПО в поисках ACM0 и его редактирования. Мне не удалось его найти. Одни файлы закодированы и при попытке открыть выдают кракозябры, другие слишком длинные, и поиск по ним с помощью поисковых команд по коду “ACM” не дал результатов. В прочем, это уже не имеет значения. А вообще служба безопасности запрещает там лазить, тем более что то менять
тогда пинай техпо, пусть исправляют, т.к. ACM0 может быть занят, а его удаление может привести к нерабочему состоянию чего-то еще на рабочем месте.
В случае с ACM0 и бубунтой все просто: в бубунте при втыкании флешки запускается какой-то демон, который пытается определить, не модем ли это случаем. Ну и на всякий случай эта дрянь создает устройство ACMx.
Ну или нормальный линукс поставь, а не это говно.
Его «техпо» про modemd и прочее вредительство педераста-поцтеринга, похоже, не слыхало!
ну ты-то тоже походу про терминалы на модеме не слышал, да да, там такое сплошь и рядом, кто тебе сказал, что modemd можно безболезненно грохнуть? На кой хрен падтерминал прикидывается модемом уже отдельный разговор.
кто тебе сказал, что modemd можно безболезненно грохнуть?
Я тебе сказал. Это говно не нужно, т.к. и без него все работает прекрасно.
Ты, похоже, тоже нифига линуксом не пользуешься, как и ТС.
Определение USB-модема в системе
Имеется USB-модем МТС, как найти его в системе? Имею в виду определить имя и порт к которому подключен. Лучше, чтобы список модемов отображался в ComboBox)
Добавлено через 17 часов 54 минуты
Неужели никто не знает?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
раздача с usb модема по wi-fi
Здравствуйте форумчане. Подскажите пожалуйста. Имеется ПК, ноутбук, USB модем и модем TP-Link.
Реконнект USB модема
Стоит задача осуществить реконнект 3G модема по средствам языка С#, с целью изменения ip адреса.
Мониторинг USB-модема
Есть USB-модем Yota подключённый к роутеру Zyxel Keenetic Giga. Периодически модем так сильно.
Qnil, SerialPort.GetPortNames() берет имена портов из реестра (HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM). Этот метод вывалит вам имена всех когда-либо подключенных устройств, как активных, так отключенных. Посмотрите на картинку с реестром и определите данным методом, какие порты занимает в данный момент мой модем? Это как тыкать пальцем в небо, особенно, когда список больше.
Как правило, имеем 2 COM порта модема (которые реально нужны): командный порт и порт для передачи данных. См. вторую картинку. 3G Application Interface используется для передачи данных, например, звука. Через PC UI Interface мы общаемся с мопедом.
А вот пример реализации поиска этих портов (через WMI):
ServiceComPort отдаст «COM10»
AppComPort отдаст «COM8»
Открытие COM-портов в модеме с HiLink прошивкой
Мы поговорим об открытие COM-портов в модеме с HiLink прошивкой и об ошибках возникающих при этом.
Важно. К компьютеру должен быть подсоединён ТОЛЬКО МОДЕМ, отключены ВСЕ ДРУГИЕ СЕТЕВЫЕ ПОДКЛЮЧЕНИЯ (локальные, кабель, Wi-Fi. ), установленные АНТИВИРУСЫ, включённые ФАЙРВОЛЫ, закрыть всё то, что может занимать порты (DC-Unlocker, Терминал и т.п.) и все Приложения и Процессы в Диспетчере задач, связанные с модемом (смотреть по названиям операторов и приложений).
Модем подключать через интерфейс порта USB 2.0 (В системном блоке подключаться к USB разъёмам на задней панели.)
Нужно перевести HiLink-модем в режим с портами, но http://192.168.1.1/html/switchProjectMode.html или http://192.168.8.1/html/switchProjectMode.html (switchDebugMode.html) не работает:
Переключение устройства в Project/Debug mode (открывалка портов) скачать.
Внимание! Скрипт порты не откроет, если, по какой-либо причине, нет доступа к модему по сети.
Автоопределение в DC-Unlocker (Запуск от имени администратора) и нажать лупу, затем в Диспетчере устройств (ДУ) посмотреть порты. Если порты не появились, то закрываем DC-Unlocker, пере подключаем модем и снова запускаем DC-Unlocker.
Если вышеописанные способы не открыли порты, то надо удалить MobileBrServ, если установлена
Восстановление модемов не аварийным методом (без иголки) (Под сполейром будет метод как для модемов с прошивкой HILINK, так и STICK
Запустить Диспетчер задач и в нём закрыть все Приложения и Процессы, связанные с модемом (смотреть по названиям операторов и приложений), а также всё то, что может занимать порты (Терминалы, Операторские утилиты и т.п.).
Перевести модем в режим загрузки:
1. Удалить все драйверы для модемов и программы управления модемами (модем отсоединён);
5. Открыть Терминал нажать «Порт«, выбрать PC UI Interface, нажать на кнопку «Закрыт«, в случае соединения программы терминал с этим портом, кнопка «Закрыт» переименуется в кнопку «Открыт«.
а) Выполнить две АТ команды ( через меню Терминала «Действия» ): AT^CURC=0 затем ATE1.
б) Набрать последовательно команды: AT^DATALOCK=»код v201(или v2)», затем AT^GODLOAD в поле «Отправить«, нажимая кнопку «Отправить«. Закрыть терминал, посмотреть Диспетчер Устройств на наличие портов.
в) Код v201 (или v2) можно получить у нас.
Перевести модем в режим загрузки:
1. Повторить все то же самое, как и по Код 12 и 16