|
16 / 14 / 4
Регистрация: 21.11.2014
Сообщений: 320
|
||||||||||||||||||||||||||
Динамический размер кольцевого буфера(ФИФО)04.05.2018, 14:21. Показов 4863. Ответов 29
Метки нет (Все метки)
Здравствуйте есть программка с шаблоном для работы с кольцевым буфером(ниже приведу весь код).
Я задаю сразу размер буфера:
и причем буфер перезаписывается каждую N - секунду, к примеру каждые 5 секунд буфер перезаписывается но каждый рас может прийти разный размер как я написал выше, я подумал проста сделать переменную int bufSize и вписывать место размера как у меня в примере,но тогда я буду тупо забивать буфер,он же не будет переписывать а просто дописывать в буфер каждые 5 секунд,да и время длительности записи всегда будет по разному задоватся,то есть количество блоков данных (байт) зависит от настройки времени записи в буфер,как организовать правильно размерность буфера??? Добавлено через 1 минуту
0
|
||||||||||||||||||||||||||
| 04.05.2018, 14:21 | |
|
Ответы с готовыми решениями:
29
Очистка кольцевого буфера клавиатуры Своя реализация кольцевого буфера не робит...
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 28.05.2018, 18:30 | |
|
Почему тогда просто не накапливать данные в любом подходящем контейнере в течение 10 секунд, а после создать кольцевой буфер нужного размера?
0
|
|
|
16 / 14 / 4
Регистрация: 21.11.2014
Сообщений: 320
|
|
| 28.05.2018, 18:38 [ТС] | |
|
Потому что, мне данные приходят в реальном времени и там будет отдельная кнопка по сохранению данных, и с моей стороны я не могу отслеживать действия оператора, по этому надо это так как то сделать
Добавлено через 46 секунд Там в любой момент может изменится список параметров Добавлено через 2 минуты . Добавлено через 1 минуту Да и так много нюансов от которых мне приходится плесать,
0
|
|
|
2737 / 894 / 331
Регистрация: 10.02.2018
Сообщений: 2,137
|
|
| 28.05.2018, 19:24 | |
|
Nightwalker, правильно ли я понимаю вашу задачу?
1) данные приходят в программу из-вне пакетами разного размера, 2) данные должны складироваться пакетами в оперативной памяти, 3) по истечении определённого времени старые пакеты должны теряться, 4) в памяти всегда должны находиться пакеты за последние N секунд, 5) иногда оператор жмёт кнопку и все пакеты из памяти копируются на диски, 6) при сохранения на диски данные в памяти остаются и продолжают обновляться.
0
|
|
|
16 / 14 / 4
Регистрация: 21.11.2014
Сообщений: 320
|
|
| 28.05.2018, 19:41 [ТС] | |
|
Ygg, все верно
Добавлено через 6 минут Оператор даже может нажать во время N записи секунд
0
|
|
|
2737 / 894 / 331
Регистрация: 10.02.2018
Сообщений: 2,137
|
||
| 28.05.2018, 21:44 | ||
|
1) Какова регулярность получения новых пакетов? Можно ли говорить, что пакеты приходят стабильно, X пакетов в минуту. Или же стабильности нет, пакеты приходят пачками, а потом могут не приходить? 2) Есть ли ограничение на максимальный размер пакета? 3) Каковы, примерно, суммарные объёмы данных за период хранения? Они измеряются в байтах, килобайтах или мегабайтах?
0
|
||
|
16 / 14 / 4
Регистрация: 21.11.2014
Сообщений: 320
|
|
| 28.05.2018, 22:13 [ТС] | |
|
1) Ну почти можно сказать что пакеты приходят стабильно,но не факт но и беда не в этом (реуглярность 25 мс) но опять же не в этом дело (и да могут и не приходить но фокус в длительности записи,как время закончилось буфер на последнем размере и на нем остается
2) ограничения только по времени записи 3) quint8 и неважно слово полу слово,float или int,все в байтах Добавлено через 2 минуты мое дело выделить размерность буфера пока идет время записи Добавлено через 6 минут упростим задачу,каждые 5 секунда мне приходит пакет,и я допустим установил чтоб размерность буфера росло пока это время не совпадет с значением которым я задал к примеру 25 Добавлено через 1 минуту то есть как я писал в выше функции, время между пакетами сравневаю с заданым временем Добавлено через 50 секунд и если ровно или превышает то делаю pop и push
0
|
|
|
2737 / 894 / 331
Регистрация: 10.02.2018
Сообщений: 2,137
|
||||||
| 29.05.2018, 02:32 | ||||||
|
Nightwalker, если данных не много, частота стабильна и нужны размеры/параметры пакетов, то можно сделать два кольца: одно под характеристики пакетов, второе под сами данные. Размер под данные нужно задавать с запасом. Код может выглядеть как-то так.
0
|
||||||
|
16 / 14 / 4
Регистрация: 21.11.2014
Сообщений: 320
|
||||||
| 29.05.2018, 11:21 [ТС] | ||||||
|
Да данных в этом та и дело что много, и они непрерывно сыпятся,спасибо это тоже решение,но надо сделать именно то что прошу помочь, либо resize буфера,либо класс подправить,помогите используя мой шаблон организовать как то этот нюанс, и я бы с удовольствием бы взял это решение, но уже согласовано на базе того, и дело та в том что не нужно с запасом,нужно ровно впритык так все делать!!!!
Добавлено через 1 минуту В общем надо сделать нормально формирования размера буфера,мне видится только через resize который я собствено незнаю как написать Добавлено через 4 минуты да и данные как данные,это не от меня зависит как они приходят и что с ними у меня есть слот где это приходит и мое дело только с размером буфера разобратся Добавлено через 22 минуты nmcf, Я вот подумал почему бы и вправду не хранить в отдельном контейнере и потом создавать буфер размера того контейнера типо
Хотя нет,так тоже не пойдет Добавлено через 2 минуты он создает все время буфер ровно того размера сколько данных пришло а надо чтоб увеличивал Добавлено через 1 час 6 минут Все всем спасибо разобрался,тема закрыта!!! Добавлено через 1 час 26 минут А и маленький вопрос немного не в тему,но чтоб не создавать новую тему так как тоже к буферу относится, в общем мне будет приходить время в миллисекундах к примеру 25 мс, а я время записи задаю в секундах, то есть чтоб правильно щиталось,мне мои задаваемые секунды надо перевести в миллисекунды ,как это сделать ??? на что умножить или поделить надо ??? то есть мне приходит 25 милисекунд а я задал к примеру в Line Edit 30 секунд на что умножить или поделить 30 ??
0
|
||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 29.05.2018, 17:21 | |
|
30 * 1000.
0
|
|
|
16 / 14 / 4
Регистрация: 21.11.2014
Сообщений: 320
|
|
| 29.05.2018, 18:49 [ТС] | |
|
Спасибо
0
|
|
| 29.05.2018, 18:49 | |
|
Сделать небольшой аналог досового кольцевого буфера Отображение на экране значений головного и хвостового указателей кольцевого буфера в виде hex строк размер буфера WinInet и размер буфера Передать размер буфера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|