Парсинг бинарного файла.
Прошу заранее простить за глупые вопросы. Язык только начал изучать и для меня это хобби-поэтому буду благодарен любому совету. Проблема такова:
Имеется бинарный файл, рядом с ним лежит.ini файл, в котором описана структура пакетов (фреймов) двоичного файла. Описание каждого параметра бинарного файла занимает 7 полей в .ini файле .
Проблема в том, что количество и тип параметров в .ini файле заранее не известен. Обычно это около 100 параметров. И тогда эти 100 параметров образуют, как я это понимаю, в бинарном файле непрерывную область - пакет(фрейм).
Пакеты пишутся в файл с частотой 1 раз в сек. Продолжительность - 2 суток - далее создается новый файл. Т.е. для каждого файла мы получаем где-то 2,5млн. отсчетов каждого параметра.
На основании ini файла я создал модель, которую вывел на табличное представлене. Необходимо, при выборе определенного параметра в представлении построить график по данным выбранного параметра. А из-за того что количество и тип параметров в пакете разное из-за недостатка знаний не могу понять как и куда их считывать и как правильно приводить к типу.
К примеру 1 параметр имеет имя MKS и тип Int8. Как мне создать контейнер, к который запихнуть 2,5 млн. отсчетов данного параметра и по ним построить график?
// Пример .ini файла [CONST] RegVer=3.1 DATA=03/11/19 Nomer=402 CharSet=Win [ITEMS] Count=87 ParamType1=Int8 ParamName1=MKS ParamDispName1=Наличие связи ParamKoef1=1,000000 ParamMax1=32,000000 ParamEdIzm1= ParamFlags1=0 ParamType2=uInt16 ParamName2=Regim ParamDispName2=Режим работы ParamKoef2=1,000000 ParamMax2=65535,000000 ParamEdIzm2= ParamFlags2=1 ParamType3=uInt8 ParamName3=I1 ParamDispName3=Ток 1-го двигателя ParamKoef3=10,000000 ParamMax3=1400,000000 ParamEdIzm3=А ParamFlags3=1 ParamType4=uInt8 ParamName4=I2 ParamDispName4=Ток 1-го двигателя ParamKoef4=10,000000 ParamMax4=1400,000000 ParamEdIzm4=А ParamFlags4=1
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Akiv Doros
- 11 ноября 2024 г. 14:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50баллов,
- Очки рейтинга-4
- molni99
- 26 октября 2024 г. 1:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
- molni99
- 26 октября 2024 г. 1:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20баллов,
- Очки рейтинга-10
Добрый день. А почему бы не писать данные в базу данных, например SQLite?
Используйте базу данных SQLite. Организация разнородных данных в одном файле - это будет тот ещё геморрой.
Можете начать изучение с этой статьи по SQLite и таблицам
Проблема в том, что эта структура уже реализована промышленно. Я никак не могу повлиять на ее измениние. Мне же хочется добавить автоматическую диагностику параметров по определенным критериям.
Но для начала нужно придумать как эту структуру считать (
Далее да. Логично писать в базу данных. Из базы делать выборку и строить график за выбранный период.
Но для начала надо написать парсер для этого файла.
Есть хоть какие-то идею в каком направлении двигаться?
Добрий день, не до кіцня зрозумів для чого таке може бути
але справді можите використовувати SQLite, ну або вже якщо дуже хочеться іменно в файл писати json, xml
так парсер по перехочу рядка рахуйте тоді я так розумію що контейнери завжди йдуть через два пустих рядка
Извините. Все равно не могу понять. Мне нужно файл прочитать, а не писать. Я не создаю его.
Вот допустип я каждый параметр прочитал и записал в базу. Но когда читаю с базы мне эти абстрактные данные нужно привести к типу, .toInt() к примеру, запихать в массив интов и построить график. И я по прежнему не могу понять как в данном случае определиться к какому типу я должеть приводить.
я вам просто кину пару речей думаю розберетесь, так читаєм файл по рядках
тут є багато прикладів http://www.java2s.com/Code/Cpp/Qt/CatalogQt.htm
далі вам потрібно парсати самі проперті
початком проперті яб рахував ParamType по ній би робив апенд в список, як приклад нижче (кастильно но.....)))) перше що прийшло в голову )