Jump to content

    

Виртуальный COM порт - стандартный Windows драйвер есть ли он?

Вот пытаюст вставить в свой девайс CDC драйвер для эмуляции COM порта, для того чтобы не писать свой собственный драйвер, но такое ощущените что в Винде такого драйвера просто нет, вообщем вопрос в том каким интерфейсом должен обладать USB девайс чтобы вимнда стала загружать свой драйвер, есть ли такой драйвер в стандартной Windows XP SP2

Share this post


Link to post
Share on other sites

Нужно сделать в одном флаконе виртуалдьный компорт и масс-сторадж, правда я так понимаю это не удастся, посольку винда класс CDC смотрт в Device Descriptorе.

Share this post


Link to post
Share on other sites

Намного надежнее взять bulk-драйвер из DDK и им пользоваться совместно со своим устройством. С CDC драйвером масса проблем, о чем на форуме многократно писалось.

Share this post


Link to post
Share on other sites

Задам здесь вопрос, чтобы не плодить тем.

Реализовал без особых проблем CDC device. Сигнализация не нужна, только прием - передача.

Далее, возникла необходимость сделать 2 виртуальных порта внутри одного USB.

Вопрос, допускается ли такое спецификацией или небоходимо будет писать свой драйвер для такого устойства?

Share this post


Link to post
Share on other sites

Да, такое возможно. Но дескриптор надо нестандартным образом организовать. Если память не изменяет protos на нашем форуме приводил примеры реализации таких дескрипторов.

 

Хочу отметить одну очень неприятную вещь при использовании стандартного usbser.sys. Положим, вы открыли какую-нибудь терминальную программу. Данные ходят туда/сюда. Но если при открытой программе вы выдернете usb кабель из устройства и снова его воткнете (или reset на устройстве нажмете), использованный виртуальный COM порт больше не будет доступен до тех пор, пока вы не перезагрузите компьютер.

Share this post


Link to post
Share on other sites
использованный виртуальный COM порт больше не будет доступен до тех пор, пока вы не перезагрузите компьютер.

У меня на Vista такой проблемы не наблюдается. Возможно, стоить попробовать на XP.

За ответ спасибо, попробую поискать на форуме указанные темы.

Share this post


Link to post
Share on other sites
Хочу отметить одну очень неприятную вещь при использовании стандартного usbser.sys. Положим, вы открыли какую-нибудь терминальную программу. Данные ходят туда/сюда. Но если при открытой программе вы выдернете usb кабель из устройства и снова его воткнете (или reset на устройстве нажмете), использованный виртуальный COM порт больше не будет доступен до тех пор, пока вы не перезагрузите компьютер.

Эта проблема кончилась вместе с Win2K. XP и выше работает нормально.

Share this post


Link to post
Share on other sites
Да, такое возможно. Но дескриптор надо нестандартным образом организовать....

 

Очень даже стандартным - см. http://msdn.microsoft.com/en-us/library/ms793564.aspx -это раздел описания работы системного драйвера

композитного USb устройства (до XP эти функции выполнял драйвер хаба).

А применительно к использованию класса СDC (он имеет два интерфейса) в композитном устройстве см. http://msdn.microsoft.com/en-us/library/aa476422.aspx

Share this post


Link to post
Share on other sites
Нужно сделать в одном флаконе виртуалдьный компорт и масс-сторадж, правда я так понимаю это не удастся, посольку винда класс 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 в программе устройства.

Edited by vvvv

Share this post


Link to post
Share on other sites
Нужно использовать новый класс устройств CDC IAD, ....

 

Призываю уважаемых участников данного обсуждения прежде чем высказывать свои "измышлизмы"

внимательно прочитать первоисточник по данной теме- http://msdn.microsoft.com/en-us/library/ms793564.aspx

 

 

PS. Ссылку даю уже в третий раз.

Share this post


Link to post
Share on other sites

Вот здесь было обсуждение как раз такой же проблемы два 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 порта в одном устройстве.

Edited by vvvv

Share this post


Link to post
Share on other sites

Пример от NXP - классная штука, но с ошибками. Я над ними просидел пару недель, пока драйвер стал работать как надо.

 

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

Share this post


Link to post
Share on other sites
Поддержка композитных 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.

Edited by Седой

Share this post


Link to post
Share on other sites
Пример от NXP - классная штука, но с ошибками. Я над ними просидел пару недель, пока драйвер стал работать как надо.

 

Сижу над этим примером второй день (мне на NXP нужно композитное устройство VCOM+HID). Вы случайно не помните что там не так было ?

Та часть, что на LPC вроде работает. С виртуального порта данные на LPC UART передаются, правда с глюками. А вот обратно - фик. Хотя если usb снифером смотреть - пакетики летят.

Edited by Regressor

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this