MyGUI

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
dinkata
Мастер
Сообщения: 1027
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: MyGUI

Сообщение dinkata »

nkp писал(а):ну что то типа mygui.button
да ,он там ,но я дурак в хал не ставил перед его mygui.
поробовал ,работает ,сейчас сделаю за halui и попробую
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
dinkata
Мастер
Сообщения: 1027
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: MyGUI

Сообщение dinkata »

Не смог справится сам ,опят спрашиваю.Скажите пожалуйста как заполнит список Action так что
вьйбират Action для стандартньйе кнопочки ,Estop ,Power и т.д.
Glade2.png (4140 просмотров) <a class='original' href='./download/file.php?id=53272&sid=602aebcce8356faf6351e137c17c16a3&mode=view' target=_blank>Загрузить оригинал (219.08 КБ)</a>
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

просто нажимаешь на них в Glade и они появляются в дереве в разделе "Действия"
Аватара пользователя
dinkata
Мастер
Сообщения: 1027
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: MyGUI

Сообщение dinkata »

Да,с Action разобрался ,тепер другой вопрос -почему не работает spin box ?
mygui3.png (4107 просмотров) <a class='original' href='./download/file.php?id=53276&sid=602aebcce8356faf6351e137c17c16a3&mode=view' target=_blank>Загрузить оригинал (104.56 КБ)</a>
net xxx mygui.hal_spinbutton1-f => classicladder.0.floatin-00
net yyy mygui.hal_spinbutton2-s => classicladder.0.s32in-00
Стоимост вводится ,но при нажатие ентер или клик встороно принимает 0
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Аватара пользователя
dinkata
Мастер
Сообщения: 1027
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: MyGUI

Сообщение dinkata »

nkp писал(а):а adjustment настроен??
У тебя "подгонка" у меня "стъпка" ,все равно откуда ее взят ,при нажатие кнопочка вправо
открьйвается окно "Обекти" оно пусто ,как там поставит adjustment ?
p.s.
ок,разобрался ,просто клик на нов :hehehe:
спс nkp , работает :D
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
dinkata
Мастер
Сообщения: 1027
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: MyGUI

Сообщение dinkata »

Помогите опять пожалуйста ,сделал мой GUI с закладки,
manualMygui4.png (4036 просмотров) <a class='original' href='./download/file.php?id=54140&sid=602aebcce8356faf6351e137c17c16a3&mode=view' target=_blank>Загрузить оригинал (176.33 КБ)</a>
в третья закладка "Настройки" хочется открьйват Classicladder ,Halshow ,Calibration
как в gmoccapy ,можно ли сделат с етие кнопочки ?
setingsMygui4.png (4036 просмотров) <a class='original' href='./download/file.php?id=54141&sid=602aebcce8356faf6351e137c17c16a3&mode=view' target=_blank>Загрузить оригинал (119.09 КБ)</a>
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: MyGUI

Сообщение verser »

dinkata писал(а): хочется открьйват Classicladder ,Halshow ,Calibration как в gmoccapy ,можно ли сделат с етие кнопочки ?
можно, например, если к GUI привязать python модуль, в котором прописать функции реагирования на нажатия соответствующих кнопок, типа так

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

    def on_btn_show_hal_clicked( self, data = None ):
        p = os.popen( "tclsh %s/bin/halshow.tcl &" % TCLPATH )

    def on_btn_calibration_clicked( self, data = None ):
        p = os.popen( "tclsh %s/bin/emccalib.tcl -- -ini %s > /dev/null &" % ( TCLPATH, sys.argv[2] ), "w" )

    def on_btn_hal_meter_clicked( self, data = None ):
        p = os.popen( "halmeter &" )

    def on_btn_status_clicked( self,  data = None ):
        p = os.popen( "linuxcnctop  > /dev/null &", "w" )

    def on_btn_hal_scope_clicked( self,  data = None ):
        p = os.popen( "halscope  > /dev/null &", "w" )

    def on_btn_classicladder_clicked( self, data = None ):
        p = os.popen( "classicladder  &", "w" )
Аватара пользователя
dinkata
Мастер
Сообщения: 1027
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: MyGUI

Сообщение dinkata »

verser писал(а):нажатия соответствующих кнопок,
извините ,я в питоне :oops: :thinking:
как сделат
mygui.hal_button23 = on_btn_classicladder_clicked
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
dinkata
Мастер
Сообщения: 1027
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: MyGUI

Сообщение dinkata »

nkp писал(а):в папку /bin ложим файл mygui с таким содержимым:
здесь добавил твой скрипт

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

#!/usr/bin/python

import pygtk
pygtk.require("2.0")
import gtk
import gladevcp.makepins
from gladevcp.gladebuilder import GladeBuilder
import hal
from subprocess import *
import sys,os
BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
datadir = os.path.join(BASE, "usr","share", "linuxcnc")
xmlname = os.path.join(datadir,"mygui.glade")

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

class Mygui(object):

   def on_window1_destroy(self, widget, data=None):
      print "quit++"
      gtk.main_quit()
   def __init__(self):
      self.builder = gtk.Builder()
      self.builder.add_from_file(xmlname)
      halcomp = hal.component("mygui")
      self.widgets = Widgets(self.builder)
      self.builder.connect_signals(self)
      self.window = self.builder.get_object("window1")
      self.window.show()
      panel = gladevcp.makepins.GladePanel( halcomp, xmlname, self.builder, None)


   def on_btn_show_hal_clicked( self, data = None ):
       p = os.popen( "tclsh %s/bin/halshow.tcl &" % TCLPATH )

   def on_btn_calibration_clicked( self, data = None ):
       p = os.popen( "tclsh %s/bin/emccalib.tcl -- -ini %s > /dev/null &" % ( TCLPATH, sys.argv[2] ), "w" )

   def on_btn_hal_meter_clicked( self, data = None ):
       p = os.popen( "halmeter &" )

   def on_btn_status_clicked( self,  data = None ):
       p = os.popen( "linuxcnctop  > /dev/null &", "w" )

   def on_btn_hal_scope_clicked( self,  data = None ):
       p = os.popen( "halscope  > /dev/null &", "w" )

   def on_btn_classicladder_clicked( self, data = None ):
       p = os.popen( "classicladder  &", "w" )


