zombi 0 9 ноября, 2018 Опубликовано 9 ноября, 2018 · Жалоба 7 hours ago, jcxz said: максимум что работает... - это 1000000 бод Надо будет потом попробовать чего получше спаять и протестить. Пренепременно затем отпишитесь о результате эксперимента. Как качество пайки влияет на всю эту ситуацию ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 9 ноября, 2018 Опубликовано 9 ноября, 2018 · Жалоба . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 10 ноября, 2018 Опубликовано 10 ноября, 2018 · Жалоба Ну, в общем, вот что. Перетыкнул переходник в другой порт и после запуска теста оставил ПК в покое (не двигал мышкой ). Запустил скачивание уже 200 мегабайт. Скачал - нет пропущенных байт, все ровно до байта принялось. Затем сравнил файл с тем, что в нем должно быть - все совпадает, нет ни одного несовпадения. То есть полный корректный прием данных. Если же в процессе тестирования что-то делать на ПК (двигать окошки, мышкой елозить туда-сюда, запускать копирование какого-нибудь файла и т.д.), то однозначно наблюдается потеря байт. На одном хост-контроллере USB в прошлый раз висели и мой переходник, и клавиатура с мышью, поэтому в сниффере я видел их вклинивание в обмен. Однако и на свободном порту (на передней панели ПК), где нет других устройств (судя по анализатору портов), наблюдается такая же картина с ухудшением качества приема при запуске каких-либо процессов. Судя по снифферу, хост-контроллер опрашивает ровно через 1мс без пропусков. FT232 теряет байты, не информируя в BULK-IN-транзакциях. В другом порте все 200 мегабайт принимаются корректно как количественно, так и качественно. Но только при отсутствии других факторов, загружающих CPU (на порту же USB, где одним хост-контроллером обрабатывались и UART-переходник, и клавиатура с мышью, вообще пофиг, занят ПК чем-то или свободен - ошибки были всегда). Не понимаю, почему такие траблы, но на этом мои эксперименты, думаю, завершатся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 10 ноября, 2018 Опубликовано 10 ноября, 2018 · Жалоба 1 hour ago, Arlleex said: Не понимаю, почему такие траблы, но на этом мои эксперименты, думаю, завершатся. А здесь как раз все и начинается. Когда вы наконец поняли что дело в виндах, надо начинать искать пути решения этой проблемы. Сперва надо вспомнить что есть Win API и есть WinRT API. Вы какой API использовали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 10 ноября, 2018 Опубликовано 10 ноября, 2018 · Жалоба 1 hour ago, AlexandrY said: Когда вы наконец поняли что дело в виндах, надо начинать искать пути решения этой проблемы. Т.е. производитель адаптера, обещающий 3 мегабита на bulk-передачах при явно недостаточной глубине приемного FIFO, не виноват? К винде как раз смысла придираться нет - незначительные задержки в bulk-транзакциях криминалом не являются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 10 ноября, 2018 Опубликовано 10 ноября, 2018 · Жалоба 1 hour ago, AlexandrY said: А здесь как раз все и начинается. Когда вы наконец поняли что дело в виндах, надо начинать искать пути решения этой проблемы. Сперва надо вспомнить что есть Win API и есть WinRT API. Вы какой API использовали? У меня оконное приложение VCL. Но использую компоненты форм - кнопки, индикаторы и т.д. только для того, чтобы удобно было выбирать файл для записи и управлять открытием/закрытием порта. Сама работа с потоками, работа с портом, работа с файлами (куда сохраняются данные) - только на WinAPI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 62 10 ноября, 2018 Опубликовано 10 ноября, 2018 · Жалоба 2 часа назад, aaarrr сказал: Т.е. производитель адаптера, обещающий 3 мегабита на bulk-передачах при явно недостаточной глубине приемного FIFO, не виноват? К винде как раз смысла придираться нет - незначительные задержки в bulk-транзакциях криминалом не являются. Это максимальные параметры адаптера в идеальном окружении, что и было продемонстрировано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 10 ноября, 2018 Опубликовано 10 ноября, 2018 · Жалоба Если вдруг кому будет интересно. Припаял всё таки ещё один провод и передачу организовал с подтверждением приёма. ПК отправляет один байт и ждёт приёма всей пачки 2048 байт. МК не начинает отправку, пачки данных, пока не получит что либо от ПК. Внутри пачки между байтами пауз нет. Всё работает. Потерь нет. На любых объёмах. При этом ПК можно загружать как угодно и чем угодно. (а может я слабо нагружал? Посоветуйте, чего бы такого серьёзного на ПК запустить) Правда скорость потока не очень получилась, примерно 135.6 KB/c Зато без организации всяких хитрых thread-ов и пр. Только таймер, две функции _hread и _hwrite и настройка ком порта. ЗЫ: попробовал скорость порта 3000000 бод. МК позволил настроить свой ком порт с 0.12% погрешностью. Вообще ничего не работает. ПК принимает полный бред. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 11 ноября, 2018 Опубликовано 11 ноября, 2018 · Жалоба On 11/10/2018 at 11:10 PM, zombi said: Правда скорость потока не очень получилась, примерно 135.6 KB/c А я продвинулся с виртуальным мостом. Поскольку думаю сначала нужно сделать надежную программу приемник на PC, а потом уже разбираться что да как на интерфейсах. Так вот под чистой консолью, в 64-х битном режиме с максимальной оптимизацией, с максимальным приоритетом процесса и потока, без всякого flowcontrol, на чистом Windows API, с чтением одним гигантским блоком в 500мег мне удалось сделать приемник на 560..480 мбит/c. Передатчик правда в это же самое время работает на скорости 1440..1200 мбит/с Вот пример командного файла запуска консольных передатчика и приемника - Run_all.cmd. Консольное приложение - VS_CommTest.exe Работает идеально, ни одного сбоя. Хоть гигабайтами качай. (но не больше 2Г, счетчик- int32_t ) Да, сам виртуальный мост я взял на https://www.hhdsoftware.com/virtual-serial-ports А WinRT API оказывается не умеет открывать порты на виртуальных мостах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 12 ноября, 2018 Опубликовано 12 ноября, 2018 · Жалоба 6 hours ago, AlexandrY said: удалось сделать приемник на 560..480 мбит/c. Передатчик правда в это же самое время работает на скорости 1440..1200 мбит/с Что то я совершенно запутался. Приемник имеет одну скорость, передатчик другую. Сколько килобайт в секунду Вы реально принимаете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 12 ноября, 2018 Опубликовано 12 ноября, 2018 · Жалоба 2 hours ago, zombi said: Что то я совершенно запутался. Приемник имеет одну скорость, передатчик другую. Это фишка виртуального моста. Он может буферизировать неограниченное количество байт, хоть всю RAM виндов зарезервировать под это. Поэтому передатчик все передал, а приемник может получать хоть весь день и даже после выключения и включения компьютера похоже мост сохраняет данные. Ну и скорость передачи гуляет очень сильно. Во первых, шедулер виндов даже после установки максимального приоритета не дает процессу больше 25-42% процентов времени. Сколько точно даст зависит от того как карты лягут. Во вторых в функции API ReadFile можно задать размер блока до 0xFFFFFFFF , что я и делал чтобы достичь максимальной скорости чтения. И она получалась максимальная до 70 мегабайт/сек. При размере блока 512 байт скорость снижается до 2.8 мегабайт/сек (Win 10 Home 1803, i7-6700HQ 3 GHz, 16.0 GB RAM) Шедулер виндов довольно хитрый. Увеличение блока до нескольких гигабайт не обязательно даст максимальную скорость. Там есть где-то оптимальный размер блока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 12 ноября, 2018 Опубликовано 12 ноября, 2018 · Жалоба 2 hours ago, AlexandrY said: виртуальный мост Что то я не понимаю, зачем оно вообще нужно. Как и зачем это применять в принципе? А как использовать конкретно в моём случае тем более не догоняю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 12 ноября, 2018 Опубликовано 12 ноября, 2018 · Жалоба 24 minutes ago, zombi said: А как использовать конкретно в моём случае тем более не догоняю. Но однако это странно. Вы ж начали с того что ищите программу, которая быстро могла бы качать по виртуальному COM порту. Я как бы вам сообщил предельные возможности таких програм. И даже спасибо не слышу. Но вам повезло, так как я сейчас как раз занят такой же проблемой. Только что протестировал скорость виртуального UART-а у моего модуля . Там стоит HS USB 2.0 и через него два COM порта организовано. Прокачал 500 мегабайт (524 288 000 байт) со скоростью 7 606 215 байт/сек (т.е. перекачал весь блок за 69 сек) без квитирования и контроля потока! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 12 ноября, 2018 Опубликовано 12 ноября, 2018 · Жалоба Так этот "виртуальный мост" заменит драйвера FTDI на свои? Или что произойдёт после его запуска? А тот который запускается с параметром "role=r" (это я так понимаю read) в какой файл сложит поступившие данные? И винда у меня 32-х битная. ( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 12 ноября, 2018 Опубликовано 12 ноября, 2018 · Жалоба 2 hours ago, zombi said: Так этот "виртуальный мост" заменит драйвера FTDI на свои? Или что произойдёт после его запуска? А тот который запускается с параметром "role=r" (это я так понимаю read) в какой файл сложит поступившие данные? И винда у меня 32-х битная. ( Не, сохранение в файл я еще не сделал. Тут все таки напоролся на неприятный момент. Штатный драйвер винды usbser.sys все таки изредка выдает сообщение USBD_STATUS_CANCELED и все рушится. Придется еще с этим разбираться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться