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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Виртуальный COM порт - стандартный Windows драйвер есть ли он?
Vitaliy S.
сообщение Feb 4 2009, 12:02
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 11-11-08
Пользователь №: 41 539



Вот пытаюст вставить в свой девайс CDC драйвер для эмуляции COM порта, для того чтобы не писать свой собственный драйвер, но такое ощущените что в Винде такого драйвера просто нет, вообщем вопрос в том каким интерфейсом должен обладать USB девайс чтобы вимнда стала загружать свой драйвер, есть ли такой драйвер в стандартной Windows XP SP2
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 4 2009, 13:41
Сообщение #2


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



1. usbser.sys
2. usb device должен быть реализован как CDC
Go to the top of the page
 
+Quote Post
Vitaliy S.
сообщение Feb 4 2009, 14:27
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 11-11-08
Пользователь №: 41 539



Нужно сделать в одном флаконе виртуалдьный компорт и масс-сторадж, правда я так понимаю это не удастся, посольку винда класс CDC смотрт в Device Descriptorе.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 4 2009, 15:31
Сообщение #4


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Намного надежнее взять bulk-драйвер из DDK и им пользоваться совместно со своим устройством. С CDC драйвером масса проблем, о чем на форуме многократно писалось.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Feb 5 2009, 10:29
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



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


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 5 2009, 10:54
Сообщение #6


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



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

Хочу отметить одну очень неприятную вещь при использовании стандартного usbser.sys. Положим, вы открыли какую-нибудь терминальную программу. Данные ходят туда/сюда. Но если при открытой программе вы выдернете usb кабель из устройства и снова его воткнете (или reset на устройстве нажмете), использованный виртуальный COM порт больше не будет доступен до тех пор, пока вы не перезагрузите компьютер.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Feb 5 2009, 11:14
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(sergeeff @ Feb 5 2009, 16:54) *
использованный виртуальный COM порт больше не будет доступен до тех пор, пока вы не перезагрузите компьютер.

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


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 5 2009, 11:42
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

Эта проблема кончилась вместе с Win2K. XP и выше работает нормально.
Go to the top of the page
 
+Quote Post
Седой
сообщение Feb 5 2009, 14:10
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата(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
Go to the top of the page
 
+Quote Post
vvvv
сообщение Feb 5 2009, 14:36
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 3-05-05
Из: г. Волжский
Пользователь №: 4 714



Цитата(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 в программе устройства.

Сообщение отредактировал vvvv - Feb 5 2009, 14:37
Go to the top of the page
 
+Quote Post
Седой
сообщение Feb 5 2009, 14:47
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



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


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


PS. Ссылку даю уже в третий раз.
Go to the top of the page
 
+Quote Post
vvvv
сообщение Feb 5 2009, 17:46
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 3-05-05
Из: г. Волжский
Пользователь №: 4 714



Вот здесь было обсуждение как раз такой же проблемы два 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 - Feb 5 2009, 17:47
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 5 2009, 18:04
Сообщение #13


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



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

Поддержка композитных usb устройств у Microsoft'a только появилась в Viste и XP SP3.
Go to the top of the page
 
+Quote Post
Седой
сообщение Feb 6 2009, 08:11
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата(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.

Сообщение отредактировал Седой - Feb 6 2009, 08:21
Go to the top of the page
 
+Quote Post
Regressor
сообщение Feb 28 2009, 11:45
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 10-01-09
Пользователь №: 43 111



Цитата(Segeeff @ Feb 6 2009, 04:04) *
Пример от NXP - классная штука, но с ошибками. Я над ними просидел пару недель, пока драйвер стал работать как надо.


Сижу над этим примером второй день (мне на NXP нужно композитное устройство VCOM+HID). Вы случайно не помните что там не так было ?
Та часть, что на LPC вроде работает. С виртуального порта данные на LPC UART передаются, правда с глюками. А вот обратно - фик. Хотя если usb снифером смотреть - пакетики летят.

Сообщение отредактировал Regressor - Feb 28 2009, 11:47
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 28 2009, 13:57
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Седой @ Feb 6 2009, 11:11) *
В Vista и WinXP SP3 появилась возможность выбора различных конфигураций.

Т.е. в дескрипторе DEVICE в поле bNumConfigurations больше чем 1 ставить можно? И несколько дескрипторов CONFIGURATION с разными bConfigurationValue писать? И что будет? Окошко откроется в котором спросят как этот девайс сконфигурировать? Кто нибудь это пробовал? Самому что-ли попробовать?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 05:31
Рейтинг@Mail.ru


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