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

Re: MyGUI

Добавлено: 01 окт 2012, 22:41
nkp
с инкрементальным перемещением засада:
только через код скрипта
через хал никаких способов вроде нет...

Re: MyGUI

Добавлено: 01 окт 2012, 22:59
Nick
Какая засада? Есть же:

halui.jog.N.increment float in
pin for setting the jog increment for axis N when using increment-plus/minus

halui.jog.N.increment-minus float in
a rising edge will will make axis N jog in the negative direction by the increment amount

halui.jog.N.increment-plus float in
a rising edge will will make axis N jog in the positive direction by the increment amount

Re: MyGUI

Добавлено: 01 окт 2012, 23:06
nkp
Nick писал(а):Какая засада? Есть же:
не ,ну что ж ты так долго эту инфу скрывал? :hehehe:
(надо бы добавить в EMC2 Integrators Manual Перевод на русский язык)

Re: MyGUI

Добавлено: 01 окт 2012, 23:15
Nick
А там это уже по моему есть ;)
ЗЫ Только мне кажется эти пины должны быть не float а bit:
halui.jog.N.increment-minus float in
halui.jog.N.increment-plus float in

Re: MyGUI

Добавлено: 01 окт 2012, 23:17
Lexxa
nkp, а ты под такую электроавтоматику пишешь скрипт?
если да, дай посмотреть, а то чет у меня куски питона по голове валяются, а в кучу не срастаются никак.
иль у тебя там так же запутано все как в gscreen?

т.е. в бесконечном цикле опрашиваются 6 пинов и в зависимости от них меняются экраны или как?

Re: MyGUI

Добавлено: 01 окт 2012, 23:35
nkp
скрипта как такового нет
все мало мальские наработки выкладываю на форум
принцип думаю пока использовать от Ника (то есть вкладки,и нажатие по номеру кнопки)
так как убедительных аргументов "против" не увидел
но понял - что писать скрипт(а точнее отлаживать) просто невозможно без "железки" и решил подсобрать панель
так что с кодом пока остановка
пока жду кнопочки там всякие, прикидываю работу галетников и пр.
вот "черновики" :
mygui.rar
(1.8 КБ) 371 скачивание
но там еще ничего толком нет

Re: MyGUI

Добавлено: 01 окт 2012, 23:46
nkp
Lexxa писал(а):т.е. в бесконечном цикле опрашиваются 6 пинов и в зависимости от них меняются экраны или как?
цикла никакого нет
там 2 основополагающих функции:
смена режима(change_mode)
нажатие кнопки( def click_button)
скрипт "ждет" - когда ты вызовешь какую нибудь функцию
а "увидел" что вызвал (переключил галетник или нажал кнопку) - отрабатывает код данной функции

Re: MyGUI

Добавлено: 01 окт 2012, 23:57
Lexxa
nkp, для отладки можно pyvcp юзать.

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

self.modes = {"mode_a":0, "mode_m":1, "mode_mdi":2, "mode_j":3, "mode_j1":4, "mode_j2":5,} 
это типа алиасы?

и зачем нужно
class Widgets:

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

	def __init__(self, xml):
		self._xml = xml
	def __getattr__(self, attr):
		r = self._xml.get_object(attr)
		if r is None: raise AttributeError, "No widget %r" % attr
		return r
	def __getitem__(self, attr):
		r = self._xml.get_object(attr)
		if r is None: raise IndexError, "No widget %r" % attr
		return r
Вот для меня загадка. Ща вы скажите, что я лох педальный, но все же я спрошу.
nkp, я правильно понял, что пока в скрипте ничего не делается? т.е. там не запускается ни функция change_mode ни функция click_button?
Тут создаются пины кнопкам?

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

for i in range(7) :
 self.vtriggers.append(hal_glib.GPin(self.halcomp.newpin('vbutton.%s'%i, hal.HAL_BIT, hal.HAL_IN)))
#self.vtriggers[-1].connect("value-changed",self.click_button, self.vbuttons, i)
for i in range(7) :
 self.htriggers.append(hal_glib.GPin(self.halcomp.newpin('hbutton.%s'%i, hal.HAL_BIT, hal.HAL_IN)))
			self.htriggers[-1].connect("value-changed",self.click_button, self.widgets.notebook1, i)

Re: MyGUI

Добавлено: 02 окт 2012, 00:08
nkp
Lexxa писал(а):Тут создаются пины кнопкам?
точно
Lexxa писал(а):я правильно понял, что пока в скрипте ничего не делается? т.е. там не запускается ни функция change_mode ни функция click_button?
если я правильно понял вопрос - то ответить лучше в общем:
функции "сами по себе" не работают (а иначе 88 функций включали бы все когда хотели)
мы их вызываем сами когда нам надо
отсюда ответ - да , скрипт загрузил картинку и ждет каких либо наших действий
ну может я совсем не про то?

