Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 24.10.2014
Сообщений: 21

Построение таблицы в STM32 (обработка потока данных)

03.02.2015, 18:12. Показов 5397. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, у меня есть STM32 и несколько датчиков, которые каждые 100 мс. присылают данные, которые мне нужно обработать и сформировать определенную реакцию. Динные могут сильно отличаться, соответственно использование if..else не является разумным решением... Есть ли возможность построить какую-то таблицу, чтобы данные, которые приходили сравнивались с ней и исходя из этого можно было сформировать определенный сигнал на выходе

Может у Вас будет свой вариант по обработке большего потока данных
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2015, 18:12
Ответы с готовыми решениями:

Обработка потока данных
Здравствуйте. Возникла задача обработки данных, поступающих с некого датчика по вай-фаю. Сейчас есть программа, которая содержит класс...

Обработка непрерывного потока данных
Добрый день. Поставили на работе задачу организовать прием и обработку данных (построение на основе них графика) с устройства, которое шлет...

Обработка прерывного потока данных
Есть поток данных, который обрабатывается в цикле с засыпанием. Реализован через try while. Через какое то время (10 секунд) число...

5
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
03.02.2015, 18:18
А что за данные-то? Каков разброс величин? Какое количество интервалов?
0
0 / 0 / 0
Регистрация: 24.10.2014
Сообщений: 21
03.02.2015, 18:27
Цитата Сообщение от Iddy_Im
А что за данные-то? Каков разброс величин? Какое количество интервалов?
Динные необходимы для работы двигателя в разных режимах и ещё некоторого оборудования. Разброс от 1 до 1000, интервалов будет больше 15. Допусти 1-50 - один режим работы, 50-100 - другой, если предыдущий был 1-50, а сейчас 500-600, то необходимо выполнить дополнительное действие и т.д.
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
03.02.2015, 18:32
> Разброс от 1 до 1000
Если есть лишний килобайт, то загоняем в массив все состояния (если состояний меньше 256, получится как раз 1000 байт). Потом просто выбираем нужное состояние по полученному значению разыменованием указателя, т.е. экономим такты на ifах. Действительно, стандартный табличный подход.
Сохраняете предыдущее состояние > в зависимости от текущего принимаете то или иное решение.
Еще можно создать таблицу указателей на функции в количестве, равном количеству возможных состояний > сразу же по текущему состоянию вызываете нужную функцию, где и происходит итоговая обработка данных.
0
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 200
03.02.2015, 18:35
если есть возможность привести показатель к меньшему количеству значений, например поделить на 50, то можно привести все к
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
switch(x)
{
case (0):
{
диапазон 1
briok;
}
case (1):
{
диапазон 2
briok;
}
case(2)://диапазон 3
{//ничего не делаем и уйдем в следующий обработчик, поскольку он в том же диапазоне
}
case(3):
{
диапазон 3
briok;
}
}
0
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 200
03.02.2015, 18:51
еще проще будет, если сделать функцию, в которую будете загонять значение показания, внутри будет хоть теми же if else выставляться нужный режим - индекс, который и будет возвращаться из функции (от 0 до n), затем использовать индекс с буфером из указателей функций обработчиков режимов, походу мудрено описал...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2015, 18:51
Помогаю со студенческими работами здесь

Обработка данных из потока ввода
Программа в консоли. На экране консоли происходят некоторые действия, в которые пользователь может вмешаться нажатием клавиш, или не...

Построение приоритетных очередей и обработка данных на их основе
Доброго времени суток! Необходимо реализовать очередь на базе списков, применяя комбинированный алгоритм для ее обслуживания. Затем ...

Обработка запроса на остановку потока внутри этого потока
Нужно обрабатывать запрос на остановку потока внутри самого потока. Вопрос - как это записать?

Построение приоритетных очередей и обработка данных на их основе (нужны комментарии)
Нужно максимально подробно прокомментировать код. Тема: Построение приоритетных очередей и обработка данных на их основе Задание:...

Построение графика из данных таблицы oracle
Есть какие-то средства отображать на web график построенный либо из таблицы с данными, либо из запроса к таблице ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru