|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
|
Работа с кольцевым буфером24.08.2020, 18:57. Показов 10133. Ответов 154
Метки нет (Все метки)
Здравствуйте, пытаюсь написать программу для usb осциллографа Hantek6204bc, понял, что если читать и сохранять данные в файл одном потоке, осциллограф может во время ожидания часть данных пропустить, поэтому решил чтение данных осциллографом запустить в отдельном потоке, соответственно запись данных в файл тоже в отдельном потоке. Осциллограф читает данные в кольцевой буфер и помечает участок буфера как записанный, переходит к следующему. После первого считывания, активируется поток записи в файл и записывает в файл помеченные участки буфера. Собственно наконец-то сам вопрос, поток чтения осциллографа, опережает поток записи в файл и в определенный момент обнуляет те данные которые поток записи собирается записать в файл, программа крашится. Как этого избежать? Или может в данном случае нужно использовать не кольцевой буфер?
0
|
|
| 24.08.2020, 18:57 | |
|
Ответы с готовыми решениями:
154
Очередь с кольцевым буфером Работа с буфером обмена
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 28.08.2020, 19:36 | ||
|
И ты смотрел, что у тебя возвращается в myControlData? Мне кажется, там должна быть какая-то важная информация
Добавлено через 1 минуту
0
|
||
|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
||
| 28.08.2020, 19:37 [ТС] | ||
|
Но ведь одна запись, это 4096 замеров, с паузами между ними заданными частотой дискретизации
Добавлено через 1 минуту В общем все равно сижу и пробую по разному
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 28.08.2020, 19:42 | |||
|
Добавлено через 1 минуту Добавлено через 2 минуты А то ты пытаешься сделать всё и сразу. В результате не работает ничего.
0
|
|||
|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
||
| 28.08.2020, 19:43 [ТС] | ||
|
Но есть еще вопрос, опять прочитал описание splice, что-то мне покоя не дает вот этакая строчка: This effectively inserts those elements into the container and removes them from x, altering the sizes of both containers. описание вот откуда брал: https://www.cplusplus.com/refe... st/splice/
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 28.08.2020, 19:47 | ||
|
Я вроде так и говорил. Что тебя смущает?
0
|
||
|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
|
| 28.08.2020, 19:51 [ТС] | |
|
Меня смущает, что из одного удаляет, в другой записывает, в функции чтения data.splice(data.end(), buffers, buffers.begin());, после записи в файл buffers.splice(buffers.end(), data, data.begin());
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 28.08.2020, 20:01 | ||
|
При записи наоборот, сохраняем первый элемент из data и перемещаем его в хвост buffers.
0
|
||
|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
||
| 28.08.2020, 20:04 [ТС] | ||
|
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 28.08.2020, 20:08 | ||
|
Тот же самый кольцевой буфер, только более гибкий.
1
|
||
|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
|
| 28.08.2020, 20:10 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
||||||||||||||||
| 30.08.2020, 18:30 [ТС] | ||||||||||||||||
|
Подскажите еще один нюанс, если я создам еще один буфер:
0
|
||||||||||||||||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,350
|
|||||||
| 30.08.2020, 19:07 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
|
| 30.08.2020, 19:13 [ТС] | |
|
0
|
|
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,350
|
|
| 30.08.2020, 19:26 | |
|
Как можно "далеко не так представлять кольцевой буфер"? Само название - пишет в буфер, когда кончается место - начинает писать сначала, затирая уже имеющуюся инфу.
0
|
|
|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
|||||||||||
| 30.08.2020, 23:49 [ТС] | |||||||||||
|
Я изначально представлял его как некий массив в который мы пишем по кругу, то есть дошли до последнего элемента, перескочили на первый и продолжаем. В том примере который мне показали, делается немного иначе, цитирую:
Есть зарезервированная память, buffers, куда можно записывать данные. И память с данными, data, которую нужно записать в файл и перекинуть обратно в зарезервированную. Тот же самый кольцевой буфер, только более гибкий. Механизм отличается от того что я себе представлял. Как можно "далеко не так представлять кольцевой буфер"? Собственно вот так я далеко не так представлял себе кольцевой буфер. Добавлено через 4 часа 9 минут oleg-m1973, я нашел какую-то странность в коде если сделать вот так в потоке записи:
если сделать вот так:
P.S. Осциллограф уже много раз проверил в обычной консольной программе, там все работает, а тут не пойму что за беда такая
0
|
|||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 30.08.2020, 23:57 | |||
|
Добавлено через 1 минуту
0
|
|||
|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
|
| 30.08.2020, 23:57 [ТС] | |
|
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 30.08.2020, 23:58 | |||
|
Добавлено через 38 секунд
0
|
|||
|
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 92
|
||
| 30.08.2020, 23:59 [ТС] | ||
|
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 30.08.2020, 23:59 | |
|
0
|
|
| 30.08.2020, 23:59 | |
|
Работа с буфером... Работа с буфером обмена
Работа с буфером обмена и заголовочные файлы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
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.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|