Просмотр полной версии : Сохранение bool в файл
День добрый!Надоело менять аккумуляторы решил сделать запись в файл, сделал массив dword в нем в одну переменную упаковал bool, числовые переменные сохраняются без проблем, а вот дискретные ни в какую, что-то не могу сообразить почему, и еще вопрос а возможно вести запись файл постоянно или нет, просто у меня идет отсчет и надо что-бы после восстановления питания возобновилась работа с момента остановки
в файл пишется байтами, отводите на каждый буль по байту
и второе писать постоянно то зачем, записали состояние при пропаже питания и восстановили после
Т.е в каждой переменной дворд по 4 буля, а успеет записать без аккумуляторов порядка 50 переменных
не вижу препятствий упаковать все биты в тот же дворд и потом записать
да вот как раз и не хочет он так сохранять упаковываю запись проходит, после включения все числа на месте а биты на нуле
что значит биты на нуле, Вы же число записывали, это число обратно получаете?
Гарчев Евгений
22.04.2015, 19:32
День добрый!Надоело менять аккумуляторы решил сделать запись в файл, сделал массив dword в нем в одну переменную упаковал bool, числовые переменные сохраняются без проблем, а вот дискретные ни в какую, что-то не могу сообразить почему, и еще вопрос а возможно вести запись файл постоянно или нет, просто у меня идет отсчет и надо что-бы после восстановления питания возобновилась работа с момента остановки
Файл пишите по изменению значений, или по времени, или и так и так. Постоянно писать не надо, быстро "убьете" flash.
На счет булевых переменных - может они у Вас просто при включении питания инициализируются нулевыми значениями и перезаписываются в массив?
Да числа без проблем биты перед записью то-же установлены, а после числа в порядке а биты по нулям
Да числа без проблем биты перед записью то-же установлены, а после числа в порядке а биты по нулям
Вы понимаете что ерунду говорите, например упаковали Вы бит в 9 разряд WORDа, получилось число 1024, сохранили его в файл, потом прочитали файл число должно получится 1024 и значит бит тоже на месте, а если бит равен нулю, значит и число будет равно нулю. Ну и где Вы вводите в заблуждение, с битами или с числами?
Запись при включении заблокировано таймером на 1 минуту ,так что перезаписатся они не могут
Вы понимаете что ерунду говорите, например упаковали Вы бит в 9 разряд WORDа, получилось число 1024, сохранили его в файл, потом прочитали файл число должно получится 1024 и значит бит тоже на месте, а если бит равен нулю, значит и число будет равно нулю. Ну и где Вы вводите в заблуждение, с битами или с числами?
Понимаю но факт остается фактом, завтра попробую два архива создать один на числа другой на биты и скрины сделаю
может просто распаковывать не умеете
может просто распаковывать не умеете
В смысле чем распаковка отличается от упаковки?
Понимаю но факт остается фактом, завтра попробую два архива создать один на числа другой на биты и скрины сделаю
Согласен с уважаемым capzap. Простой алгоритм же (упрощённо,для примера 8 переменных bool):
1. Берём ФБ PACK. Запаковываем в 8 bool в 1 WORD. Допустим получили 256.
2. Сохранили его в файл.
3. После считали это число из файла.
4. Взяли ФБ UNPACK. Завели не него наш WORD. На выходе получили биты как были при записи.
В чем проблема то ?
17871А что так не прокатит?
Похоже не в битах дело, а скорее всего в программе где-то обнуляются значения. Чтобы убедиться в этом создайте две отладочные переменные. Одной из них перед строкой записи в файл присвойте значение сохраняемой переменной, а второй присвойте значение прочитанной переменной сразу после чтения из файла.
Попробуйте при первом включении не запускать основной код до тех пор, пока не прочитаются из файла сохраненные переменные.
17871А что так не прокатит?
Честно говоря у меня было что не прокатывало. Не знаю почему, но было. Через ФБ работало.
Раз есть траблы - значит где-то накосячили.
Понимаю но факт остается фактом, завтра попробую два архива создать один на числа другой на биты и скрины сделаю
Если 10й бит=1 то число >= 1024.
Число < 1024 то 10й бит=0
О каких фактах речь ? Вы не скрины, а код кладите. Что за дурацкая манера показывать картинки ?
Честно говоря у меня было что не прокатывало. Не знаю почему, но было. Через ФБ работало
Форум магов - не здесь. Если было что - значит чего-то не так сделали.
Ладно утро вечере мудренее, завтра посмотрим
Форум магов - не здесь. Если было что - значит чего-то не так сделали.
Дык понятно что где то косяк был. Только так и не смог найти до сих пор. :D
А через ФБ всегда идет с первого раза.
Дык понятно что где то косяк был. Только так и не смог найти до сих пор.
А через ФБ всегда идет с первого раза.
Может пригодится, тут уважаемый Валенок много полезного по этому поводу сказал http://www.owen.ru/forum/showthread.php?t=16275&p=130407&viewfull=1#post130407
Может пригодится, тут уважаемый Валенок много полезного по этому поводу сказал http://www.owen.ru/forum/showthread.php?t=16275&p=130407&viewfull=1#post130407
Интересно, очень интересно. Спасибо за ссылку.
И спасибо конечно Валенку.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot