![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
Суть такова. Custom USB-устройство определяется как последовательный порт через стандартный виндовый драйвер. На устройство постоянно подается поток данных. Сейчас прокачивается примерно около 150 килобайт в секунду, что ниже пропускной способности USB шины.
В какую сторону покапать, что бы добиться более высокой скорости? Это сообщение отредактировал(а) semibug - 20.9.2010, 16:40 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
зайти на сайт производителя, поискать дрова на свою модель если скорость осталась прежней, значит скорее всего устройство просто не может изрыгать данные быстрее вследствии каких-то причин, не зависящих транспорта, например: сложность алгоритмов их расчета, медленный вычислитель, неоптимальные алгоритмы и т.п. тогда тут максимум что можно сделать: - обновить по возможности прошивку устройства - взять другую модель -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
GremlinProg, производитель рекомендует стандартный виндовый драйвер usbser.sys.
Само устройство может работать быстрее, т.к. я пробовал написать под него прошивку с транспортом по bulk на 64 байта и драйвер под windows. Результаты - около 800 кб/с. Но это требует перепрошивки устройства, что не совсем удобно (стоит цель работать сразу с устройствами из коробки без обновления Firmware). Т.е. похоже, что железка теоретически может глотать данные, но винда не хочет засылать большое кол-во данных в последовательный порт. |
|||
|
||||
| icecrashldr |
|
|||
![]() Developer ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 5.7.2010 Репутация: нет Всего: нет |
Какая функция используется для отсылки данных\приема?
ReadFile\ReadFileEx WriteFile\WriteFileEx ? Последний раз несколько месяцев писал USB network скорость была свыше 100 мбит\с Может стоит USB hub поменять? |
|||
|
||||
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
icecrashldr, последовательный порт открываю через CreateFile( "\\.\COM1" ), пишу с помощью WriteFile.
Скорости 100 мб/с в моем случае не достичь, т.к. железка не работает на HighSpeed. Это сообщение отредактировал(а) semibug - 21.9.2010, 20:43 |
|||
|
||||
| icecrashldr |
|
|||
![]() Developer ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 5.7.2010 Репутация: нет Всего: нет |
HighSpeed - это не очень хорошо...
WriteFile заменить на WriteFileEx c APC . Псевдо
Почему? Об реализации в недрах винды WriteFile - не оптимально Формирует запрос к драйверу Отсылка запрос + ожидания ответа. DRIVER Отсылает данные на устройство Ждем окончания говорит на USER level запись завершена. Получили ответ, удаляет временные переменные, и выход из функции. WriteFileEx - оптимально Формирует запрос к драйверу Отсылка запрос. Выход из функции для посылки следующих пакетов, но в это время драйвер уже отсылает данные на устройство. После того как мы послали N количество запросов, наконец токи в ответ мы получаем информацию о завершении посылки данных. Получим инфу в колбеки. Вообще детальней сейчас отписать не могу, так как на работе. |
|||
|
||||
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
icecrashldr, спасибо. Попытаюсь писать через WriteFileEx.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |