Страница 8 из 12
Re: gscreen
Добавлено: 27 авг 2012, 15:59
Nick
Lexxa писал(а):в halui есть абсолютно всё, для нормального управления. Достаточно разрулить софт-кнопки ладдером.плюсом сюда давай обсудим хардовые тумблеры и хардовые кнопки.
ИМХО это не очень хорошо. Лучше, чтобы команда на исполнительный пин выходила именно из GUI а не из ладдера.
Лучше будет потому, что не возникнет ситуация, когда на экране нарисовано одно, а при нажатии на кнопку выполняется другое.
Сейчас попробую накидать скриптик...
Re: gscreen
Добавлено: 27 авг 2012, 17:50
Lexxa
Ник, так сделано во всех взрослых ЧПУ, вообще во всех.
Концевики, ренишау, сообщения, м-команды - всё это ререз ладдер.
Ник, поясни, как может возникнуть ситуация, когда на экране одно, а при нажатии на кнопку другое?
На мой взгляд, как раз ладдер и избавит от этого.
Я же писал выше логику.
В общий ини файл прописывается текст для каждой кнопки в каждом режиме
в hal добавляется ладдер поток в пользовательское пространство
подгружается общий ладдер-файл с разруливанием станочноо пульта.
Ладдер-файл, как и gscreen будет единый на все станки до 5 координат. Задействовать кнопку в режиме или нет определить в ини файле элементарно.
В том же ладдере можно защититься от незагруженного gscreen.
Т.е. если мы напишем скрипт, который тупо меняет текст и скрывает/отображает нужные элементы, то написание взрослого интерфейса на этом практически закончится, останется лишь разобраться с вращением 3D и загрукой и редактированием программы.
Ладдер же будет иметь постоянно количество выходов, к которым каждый сможет прицепить нужное ему дейсвие - будь то пускатель включить или кнопку пуск нажать.
Повторюсь. во взрослых ЧПУ станках в общем случае есть 6 режимов:
1) edit
2) AUTO
3) MDI
4) безразмерные перемещения
5) инкрементальные перемещения
6) от махоичка
Сделав 16 софтовых кнопок мы получим аж 96 функций
Режимы должны переключаться от галетника и никак иначе. Во-первых это наглядно, во вторых это надежно, в-третьих это просто с точки зрения linuxcnc, в частности halui. Желательно, чтоб и активная ось переключалась от галетника. Остальное дло вкуса. Никаих кнопок пауза и стоп в УЧПУ быть не должно, это не плеер. Пуск и стоп подачи. Нажал пуск - началась отработка, нажал стоп подачи - остановилась, нажал пуск - продолжили отработку. Захотел программу остановить - нажал стоп подачи, затем Abort.
Кнопка пуск в зависимости от режима должна или программу запускать, или MDI команду отрабатывать. Ну можно еще привязать к ней выход в ноль.
Выход в ноль должен работать только в последовательности, которую задает оператор, это диктуется безопасностью.
Re: gscreen
Добавлено: 27 авг 2012, 18:57
Lexxa
Вот очередная перепаковка gscreen
Заточенная под реализацию через ладдер и halui
Re: gscreen
Добавлено: 27 авг 2012, 19:31
nkp
из 3 вкладок почему то видно только 2
Re: gscreen
Добавлено: 27 авг 2012, 19:33
Lexxa
да она вообще одна только нужна, я думаю на вторую вывести светодиоды от концевиков и исполнительных элементов ладдера для отладки
Re: gscreen
Добавлено: 27 авг 2012, 20:05
Nick
Вот написал скрипт.
Он умеет нажимать на n-ную по счету кнопку в активной вкладке notepad.
Запускать его так:
gladevcp -u hardware-buttons.py hardware-buttons.ui
кнопку жамкаем путем изменения пина vbutton или hbutton с нужным номером.
halcmd setp hardware-buttons.vbutton.0 0
Если управлять из Ladder, то если вдруг заглючит GUI, результат будет не предсказуемым. А так у нас нажимается именно та кнопка, которая сейчас отображается прямо над нужной железной кнопкой.
Зачем делать двойную систему обработки кнопки, когда все можно сделать в одном месте?
Re: gscreen
Добавлено: 28 авг 2012, 08:45
nkp
Nick писал(а):Вот написал скрипт.
Ник,а можно прокомментировать скрипт
а то я идею твою до конца не понял и по коду тоже не разберусь

