Если мы прикручиваем к AXIS дополнительную панель glade, то программу, загруженную по умолчанию можно легко запустить кнопкой ПУСК AXIS-а
А вот при создании собственной панели я столкнулся с трудностями... Ещё 7 лет назад. Но тогда обошелся дополнительной панелью и забыл про проблему с кнопкой ПУСК.
А тут начал создавать свою панель в GLADE и... не работает кнопка ПУСК, прикрученная к пину halui.program.run!
Ещё 7 лет назад мне посоветовали организовать работу этой кнопки так -
Ворон226 писал(а): ↑16 дек 2021, 11:22 Что было рекомендовано для создания кнопки ПУСК в собственной панели управления станком на linuxcnc:
1. В Glade в свойствах кнопки ПУСК в Сигналы добавить clicked run (обязательно без скобочек!!!)
2. В файле, описывающем визуальную панель (mygui) добавить:
После этого нет необходимости прописывать кнопку визуальной панели в mode.halКод: Выделить всё
#!/usr/bin/python import pygtk pygtk.require("2.0") import gtk import gladevcp.makepins from gladevcp.gladebuilder import GladeBuilder import hal import linuxcnc s = linuxcnc.stat() c = linuxcnc.command() import sys,os xmlname = "mygui.glade" class Mygui(object): def run(self, widget): program_start_line = 0 c.mode(linuxcnc.MODE_AUTO) c.auto(linuxcnc.AUTO_RUN, program_start_line) 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.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", "./mode.hal"]) if res: raise SystemExit, res gtk.main()
Прописал исполняемую программу очень просто:Код: Выделить всё
#net start mygui.hal_button14 halui.program.run
, а в INI прописано так:Код: Выделить всё
G21 G1 X150 Y-200 F500 G0 X0 Y0 M2
В эту папочку и положил исполняемую программу.Код: Выделить всё
[DISPLAY] OPEN_FILE = /home/telex-2-3/linuxcnc/configs/PRINT1/print1.ngc
Нажимаю кнопку "ПУСК"
и вижу в терминале:Конечно, программа и не думала начать исполняться...Код: Выделить всё
emc/task/emctask.cc 411: interp_error: File not open File not open
Посмотрел emc/task/emctask.cc - нет такой папки! Кто же к ней хочет обратиться? И где это обращение прописано? И как переправить на нужное?
На всякий прикладываю файл myguiКод: Выделить всё
#!/usr/bin/python import pygtk pygtk.require("2.0") import gtk import gladevcp.makepins from gladevcp.gladebuilder import GladeBuilder import hal import linuxcnc s = linuxcnc.stat() c = linuxcnc.command() import sys,os xmlname = "mygui.glade" class Mygui(object): def run(self, widget): program_start_line = 0 c.mode(linuxcnc.MODE_AUTO) c.auto(linuxcnc.AUTO_RUN, program_start_line) 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.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", "./mode.hal"]) if res: raise SystemExit, res gtk.main()