MyGUI

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa писал(а):Зачем с галетника ручные режимы блокировать?
ну можно и не с галетника - но мне показалось так проще будет:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

nkp, зачем это вообще нужно?
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

nkp писал(а):Lexxa, подскажи - что это за регулятор
технологи говорят, что это плавная регулировка оборотов шпинделя в ручном режиме.
Это может быть нужно для имитации универсального станка
Кнопки там такие
1) ориентация шпинделя
2) толчек шпинделя
3) по часовой
4) стоп
5) против часовой
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa писал(а):зачем это вообще нужно?
что именно ?
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

блокировать ручные пермещения.
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa писал(а):блокировать ручные пермещения.
ты имеешь в виду,что емс сама блокирует эти все дела когда нужно?
да -может и не обязательно
но у меня кнопки будут с индикацией- вот такие: думаю будет проще коммутировать индикацию ...
ну посмотрим - все же в процессе.....
допустим вот здесь:
(для просмотра содержимого нажмите на ссылку)
Выделение(014).jpg
Выделение(014).jpg (7.02 КБ) 1699 просмотров
после включения индикатор должен мигать в ref
а после отработки home гореть постоянно
те же кнопки в режиме jog -светятся только по нажатию
и т.д.
Последний раз редактировалось nkp 02 окт 2012, 10:29, всего редактировалось 1 раз.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa писал(а):
nkp писал(а):Lexxa, подскажи - что это за регулятор
технологи говорят, что это плавная регулировка оборотов шпинделя в ручном режиме.
Это может быть нужно для имитации универсального станка
Кнопки там такие
1) ориентация шпинделя
2) толчек шпинделя
3) по часовой
4) стоп
5) против часовой
Спасибо!
Технологам отдельное спасибо!
:beer_blow:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

индикация должна срабатывать не от того, что кнопка нажалась, а от того, что действие выполняется. Представь сколько дополнительно портов ввода вывода нужно будет......
про блокировки. Ты хочешь подстраховаться от нажатия кнопок + и - в режиме автомата?
оправданная страховка
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa писал(а):индикация должна срабатывать не от того, что кнопка нажалась, а от того, что действие выполняется. Представь сколько дополнительно портов ввода вывода нужно будет......
я понял твою мысль:
то есть нажали ехать вручную - подалось питание на двиг - паралельно вкл индикация
но так не все получится
но решение хорошее - экономит с десяток- другой пинов
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

почему не получится?
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa писал(а):почему не получится?
ну тот же хоуминг к примеру
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

не, идея вот в чем.
Вот нажимаешь ты Х+ в режиме ручном. Индикация не загорается. а вот в ручном - загорается. она даже может от маховичка загораться, криминала нет
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

Nick писал(а):Это и есть наш hal компонент, который мы пишем, он содержит все пины и параметры, а также можно всякие прочие штуки от него делать.
self.halcomp = hal.component("mygui")

после этого к пинам компонента можно иметь доступ как к dict:
self.halcomp["имя пина"] или self.halcomp.pin_name (второй вариант будет работать только если в названии пина нет недопустимых символов, например "-")
а вот аргумент hal.component("mygui") это имя класса в которому этот компонент принадлежит?
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa писал(а):Вот нажимаешь ты Х+ в режиме ручном. Индикация не загорается. а вот в ручном - загорается. она даже может от маховичка загораться, криминала нет
сей принцип более чем имеет право на жизнь - принят на вооружение
Lexxa писал(а):а вот аргумент hal.component("mygui") это имя класса в которому этот компонент принадлежит?
не могу сказать точное определение - но это общее имя нашей группы пинов
для хал они будут

Код: Выделить всё

mygui.mode_mdi
mygui.hbutton.0
http://www.linuxcnc.org/docs/2.5/html/h ... asic_usage
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

наверно правильней это связанно с именем модуля (то есть файла)
потому как мы могли и без классов скрипт написать - и пины создать
так что это скорей имя модуля
наверняка можно проверить - если создать программу из двух модулей
в ней должны по идее работать пины с одинаковым именем
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

продолжаем питон-курсы)))
читать что-либо без конкретных примеров - пустая трата времени)
Это создается пустых списка?
self.vtriggers = []
self.htriggers = []
а тут в него в цикле добавляются пины?
vtriggers.append
htriggers.append

ТОже самое и с мmodetriggers - создается список, в него засовываются пины и подключается сигнал к функции обработчика?

