Появилась задача управлять одной девайсиной с ПК. Решил, что управлять буду через 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 на плате устройства - вот тогда работает описанным выше образом.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения