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

Re: MyGUI

Добавлено: 02 окт 2012, 17:01
Lexxa
Nick, nkp, проверьте мою писаниу плз))))

Re: MyGUI

Добавлено: 02 окт 2012, 17:34
nkp
Nick писал(а):Если написать halcmd tratata -W, то да - не запуститься, а если: halcmd tratata -Wn mygui, то по идее должен запуститься.
ты прав (как обычно и бывает :) )
проверил - все точно так и работает

Re: MyGUI

Добавлено: 02 окт 2012, 17:46
nkp
Lexxa,
если по работе логики - то вроде все правильно:
создаем пины,коннектимся,проверяем
а если по синтаксису- то тут много неточностей
перечислять?

Re: MyGUI

Добавлено: 02 окт 2012, 19:40
Nick
Какую именно из них? Уже думал тебе ошибки выделить, но потом подумал, что это просто набросок :)
(для просмотра содержимого нажмите на ссылку)
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, pin) :
if halcomp('mode_ref') ==1 :
#код

def self.set_mode_incjog(self) :
if halcomp('mode_incjog') ==1:
#код
Но вообще, может быть лучше сделать так (если при переключениях режимов делается много чего одинакового):

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

def self.set_mode(self, pin, mode):
  self.mode = mode
  ....
А в сигналы прописать вот так:

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

self.mode_auto.connect('value-changed', self.set_mode, MODE_AUTO)
Кстати, там в функцию передается два параметра:
self, т.к. вызываем self.set_mode и ссылка на объект сгенерировавший ивент, т.е. наш пин.

Мда корявенько написал, если не поймете пишите :)

Re: MyGUI

Добавлено: 02 окт 2012, 21:57
Lexxa
я бы очень хотел взглянуть на ошибки, поскольку я без этого никогда не разберусь

Re: MyGUI

Добавлено: 02 окт 2012, 22:03
Nick
Когда запускаешь питоновскую программу то если есть ошибка, она пишет например

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

  File "bezier-console.py", line 45
    class BezierConsole(inkex.Effect)
                                    ^
SyntaxError: invalid syntax
Причем символ ^ указывает на место, где питон считает, что есть ошибка. За это я его очень люблю :)
Лучше всего вешай сюда такие сообщения, и если сам не разберешься пока пишешь, то мы точно поможем :).

Re: MyGUI

Добавлено: 03 окт 2012, 09:14
Lexxa
Ник, ай нид хэлп.
Ругается гад на ошибку сегментирования:

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

lexxa@lexxa-laptop:~/supercnc$ ./sgui.py 

** (sgui.py:15590): WARNING **: expected enumeration type GtkEntryIconPosition, but got GtkPositionType instead
./sgui.py:34: RuntimeWarning: missing handler 'on_eventbox_gremlin_leave_notify_event'
  self.builder.connect_signals(self)
Emit interp-run
Ошибка сегментирования
Причем ругается c
h = hal.componet("sgui")
gui появляется и сразу падает.

текст скрипта:

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

#!/usr/bin/python
import time
import gladevcp.makepins
from gladevcp.gladebuilder import GladeBuilder
import hal
import linuxcnc
import hal_glib
import sys
import gladevcp
import os
import gladevcp.makepins

try:
  import pygtk
  pygtk.require('2.0')
  
except:
  pass
try:
  import gtk
  import gtk.glade
except:
  sys.exit(1)

class sgui:

  def on_window1_destroy(self, object, data=None):
    gtk.main_quit()
  
  def __init__(self):
    self.gladefile = "sgui.glade"
    self.builder = gtk.Builder()
    self.builder.add_from_file(self.gladefile)
    self.builder.connect_signals(self)
    self.window = self.builder.get_object("window1")
    self.window.show()
    self.gremlin = self.builder.get_object('eventbox_gremlin')
#    self.gcode_text = self.builder.get_object('gcode_view')
    self.mdi_hist = self.builder.get_object('hal_mdihistory')
    self.gcode_scroll = self.builder.get_object('scrolledwindow1')
    self.gremlin.show()
#    self.gcode_text.hide()
    self.mdi_hist.hide()
    self.gcode_scroll.hide() 
    h = hal.component("sgui")
