|
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 1
|
|
Подсказка по алгоритму чтения/записи22.04.2015, 15:55. Показов 883. Ответов 1
Метки нет (Все метки)
Прошу подсказки для написании алгоритма.
Исходные данные: 1) Имеется специализированный контроллер. В нем 50кБ рабочей памяти (аналог RAM) и 4Мб внешней памяти (аналог ROM). 2) К контроллеру подключен некий аналоговый датчик, данные с которого должны сохраняться каждых 100мс в ячейку памяти в массиве находящемся в рабочей памяти, при достижении конца массива запись начинается с начала массива (при условиях о которых дальше). Размер одной записи 14 байт (значение сигнала — 4 байта, значение доп. — 4 байта, таймстамп — 6 байт) 3) Приложение на компьютере должно читать данные с рабочей памяти контроллера пачками не более PDU 190 байт и складывать в свою базу данных, также строить график. После вычитывания компьютер должен путем записи в рабочую память контроллера сигнализировать какие записи он уже вычитал. 4) В идеальном случае указатель чтения контроллером бежит рывками за указателем записи. В случае же когда связь между контроллером и приложением на компьютере обрывается, указатель чтения останавливается и при достижении определенного расстояния между указателями программа контроллера должна начать сохранять данные во внешнюю память, но на так как писать прямо во внешнюю память сразу нельзя, необходимо использовать функцию перемещения области памяти из рабочей памяти во внешнюю. Область которая подлежит перемещению во внешнюю память не должна поддаваться записи во время перемещения. Таким образом запись ведется до окончания всей памяти (и внешней и внутренней), после чего прекращается, пока не будет восстановлена связь с ПК. 5) Когда связь с ПК восстановлена необходимо начать процесс чтения данных в порядке в котором они были сохранены. Обратный алгоритм перемещения, аналогично, — копировать область памяти из внешней памяти в рабочую, а оттуда читать приложением. Параллельно может начаться процесс записи в рабочую область новых значений. Что имею: Работу с датчиком не рассматриваем - это я уже сделал. Что касается приложения на ПК - там свои вопросы выходящие за пределы этой темы. Алгоритм записи в память у меня сейчас приблизительно такой: - создано три массива данных по 600 записей (1 минута логирования) размером по 14*600 = 8`400 байт в рабочей памяти контроллера (в сумме 3*8400 = 25`200 байт). - создано 300 массивов данных по 600 записей (5 часов логирования) во внешней памяти - всего 300*8400 = 2`520`000 байт. - последовательно записываем данные в массивы рабочей памяти. Сначала заполняем первый, потом второй, когда начинаем заполнять третий - первый функцией перемещения области памяти копируем в первый из 300 массивов внешней памяти. Доходим до конца третьего - начинаем писать в первый, таким же образом копируем второй буферный массив во второй из 300 внешней памяти. Продолжаем пока внешняя память не будет заполнена. - указатель записи состоит из трех: номер текущего активного буфера (1..3 в рабочей памяти), номер текущей записи в этом массиве, номер последнего записанного массива во внешней памяти. В чем прошу помощи: Застопорился на алгоритме чтения записей приложением. Нужна подсказка в том, как лучше организовать вычитку данных приложением, какую структуру указателя чтения лучше применить, как приложение должно указывать какие данные уже получены. Нюанс в том, что на соотношении указателей записи и чтения, по сути, строится весь алгоритм. Приложение начинал делать давно и на тот момент представление как оно всё должно быть присутствовало, но потом переключился на другой проект, а теперь не могу ни вспомнить ни записей найти, потому прошу любой подсказки. Буду благодарен за любые предложения, в том числе связанные с пересмотром архитектуры.
0
|
|
| 22.04.2015, 15:55 | |
|
Ответы с готовыми решениями:
1
Написать функции для чтения/записи отдельных бит для любой записи из данного набора Как усовершенствовать алгоритму обратной польской записи? Ускорение чтения/записи |
| 22.04.2015, 19:09 | ||
|
0
|
||
| 22.04.2015, 19:09 | |
|
Помогаю со студенческими работами здесь
2
Скорость чтения/записи Чтения записи в реестре Ошибка чтения записи № Потоки чтения и записи. Ошибка чтения/записи в/из файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|