MyGUI

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

Re: MyGUI

Сообщение nkp »

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

Re: MyGUI

Сообщение 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
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Nick писал(а):Какая засада? Есть же:
не ,ну что ж ты так долго эту инфу скрывал? :hehehe:
(надо бы добавить в EMC2 Integrators Manual Перевод на русский язык)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: MyGUI

Сообщение Nick »

А там это уже по моему есть ;)
ЗЫ Только мне кажется эти пины должны быть не float а bit:
halui.jog.N.increment-minus float in
halui.jog.N.increment-plus float in
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

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

т.е. в бесконечном цикле опрашиваются 6 пинов и в зависимости от них меняются экраны или как?
Вложения
IMG_20121002_001054.jpg (1887 просмотров) <a class='original' href='./download/file.php?id=8283&mode=view' target=_blank>Загрузить оригинал (1.22 МБ)</a>
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

скрипта как такового нет
все мало мальские наработки выкладываю на форум
принцип думаю пока использовать от Ника (то есть вкладки,и нажатие по номеру кнопки)
так как убедительных аргументов "против" не увидел
но понял - что писать скрипт(а точнее отлаживать) просто невозможно без "железки" и решил подсобрать панель
так что с кодом пока остановка
пока жду кнопочки там всякие, прикидываю работу галетников и пр.
вот "черновики" :
mygui.rar
(1.8 КБ) 370 скачиваний
но там еще ничего толком нет
Последний раз редактировалось nkp 01 окт 2012, 23:47, всего редактировалось 1 раз.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

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

Re: MyGUI

Сообщение 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)
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa писал(а):Тут создаются пины кнопкам?
точно
Lexxa писал(а):я правильно понял, что пока в скрипте ничего не делается? т.е. там не запускается ни функция change_mode ни функция click_button?
если я правильно понял вопрос - то ответить лучше в общем:
функции "сами по себе" не работают (а иначе 88 функций включали бы все когда хотели)
мы их вызываем сами когда нам надо
отсюда ответ - да , скрипт загрузил картинку и ждет каких либо наших действий
ну может я совсем не про то?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

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

Re: MyGUI

Сообщение Nick »

nkp писал(а):
Lexxa писал(а):т.е. в бесконечном цикле опрашиваются 6 пинов и в зависимости от них меняются экраны или как?
цикла никакого нет
...
Ну если честно, цикл есть, но пишем его не мы :). Весь Gtk и все Event обрабатываются в цикле Gtk, именно он опрашивает все известные компоненты, не появилось ли у них новых ивентов для обработчиков. Но это так, лирика.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

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

Re: MyGUI

Сообщение nkp »

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

Re: MyGUI

Сообщение nkp »

надо блокировать отдельно все ручные перемещения
так наверно удобней будет: %I3 - %I6 - ручные режимы
%I7 - блокировка с галетника
Последний раз редактировалось nkp 02 окт 2012, 08:56, всего редактировалось 1 раз.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение 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 тоже
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

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

Re: MyGUI

Сообщение 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
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

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

Re: MyGUI

Сообщение Lexxa »

со скриптом вроде ясно.

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

Re: MyGUI

Сообщение 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 (второй вариант будет работать только если в названии пина нет недопустимых символов, например "-")
Ответить

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