#    #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)

#  def self.set_mode_ref(self, pin) :
#   if halcomp('mode_ref') ==1 :
#
#  def self.set_mode_incjog(self) :
#   if halcomp('mode_incjog') ==1:

if __name__ == "__main__":
  main = sgui()
  gtk.main()
  s = linuxcnc.stat()
  c = linuxcnc.command()

Re: MyGUI

Добавлено: 03 окт 2012, 09:50
Lexxa
а, разобрался с этим.
надо не h = hal.componet("sgui") а self.halcomp = hal.componet("sgui")
и self.--- напропускал
А что значит

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

  self.builder.connect_signals(self)
Emit interp-run
Traceback (most recent call last):
  File "./sgui.py", line 63, in set_mode_ref
    if self.halcomp('mode_ref') ==1 :

Re: MyGUI

Добавлено: 03 окт 2012, 10:25
Nick
Lexxa писал(а):А что значит
А целиком, что пишет?

Вообще надо писать не
self.halcomp('mode_ref') ==1 :
а self.halcomp['mode_ref'] ==1 :
мы берем элемент массива (словаря (dict)) self.halcomp, а не вызываем функцию self.halcomp.

Re: MyGUI

Добавлено: 03 окт 2012, 10:37
Lexxa
ааааа

Re: MyGUI

Добавлено: 03 окт 2012, 11:17
Lexxa
блин, опять косяк:

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

lexxa@lexxa-laptop:~/supercnc$ ./sgui.py 
  File "./sgui.py", line 95
    res = os.spawnvp(os.P_WAIT, "halcmd", ["halcmd", "-f", "/home/lexxa/supercnc/mode.hal"])
    ^
IndentationError: unexpected indent
в скрипте (для просмотра содержимого нажмите на ссылку)

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

if __name__ == "__main__":
  s = linuxcnc.stat()
  c = linuxcnc.command()
  app = sgui()
    res = os.spawnvp(os.P_WAIT, "halcmd", ["halcmd", "-f", "/home/lexxa/supercnc/mode.hal"])
    if res: raise SystemExit, res
  gtk.main()

Re: MyGUI

Добавлено: 03 окт 2012, 11:34
Serg
А зачем перед этой строчкой и перед следующёй сделал отступ?

Re: MyGUI

Добавлено: 03 окт 2012, 11:42
Lexxa
спс))

Re: MyGUI

Добавлено: 03 окт 2012, 15:26
Lexxa
MDI история не работает
ругается как только галочку в mdi_hist нажимаешь...

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

mode mdi
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/gladevcp/hal_mdihistory.py", line 92, in submit
    ensure_mode(self.stat, self.linuxcnc, linuxcnc.MODE_MDI)
AttributeError: 'EMC_MDIHistory' object has no attribute 'stat'
Traceback (most recent call last):
  File "./sgui.py", line 120, in <module>
    gtk.main()

Re: MyGUI

Добавлено: 03 окт 2012, 16:50
nkp
а код ты где то выкладывал?
где посмотреть?
я что то пропустил....

Re: MyGUI

Добавлено: 03 окт 2012, 19:21
Lexxa
да код вон двумя сообщениями выше, там просто ошибки синтаксические исправлены и hide-show добавлены. Т.е. глобальных отличий нет

Re: MyGUI

Добавлено: 03 окт 2012, 21:57
Nick
Lexxa писал(а):"/usr/lib/pymodules/python2.6/gladevcp/hal_mdihistory.py"
Может в самом mdi_history что-то не так? У кого-нибудь он вообще работает?

Re: MyGUI

Добавлено: 03 окт 2012, 22:06
Lexxa
и, кстати, я заметил, что текст программы тоже не загружается

Re: MyGUI

Добавлено: 04 окт 2012, 10:58
nkp
не работает jog.increment:

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

setp axis.2.jog-enable 1
setp    halui.jog.2.increment 1 
net inc   parport.0.pin-15-in-not  halui.jog.2.increment-plus
что то еще надо прописать???

Re: MyGUI

Добавлено: 04 окт 2012, 11:10
nkp
сейчас попробовал на 2.4 , 2.5 , 2.6 - не работает