Re: gscreen
Добавлено: 28 авг 2012, 09:34
Nick
Добавил:
https://github.com/cnc-club/hw-buttons/tree/
В двух словах, сначала вызывается get_handlers(halcomp,builder,useropts)
в которой создаем наш объект нашего класса
hwbuttons = HWButtons(halcomp,builder,useropts)
потом создаем пины для кнопок и делаем им обработчик
Re: gscreen
Добавлено: 28 авг 2012, 10:07
nkp
спасибо Ник за комментарии - буду разбираться
но вот даже пример твой запускаю не пойму-что он должен демонстрировать????
зы (скрипт скачан 8 раз - и только
у меня вопросы я в танке
Re: gscreen
Добавлено: 28 авг 2012, 10:21
Nick
Работать должно типо такого:
1. можно просто нажимать на кнопки, они будут выполнять свое описанное действие.
2. можно посылать сигнал на пины hw-buttons.vbutton.[0-n] и hw-buttons.hbutton.[0-n] и скрипт будет генерировать сигналы нажатия на эти кнопки.
Напишите набор кнопок, который мы хотим видеть во вкладках, хотя бы для одной вкладки, и я доведу пример до ума.
Re: gscreen
Добавлено: 28 авг 2012, 10:32
nkp
для одной вкладки принцип не прояснит
тут лучше покажи одна кнопка в одном из 3 режимов включает свою команду
произвольно:
мы в ручн реж - пусть будет home
мы в авто - run
в MDI - исполнить
Re: gscreen
Добавлено: 28 авг 2012, 11:05
Nick
А как сделать в MDI - исполнить?
Re: gscreen
Добавлено: 28 авг 2012, 11:08
nkp
я не смотрел - написал от фонаря
ну давай два режима - главное принцип
Re: gscreen
Добавлено: 28 авг 2012, 12:39
Nick
Вот сделал две кнопки home и run
https://github.com/cnc-club/hw-buttons/tree/
запускать:
gladevcp -u hw-buttons.py hw-buttons.ui
Жамкать на кнопку внешним пином, например так:
halcmd setp hw-buttons.hbutton.0 1
потом не забыть в 0 скинуть
halcmd setp hw-buttons.hbutton.0 0
Re: gscreen
Добавлено: 28 авг 2012, 13:16
nkp
ну потихоньку начинаю въезжать
у нас сильный ливень , гроза (на что бы еще сослаться

) - вот и не думается
------------------------
наверно теперь надо добавить 6(?) пинов для тумблера перекл режимов-вкладок
Re: gscreen
Добавлено: 28 авг 2012, 14:12
Nick
Ага, сейчас замутим...
Re: gscreen
Добавлено: 28 авг 2012, 14:28
nkp
а как у нас номер кн может не попасть в длинну списка? :
мы ж там однозначно сами все формируем
и без проверки работает:
Код: Выделить всё
def click_button(self, pin, notebook, num) :
if pin.value == True :
box = notebook.get_nth_page(notebook.get_current_page())
button_list = box.get_children()
button = button_list[num]
button.emit("clicked")
Re: gscreen
Добавлено: 28 авг 2012, 14:41
Nick
Ну если кто-нибудь вызовет нажать на кнопку с большим параметром... в общем на всякий случай сделано

.
Re: gscreen
Добавлено: 28 авг 2012, 15:27
Nick
Сделал переключение режимов, добавил hal файл, только почему-то hal не загружается при помощи параметра -H, т.е.
gladevcp -u hw-buttons.py hw-buttons.ui -H hw-buttons.hal ничего особенного не говорит, но пины не подключаются
приходится отдельно писать halrun -f hw-buttons.hal
https://github.com/cnc-club/hw-buttons/tree/
Re: gscreen
Добавлено: 28 авг 2012, 17:20
nkp
Nick писал(а):gladevcp -u hw-buttons.py hw-buttons.ui -H hw-buttons.hal
а не так надо ? :
Код: Выделить всё
gladevcp -u hw-buttons.py -H hw-buttons.hal hw-buttons.ui
сейчас будем пробовать....