|
0 / 0 / 1
Регистрация: 07.08.2014
Сообщений: 63
|
|
Обработка непрерывного потока данных15.08.2018, 09:30. Показов 1256. Ответов 5
Метки нет (Все метки)
Добрый день. Поставили на работе задачу организовать прием и обработку данных (построение на основе них графика) с устройства, которое шлет эти данные в режиме NON-STOP. Обмен производится через COM-порт, размер одной посылки - 4 байта. Вот только будет все это производится на скорости 115200 с частотой в идеале 2кГц. Т.е. очень быстро и много! Вот у меня и созрел вопрос к сообществу, как лучше организовать такой прием? Между собой посовещались и решили не проверять целостность пакета, т.е. не добавлять, скажем, никакой CRC-8, но это не точно
Все в угоду интенсивности обмена. Как лучше принимать? Просто рубить поток по 4 байта? Как определить начало обмена, чтобы не потерять первые байты? Пока что-то ничего на ум не приходит. Может кто сталкивался уже, или есть какие-нибудь наработки?
0
|
|
| 15.08.2018, 09:30 | |
|
Ответы с готовыми решениями:
5
Обработка потока данных
|
|
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
|
|
| 15.08.2018, 09:36 | |
|
У устройства должен быть описан протокол, начало пакета и т.д.
Добавлено через 1 минуту Или в попытке перебрать/декодировать первые 2-3 пакета определить смещение в байтах.
0
|
|
|
0 / 0 / 1
Регистрация: 07.08.2014
Сообщений: 63
|
|
| 15.08.2018, 10:13 [ТС] | |
|
Т.е. все-таки нет других вариантов, кроме как создать некий протокол? А как лучше задавать начало пакета, чтобы не было неоднозначностей? Каким-нибудь нулевым байтом или 0xFF? А если внутри 4-х байтового числа будет данный байт...
0
|
|
| 15.08.2018, 10:45 | |
|
0
|
|
|
|
||
| 15.08.2018, 11:08 | ||
|
Принимающая программа читает входной поток пока не примет 0xFFFFFFFF. Как только стартовая последовательности принята - начинает чтение данных. Если после принятия 400 байт нет значение 0xFFFFFFFF, значит где-то произошла ошибка, и программа снова переходит в режим ожидания стартовой последовательности. Само значение 0xFFFFFFFF конечно должно быть зарезервировано и не должно появляться в данных. Возможен случай, когда стартовая последовательность встречается на границе между данными (например 0xabcdffff 0xffffabcd) но в таком случае через 400 байт не встретится 0xFFFFFFFF и программа поймет, что чтение идет неправильно. Если в исходных данных такая ситуация встречается часто, то можно увеличить длину стартовой последовательности и составить ее из тех значений, которые редко встречаются в данных.
0
|
||
|
0 / 0 / 1
Регистрация: 07.08.2014
Сообщений: 63
|
|
| 15.08.2018, 12:10 [ТС] | |
|
Rius, тут загвоздка не в принимающем устройстве, а в отправляющем. Там стоит не сильно мощный контроллер PIC18F25K22, у него максимальная скорость передачи допустимая - 115200 (на деле 111709). А данные будут браться по прерыванию с АЦП, которое как раз и прерываться будет с частотой 2кГц. Т.е. процесс выглядит так: прерывание, данные забираю, отправляю на ПК, жду следующего прерывания.
0
|
|
| 15.08.2018, 12:10 | |
|
Помогаю со студенческими работами здесь
6
Обработка прерывного потока данных Построение таблицы в STM32 (обработка потока данных) Обработка звукового потока
Обработка видео-потока Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
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(), которая. . .
|