-
- Это не прослойка, это мой код. И да, он там ждет окончания
передачи. - POV_(02.12.2020 08:45, )
- А чего тогда идиотские вопросы задаёшь? Твоё ожидание -- и есть те
250мкс. Это ещё и быстро оказалось. Я бы расчитывал на десяток
миллисекунд... - fk0(02.12.2020 12:48)
- Ну не между же каждыми запросами у процесса время отбирается, как
думалось. Ни разу два байта не слеплены. Всегда большой интервал. - POV_(02.12.2020 13:18, )
- Твоя программа на delphi не работает напрямую с чипом компорта. Она
это делает через драйвер ОС. Вызов которого сам по себе -- ОЧЕНЬ
ТЯЖЁЛЫЙ. Поэтому нормальные люди не пишут по байтику, а по
килобайту за раз... Потом сам драйвер тоже твои запросы
отрабатывать может не непосредственно, записывать в очередь и
конечным автоматом обслуживать по мере поступления прерываний,
например. И наконец USB -- там драйвер в чип вообще что-то записать
может только сформировав пакет и fk0(218 знак., 02.12.2020 13:36)
- Не знаю про FT232, но
осуждаюв стандартном CDC-VCP байтики, которые нужно передать в линию, летят в Bulk Endpoint, а команды CDC_SET_LINE_CODING, CDC_SET_CONTROL_LINE_STATE и CDC_SEND_BREAK летят в Control Endpoint, и с синхронизацией там всё грустно. - йцyкeн(02.12.2020 13:54)- По факту там все ок и setbreak-delay-clearbreak на винде отлично
работает. И с последующей передачей имеет минимальную задержку.
Перекючение скоросте Andreas(49 знак., 02.12.2020 17:28)
- Что там нормального, если этот delay слабопредсказуем?... POV_(955 знак., 02.12.2020 19:45, )
- Delay не менее заданного выходит в винде. Длину Break согласно стандарту и все ошибки приема, включая стоп ессно проверяю. Это не хорошо, а позволяет работать любому оборудованию с любым, причем и в поганых условиях. Если соответствие стандарту тебе важнее совместимости - флаг в руки, но на винде сделать это нереально. - Andreas(02.12.2020 21:07)
- "Там" - это в FT232 или в CDC? - йцyкeн(02.12.2020 19:26)
- Скорее всего в очереди запросов к драйверу винды. - Andreas(02.12.2020 21:08)
- Что там нормального, если этот delay слабопредсказуем?... POV_(955 знак., 02.12.2020 19:45, )
- По факту там все ок и setbreak-delay-clearbreak на винде отлично
работает. И с последующей передачей имеет минимальную задержку.
Перекючение скоросте Andreas(49 знак., 02.12.2020 17:28)
- Не знаю про FT232, но
- Твоя программа на delphi не работает напрямую с чипом компорта. Она
это делает через драйвер ОС. Вызов которого сам по себе -- ОЧЕНЬ
ТЯЖЁЛЫЙ. Поэтому нормальные люди не пишут по байтику, а по
килобайту за раз... Потом сам драйвер тоже твои запросы
отрабатывать может не непосредственно, записывать в очередь и
конечным автоматом обслуживать по мере поступления прерываний,
например. И наконец USB -- там драйвер в чип вообще что-то записать
может только сформировав пакет и fk0(218 знак., 02.12.2020 13:36)
- Ну не между же каждыми запросами у процесса время отбирается, как
думалось. Ни разу два байта не слеплены. Всегда большой интервал. - POV_(02.12.2020 13:18, )
- Без пауз надо сразу весь буфер передавать. Хотя все равно будет
пауза между переключениями скоростей. Но смысл парится паузами?
Дмху пофиг на паузы, даже лучше если они есть при неболтшом числе
каналов. Всетаки обычно 20..50 кадров в секунду передают. - Andreas(02.12.2020 08:51)
- Прошивку накатал с контролем mab и таймаута между байтами (ну чтобы
какие-то разумные величины были, хотя, конечно, максимум интервалов
не оговаривается). Ессно она такой дрянной пакет игнорит. Как уж
тут отлаживаться... POV_(151 знак., 02.12.2020 09:21, )
- Не понял, но осуждаю. У меня пакет валиден, если есть долгий ноль,
первый ноль и все байты пакета приняты без аппаратных ошибок. Тогда
в начале следующего идет передача нужных каналов верхнему уровню.
Таймаут большой и на весь пакет.Работает давно, много, с разным
оборудованием и без проблем. - Andreas(02.12.2020 11:33)
- MAB должен быть не менее 8 мкс. А ты просто имеешь некий "длинный
0", затем "1" неизвестной длины (может иголка помехи или вообще
секунду высокий уровень длится, т.к. это не dmx, а херня пришла)
после которого получил 0й байт. Я тоже так работал, сотни единиц
оборудования 20 лет трудятся. Но сейчас хочу сделать
по-человечески. - POV_(02.12.2020 12:03, )
- С нашей прогой на винде прекрасно работает куча оборудования,
значит на маб кладут. И ты рискуешь получить несовместимость с
чужими источниками дмх. И клиенту будет пох на оправдание
стандартом. - Andreas(02.12.2020 17:23)
- Доооо, могуче! - POV_(02.12.2020 17:27, )
- bit banging на виндах или линуксе -- невозможен. Гарантировать что
между байтами винда не пойдёт позаниматься чем-то другим она тоже
не может. Может секунды между байтами и не будет, но в современных
виндах задачи переключаются 1000 раз в секунду и вытеснить тебя на
десяток миллисекунд другим процессам -- как нефиг делать.
Соответственно таймауты менее сотен миллисекунд -- абсурдны. - fk0(02.12.2020 12:56)
- Досадно, но не смертельно. - POV_(02.12.2020 13:10, )
- С нашей прогой на винде прекрасно работает куча оборудования,
значит на маб кладут. И ты рискуешь получить несовместимость с
чужими источниками дмх. И клиенту будет пох на оправдание
стандартом. - Andreas(02.12.2020 17:23)
- MAB должен быть не менее 8 мкс. А ты просто имеешь некий "длинный
0", затем "1" неизвестной длины (может иголка помехи или вообще
секунду высокий уровень длится, т.к. это не dmx, а херня пришла)
после которого получил 0й байт. Я тоже так работал, сотни единиц
оборудования 20 лет трудятся. Но сейчас хочу сделать
по-человечески. - POV_(02.12.2020 12:03, )
- Не понял, но осуждаю. У меня пакет валиден, если есть долгий ноль,
первый ноль и все байты пакета приняты без аппаратных ошибок. Тогда
в начале следующего идет передача нужных каналов верхнему уровню.
Таймаут большой и на весь пакет.Работает давно, много, с разным
оборудованием и без проблем. - Andreas(02.12.2020 11:33)
- Прошивку накатал с контролем mab и таймаута между байтами (ну чтобы
какие-то разумные величины были, хотя, конечно, максимум интервалов
не оговаривается). Ессно она такой дрянной пакет игнорит. Как уж
тут отлаживаться... POV_(151 знак., 02.12.2020 09:21, )
- А чего тогда идиотские вопросы задаёшь? Твоё ожидание -- и есть те
250мкс. Это ещё и быстро оказалось. Я бы расчитывал на десяток
миллисекунд... - fk0(02.12.2020 12:48)
- Это не прослойка, это мой код. И да, он там ждет окончания
передачи. - POV_(02.12.2020 08:45, )