|
Вопрос по USB CDC |
|
|
|
 |
Ответов
(1 - 12)
|
Nov 16 2012, 10:18
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата Сделать что-то можно? а) контора Thesycon делает свой собственный драйвер CDC. Там есть возможность сохранять виртуальный ком-порт при пропадании устройства. (если что - полной версии у меня нету). б) видел рекомендации отпускать хэнд ком-порта при пропадании устройства, а потом пытаться открыть его обратно. Но это либо не работает совсем, либо наши программисты сделали всё неправильно  Грабля от MS: если проделывать эти манипуляции после того, как устройство подключилось обратно, работать ничего не будет - не получится открыть хэндл. Закрывать надо перед тем, как устройство появится обратно. в) можно перезапускать драйвер CDC. Тоже не самый прямой способ (довольно медленно, требует админских прав). Всё вышесказанное - в предположении, что используется Windows.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Nov 16 2012, 10:30
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Цитата контора Thesycon делает свой собственный драйвер CDC. Да, я уже попробовал поставить этот драйвер. Стало работать очень медленно и результата не дало. Цитата видел рекомендации отпускать хэнд ком-порта при пропадании устройства, а потом пытаться открыть его обратно. Может быть и сработает, но со стороны устройства останется проблема - если есть открытый порт с его номером, то у него енумерация криво проходит. Наверное чинится повторными енумерациями в цикле, но пробовать надо.
|
|
|
|
|
Nov 16 2012, 11:54
|
Местный
  
Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797

|
Цитата(kovigor @ Nov 16 2012, 12:51)  Если нужна надежность, то о USB лучше сразу забыть. Только настоящий COM - порт на материнке или мультипортовке ... Ну не так уж категорично, лучше сказать "если нужна надежность то о USB-CDC лучше сразу забыть" В свое время хватило косяков с ним связанных, начиная от "отваливания" порта и кончая бсодами. Лучше сразу взять libusb - потратить немного времени на изучение, и забыть CDC как страшный сон. С libusb потеря/восстановление связи отрабатываются без проблем (получили таймаут или ошибку - закрываем порт, ждем когда наш девайс пройдет энумерацию, подключаемся снова).
|
|
|
|
|
Nov 19 2012, 10:21
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Сергей Борщ @ Nov 16 2012, 20:36)  Тогда уж лучше libusbx, как развивающееся продолжение libusb. Там вроде б только бэкэнд к "старому" libusb или новому WinUsb от Microsoft. Надо будет порыть эту тему... Вообще, кто какие протоколы поверх USB использует? CDC, действительно, работает... неидеально. Просто создать своё собственное устройство, вне стандарта, и работать напрямую с bulk'ами?
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Nov 21 2012, 05:31
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Цитата Просто создать своё собственное устройство, вне стандарта, и работать напрямую с bulk'ами? Я решил делать поверх HID устройства. Без драйверов - утилитой буду создавать вирутальный COM порт и эмулировать обмен. Исходники выложу, когда будет всё готово - может кому пригодится. Я вот только не пойму, если правда присутствует проблема открытия занятого приложением порта, то как сделано общение USB 3G модема с PPP дозвонщиком, например от Мегафона? Если при открытой сессии выдернуть свисток и воткнуть заново он ведь нормально запустится? Или приложение успевает закрыть порт до повторной энумерации?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|