Если запросить 100, а выдаст только 10, ещё и ошибку выдаст. Не люблю я это

Если запросить 100, а выдаст только 10, ещё и ошибку выдаст. Не люблю я это
Это, кстати, именно то, что рекомендовали на форуме NI — запрашивать гарантированно больше данных, чем прилетает в сообщении (скажем 4096), но мне такой путь тоже не нравится. Запрашивать надо столько, сколько ожидается. Вообще там всё достаточно детерминировано, как выше отмечалось, работает по прерываниям, и использовать запрос количества байтов нужно ну очень редко (такой код имеет тенденцию периодического опроса, что не есть хорошо), чистого VISA Read с правильно установленным значением ожидаемого количества байт в 99% случаях достаточно.
Вот кстати еще проблема,принимаю несколько разных пакетов по протоколу MavLink и Visa жутко тормозит,пакеты читаются ,но с задержками превышающими 200 и более мс,в контоллере я использую очередь,каждый пакет отправляется ,примерно, каждые 6 мс,вот как реализовывать прием протокола? Это пока черновик,но принцып приема виден.
Bytes at Port нужен для понимания есть ли вообще что-то в буфере,я читал на форуме,как его не любят),длины пакетов разные,длина пакета,вернее полезных данных,находится в 5 байте,только тогда понятно сколько принимать.Да я еще заметил,что на разных скоростях работы порта по разному обрабатываются данные,причем не обязательно эта скорость передачи должна быть выше.Borjomy_1 писал(а): ↑15 авг 2024, 17:13 Зачем Bytes at Port?
Отсутствует начальная синхронизация. При первом включении можно попасть на середину посылки. Задержки могут быть связаны с тем, что нет никакой проверки на размер пакета, который принимается просто как число. В результате при попадании в середину посылки можно получить совсем не тот размер и вычитывать значительно больше (на это уходит время), потом попадать не на начало следующего пакета и так по кругу.