Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
24.04.2017, 23:02
|
|
Вид на жительство
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
|
Re: Сохранение и загрузка настроек в текством файле
Сообщение от индюк
|
H4LF, чувак - ты посты чтоль набиваешь??? ничо толкового я ни капли в твоих постах не увидел
|
Содержательнее этого Вашего поста я на всём форуме не видел. Спасибо за замечание, я буду стараться над увеличением своей толковости. Всего доброго.
|
|
|
|
24.04.2017, 23:16
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,841
Сказал спасибо: 2,531
Сказали Спасибо 11,764 раз(а) в 5,895 сообщении(ях)
|
Re: Сохранение и загрузка настроек в текством файле
Сообщение от MisterDi
|
самое неприятное в этой ситуации - дублирование переменных и указателей на них.
|
MisterDi, насколько я понимаю, текстовый файл нужен для человека (для разборок). Человек способен в нем отыскать то, что его интересует.
Дальше. Сохраняет настройки конкретный тип устройства и эти настройки актуальны только для него. Поэтому чисто формально по таблице и действовать на запись и на считывание. Таблица имен настроек и таблица (ну или списки) переменных. Преобразование - стандартная функция, в которую передаются указатели на имя и на переменную. Всего несколько шаблонов. Сгруппировать по типам и циклом их, циклом...
Честно, не понял, в чем затык?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
25.04.2017, 04:30
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: Сохранение и загрузка настроек в текством файле
Вопрос о необходимости именно текстового представления.
Если таки будет человек посреди - тут можно и заморочиться.
Но двоичная выгрузка данных в достаточно простом формате:
длина, дескриптор, данные позволит весьма сильно сократить код в устройстве за счёт преобразования данных, да и на производительности/реакции выиграть.
В заголовке данных можно предусмотреть поле с версией для разбора этих данных и исключения коллизий форматов.
А сами по себе алгоритмы и код для разбора (при ещё сохранившемся желании таки работать с текстом) стоит поискать в библиотеках Unix.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
25.04.2017, 05:48
|
|
Вид на жительство
Регистрация: 21.07.2009
Сообщений: 350
Сказал спасибо: 47
Сказали Спасибо 98 раз(а) в 58 сообщении(ях)
|
Re: Сохранение и загрузка настроек в текством файле
Готового решения не знаю, но алгоритм простой.
Перед данными пишется идентификатор, указывающий на тип данных. Чтобы был уникальным и не путался с данными, можно сделать двух-трехсимвольным. Скажем, #!n, где n указывает тип данных. Тогда и разделители не нужны. Пишется всё подряд. При считывании, всё что от идентификатора до идентификатора - данные.
Хотя... можно и перевод строки делать.
Последний раз редактировалось anton26ru; 25.04.2017 в 06:04.
|
|
|
|
25.04.2017, 09:38
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Сохранение и загрузка настроек в текством файле
раньше, например на PC, настройки сохраняли в ini файл, может подойдет простой парсер:
https://github.com/benhoyt/inih
|
|
|
Эти 2 пользователя(ей) сказали Спасибо oleg110592 за это сообщение:
|
|
|
25.04.2017, 10:54
|
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Сохранение и загрузка настроек в текством файле
Сообщение от MisterDi
|
Возникла необходимость сохранять набор переменных в текстовый файл и затем выполнять загрузку из этого же файла.
|
А зачем текстовый? Какие-бы не были переменные, в памяти они всё равно хранятся в виде байт. А посему ничто не мешает определить юнион, в который входят все переменные, обёрнутые структурой, и массив байт, по длине этих переменных. Записав или считав этот массив автоматически запишешь или прочитаешь все переменные, вне зависимости от их типа, длины, расположения в памяти (биг или литл эндиан).
|
|
|
Эти 2 пользователя(ей) сказали Спасибо Someone за это сообщение:
|
|
|
25.04.2017, 10:56
|
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Сохранение и загрузка настроек в текством файле
Сообщение от H4LF
|
У ТС вполне ясная и определённая задача - сохранять настройки в текстовый файл и загружать из текстового же файла.
|
Найн. Задача сохранять и загружать настройки в файл. Что вовсе не обязательно текстовый.
|
|
|
|
25.04.2017, 11:08
|
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Сохранение и загрузка настроек в текством файле
Типа так:
Код:
|
typedef union
{
unsigned char bytes[10]; // массив байт
struct
{
struct
{
unsigned char DeviceCmd; // 0x0000 команда извещателю
unsigned char DeviceStatus; // 0x0001 состояние извещателя
unsigned char SelfTestInterval; // 0x0002 интервал самотестирования, минут
unsigned char AlarmPeriod; // 0x0003 длительность анализируемого периода для тревог, секеунд
unsigned char DeviceAdress; // 0x0004 адрес устройства в сетях модбас
unsigned char AlarmCountIR; // 0x0005 предел счётчика ИК-тревог, превышение - тревога
unsigned char AlarmCountUV; // 0x0006 предел счётчика УФ-тревог, превышение - тревога
} set;
struct
{
unsigned char AlarmCountIR; // счётчик тревог по УФ каналу
unsigned char AlarmCountUV; // счётчик тревог по ИК каналу
unsigned char AlarmPeriod; // период тревог
} var;
};
} TData; |
|
|
|
|
25.04.2017, 11:14
|
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Сохранение и загрузка настроек в текством файле
Можно обойтись и без массива. Тут главное все переменные в структуре чтоб были. А после можно и указатель установить на начало структуры, писать и читать по байту, пока всю структуру не запишешь/считаешь.
Последний раз редактировалось Someone; 25.04.2017 в 11:18.
|
|
|
|
25.04.2017, 15:47
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: Сохранение и загрузка настроек в текством файле
И для такого проекта создать и вести один/набор .h файлов со всеми используемыми в таком обмене структурами данных.
Если использовать правило по добавлению новых элементов в конец, и разобраться таки с организацией хранения в файле - система станет вполне вменяемой в реализации, при минимуме лишнего кода и времени на ее сопровождение (как своих ресурсов, так и в целевой системе).
Текстовое представление - оно исключительно для человека и при необходимости частых анализа и правки их минимальными средствами.
Но этот вопрос спокойно решается достаточно простой программой для просмотра/редактирования, при сохранении raw формата самого файла.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 26.04.2017 в 04:23.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:47.
|
|