реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> usbser.sys и PnP
owl
сообщение Mar 12 2009, 07:19
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 90
Регистрация: 7-08-06
Из: Смоленск
Пользователь №: 19 370



Прошелся по топикам и не смог понять, есть ли решение для следующей проблемы.
Подсоединяю уст-во к компу USB на AT91SAM7X.
Тот его определяет как CDC.
Открываю нужный порт, начинаю запись(чтение) - все нормально.
Отсоединяю плату. В диспетчере видно, что уст-во "отвалилось". Однако все операции с портом на компе продолжаются без ошибки.
На сколько я смог понять, все проблемы в usbser.sys.
Если кто сталкивался, поделитесь пожалуйста решением.
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Mar 12 2009, 12:13
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(owl @ Mar 12 2009, 09:19) *
Если кто сталкивался, поделитесь пожалуйста решением.

Все сталкивались.
Я закрываю порт по таймауту, чтобы порт был доступен при повторном подключении.
Радикальное решение - притвориться устройством, для которого есть нормальные драйвера - много читал на форуме, так ничего и не нашел. Вроде бы у кого-то получалось прикинуться FTDI... Если найдете решение, будет интересно.
Причина редактирования: Излишнее цитирование.
Go to the top of the page
 
+Quote Post
owl
сообщение Mar 12 2009, 12:46
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 90
Регистрация: 7-08-06
Из: Смоленск
Пользователь №: 19 370



Цитата(HARMHARM @ Mar 12 2009, 15:13) *
Все сталкивались.
Я закрываю порт по таймауту, чтобы порт был доступен при повторном подключении.
Радикальное решение - притвориться устройством, для которого есть нормальные драйвера - много читал на форуме, так ничего и не нашел. Вроде бы у кого-то получалось прикинуться FTDI... Если найдете решение, будет интересно.

Да была мысль прикинуться FTDI - но пока не до этого. Будет время обязательно попробую. До создания драйверов пока не созрел.
Таймаут - тоже мысль... Сейчас примерно, так и работаю. Просто криво это как-то.
Если что нибудь найду - поделюсь.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 12 2009, 19:29
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



С таймаутами - это пройдет, только вы сами пишете какую-то коммуникационную программу со стороны host'a. Если вы на PC открыли какой-нибудь терминал для связи с вашим устройством, то после reset'a вашего устройства виртуальный COM перестанет существовать и заработает только после перезагрузки PC, что ни в какие ворота не лезет. У NXP есть пример драйвера (с ошибками, правда) для USB CDC - он в этом плане более грамотно реализован. По крайней мере достаточно просто закрыть программу связи и снова ее открыть - COM снова будет работать.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 12 2009, 21:09
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergeeff @ Mar 12 2009, 22:29) *
Если вы на PC открыли какой-нибудь терминал для связи с вашим устройством, то после reset'a вашего устройства виртуальный COM перестанет существовать и заработает только после перезагрузки PC, что ни в какие ворота не лезет.

Только на W2K. Не надо пугать людей.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 12 2009, 22:04
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Mar 13 2009, 00:09) *
Только на W2K. Не надо пугать людей.


Может в XP SP3 это исправили, но в SP2 usbser.sys работал именно так.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 12 2009, 22:39
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Даже в XP SP1 работает нормально, достаточно закрыть порт без перезагрузки.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 13 2009, 08:35
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Mar 13 2009, 01:39) *
Даже в XP SP1 работает нормально, достаточно закрыть порт без перезагрузки.


Вы невнимательно прочитали, что я написал. Именно при открытом порте, если нажать на reset в устройстве, COM порт больше не откроется.
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Mar 13 2009, 10:20
Сообщение #9


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(sergeeff @ Mar 13 2009, 10:35) *
Вы невнимательно прочитали, что я написал. Именно при открытом порте, если нажать на reset в устройстве, COM порт больше не откроется.

Он-то откроется, просто USB CDC подхватывает только закрытый COM.
Просто таймаут закрытия порта с PC должен быть меньше времени перезапуска устройства.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 13 2009, 12:49
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(HARMHARM @ Mar 13 2009, 13:20) *
Просто таймаут закрытия порта с PC должен быть меньше времени перезапуска устройства.


Не знаю, может я чего не так делал, но у меня ситуация с usbser.sys была такова. Терминальная программа с открытым виртуальным COM портом на PC. Жмем reset на устройстве. Терминальная программа порт не закрывает (с какой ей стати?). Устройство стартует заново. Даже если теперь закрыть терминальную программу и стартовать заново, виртуальный COM порт больше не откроется, пока не перезагрузишь PC.
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Mar 13 2009, 13:11
Сообщение #11


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(sergeeff @ Mar 13 2009, 14:49) *
Не знаю, может я чего не так делал, но у меня ситуация с usbser.sys была такова. Терминальная программа с открытым виртуальным COM портом на PC. Жмем reset на устройстве. Терминальная программа порт не закрывает (с какой ей стати?). Устройство стартует заново. Даже если теперь закрыть терминальную программу и стартовать заново, виртуальный COM порт больше не откроется, пока не перезагрузишь PC.

Именно так.
Но - достаточно передернуть USB или сбросить устройство, когда COM закрыт, и можно снова открывать.
Таймаут - это касается своего приложения, работающего с устройством через CDC...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 23:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01435 секунд с 7
ELECTRONIX ©2004-2016