Появилась задача управлять одной девайсиной с ПК. Решил, что управлять буду через COM порт, и сделаю два варианта - проводной и беспроводной, заодно научусь обращаться с модулем HC-05, про который довольно много слышал. Сделал плату, написал на VS2010 программку для связи - всё хорошо. И по проводу работает, и через пару HC-05 - USB Dongle B-122.
Дальше решил побаловаться с командной строкой. И тут оказалось, что команда
Код:
mode
не "видит" 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, на мою Семёрку они встают очень криво.
Может быть кто-то сталкивался с подобной проблемой? Как быть? Заранее благодарен.
Дело скорее всего в том, что к COM-портам с большими номерами надо обращаться по пути не просто "COMx", а "\\.\COMx" (в Си надо экранировать слеши, так что литерал будет иметь вид "\\\\.\\COMx"). Похоже что указанные проблемные программы этого не учитывают, а те, что нормально работают, созданы с учетом этой особенности.
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
В смысле? Вы же сами сказали, что с ними все хорошо?
Попробуйте ко всем виртуальным портам обращаться через \\.\COMx, как минимум, хуже не будет - такое обращение работает и для нижнего диапазона портов. Разница только в том, что порты с номерами из верхнего диапазона принципиально по-другому не работают.
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
Всё хорошо с "проводными" портами, какой бы номер ни был. Всё плохо с "беспроводными", какой бы номер ни был, опять же. В зависимости от того, в какой USB разъём воткнуть USB Dongle, номер порта получается разный - может быть и 4, и 7, и 11, например.
Команда mode не принимает аргумент типа \\.\COMx, говорит "недопустимый параметр". Я не знаю, есть ли другое команды для комадной строки для открытия COM порта.
Попробовал (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:\>
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
Вы как делали - просто подключили к USB порту переходник типа USB-COM? Проводной. Это у меня работает нормально. Вот если в USB порт засунуть USB BT Dongle, организовать связь между ним и HC-05 на плате устройства - вот тогда работает описанным выше образом.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения