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

Re: MyGUI

Добавлено: 29 сен 2013, 11:03
PKM
РАз зашла речь о Git. У меня недавно возникла ситуация. Скачал мастер, поредактировал и хочу вернуть все назад, чтобы получить новые изменения с сервера. Вроде бы можно вернуть через

git reset --hard

но у меня ни черта не получилось, все равно рапортует что есть лишние изменения и отказывается применять git pull
Приходится создавать новый репозиторий и скачивать все заново, ведь так не должно быть...

Re: MyGUI

Добавлено: 30 сен 2013, 08:11
Starik
есть надстройка над git, сильно жизнь упрощает: stgit звать...

Re: MyGUI

Добавлено: 30 сен 2013, 10:00
Nick
PKM писал(а):Скачал мастер, поредактировал и хочу вернуть все назад, чтобы получить новые изменения с сервера. Вроде бы можно вернуть через
хмм.... т.е. ты хочешь стереть все, что сделал? А revert не помогает?

Re: MyGUI

Добавлено: 30 сен 2013, 11:10
PKM
Nick писал(а): revert не помогает?
Не пробовал, буду уже на новой папке упражняться.

Re: MyGUI

Добавлено: 17 ноя 2013, 16:06
nkp
в продолжение http://cnc-club.ru/forum/viewtopic.php? ... 697#p94697

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

#!/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, "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()
      self.window.fullscreen()
      panel = gladevcp.makepins.GladePanel( halcomp, xmlname, self.builder, None)


if __name__ == "__main__":
   app = Mygui()
   res = os.spawnvp(os.P_WAIT, "halcmd", ["halcmd", "-f", "/home/sun/linuxcnc/configs/MyGUI/mode.hal"])
   if res: raise SystemExit, res
   gtk.main() 
вот так измени его попробуй ...
если ошибок не будет - добавим функцию...

Re: MyGUI

Добавлено: 17 ноя 2013, 16:14
Ворон226
Ошибок не выдал...

Re: MyGUI

Добавлено: 17 ноя 2013, 16:20
nkp

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

#!/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, "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 shutdown (self,widget): 
      h = Popen(['/home/nkp/sh.sh'], shell=True)

   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()
      self.window.fullscreen()
      panel = gladevcp.makepins.GladePanel( halcomp, xmlname, self.builder, None)


if __name__ == "__main__":
   app = Mygui()
   res = os.spawnvp(os.P_WAIT, "halcmd", ["halcmd", "-f", "/home/sun/linuxcnc/configs/MyGUI/mode.hal"])
   if res: raise SystemExit, res
   gtk.main() 
только вместо /home/nkp/sh.sh напиши свой путь к файлу sh.sh
его содержимое :
#!/bin/sh
sudo shutdown -h now
и сделай его исполняемым...(ну может это и лишнее - не знаю))

Re: MyGUI

Добавлено: 17 ноя 2013, 16:56
Ворон226
А вот тут ошибка:

Re: MyGUI

Добавлено: 17 ноя 2013, 17:03
nkp
пишет ошибка сиснтаксиса в 4 строке :thinking:
мы добывили две строчки :
def shutdown (self,widget):
h = Popen(['/home/nkp/sh.sh'], shell=True)
закомментируй их # и попробуй ...

Re: MyGUI

Добавлено: 17 ноя 2013, 17:14
Ворон226
Сделал. Вот, что удалось ухватить в терминале:

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

chine configuration directory is '/home/sun/linuxcnc-dev/configs/MyGUI'
Machine configuration file is 'MyGUI.ini'
Starting LinuxCNC...
io started
halcmd loadusr io started
task pid=3925
emcTaskInit: using builtin interpreter
/home/sun/linuxcnc-dev/bin/mygui: строка 4: ошибка синтаксиса около неожиданной лексемы `"2.0"'
/home/sun/linuxcnc-dev/bin/mygui: строка 4: `    pygtk.require("2.0")'
Shutting down and cleaning up LinuxCNC...

Re: MyGUI

Добавлено: 17 ноя 2013, 17:18
nkp
ну тогда смотри - что там у тебя не так около 4-й строки...
у нас же первый раз (без двух строк ) функции запускалось без ошибок http://cnc-club.ru/forum/viewtopic.php? ... 718#p94700

Re: MyGUI

