Перейти к содержанию
    

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

использованный виртуальный COM порт больше не будет доступен до тех пор, пока вы не перезагрузите компьютер.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, такое возможно. Но дескриптор надо нестандартным образом организовать....

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем vvvv

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно использовать новый класс устройств CDC IAD, ....

 

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

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

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем vvvv

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поддержка композитных 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.

Изменено пользователем Седой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

Изменено пользователем Regressor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...