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

 
 
 
Reply to this topicStart new topic
> Virtual Com Port - Размер Пакета., USB VCP
Usatyj
сообщение Aug 5 2008, 06:30
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 1-02-07
Пользователь №: 24 931



Прошу помощи.
Ситуация следующая.
Уже давно борюсь с VCP, который наотрез отказывался подключаться в составе комплексного устройства черз IAD или union functional дескрипторы. Вообщем, подключил я VCP с его CDC классом, не как описано в большинстве примеров - через два интерфейса (булк и interrupt) а через один, содержащий 3 end points.
Всё вродебы работает отлично, устройство определяется, данные передаются, - но вот не задача:
при определенных условиях пакет теряется. А именно. Если устройство передаёт один пает длинной 64 байта, то на Virtual COM он не приходит. При иных параметрах, если пакет 63 байта, он приходит, если устройство посылает несколько 64-ёх байтных пакетов, они доходят. Но если послан только один 64 байтный пакет ни COM порт, ни usb снифер по имени "Usb Monitor" его не видят, а в это время прерывание Correct Transfer рапортует об удачной отправке.
Думаю что сниферу особо доверять нельзя, т.к. он наверное просто недостаточно близко к аппаратуре сидит, есть ощущение что драйвер usbser.sys чтото с буферированием тупит.

Ответье ели вы сталкивались или слышали о чем то таком.

Мне нужно хотябы объяснение почему не работает, пусть даже не заработает.
---------------
P.S. В сторону устройства всё передается нормально

Сообщение отредактировал Usatyj - Aug 5 2008, 06:33
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 5 2008, 06:35
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Usatyj @ Aug 5 2008, 14:30) *
Мне нужно хотябы объяснение почему не работает, пусть даже не заработает.
Пакеты с размером данных, равных размеру буфера конечной точки нужно завершать нулевым пакетом. Т.е. после того как получили сигнал о том, что 64-байт пакет уехал, посылаете пакет с нулевой длиной. Это сигнал хосту о завершении передачи данных


--------------------
Go to the top of the page
 
+Quote Post
Usatyj
сообщение Aug 5 2008, 06:49
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 1-02-07
Пользователь №: 24 931



Огромное спасибо, я очень долго провозился с этой проблемой, Вы мне очень помогли.
Go to the top of the page
 
+Quote Post
Alechek
сообщение Aug 7 2008, 09:23
Сообщение #4


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

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(Usatyj @ Aug 5 2008, 11:30) *
Думаю что сниферу особо доверять нельзя, т.к. он наверное просто недостаточно близко к аппаратуре сидит, есть ощущение что драйвер usbser.sys чтото с буферированием тупит.

P.S. В сторону устройства всё передается нормально

Хорошо что в сторону устройства все нормально. Позволю заметить, что баги в usbser.sys все же есть. Описаны и исправлены в KB943198.
Только вот после этих исправлений внесен еще один баг, на который я напоролся после установки SP3 - устройство переставало принимать данные.
Баг, конечно, был и у меня, но Microsoft тоже к этому причастно - при отсылке данных (WriteFile) размером кратным 8 (размер EP - 64!), посылается еще одна булка, только размером 0 !
На ней то мой драйвер и стопорился.

Цитата
Вообщем, подключил я VCP с его CDC классом, не как описано в большинстве примеров - через два интерфейса (булк и interrupt) а через один, содержащий 3 end points.

А можно попродробнее с этого места? Т.е. возможно сделать реализовать VCP и MSD на одном устройстве?
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Aug 7 2008, 10:09
Сообщение #5


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

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



Возможно. Я устройство с тремя интерфейсами реализовал. Но самая большая глючность usbser.sys - отсутствие нормального pnp - насколько мне известно, так и не решена.
Go to the top of the page
 
+Quote Post
Alechek
сообщение Aug 8 2008, 05:51
Сообщение #6


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

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(sergeeff @ Aug 7 2008, 15:09) *
Возможно. Я устройство с тремя интерфейсами реализовал. Но самая большая глючность usbser.sys - отсутствие нормального pnp - насколько мне известно, так и не решена.

С несколькими интерфейсами - это понятно.
Насколько я помню, usbser цепляется именно к устройству. а usbstor - к интерфейсу.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Aug 8 2008, 08:53
Сообщение #7


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

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



Насколько я в курсе, до Vist'ы, Microsoft multidevice устройства не поддерживала. Только multiinterface.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 06:44
Рейтинг@Mail.ru


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