Добавлено: 17 ноя 2013, 17:28
Ворон226
Теперь и первый вариант стал ругаться на 4 строку. (заново скопировал с форума и запустил)

Re: MyGUI

Добавлено: 17 ноя 2013, 21:37
nkp
все проверил - все работает)
повесил на кнопку - жму - комп выключается...
проверяй у себя ( не доверяй копипасту )

Re: MyGUI

Добавлено: 17 ноя 2013, 22:01
Ворон226
Да уж. Питон, однако! Вся проблема в пробелах. Теперь не ругается... Осталось "прикрутить" кнопку к функции. Как?

Точнее - визуальная панель запускается, кнопочки работают, двигатели двигаются, но вот в терминале есть ошибка:

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

LINUXCNC - 2.6.0-pre0-4739-g5efa78e
Machine configuration directory is '/home/sun/linuxcnc-dev/configs/MyGUI'
Machine configuration file is 'MyGUI.ini'
Starting LinuxCNC...
io started
halcmd loadusr io started
task pid=2326
emcTaskInit: using builtin interpreter
RTAPI: ERROR: Unexpected realtime delay on task 1
This Message will only display once per session.
Run the Latency Test and resolve before continuing.


Re: MyGUI

Добавлено: 17 ноя 2013, 22:10
nkp
открой свой glade файл , создай кнопку (или к уже готовой) :
(для просмотра содержимого нажмите на ссылку)
Выделение_053.png (3967 просмотров) <a class='original' href='./download/file.php?id=21164&mode=view' target=_blank>Загрузить оригинал (79.28 КБ)</a>

Re: MyGUI

Добавлено: 17 ноя 2013, 22:13
nkp
Ворон226 писал(а):но вот в терминале есть ошибка:
http://cnc-club.ru/forum/viewtopic.php? ... 1232#p1232
у тебя latency на данном компе нормальный?

Re: MyGUI

Добавлено: 17 ноя 2013, 22:27
Ворон226
Прошел по твоей ссылке на текст и увидел

EMC2 отказывается выполнять программы до тех пор пока не найдены начала осей потому, что EMC2 должен точно знать в каком положении находится станок, чтобы не дать ему выехать за пределы осей.

Если совсем не хочется выставлять начала, то можно в файле конфигурации в раздел [TRAJ] нужно добавить строчку: "NO_FORCE_HOMING = 1" и EMC2 не будет выдавать эту ошибку. Но в этом случае нужно быть особенно внимательным следя за работой станка, т.к. EMC2 не сможет контролировать пределы осей

И решил я проверить. Исправил ini-файл. Запустил конфигурацию... Все работает. Но вот при нажатии на кнопку выключения терминал ругнулся по-другому:

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

emc/task/emctask.cc 389: interp_error: Использован неизвестный M-код
Использован неизвестный M-код
Интересно - эта ситуация проще предыдущей или нет?
(буду пока прописывать кнопочку в Glade)

Re: MyGUI

Добавлено: 17 ноя 2013, 22:30
nkp
Использован неизвестный M-код
тут скорей всего файл м-кода лежит в иной папке , нежели указано в ини в PROGRAM_PREFIX =

Re: MyGUI

Добавлено: 17 ноя 2013, 22:43
nkp
Ворон226 писал(а):Да уж. Питон, однако! Вся проблема в пробелах
да - иногда это напрягает (хотя интепретатор почти всегда поправляет нас))
но вот люди помешаные на питоне ставят это в заслугу: :freak:
http://www.youtube.com/watch?v=GyP59P8h7uQ
9:40 - 11:23

Re: MyGUI

Добавлено: 17 ноя 2013, 22:48
Ворон226
Вот все и встало на свои места. Работают оба варианта!

Один штатный LCNC:

написать M-код выключения машины и компьютера и положить её в папку, адрес которой указываем в ini

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

[DISPLAY]
PROGRAM_PREFIX = <адрес папки с M-кодом>
Там же в ini указать, что устанавливать home не нужно

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

[TRAJ]
NO_FORCE_HOMING = 1
Там же в ini прописать mdi-команду

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

[HALUI]
MDI_COMMAND = <имя M-кода с выключением>
И саму кнопку из визуальной панели прописать в mode.hal

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

net   mdi   mygui.hal_buttonN   halui.mdi-command-00
Второй вариант через скрипт mygui (описан выше).

Оба работают. Осталось только решить: какой больше подходит ;)

Большое спасибо!