-
- Windows не умеет автоматически переоткрывать порт. UniSoft(872 знак., 11.08.2021 04:25 - 18:45)
- У вас файл, ассоциированный с VCP, переоткрывается. Это
действительно надо делать со стороны программы. Но инициализацию
USB-порта Windows делает сама, когда в него что-то втыкают. Однако
проблема чаще бывает в другом - на плате линию от PA12 подтягивают
резистором к питанию. Тогда при после ресета MK забывает свой
прежний коннект, а Windows всё еще его помнит и повторную
инициализацию соединения не вызывает. Т.е. порт остается открытым,
и файл, ассоциированный с ним, Kceния(603 знак., 11.08.2021 08:04)
- Наконец понял, что вы пытаетесь описать - в спецификации USB2.0 это
есть в разделах 7.1.5 Device Speed Identification и 7.1.7.3 Connect
and Disconnect Signaling. В USB device, которые могут аппаратно
ресетиться без физического отключения от USB (как у ТС), для
корректной работы процедуры dis-/connect PU-резистор должен быть
отключаемый. rezident(3 знак., 11.08.2021 20:06, ссылка, картинка)
- На моей плате это резистор не отключаемый, но при запуске МК, когда
его USB-порт еще не проинициализирован, нога PA12 (D-) пока еще
работает как GPIO-порт, а потому запрограммировав его на выход, эту
линии можно заземлить даже при наличии подтягивающего резистора.
Что собственно я и делаю. Kceния(258 знак., 11.08.2021 23:14)
- Этот резистор нужен для определения подключения устройства USB хостом. UniSoft(357 знак., 12.08.2021 18:48)
- На моей плате это резистор не отключаемый, но при запуске МК, когда
его USB-порт еще не проинициализирован, нога PA12 (D-) пока еще
работает как GPIO-порт, а потому запрограммировав его на выход, эту
линии можно заземлить даже при наличии подтягивающего резистора.
Что собственно я и делаю. Kceния(258 знак., 11.08.2021 23:14)
- Не мной обгрызено, сам форум в тэг засунул то, что в угловых скобках... поправил... - UniSoft(11.08.2021 18:43)
- Наконец понял, что вы пытаетесь описать - в спецификации USB2.0 это
есть в разделах 7.1.5 Device Speed Identification и 7.1.7.3 Connect
and Disconnect Signaling. В USB device, которые могут аппаратно
ресетиться без физического отключения от USB (как у ТС), для
корректной работы процедуры dis-/connect PU-резистор должен быть
отключаемый. rezident(3 знак., 11.08.2021 20:06, ссылка, картинка)
- Вопрос сводился к следующему: кто должен вносить исправления: Constantin24(104 знак., 11.08.2021 07:12)
- Первое... программисты приложения на винде... другого способа не существует. - UniSoft(11.08.2021 19:37)
- "Передёргивание" порта: Закрыть порт (освободить дескриптор);
дождаться пока устройство передёрнет USB, пройдёт энумерацию и
появится в системе; открыть порт (получить новый дескриптор).
Форвардные "спасибо" выглядят крайне невежливо. - teap0t(11.08.2021 10:43)
- так он же ответил на вопрос. p.s. Программа на винде не моя. В своих так и делал. - Constantin24(11.08.2021 10:55)
- У вас файл, ассоциированный с VCP, переоткрывается. Это
действительно надо делать со стороны программы. Но инициализацию
USB-порта Windows делает сама, когда в него что-то втыкают. Однако
проблема чаще бывает в другом - на плате линию от PA12 подтягивают
резистором к питанию. Тогда при после ресета MK забывает свой
прежний коннект, а Windows всё еще его помнит и повторную
инициализацию соединения не вызывает. Т.е. порт остается открытым,
и файл, ассоциированный с ним, Kceния(603 знак., 11.08.2021 08:04)
- Надо при (пере)запуске опустить PA12 вниз и удерживать его таким 1
сек, после этого можно инициализировать USB-порт. Тогда после
ресета будет запускаться заново, в противном случае только после
выдергивания кабеля из гнезда. - Kceния(10.08.2021 21:13)
- не работает, подтверждаю. - Constantin24(11.08.2021 10:31)
- не работает! я писал уже об этом, если порт открыли в реестре
появилась запись и она будет висеть пока порт не закроют! винда не
знает такого понятия как выдернули ком порт!!! он для неё или есть
или нету, выдернуть на лету для неё это что-то из ряда вон! - Aleksey_75(10.08.2021 21:16)
- Так PA12 землят именно для того, чтобы Винда подумала, что
соединение разорвано и закрыла порт. А затем заново наступит новое
соединение, и порт будет открыт вторично. Только так, ибо без
повторной инициалиции никак не получится. - Kceния(10.08.2021 22:30)
- Это какая-то (не)документированная фича стандартного драйвера Windows? Из спецификации USB такого life hack что-то не припоминается. - rezident(10.08.2021 23:19)
- винде пох... делайте что хотите, касаемо vcp запись из реестра
устройств пропадет только по закрытию порта, сама она не умеет
закрывать порт - Aleksey_75(10.08.2021 22:57)
- Уже раз тут написали - дергать надо ножкой. Винда посчитает что
усб-девайс вставили-вытащили и все она заново обнаружит... _POV(463 знак., 11.08.2021 10:56, )
- Пока со стороны винды порт не будет закрыт, хоть обдергайся !! Порт
из системы не пропадёт!!! Закрывать необходимо… пройдено!! - Aleksey_75(11.08.2021 14:20)
- Порт пропадёт и появится. Винда корректно всё обновляет. Но она не обновит дескриптор открытого файла "COM-порт", с которым общается прикладная программа. Просто в какой-то момент этот дескриптор повиснет в воздухе, и всё. После обновления аппаратной конфигурации требуется закрывать-открывать файл, т.е. обновлять дескриптор. - teap0t(11.08.2021 14:54)
- Порт пропадет. Я же сам этот VCP из примеров брал, всё работает как надо. - _P0V(11.08.2021 14:25, )
- Пока со стороны винды порт не будет закрыт, хоть обдергайся !! Порт
из системы не пропадёт!!! Закрывать необходимо… пройдено!! - Aleksey_75(11.08.2021 14:20)
- Уже раз тут написали - дергать надо ножкой. Винда посчитает что
усб-девайс вставили-вытащили и все она заново обнаружит... _POV(463 знак., 11.08.2021 10:56, )
- Так PA12 землят именно для того, чтобы Винда подумала, что
соединение разорвано и закрыла порт. А затем заново наступит новое
соединение, и порт будет открыт вторично. Только так, ибо без
повторной инициалиции никак не получится. - Kceния(10.08.2021 22:30)
- Я не программист, но по-моему проблема в виндовом драйвере. Причем
проблема очень давняя. У MOXA скорее всего свой собственный
драйвер. - rezident(10.08.2021 19:19)
- М-да! Былые дни... Былые прерывния (вектор 14h)... "Проср...
полимеры!" '( - SERGHIO(10.08.2021 20:26)
- вектор 14h работает с "железным" COM портом... с виртуальным там
полный жопЭ .... я склоняюсь к тому что, как говорил незабвенный
ЧВС "хотели как лучше, а получилось как всегда". VCP это
недодевайс, о котором винда знает чуть больше что он существует,
все остальное сырое и надпиленное. - Aleksey_75(10.08.2021 20:55)
- Дык.. о нём о самом.. ЖЕЛЕЗНОМ, СТАЛЬНОМ {БРОНЯ!}т.с. реальном , щупательно визуальном COM-порте...! - SERGHIO(10.08.2021 22:07)
- вектор 14h работает с "железным" COM портом... с виртуальным там
полный жопЭ .... я склоняюсь к тому что, как говорил незабвенный
ЧВС "хотели как лучше, а получилось как всегда". VCP это
недодевайс, о котором винда знает чуть больше что он существует,
все остальное сырое и надпиленное. - Aleksey_75(10.08.2021 20:55)
- М-да! Былые дни... Былые прерывния (вектор 14h)... "Проср...
полимеры!" '( - SERGHIO(10.08.2021 20:26)
- это вопросы в винде! если ваша прога открыла порт, а он физически
пропал... в реестре он останется висеть как действующий, простое
открытие не поможет, нужно сначала закрыть порт! по крайней мере у
меня так, все работает без проблем.... вообще в винде с vcp треш
угар и содомия! чтобы определить подключено ли устройство у меня
прога раз в секунду запрашивает коннект с устройством , типа
get_connect-> connect == Все ОК, если get_connect->
тишина значит устройство Aleksey_75(10 знак., 10.08.2021 19:14)
- Благодарю всех откликнувшихся! у кого есть еще дополнительные
мысли, милости просим) - Constantin24(11.08.2021 07:14)
- Перевести протокол обмена с девайсом на HID. С ним проблем нет. От
слова совсем... - Гyдвин(11.08.2021 10:46)
- С COM портом повер USB проблема в виртуальности: программист приложения работает через привычный асинхронный последовательный порт, с которым привык взаимодействовать. Ему безразлично как оно реализовано. Но асинхронный порт не может исчезнуть - это нарушение самой идеологии аппаратного порта, поэтому исчезновение аппаратного USB устройства, через которое реально идут данные никак не влияет на прикладной уровень - виртуализатор не имеет возможности сказать, что ему больше teap0t(428 знак., 11.08.2021 11:00)
- Перевести протокол обмена с девайсом на HID. С ним проблем нет. От
слова совсем... - Гyдвин(11.08.2021 10:46)
- Все прекрасно ловится через WM_DEVICECHANGE... - UniSoft(11.08.2021 04:37)
- Благодарю всех откликнувшихся! у кого есть еще дополнительные
мысли, милости просим) - Constantin24(11.08.2021 07:14)
- Windows не умеет автоматически переоткрывать порт. UniSoft(872 знак., 11.08.2021 04:25 - 18:45)