Пока писал вроде понял)
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: MyGUI

Сообщение Nick »

nkp писал(а):наверно правильней это связанно с именем модуля (то есть файла)
Не файла, а именно модуля, точнее компонента. Эта строка создает hal компонент с именем mygui, и он будет отображаться в hal как mygui.

Lexxa, все правильно :)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

т.е. если в зависимости от режима мне надо просто подменять текст на кнопках, то
можно обойтись вообще легкой кровью)

Создается в glade картинка с кнопками hal.
с электроавтоматики есть 6 выходов с режимами Q0..Q5
Соответственно в зависимости от того какой из них True надо менять текст на кнопках и скрывать те или иные виджеты.

Создаем входные пины скрипта для каждого режима.
В скрипте:
в скрипте (для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

h = hal.component("mygui")
#self.example_trigger = hal_glib.GPin(halcomp.newpin('example-trigger', hal.HAL_BIT, hal.HAL_IN))
#Пины
mode_ref = hal_glib.GPin(halcomp.newpin("mode_ref", hal.HAL_BIT, hal.HAL_IN))
mode_incjog = hal_glib.GPin(halcomp.newpin("mode_incjog", hal.HAL_BIT, hal.HAL_IN))
mode_manual = hal_glib.GPin(halcomp.newpin("mode_manual", hal.HAL_BIT, hal.HAL_IN))
mode_mdi = hal_glib.GPin(halcomp.newpin("mode_mdi", hal.HAL_BIT, hal.HAL_IN))
mode_auto = hal_glib.GPin(halcomp.newpin("mode_auto", hal.HAL_BIT, hal.HAL_IN))
mode_handle = hal_glib.GPin(halcomp.newpin("mode_handle", hal.HAL_BIT, hal.HAL_IN))
#Сигналы
#self.example_trigger.connect('value-changed', self._on_example_trigger_change)
self.mode_ref.connect('value-changed', self.set_mode_ref)
self.mode_incjog.connect('value-changed', self.set_mode_incjog)
self.mode_manual.connect('value-changed', self.set_mode_manual)
self.mode_mdi.connect('value-changed', self.set_mode_mdi)
self.mode_auto.connect('value-changed', self.set_mode_auto)
self.mode_handle.connect('value-changed', self.set_mode_handle)

#ф-ции-обработчики события value-changed для каждого пина
def self.set_mode_ref(self)
 if halcomp('mode_ref') ==1
  #код

def self.set_mode_incjog(self)
 if halcomp('mode_incjog') ==1:
 #код
и так для каждого собтия
в hal (для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

net mode_ref classicladder.0.out-00 => mygui.mode_ref
net mode_incjog classicladder.0.out-01 => mygui.mode_incjog
net mode_manual classicladder.0.out-02 => mygui.mode_manual
net mode_mdi classicladder.0.out-03 => mygui.mode_mdi
net mode_auto  classicladder.0.out-04 => mygui.mode_auto
net mode_handle  classicladder.0.out-0 => mygui.mode_handle
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Nick писал(а):Не файла, а именно модуля, точнее компонента. Эта строка создает hal компонент с именем mygui, и он будет отображаться в hal как mygui.
но именно с именем "mygui" - то есть имя файла
если такой код

Код: Выделить всё

#!/usr/bin/python
import hal, time
h = hal.component("tratata")
h.newpin("in", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("out", hal.HAL_FLOAT, hal.HAL_OUT)
h.ready()
try:
    while 1:
        time.sleep(1)
        h['out'] = h['in']+100
except KeyboardInterrupt:
    raise SystemExit
запускать из файла с другим именем(не "tratata") - то работает не корректно
то есть это имя должно быть одинаковым с именем файла
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: MyGUI

Сообщение Nick »

Но ты же можешь создать несколько компонентов в одном модуле.

Вообще все зависит от того как ты запускаешь.
Если написать halcmd tratata -W, то да - не запуститься, а если: halcmd tratata -Wn mygui, то по идее должен запуститься. Просто обычно если мы запускаем скрипт, который должен создать компонент, то мы ждем от этого компонента сигнала готовности.
Т.е.:
h = hal.component("tratata")
h.ready()
По умолчанию, ждем ready от компонента с именем скрипта, но. компонент может отличаться по названию от командной строки, тогда надо написать -Wn name.
Ответить

Вернуться в «LinuxCNC»