Сниппет LuaDeb: различия между версиями
Va (обсуждение | вклад) Новая страница: «Lua контроллер Mesecons при игре в серверном варианте не имеет даже самых простых средств отладки. Даже простой вывод функцией ''print'' не может быть получен на стороне игрока, потому что код контроллера выполняется на сервере игры. Остаётся только выво...» |
Va (обсуждение | вклад) Нет описания правки |
||
Строка 9: | Строка 9: | ||
|||{{Obj|mesecons|wire_00000000_off|64}}|| | |||{{Obj|mesecons|wire_00000000_off|64}}|| | ||
|- | |- | ||
|||{{Obj|mesecons_luacontroller|luacontroller0000|64}}|| | |{{Obj|mesecons|wire_00000000_off|64|r}}||{{Obj|mesecons_luacontroller|luacontroller0000|64}}|| | ||
|- | |- | ||
|||{{Obj|digilines|wire_std_11100000|64}}||{{Obj|digilines|wire_std_11100000|64}}||{{Obj|digilines|wire_std_11100000|64}} | |||{{Obj|digilines|wire_std_11100000|64}}||{{Obj|digilines|wire_std_11100000|64|r}}||{{Obj|digilines|wire_std_11100000|64|r}} | ||
|- | |- | ||
|||{{Obj|digistuff|touchscreen|64}}(p1)||{{Obj|digilines|lcd|64}}(d1)||{{Obj|digiterms|lcd_monitor|64}}(d1) | |||{{Obj|digistuff|touchscreen|64}}<br>(p1)||{{Obj|digilines|lcd|64}}<br>(d1)||{{Obj|digiterms|lcd_monitor|64}}<br>(d1) | ||
|- | |- | ||
|} | |} |
Версия от 10:14, 10 февраля 2025
Lua контроллер Mesecons при игре в серверном варианте не имеет даже самых простых средств отладки. Даже простой вывод функцией print не может быть получен на стороне игрока, потому что код контроллера выполняется на сервере игры. Остаётся только выводить отладочную информацию средствами, доступными в игре - digilines:lcd , digiterms:lcd_monitor
, digistuff:touchscreen
. И все не очень удобно, всё имеет недостатки. Чтобы как-то решить проблему требуется логирование с буферизацией. Собственно, эту задачу и решает данный отладчик - предоставляет унифицированную структуру программы, функцию
log()
и возможность просмотра накопленных сообщений по запросу.
Полностью разделить код прикладной программы и отладчика вряд ли получится при текущей реализации системы Lua контроллер Mesecons. Поэтому прикладная часть просто вписывается в данный шаблон.
Унификация структуры сводится к трём функциям - fmain(), fintr(), fdigi()
, которые дополняются прикладным кодом. Плюс механизм дополнения панели отладчика собственными кнопками управления.
Принципиальная схема отладчика:
![]() |
|||
![]() |
![]() |
||
![]() |
![]() |
![]() | |
![]() (p1) |
![]() (d1) |
![]() (d1) |
Где p1 и d1 - названия каналов digiline, которые закреплены за отладчиком, и могут быть заменены через определение констант.
Прикладные датчики и исполнители подключаются к линиям digilines или msecons. Естественное ограничение - использование отладчика требует одного порта контроллера для подключения digilines.
Особенности мониторов.
digiterms:lcd_monitor предоставляет экран в 6 строк по 12 символов. Вывод скроллируется. То есть, можно видеть несколько последовательных выводов, в пределах собственного буфера вывода экрана.
digilines:lcd работает в режиме перезаписи - последний вывод и есть всё содержание экрана. Есть дополнительное свойство - при наведении на экран содержание последнего вывода отображается как статус объекта.
<code> do return end -- здесь пока ничего нет </code>