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

 
 
> Вопрос по USB CDC
andrewlekar
сообщение Nov 16 2012, 08:10
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Сейчас у нас штатно используется COM порт таким образом: софт открывает порт и общается с железом. Если железка перезапускается или просто физически выткнута из порта и воткнута обратно, то ничего страшного не происходит - обмен продолжается с момента подключения железки обратно.
Теперь хотим перетащить железку на USB, сделали USB CDC - всё работает прекрасно. Но если железку рестартануть, то она не может создать уже открытый в софте порт и обмена не происходит. Неужели USB CDC не предназначен для работы в таких условиях? Сделать что-то можно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kovigor
сообщение Nov 16 2012, 08:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(andrewlekar @ Nov 16 2012, 11:10) *
Сделать что-то можно?

Если нужна надежность, то о USB лучше сразу забыть. Только настоящий COM - порт на материнке или мультипортовке ...
P.S. У меня вообще создалось впечатление, что USB подходит только для систем с оператором. Например, завис в офисе принтер. Ну и что ? Подошла секретарша и передернула разъем. А вот для систем, которые должны работать автономно, USB не годится ...
Go to the top of the page
 
+Quote Post
Flexz
сообщение Nov 16 2012, 11:54
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Цитата(kovigor @ Nov 16 2012, 12:51) *
Если нужна надежность, то о USB лучше сразу забыть. Только настоящий COM - порт на материнке или мультипортовке ...

Ну не так уж категорично, лучше сказать "если нужна надежность то о USB-CDC лучше сразу забыть" sm.gif
В свое время хватило косяков с ним связанных, начиная от "отваливания" порта и кончая бсодами. Лучше сразу взять libusb - потратить немного времени на изучение, и забыть CDC как страшный сон. С libusb потеря/восстановление связи отрабатываются без проблем (получили таймаут или ошибку - закрываем порт, ждем когда наш девайс пройдет энумерацию, подключаемся снова).
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 16 2012, 16:36
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Flexz @ Nov 16 2012, 13:54) *
Лучше сразу взять libusb
Тогда уж лучше libusbx, как развивающееся продолжение libusb. Но это ставит крест на совместимости софта со старыми устройствами, подключающимися через "железный" COM.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Nov 19 2012, 10:21
Сообщение #5


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

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



Цитата(Сергей Борщ @ Nov 16 2012, 20:36) *
Тогда уж лучше libusbx, как развивающееся продолжение libusb.

Там вроде б только бэкэнд к "старому" libusb или новому WinUsb от Microsoft.
Надо будет порыть эту тему...


Вообще, кто какие протоколы поверх USB использует? CDC, действительно, работает... неидеально.
Просто создать своё собственное устройство, вне стандарта, и работать напрямую с bulk'ами?


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 18:39
Рейтинг@Mail.ru


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