Страница 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 строке
мы добывили две строчки :
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 файл , создай кнопку (или к уже готовой) :
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 писал(а):Да уж. Питон, однако! Вся проблема в пробелах
да - иногда это напрягает (хотя интепретатор почти всегда поправляет нас))
но вот люди помешаные на питоне ставят это в заслугу:
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 не нужно
Там же в ini прописать mdi-команду
Код: Выделить всё
[HALUI]
MDI_COMMAND = <имя M-кода с выключением>
И саму кнопку из визуальной панели прописать в mode.hal
Код: Выделить всё
net mdi mygui.hal_buttonN halui.mdi-command-00
Второй вариант
через скрипт mygui (описан выше).
Оба работают. Осталось только решить: какой больше подходит
Большое спасибо!