Balancer: Все сообщения за 28 Ноября 2017 года

 
ПнВтСрЧтПтСбВс
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Balancer

администратор
★★★★★
Для защиты от бутлупов и зависов сразу после старта системы (а то не один раз из-за этого приходилось NodeMCU перепрошивать) я одно время использовал паузу в 5 секунд в init.lua перед стартом остального кода. Этого времени хватает, чтобы, если возникли проблемы, успеть грохнуть init.lua через терминал.

Сейчас сделал лучше. Система теперь после старта считывает файлик, инкрементирует число в нём и записывает. Если результат становится более трёх — вываливаемся, ничего не делая. Иначе ставим таймер, по которому через несколько секунд файл удаляем, а систему тем временем грузим дальше.

Получается, что при обычной загрузке задержки нет вообще, а для аварийного сброса нужно нажать трижды reset за короткий период времени.

 local count = 0 local pin = 4 - D1-mini LED gpio.mode(pin, gpio.OUTPUT) gpio.write(pin, gpio.LOW) if file.open("fail-counter.txt") then count = tonumber(file.read()) if count == nil then count = 0 end file.close() end if count >= 2 then print("Emergency stop") file.remove("fail-counter.txt") return end print("Fail proof check: ", count) file.remove("fail-counter.txt") file.open("fail-counter.txt","w+") file.writeline(count+1) file.close(); if not tmr.create():alarm(3000, tmr.ALARM_SINGLE, function() file.remove("fail-counter.txt") print("Fail proof check passed") end) then print("Can't start timer") return end gpio.write(pin, gpio.HIGH) dofile('main.lua') 


- Если всё нормально, то init.lua грузит main.lua, в котором уже и хранится основной инициализирующий код.
- Если трижды быстро (в течении трёх секунд после запуска) нажать reset, то ничего не делаем. Кстати, надо доделать, поставить опционально загрузку ide.lua и тогда можно будет контроллер и к компу не цеплять — трижды reset и грузится удалённый редактор.
- Важно не нажимать очень-очень быстро, а то дело даже не дойдёт до чтения кода. Скрипт на время готовность нажатия reset зажигает светодиод. Период нажатия — от ~0.5 до 3 секунд после старта.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  44

Balancer

администратор
★★★★★
кщееш> Уже несколько лет мне кажется что наш космос работает на аферу со страховыми деньгами.

Большинство запусков не застрахованы. Грубо говоря, государство — само себе страховая компания. Данный случай, скорее, исключение.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  62.0.3202.8462.0.3202.84

Balancer

администратор
★★★★★
Inewth>> В данном случае предполагается ошибка ПЗ, что дадут 10 камер?
Alexandrc> Плюсую :F
Alexandrc> А если заглушки, например, внутри забыли опять

В данном случае, конечно, камеры бесполезны. Но в целом не помешают. Дополнительный источник информации и пиар :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  62.0.3202.8462.0.3202.84

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru