Кольцевой буфер тоже должен помещать пакет полностью. Иначе он не будет работать.
ЗЫ. В случае с переменной длинной пакета - его все равно придется считать. Проще 10*х заложить, сегодня память дешевая.
ЗЫЫ. Мусор на шине не влияет на длинну буфера, нет пакета в буфере - очищаем, пишем ошибку и работаем заново.
Последний раз редактировалось keysansa; 20.06.2022 в 14:09.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик
В задаче не хватает нескольких переменных:
1. Частота пакетов.
2. Требуемая актуальность данных.
Ну в целом да, получается это очередь а не стек.
А как тогда мне лучше производить чтение чтобы получать данные ближе к последним?
В одном цикле можно делать много чтений?
типа:
??Код:while SysComRead(com_settings.Port,ADR(buffer[1]),50,0) > 0 do (*не важно какая обработка*) end_while