Страница 1 из 1
Отображение нескольких ошибок на дисплее по очереди
Добавлено: 30 ноя 2020, 16:41
Hardwarest
Доброго времени.
Ломаю голову. В проекте есть дисплей, там меню и цикличное по кругу отображение информации. (Время, температуры итд)
Главное вопрос, иногда в системе могут происходить ошибки, к примеру таймаут по модбас. Как сделать выброс одной ошибки это не проблема, при помощи одного инвертированного входа логического "и" мы легко тушим что отображается на дисплее и ошибка светится пока будет активная... А если ошибок будет 2 или 3, вот ломаю голову как сделать некий массив и с него по 5 сек чтобы отображать. Вышла первая, спустя 5 сек вторая. Потушили вторую исправив оборудование или отключив опрос, отображается только первая...
Отображение нескольких ошибок на дисплее по очереди
Добавлено: 30 ноя 2020, 18:46
Dryundel
[ref]Hardwarest[/ref], Это не подойдет?
Буфер FIFO
Отображение нескольких ошибок на дисплее по очереди
Добавлено: 30 ноя 2020, 18:54
Hardwarest
Очень похоже! Спасибо, буду пробовать
Отображение нескольких ошибок на дисплее по очереди
Добавлено: 30 ноя 2020, 18:58
Dryundel
Hardwarest писал(а): 30 ноя 2020, 18:54
Очень похоже! Спасибо, буду пробовать
Там и количество ошибок в очереди есть.
Отображение нескольких ошибок на дисплее по очереди
Добавлено: 02 дек 2020, 20:23
Hardwarest
И снова приветствую...
Извините что морочу голову, но что то не могу сообразить...
Крутил буфер FIFO и запутался...
К примеру Версия 1.1 имеет один вход и один выход, а у меня несколько источников ошибок которые при ошибке выдают Булеан.
Как их стыковать? Как программе объяснить что к примеру из 3-х ошибок пропала одна? При этом она должна сообщить что ошибка пропала и циклично показывать остальные две.
Пробовал FIFO массив, там завис. Мало того что там входы и выходы интежер, так еще выходов то столько сколько и входов... А мне надо что бы выход был один, и входы по одному приходили на выход. Вроде сформулировал вопрос
Все я сделал но с одним источником ошибок, Ошибка вылезла, ее выкинуло на экран, как только она прошла меняется текст и таймер ждет пару секунд и тушит страницу....как только их несколько... Котовасия.
Отображение нескольких ошибок на дисплее по очереди
Добавлено: 02 дек 2020, 21:01
Fuji1604
Прочитав сообщение
viewtopic.php?p=96495#p96495 пртшла мысль, можно все ошибки собирать в одну сроку и выводить бегущей строкой
Отображение нескольких ошибок на дисплее по очереди
Добавлено: 02 дек 2020, 21:15
Hardwarest
Можно) Но этот дисплей и бегущая строка еще тот секс...
Делема в том как быть с потушенной ошибкой, на данный момент она оставляет после себя просто пустое место, а вторая делема производная из первой, что этой ошибке это место надо готовить...
Пробовал При помощи свича делать интежер, интежен сумировать блоком математики и получать количество ошибок... Их задавал константой счетчику, а мультивибратором листал... Но что то пошло не так. Все равно пустое окно
Отображение нескольких ошибок на дисплее по очереди
Добавлено: 02 дек 2020, 23:58
Dryundel
Hardwarest писал(а): 02 дек 2020, 21:15
Делема в том как быть с потушенной ошибкой, на данный момент она оставляет после себя просто пустое место, а вторая делема производная из первой, что этой ошибке это место надо готовить...
Мда. Проблема понятна. И думаю решаема.
Но тут надо либо блок писать, либо как то имеющимися стандартными изголяться.
Смысл в следующем:
Ошибок я так понимаю конечное количество и все они определены.
Создаем массив булевых переменных где каждая ячейка (переменная) отвечает за свою ошибку.
Пришла ошибка записали в конкретную ячейку 1, ушла - записали 0.
Теперь все просто. Опрашиваем по таймеру, по очереди ячейки. Если 1 выводим на дисплей, если 0 пропускаем. И так по кругу.
Если ошибок нет, то и на дисплей ничего не выводится.
Ну как то так.
Отображение нескольких ошибок на дисплее по очереди
Добавлено: 03 дек 2020, 01:19
Hardwarest
Dryundel писал(а): 02 дек 2020, 23:58
Ошибок я так понимаю конечное количество и все они определены
Не совсем. К примеру: 6 модбас устройств... Все норм работают. Может (к примеру) на двух выбить связь... Выбьет ошибку. Вот одну не проблема. В массив писал, там можно булеан писать. Но делема в том что там где 0 выбивало просто пустое окно.
Отправлено спустя 12 минут 25 секунд:
Dryundel писал(а): 02 дек 2020, 23:58
Но тут надо либо блок писать
Готов продонатить и добавить в общую копилку FLProg. Главное сделать как надо.