HC-05, USB Dongle и последовательный порт

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Родился
Сообщения: 5
Зарегистрирован: Вт июл 28, 2015 16:14:06

Сообщение Phillip »

Добрый день!

Появилась задача управлять одной девайсиной с ПК. Решил, что управлять буду через COM порт, и сделаю два варианта - проводной и беспроводной, заодно научусь обращаться с модулем HC-05, про который довольно много слышал.
Сделал плату, написал на VS2010 программку для связи - всё хорошо. И по проводу работает, и через пару HC-05 - USB Dongle B-122.

Дальше решил побаловаться с командной строкой. И тут оказалось, что команда не "видит" COM-порта, который создаётся HC-05. Сначала я не поверил своим глазам, потом залез в Диспетчер устройств - нет, всё на месте.

Изображение

(COM3 - это проводной COM, пара COM8-COM11 - от HC-05)

Но программа на VS2010 находила эти порты! Начал копать дальше, перешёл к PowerShell'у.

Код: Выделить всё

[System.IO.Ports.SerialPort]::getportnames()
Находит порты от HC-05.

И вот я бьюсь второй день с этой бедой.
Известно, что:
1. Моя программа на VS2010 (использующая стандартную библиотеку System.IO.Ports) видит COM-порты, созданные парой HC-05 - USB Dongle B-122. Команда System.IO.Ports.SerialPort из PowerShell'а (и прочие стандартные оттуда) тоже их видит.
2. Команда mode не видит этих портов, равно как и Терминал 1.9b.

Была у меня версия, что дров не хватает каких-то для USB Dongle B-122, но на сайте производителя дрова только для Win98, 2k, на мою Семёрку они встают очень криво.

Может быть кто-то сталкивался с подобной проблемой? Как быть?
Заранее благодарен.
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Дело скорее всего в том, что к COM-портам с большими номерами надо обращаться по пути не просто "COMx", а "\\.\COMx" (в Си надо экранировать слеши, так что литерал будет иметь вид "\\\\.\\COMx"). Похоже что указанные проблемные программы этого не учитывают, а те, что нормально работают, созданы с учетом этой особенности.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Родился
Сообщения: 5
Зарегистрирован: Вт июл 28, 2015 16:14:06

Сообщение Phillip »

YS, спасибо за ответ!

К сожалению, ровно то же самое происходит с портами, номера которых не выходят за 10, только что проверил.
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

В смысле? Вы же сами сказали, что с ними все хорошо?

Попробуйте ко всем виртуальным портам обращаться через \\.\COMx, как минимум, хуже не будет - такое обращение работает и для нижнего диапазона портов. Разница только в том, что порты с номерами из верхнего диапазона принципиально по-другому не работают.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 5
Зарегистрирован: Вт июл 28, 2015 16:14:06

Сообщение Phillip »

Всё хорошо с "проводными" портами, какой бы номер ни был.
Всё плохо с "беспроводными", какой бы номер ни был, опять же. В зависимости от того, в какой USB разъём воткнуть USB Dongle, номер порта получается разный - может быть и 4, и 7, и 11, например.

Команда mode не принимает аргумент типа \\.\COMx, говорит "недопустимый параметр". Я не знаю, есть ли другое команды для комадной строки для открытия COM порта.
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Команда mode не принимает аргумент типа \\.\COMx, говорит "недопустимый параметр".
Попробуйте передать его в кавычках.

Код: Выделить всё

mode "\\.\COM11"
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Родился
Сообщения: 5
Зарегистрирован: Вт июл 28, 2015 16:14:06

Сообщение Phillip »

Получается вот так:

Изображение

Видно, что если просто написать COM4, то mode сообщает "устройство недоступно". Т. е., оно как бы есть, но до него не добраться.
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Хм, странно. Даже интересно. Я когда доберусь до своего основного ПК, сам попробую mode c разными переходниками и расскажу, что получилось.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Попробовал (Win7 x64 Home Premium). COM4 - переходник на CP2102. Все работает. Значит, видимо, в вашем случае правда что-то не то с драйверами.
Спойлер

Код: Выделить всё

C:\>mode

Status for device LPT1:
-----------------------
    Printer output is not being rerouted.


Status for device COM1:
-----------------------
    Baud:            1200
    Parity:          None
    Data Bits:       7
    Stop Bits:       1
    Timeout:         OFF
    XON/XOFF:        OFF
    CTS handshaking: OFF
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:     ON
    RTS circuit:     ON


Status for device CON:
----------------------
    Lines:          300
    Columns:        80
    Keyboard rate:  31
    Keyboard delay: 1
    Code page:      866


C:\>mode

Status for device LPT1:
-----------------------
    Printer output is not being rerouted.


Status for device COM1:
-----------------------
    Baud:            1200
    Parity:          None
    Data Bits:       7
    Stop Bits:       1
    Timeout:         OFF
    XON/XOFF:        OFF
    CTS handshaking: OFF
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:     ON
    RTS circuit:     ON


Status for device COM4:
-----------------------
    Baud:            1200
    Parity:          None
    Data Bits:       7
    Stop Bits:       1
    Timeout:         OFF
    XON/XOFF:        OFF
    CTS handshaking: OFF
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:     OFF
    RTS circuit:     OFF


Status for device CON:
----------------------
    Lines:          300
    Columns:        80
    Keyboard rate:  31
    Keyboard delay: 1
    Code page:      866


C:\>mode COM4

Status for device COM4:
-----------------------
    Baud:            1200
    Parity:          None
    Data Bits:       7
    Stop Bits:       1
    Timeout:         OFF
    XON/XOFF:        OFF
    CTS handshaking: OFF
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:     OFF
    RTS circuit:     OFF


C:\>
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Родился
Сообщения: 5
Зарегистрирован: Вт июл 28, 2015 16:14:06

Сообщение Phillip »

Вы как делали - просто подключили к USB порту переходник типа USB-COM? Проводной. Это у меня работает нормально. :)
Вот если в USB порт засунуть USB BT Dongle, организовать связь между ним и HC-05 на плате устройства - вот тогда работает описанным выше образом.
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Да, проводной.

Понял проблему. Увы, тогда ничем помочь не могу. :dont_know:
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Ответить

Вернуться в «Интеграция с ПК»