Re: MyGUI

Добавлено: 02 окт 2012, 00:09
nkp
Nick писал(а):А там это уже по моему есть
может и есть - но очень хорошо замаскировано :)

Re: MyGUI

Добавлено: 02 окт 2012, 00:20
Nick
nkp писал(а):
Lexxa писал(а):т.е. в бесконечном цикле опрашиваются 6 пинов и в зависимости от них меняются экраны или как?
цикла никакого нет
...
Ну если честно, цикл есть, но пишем его не мы :). Весь Gtk и все Event обрабатываются в цикле Gtk, именно он опрашивает все известные компоненты, не появилось ли у них новых ивентов для обработчиков. Но это так, лирика.

Re: MyGUI

Добавлено: 02 окт 2012, 00:21
nkp
Lexxa писал(а):это типа алиасы?
Словарь

Re: MyGUI

Добавлено: 02 окт 2012, 08:13
nkp
думою ладдер нужно начать с такой ступени:
(для просмотра содержимого нажмите на ссылку)
Выделение(011).jpg (1876 просмотров) <a class='original' href='./download/file.php?id=8292&mode=view' target=_blank>Загрузить оригинал (111.23 КБ)</a>
может блокировки и излишни ...

Re: MyGUI

Добавлено: 02 окт 2012, 08:47
nkp
надо блокировать отдельно все ручные перемещения
так наверно удобней будет:
(для просмотра содержимого нажмите на ссылку)
Выделение(012).jpg (1871 просмотр) <a class='original' href='./download/file.php?id=8293&mode=view' target=_blank>Загрузить оригинал (97.06 КБ)</a>
%I3 - %I6 - ручные режимы
%I7 - блокировка с галетника

Re: MyGUI

Добавлено: 02 окт 2012, 08:50
Lexxa
Нене, блокировки не лишние. я прост нарисовал так сказать суть вопроса, еще надо кнопку "сигнал готовности MyScreen"

Продолжаем курс питон))

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

def change_mode(self, pin) :
		for i in self.modes :
			if self.halcomp[i] == True :
				self.mode = self.modes[i]
				self.widgets.notebook1.set_current_page(self.mode)
				return
откуда GTK узнает, что при изменении пина надо запустить именно эту функцю?

Разберемм функцию теперь.
Пускай всеми правдами и неправдами она вызвалась.
Тогда для всех значений режимов из словаря выполняется проверка на истинноость некого компонента halcomp (что это за компонент кстати)
поотом устанавливается новая активная вкладка.
так вот непонятно, что такое self.halcomp
в скрипте его нет, в мануале http://www.linuxcnc.org/docs/2.5/html/c ... rface.html тоже

Re: MyGUI

Добавлено: 02 окт 2012, 08:52
Lexxa
nkp писал(а):так наверное удобней будет
сложно сказать не зная назначение входов)))))

Re: MyGUI

Добавлено: 02 окт 2012, 08:55
nkp
Lexxa писал(а):(что это за компонент кстати)
а это как раз наши пины
вот и проверяем: какой из них True
у нас же в хал коммутация:

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

net auto     parport.0.pin-11-in-not    mygui.mode_a     halui.mode.manual   
net manual   parport.0.pin-12-in-not    mygui.mode_m     halui.mode.auto 
net mdi	     parport.0.pin-13-in-not    mygui.mode_mdi   halui.mode.mdi
net btn	     parport.0.pin-15-in-not    mygui.hbutton.0

Re: MyGUI

Добавлено: 02 окт 2012, 08:56
nkp
Lexxa писал(а):сложно сказать не зная назначение входов)))))
обновил

Re: MyGUI

Добавлено: 02 окт 2012, 09:10
Lexxa
со скриптом вроде ясно.

Зачем с галетника ручные режимы блокировать?

Re: MyGUI

Добавлено: 02 окт 2012, 09:11
Nick
Lexxa писал(а):откуда GTK узнает, что при изменении пина надо запустить именно эту функцю?
Это делается функциией connect.
У каждого пина есть сигналы. Например сигнал "value-changed", таким образом мы можем к этому сигналу присоединить обработчик:

pin.connect(имя сигнала , функция которую вызывать, дополнительный параметр, дополнительный параметр, ...)

пример:
pin.connect("value-changed",self.click_button, self.widgets.notebook1, i)

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

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