Страница 1 из 2

Кнопка ПУСК в собственной визуальной панели.

Добавлено: 16 дек 2021, 16:47
Ворон226
Сделал отдельную тему, так как, наверное, в старые темы многие уже и не заглядывают...

Если мы прикручиваем к AXIS дополнительную панель glade, то программу, загруженную по умолчанию можно легко запустить кнопкой ПУСК AXIS-а

А вот при создании собственной панели я столкнулся с трудностями... Ещё 7 лет назад. Но тогда обошелся дополнительной панелью и забыл про проблему с кнопкой ПУСК.

А тут начал создавать свою панель в GLADE и... не работает кнопка ПУСК, прикрученная к пину halui.program.run!

Ещё 7 лет назад мне посоветовали организовать работу этой кнопки так -
Ворон226 писал(а): 16 дек 2021, 11:22 Что было рекомендовано для создания кнопки ПУСК в собственной панели управления станком на linuxcnc:

1. В Glade в свойствах кнопки ПУСК в Сигналы добавить clicked run (обязательно без скобочек!!!)

2. В файле, описывающем визуальную панель (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()
После этого нет необходимости прописывать кнопку визуальной панели в mode.hal

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

#net start mygui.hal_button14 halui.program.run
Прописал исполняемую программу очень просто:

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

G21

G1 X150 Y-200 F500
G0 X0 Y0

M2
, а в INI прописано так:

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

[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()

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 16 дек 2021, 16:52
Ворон226
Сегодня попробовал в визуальной панели создать кнопки для переключения режимов halui.mode
5 кнопок - 5 режимов: auto, joint, manual, mdi, teleop
А в mygui исключил прописанную команду на исполнение.
Кнопку ПУСК опять привязал к halui.program.run

Перед нажатием на кнопку ПУСК вручную переключал режимы halui.mode. Кнопка ПУСК не запускает исполнение программы... Но и в терминале нет никакой реакции. Кнопка попросту игнорируется.

Что делать и куда копать?

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 16 дек 2021, 16:58
Ворон226
А по большому счёту вопрос такой:

Как в собственной визуальной панели запустить загруженную программу на исполнение?

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 16 дек 2021, 18:52
daiman444
Приветствую. Если имеется ввиду полностью собственныц интерфейс то вот отличный мануал: https://gnipsel.com/linuxcnc/gui/index.html

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 16 дек 2021, 19:41
Ворон226
Похоже, что к кнопке ПУСК необходимо в GLADE добавить действие:
Run, hal_action_run1 (EMC Action Run)
В файле панели < имя>.glade это должно выглядеть так:
name="related_action">hal_action_run1</property>
(ведь где-то такое уже встречал...)

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 08:30
daiman444
Ворон226 писал(а): добавить действие
Почему то что в gladevcp что в qtvcp не все команды можно запустить через кнопки. В qtvcp никак не могу дойти умом чтобы "загрузить" уп и "перезагрузить" уп было с кнопок. Стандартными средствами только через action на панели инструментов они есть.

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 10:23
Ворон226
Что-то совсем запутался... Просто нет идей даже...
В первом варианте (что в первом сообщении) хоть есть ругательство в терминале:
emc/task/emctask.cc 411: interp_error: File not open
File not open

Все другие варианты - глухо тишина...

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 11:01
Kost_irk
Я так понимаю, эта ошибка говорит о том, что ini не загружен по причине наличия в нем ошибки. Пробуйте что-то убирать и смотреть.

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 11:17
Ворон226
Kost_irk писал(а): 17 дек 2021, 11:01 Я так понимаю, эта ошибка говорит о том, что ini не загружен по причине наличия в нем ошибки. Пробуйте что-то убирать и смотреть.
При загрузке конфигурации всё в норме. Станок выходит в HOME. Перемещается. Ошибка в терминале появляется при нажатии кнопки "ПУСК" и исполнении команды на выполнение загруженной программы. КОманда приписана в файле mygui

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

class Mygui(object):
        def run(self, widget): 
                program_start_line = 0
                c.mode(linuxcnc.MODE_AUTO)
                c.auto(linuxcnc.AUTO_RUN, program_start_line) 
(в первом сообщении)

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 12:22
Ворон226
Поиск по "emc/task/emctask.cc 411: interp_error: File not open" в инете привел к одному сообщению на англоязычном форуме, на котором ветка как-то быстро загнулась...

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 12:46
Kost_irk
А со стандартной кнопки загруженная программа запускается?

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 12:56
Ворон226
Kost_irk писал(а): 17 дек 2021, 12:46 А со стандартной кнопки загруженная программа запускается?
Да. Если прикрутить панельку к AXIS, то видна и программа. И запускается с кнопки ПУСК самой AXIS. А вот кнопка ПУСК визуальной панели не работает...

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 12:58
Ворон226
Семь лет назад было аналогично с запуском подпрограмм с кнопки... - https://www.cnc-club.com/forum/viewtopi ... &start=160
и к чему толком не пришли - перешел с версии 2.5 на 2.6 и всё. А вот с кнопкой ПУСК так всё и осталось. Кто бы мог подумать, что всплывёт через 7 лет?)

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 13:23
Kost_irk
А, то есть основная проблема в запуске отдельно от axis? Тогда может быть надо попробовать самому загрузить файл перед выполнением. c.program_open("foo.ngc")
Возможно, то что вы пишете в ini, передается оболочке, чтобы она сама загрузила файл, а ваша оболочка этого не обрабатывает.

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 13:29
Ворон226
Kost_irk писал(а): 17 дек 2021, 13:23 А, то есть основная проблема в запуске отдельно от axis? Тогда может быть надо попробовать самому загрузить файл перед выполнением. c.program_open("foo.ngc")
Возможно, то что вы пишете в ini, передается оболочке, чтобы она сама загрузила файл, а ваша оболочка этого не обрабатывает.
Прописать в mygui?
Как-то так?

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

class Mygui(object):
	def run(self, widget):
		program_start_line = 0
		c.program_open("имя.ngc")
		c.mode(linuxcnc.MODE_AUTO)
		c.auto(linuxcnc.AUTO_RUN, program_start_line)
Так?

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 13:49
Ворон226
УРА!!!
Получилось!!!

Оказывается, что в INI прописывается путь к загружаемому файлу для AXIS-а...
Стоило добавить к команде : c.program_open("имя.ngc")
И всё заработало!!!

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

(на днях сделаю в ВИКИ запись)

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 13:56
Ворон226
Ворон226 писал(а): 17 дек 2021, 13:29
Прописать в mygui?
Как-то так?

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

class Mygui(object):
	def run(self, widget):
		program_start_line = 0
		c.program_open("имя.ngc")
		c.mode(linuxcnc.MODE_AUTO)
		c.auto(linuxcnc.AUTO_RUN, program_start_line)
Так?
Только более корректно (терминал вообще молчит), если прописать так:

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

class Mygui(object):
	def run(self, widget):
		program_start_line = 0
		c.mode(linuxcnc.MODE_AUTO)
		c.program_open("имя.ngc")
		c.auto(linuxcnc.AUTO_RUN, program_start_line)

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 16:34
Kost_irk
Ворон226 писал(а): Оказывается, что в INI прописывается путь к загружаемому файлу для AXIS-а...
Это не совсем так, оно там просто прописывается, а вот что с этим делать - решает оболочка.
Грамотнее всего вам будет тоже считать этот параметр из ini и передать в функцию c.program_open
http://linuxcnc.org/docs/html/config/py ... i_values_a

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 17 дек 2021, 20:57
Ворон226
Получается, что этим способом будет корректнее и надёжнее прописывать кнопки и привязанные к ним действия) Спасибо!

Re: Кнопка ПУСК в собственной визуальной панели.

Добавлено: 18 дек 2021, 18:03
steals_y2k
daiman444 писал(а): Почему то что в gladevcp что в qtvcp не все команды можно запустить через кнопки. В qtvcp никак не могу дойти умом чтобы "загрузить" уп и "перезагрузить" уп было с кнопок. Стандартными средствами только через action на панели инструментов они есть.
я так и не смог подобрать команду, чтобы отправить в дом конкретную ось😂😂😏
ума не хватило.