Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Виртуальный COM порт - стандартный Windows драйвер есть ли он?
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Vitaliy S.
Вот пытаюст вставить в свой девайс CDC драйвер для эмуляции COM порта, для того чтобы не писать свой собственный драйвер, но такое ощущените что в Винде такого драйвера просто нет, вообщем вопрос в том каким интерфейсом должен обладать USB девайс чтобы вимнда стала загружать свой драйвер, есть ли такой драйвер в стандартной Windows XP SP2
sergeeff
1. usbser.sys
2. usb device должен быть реализован как CDC
Vitaliy S.
Нужно сделать в одном флаконе виртуалдьный компорт и масс-сторадж, правда я так понимаю это не удастся, посольку винда класс CDC смотрт в Device Descriptorе.
sergeeff
Намного надежнее взять bulk-драйвер из DDK и им пользоваться совместно со своим устройством. С CDC драйвером масса проблем, о чем на форуме многократно писалось.
Andy Mozzhevilov
Задам здесь вопрос, чтобы не плодить тем.
Реализовал без особых проблем CDC device. Сигнализация не нужна, только прием - передача.
Далее, возникла необходимость сделать 2 виртуальных порта внутри одного USB.
Вопрос, допускается ли такое спецификацией или небоходимо будет писать свой драйвер для такого устойства?
sergeeff
Да, такое возможно. Но дескриптор надо нестандартным образом организовать. Если память не изменяет protos на нашем форуме приводил примеры реализации таких дескрипторов.

Хочу отметить одну очень неприятную вещь при использовании стандартного usbser.sys. Положим, вы открыли какую-нибудь терминальную программу. Данные ходят туда/сюда. Но если при открытой программе вы выдернете usb кабель из устройства и снова его воткнете (или reset на устройстве нажмете), использованный виртуальный COM порт больше не будет доступен до тех пор, пока вы не перезагрузите компьютер.
Andy Mozzhevilov
Цитата(sergeeff @ Feb 5 2009, 16:54) *
использованный виртуальный COM порт больше не будет доступен до тех пор, пока вы не перезагрузите компьютер.

У меня на Vista такой проблемы не наблюдается. Возможно, стоить попробовать на XP.
За ответ спасибо, попробую поискать на форуме указанные темы.
aaarrr
Цитата(sergeeff @ Feb 5 2009, 13:54) *
Хочу отметить одну очень неприятную вещь при использовании стандартного usbser.sys. Положим, вы открыли какую-нибудь терминальную программу. Данные ходят туда/сюда. Но если при открытой программе вы выдернете usb кабель из устройства и снова его воткнете (или reset на устройстве нажмете), использованный виртуальный COM порт больше не будет доступен до тех пор, пока вы не перезагрузите компьютер.

Эта проблема кончилась вместе с Win2K. XP и выше работает нормально.
Седой
Цитата(sergeeff @ Feb 5 2009, 15:54) *
Да, такое возможно. Но дескриптор надо нестандартным образом организовать....


Очень даже стандартным - см. http://msdn.microsoft.com/en-us/library/ms793564.aspx -это раздел описания работы системного драйвера
композитного USb устройства (до XP эти функции выполнял драйвер хаба).
А применительно к использованию класса СDC (он имеет два интерфейса) в композитном устройстве см. http://msdn.microsoft.com/en-us/library/aa476422.aspx
vvvv
Цитата(Vitaliy S. @ Feb 4 2009, 17:27) *
Нужно сделать в одном флаконе виртуалдьный компорт и масс-сторадж, правда я так понимаю это не удастся, посольку винда класс CDC смотрт в Device Descriptorе.


Действительно, CDC и масс storage напрямую сделать не получится, CDC заблокирует все попытки сделать композитное устройство CDC и еще что то.
Нужно использовать новый класс устройств CDC IAD, он реализован на Silabs, http://www.cygnal.org/ubb/Forum9/HTML/001050.html
там написан рабочий пример, как сделать CDC + HID, я его проверял, он работает.
Главное, и они об этом предупреждают, это обновить WinXP до версии SP3, иначе при подключении устройства CDC IAD вы получите синий экран.
Думаю вместо HID можно вписать mass storage, и заменить HID обработчики на Mass Storage в программе устройства.
Седой
Цитата
Нужно использовать новый класс устройств CDC IAD, ....


Призываю уважаемых участников данного обсуждения прежде чем высказывать свои "измышлизмы"
внимательно прочитать первоисточник по данной теме- http://msdn.microsoft.com/en-us/library/ms793564.aspx


PS. Ссылку даю уже в третий раз.
vvvv
Вот здесь было обсуждение как раз такой же проблемы два COM порта
https://www.usb.org/phpbb/viewtopic.php?t=13610
И они ссылаются на документ от NXP, нашел на него линк http://www.nxp.com/acrobat_download/applic...s/AN10420_1.pdf
А вот на код http://www.standardics.nxp.com/support/doc...zip/an10420.zip
В документе от NXP написано как организовать два виртуальных COM порта в одном устройстве.
sergeeff
Пример от NXP - классная штука, но с ошибками. Я над ними просидел пару недель, пока драйвер стал работать как надо.

Поддержка композитных usb устройств у Microsoft'a только появилась в Viste и XP SP3.
Седой
Цитата(sergeeff @ Feb 5 2009, 23:04) *
Поддержка композитных usb устройств у Microsoft'a только появилась в Viste и XP SP3.


Поддержка композитных usb устройств у Microsoft'a появилась в Win2000 и в Win98.

В Win2000 и Win98(Me) роль драйвера композитного устройства выполнял драйвер хаба.

В WinXP появился отдельный драйвер композитного устройства (USB Common Class Parent Driver).

В WinXP SP1(или SP2, нужно посмотреть) этот драйвер стал подерживать энумерацию функциональных устройств, имеющих более 1-го интерфейса ( в том числе CDC), для этого был введен USB Interface Association Descriptor - IAD.

В Vista и WinXP SP3 появилась возможность выбора различных конфигураций.

Повторю свой вчераший пост:

Призываю уважаемых участников данного обсуждения прежде чем высказывать свои "измышлизмы"
внимательно прочитать первоисточник по данной теме- http://msdn.microsoft.com/en-us/library/ms793564.aspx


PS. Ссылку даю уже в четвертый раз.
PS1. Посмотрел - IAD поддерживается начиная с WinXP SP2.
Regressor
Цитата(Segeeff @ Feb 6 2009, 04:04) *
Пример от NXP - классная штука, но с ошибками. Я над ними просидел пару недель, пока драйвер стал работать как надо.


Сижу над этим примером второй день (мне на NXP нужно композитное устройство VCOM+HID). Вы случайно не помните что там не так было ?
Та часть, что на LPC вроде работает. С виртуального порта данные на LPC UART передаются, правда с глюками. А вот обратно - фик. Хотя если usb снифером смотреть - пакетики летят.
galjoen
Цитата(Седой @ Feb 6 2009, 11:11) *
В Vista и WinXP SP3 появилась возможность выбора различных конфигураций.

Т.е. в дескрипторе DEVICE в поле bNumConfigurations больше чем 1 ставить можно? И несколько дескрипторов CONFIGURATION с разными bConfigurationValue писать? И что будет? Окошко откроется в котором спросят как этот девайс сконфигурировать? Кто нибудь это пробовал? Самому что-ли попробовать?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.