Страница 11 из 47

Re: MyGUI

Добавлено: 02 окт 2012, 09:13
nkp
Lexxa писал(а):Зачем с галетника ручные режимы блокировать?
ну можно и не с галетника - но мне показалось так проще будет:
(для просмотра содержимого нажмите на ссылку)
Выделение(013).jpg (1714 просмотров) <a class='original' href='./download/file.php?id=8294&mode=view' target=_blank>Загрузить оригинал (50.31 КБ)</a>

Re: MyGUI

Добавлено: 02 окт 2012, 09:33
Lexxa
nkp, зачем это вообще нужно?

Re: MyGUI

Добавлено: 02 окт 2012, 09:37
Lexxa
nkp писал(а):Lexxa, подскажи - что это за регулятор
технологи говорят, что это плавная регулировка оборотов шпинделя в ручном режиме.
Это может быть нужно для имитации универсального станка
Кнопки там такие
1) ориентация шпинделя
2) толчек шпинделя
3) по часовой
4) стоп
5) против часовой

Re: MyGUI

Добавлено: 02 окт 2012, 09:40
nkp
Lexxa писал(а):зачем это вообще нужно?
что именно ?

Re: MyGUI

Добавлено: 02 окт 2012, 09:57
Lexxa
блокировать ручные пермещения.

Re: MyGUI

Добавлено: 02 окт 2012, 10:13
nkp
Lexxa писал(а):блокировать ручные пермещения.
ты имеешь в виду,что емс сама блокирует эти все дела когда нужно?
да -может и не обязательно
но у меня кнопки будут с индикацией- вот такие:
(для просмотра содержимого нажмите на ссылку)
bb.jpeg (1704 просмотра) <a class='original' href='./download/file.php?id=8295&mode=view' target=_blank>Загрузить оригинал (47.13 КБ)</a>
думаю будет проще коммутировать индикацию ...
ну посмотрим - все же в процессе.....
допустим вот здесь:
(для просмотра содержимого нажмите на ссылку)
Выделение(014).jpg
Выделение(014).jpg (7.02 КБ) 1704 просмотра
после включения индикатор должен мигать в ref
а после отработки home гореть постоянно
те же кнопки в режиме jog -светятся только по нажатию
и т.д.

Re: MyGUI

Добавлено: 02 окт 2012, 10:27
nkp
Lexxa писал(а):
nkp писал(а):Lexxa, подскажи - что это за регулятор
технологи говорят, что это плавная регулировка оборотов шпинделя в ручном режиме.
Это может быть нужно для имитации универсального станка
Кнопки там такие
1) ориентация шпинделя
2) толчек шпинделя
3) по часовой
4) стоп
5) против часовой
Спасибо!
Технологам отдельное спасибо!
:beer_blow:

Re: MyGUI

Добавлено: 02 окт 2012, 10:49
Lexxa
индикация должна срабатывать не от того, что кнопка нажалась, а от того, что действие выполняется. Представь сколько дополнительно портов ввода вывода нужно будет......
про блокировки. Ты хочешь подстраховаться от нажатия кнопок + и - в режиме автомата?
оправданная страховка

Re: MyGUI

Добавлено: 02 окт 2012, 10:55
nkp
Lexxa писал(а):индикация должна срабатывать не от того, что кнопка нажалась, а от того, что действие выполняется. Представь сколько дополнительно портов ввода вывода нужно будет......
я понял твою мысль:
то есть нажали ехать вручную - подалось питание на двиг - паралельно вкл индикация
но так не все получится
но решение хорошее - экономит с десяток- другой пинов

Re: MyGUI

Добавлено: 02 окт 2012, 10:59
Lexxa
почему не получится?

Re: MyGUI

Добавлено: 02 окт 2012, 11:03
nkp
Lexxa писал(а):почему не получится?
ну тот же хоуминг к примеру

Re: MyGUI

Добавлено: 02 окт 2012, 11:14
Lexxa
не, идея вот в чем.
Вот нажимаешь ты Х+ в режиме ручном. Индикация не загорается. а вот в ручном - загорается. она даже может от маховичка загораться, криминала нет

Re: MyGUI

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

после этого к пинам компонента можно иметь доступ как к dict:
self.halcomp["имя пина"] или self.halcomp.pin_name (второй вариант будет работать только если в названии пина нет недопустимых символов, например "-")
а вот аргумент hal.component("mygui") это имя класса в которому этот компонент принадлежит?

Re: MyGUI

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

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

mygui.mode_mdi
mygui.hbutton.0
http://www.linuxcnc.org/docs/2.5/html/h ... asic_usage

Re: MyGUI

Добавлено: 02 окт 2012, 11:36
nkp
наверно правильней это связанно с именем модуля (то есть файла)
потому как мы могли и без классов скрипт написать - и пины создать
так что это скорей имя модуля
наверняка можно проверить - если создать программу из двух модулей
в ней должны по идее работать пины с одинаковым именем

Re: MyGUI

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

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

Пока писал вроде понял)

Re: MyGUI

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

Lexxa, все правильно :)

Re: MyGUI

Добавлено: 02 окт 2012, 14:22
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

Re: MyGUI

Добавлено: 02 окт 2012, 16:27
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") - то работает не корректно
то есть это имя должно быть одинаковым с именем файла

Re: MyGUI

Добавлено: 02 окт 2012, 16:41
Nick
Но ты же можешь создать несколько компонентов в одном модуле.

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