if __name__ == "__main__":
   app = Mygui()
   res = os.spawnvp(os.P_WAIT, "halcmd", ["halcmd", "-f", "/home/zmm/linuxcnc/configs/MyMachine/mode.hal"])
   if res: raise SystemExit, res
   gtk.main() 
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: MyGUI

Сообщение verser »

dinkata писал(а):как сделат mygui.hal_button23 = on_btn_classicladder_clicked
В Glade редакторе справа в окне свойств вкладка "Сигнали" вставить для сигнала "...clicked" имя on_btn_classicladder_clicked и то же для других кнопок проделать.
Аватара пользователя
dinkata
Мастер
Сообщения: 1027
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: MyGUI

Сообщение dinkata »

спасибо verser ,работает .. :D
все ,кроме halshow и calibration :wik:
откуда ето ......
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: MyGUI

Сообщение verser »

dinkata писал(а): ..работает .. :D
все ,кроме halshow и calibration :wik:
откуда ето ......
надо еще задать где-то вначале python программы глобальную переменную

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

TCLPATH = os.environ['LINUXCNC_TCL_DIR']
Последний раз редактировалось verser 15 июл 2015, 19:03, всего редактировалось 1 раз.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: MyGUI

Сообщение Serg »

а так не кошерно будет?

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

p = os.popen( "tclsh %s/bin/emccalib.tcl -- -ini %s > /dev/null &" % ( os.environ['LINUXCNC_TCL_DIR'], sys.argv[2] ), "w" )
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: MyGUI

Сообщение verser »

UAVpilot писал(а):а так не кошерно будет?
или так.. тогда еще и другой вызов соответственно подправить

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

p = os.popen( "tclsh %s/bin/halshow.tcl &" % os.environ['LINUXCNC_TCL_DIR'] )
Аватара пользователя
dinkata
Мастер
Сообщения: 1027
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: MyGUI

Сообщение dinkata »

спасибо,работает все :D
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
demogorgon
Новичок
Сообщения: 5
Зарегистрирован: 14 апр 2016, 13:03
Репутация: 0
Настоящее имя: Дмитрий
Контактная информация:

Re: MyGUI

Сообщение demogorgon »

Всем привет!Делаю свою панель, возникла проблема.С общими понятиями вроде разобрался(спасибо этой теме),но вопрос в селдующем,хочу сделать перемещение по осям на определенное растояние,по нажатию на кнопку. то есть по нажатию на кнопки задается икремент(0,1мм 1мм 10 мм, к примеру) и затем по нажатию на кнопку перемещения по оси мы каждый раз двигаемся на заданное расстояние.подскажите пожалуйста, как это лучше можно реализовать.заранее спасибо)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

demogorgon
Новичок
Сообщения: 5
Зарегистрирован: 14 апр 2016, 13:03
Репутация: 0
Настоящее имя: Дмитрий
Контактная информация:

Re: MyGUI

Сообщение demogorgon »

Спасибо большое, буду разбираться!!!
demogorgon
Новичок
Сообщения: 5
Зарегистрирован: 14 апр 2016, 13:03
Репутация: 0
Настоящее имя: Дмитрий
Контактная информация:

Re: MyGUI

Сообщение demogorgon »

Инкрементальные перемещения прописаные :
loadrt encoder names=encoder.a
loadrt mult2 count=1
addf mult2.0 servo-thread
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.a.position-scale 1

loadrt mux4 count=1
addf mux4.0 servo-thread

setp mux4.0.in0 1
setp mux4.0.in1 0.1
setp mux4.0.in2 0.01
setp halui.jog-speed 10
setp axis.0.jog-enable 1

net out mux4.0.out halui.jog.0.increment
net sel0 mux4.0.sel0 parport.0.pin-13-in-not
net sel1 mux4.0.sel1 parport.0.pin-05-in-not
setp mult2.0.in0 100
setp halui.feed-override.scale 0.01
net enc.a-a => encoder.a.phase-A => parport.0.pin-11-in
net enc.b-b => encoder.a.phase-B => parport.0.pin-12-in
net mult halui.feed-override.value mult2.0.in1
net counts encoder.a.counts halui.feed-override.counts
net inc_jog_0_plus halui.jog.0.increment-minus parport.0.pin-15-in-not

Возникли вопросы по коду!в целом разобрался, но кое что не понятно:
1. Мне нужно 4 инкремента (0,01 0,1 1 10),для этого как я понял мне понадобится mux8?
2. Насколько я понял в итоге здесь есть команда для движени по оси Х и только в одном направлении net inc_jog_0_plus halui.jog.0.increment-minus parport.0.pin-15-in-not ??
Исходя из вышесказанного,для того чтобы сделать перемещения в разные стороны и,допустим,по трем осям, мне нужны еще вход/выходы parportа,но их всего не так много же как мне нужно, чтобы допавить еже инкременты и еще перемещение по осям..или я что то не так понял?? :thinking: :wik:
Ответить

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