|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.05.2016, 18:25 | #1 |
Пользователь
Регистрация: 10.05.2016
Сообщений: 28
|
Нужна идея.
Программа работает под DOS. Считывает данные с датчиков и записывает показания в файл. Время от времени файл закрывается для сохранения накопленного. Бывают случаи отключения питания от нескольких минут до нескольких часов (UPS-а НЕТ, да и не спасет). Если питание пропало при открытом файле, то текущие данные пропадают. При включении питания программа автоматически запускается и продолжает работать, но данные записанные от момента последнего открытия файла и до момента отключения питания пропадают. Есть возможность запросить датчики повторить запомненные данные (какие остались у них в буфере) ЗАДАЧА: нужна идея как распознать было ли отключение питания БЕЗ ВНЕШНИХ ОБВЕСОВ КОМПА. Если было отключение, то программа сама "переспросила бы" датчики.
|
10.05.2016, 18:59 | #2 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
У файла жэж есть время последней записи, ёмаё!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
10.05.2016, 20:14 | #3 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 472
|
Помимо времени записи файла.
DOS имеет в своём составе область памяти для межпроцессного обмена. Можно записать в неё некую метку, а если при пуске её нет - значит было отключение. В метку можно даже записать время последней записи в файл. И это время также будет отсчётом. В терминах Pascal Код:
Но время файла - конечно же лучше. В программе можно объявить предопределённую переменную - дата и время последней записи. Которая при включении программы равна 0. Но при записи файла, в неё заносится дата и время. Последний раз редактировалось FPaul; 10.05.2016 в 20:23. |
11.05.2016, 09:23 | #4 |
Пользователь
Регистрация: 10.05.2016
Сообщений: 28
|
Дата/время последней записи - интересно! Рассмотрим случай: в 12:00 были благополучно записаны данные с датчиков (записываются только показания, без привязки ко времени). Запись происходит по мере накопления данных, без строгой периодичности. Наступило "время Ч" записать новые данные или это время не наступило. Вырубилось питание (данные в памяти пропали). Питание включилось, программа запустилась, определила текущее время, время последней записи (пусть разница 1 мин) , сколько данных в памяти (их нет) - значит ещё их не было.... и что ?????
|
11.05.2016, 09:28 | #5 | ||
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
||
11.05.2016, 12:31 | #6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
БЫЛИ ли ПОЛУЧЕНЫ данные ПОСЛЕ последнего сохранения (и НЕ БЫЛИ СОХРАНЕНЫ по тем или иным причинам). постоянно(!!! при каждом сохранении) отмечать ВРЕМЯ сохранения. (можно использовать время изменения файла). постоянно(!!! при каждом получении) отмечать ВРЕМЯ получения (сохранять это время и только время (БЕЗ самих ДАННЫХ) в "энергонезависимой памяти" (ФАЙЛЕ) и каждый раз его освобождать. (и да тоже можно использовать время его изменения) А можно и сами данные, но НЕ В АРХИВ, а в промежуточный файл (лог) если их не так много. В этом случае даже перезапрос не потребуется. ДВА НЕЗАВИСИМЫХ файла 1. большой архив используемый изредка, медленные операции (время сохранения данных) 2. маленький-маленький "лог" используемый постоянно, быстрые операции. (время получения данных) при любом СТАРТЕ программы анализировать эти ДВА времени и если НЕТ ни времени получения ни времени СОХРАНЕНИЯ то ???????????? иначе если НЕТ времени получения то ?????????????? иначе если НЕТ времени сохранения то ?????????????? иначе если время получения > время сохранения то ПОВТОРИТЬ ДАННЫЕ иначе ВСЕ НОРМАЛЬНО??? НО!!! все равно остается шанс, что данные в датчике(-ах) окажутся НОВЕЕ чем ДАТА последнего ПОЛУЧЕНИЯ. программа сохранила ВСЕ полученные данные и вырубилась НЕ успев ничего принять. датчики за время простоя программы получили новые данные и ... запуск программы про ЭТО ничего не знает. (время приема < время сохранения )!!!
программа — запись алгоритма на языке понятном транслятору
|
|
11.05.2016, 16:57 | #7 |
Пользователь
Регистрация: 10.05.2016
Сообщений: 28
|
Для min@y
Не понятен критерий по которому программа обратится за перезапросом данных.
|
11.05.2016, 17:00 | #8 |
Пользователь
Регистрация: 10.05.2016
Сообщений: 28
|
Для evg_m
Спасибо за идею, Пусть с трудом на понял. Попробую реализовать. Кажется свет в конце туннеля.
|
11.05.2016, 17:02 | #9 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Тема была "Нужна идея". Я идею вбросил, дальше сам давай. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
11.05.2016, 17:09 | #10 |
Пользователь
Регистрация: 10.05.2016
Сообщений: 28
|
Для min@y
Да ничего, Просто отсутствие данных в памяти может иметь два случая
1 - они пропали 2 - их еще и не было после последнего сохранения. Вот здесь я и растерялся... Ну а так все равно спасибо. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужна хорошая идея | Максикок | Помощь студентам | 6 | 16.12.2014 18:54 |
нужна идея... | rostik123 | Общие вопросы C/C++ | 1 | 25.11.2012 13:25 |
НУЖНА ХОТЯ БЫ ИДЕЯ ИДЕЯ РЕШЕНИЯ!) немного непонятная задача с массивом.... | ngup_k | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 12.12.2011 19:33 |
Нужна идея | Pein95 | Общие вопросы Delphi | 7 | 02.05.2011 15:56 |
Нужна идея | viter.alex | Microsoft Office Word | 13 | 06.02.2009 00:07 |