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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон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()
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

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

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

Что делать и куда копать?
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

А по большому счёту вопрос такой:

Как в собственной визуальной панели запустить загруженную программу на исполнение?
Хочешь быть счастливым? Будь им!
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

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

Сообщение daiman444 »

Приветствую. Если имеется ввиду полностью собственныц интерфейс то вот отличный мануал: https://gnipsel.com/linuxcnc/gui/index.html
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

Похоже, что к кнопке ПУСК необходимо в GLADE добавить действие:
Run, hal_action_run1 (EMC Action Run)
В файле панели < имя>.glade это должно выглядеть так:
name="related_action">hal_action_run1</property>
(ведь где-то такое уже встречал...)
Хочешь быть счастливым? Будь им!
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

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

Сообщение daiman444 »

Ворон226 писал(а): добавить действие
Почему то что в gladevcp что в qtvcp не все команды можно запустить через кнопки. В qtvcp никак не могу дойти умом чтобы "загрузить" уп и "перезагрузить" уп было с кнопок. Стандартными средствами только через action на панели инструментов они есть.
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

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

Все другие варианты - глухо тишина...
Хочешь быть счастливым? Будь им!
Kost_irk
Мастер
Сообщения: 995
Зарегистрирован: 19 июл 2018, 07:46
Репутация: 193
Откуда: Иркутск
Контактная информация:

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

Сообщение Kost_irk »

Я так понимаю, эта ошибка говорит о том, что ini не загружен по причине наличия в нем ошибки. Пробуйте что-то убирать и смотреть.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон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) 
(в первом сообщении)
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

Поиск по "emc/task/emctask.cc 411: interp_error: File not open" в инете привел к одному сообщению на англоязычном форуме, на котором ветка как-то быстро загнулась...
Хочешь быть счастливым? Будь им!
Kost_irk
Мастер
Сообщения: 995
Зарегистрирован: 19 июл 2018, 07:46
Репутация: 193
Откуда: Иркутск
Контактная информация:

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

Сообщение Kost_irk »

А со стандартной кнопки загруженная программа запускается?
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

Kost_irk писал(а): 17 дек 2021, 12:46 А со стандартной кнопки загруженная программа запускается?
Да. Если прикрутить панельку к AXIS, то видна и программа. И запускается с кнопки ПУСК самой AXIS. А вот кнопка ПУСК визуальной панели не работает...
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

Семь лет назад было аналогично с запуском подпрограмм с кнопки... - https://www.cnc-club.com/forum/viewtopi ... &start=160
и к чему толком не пришли - перешел с версии 2.5 на 2.6 и всё. А вот с кнопкой ПУСК так всё и осталось. Кто бы мог подумать, что всплывёт через 7 лет?)
Хочешь быть счастливым? Будь им!
Kost_irk
Мастер
Сообщения: 995
Зарегистрирован: 19 июл 2018, 07:46
Репутация: 193
Откуда: Иркутск
Контактная информация:

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

Сообщение Kost_irk »

А, то есть основная проблема в запуске отдельно от axis? Тогда может быть надо попробовать самому загрузить файл перед выполнением. c.program_open("foo.ngc")
Возможно, то что вы пишете в ini, передается оболочке, чтобы она сама загрузила файл, а ваша оболочка этого не обрабатывает.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон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)
Так?
Последний раз редактировалось Ворон226 17 дек 2021, 13:42, всего редактировалось 1 раз.
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

УРА!!!
Получилось!!!

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

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

(на днях сделаю в ВИКИ запись)
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон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)
Хочешь быть счастливым? Будь им!
Kost_irk
Мастер
Сообщения: 995
Зарегистрирован: 19 июл 2018, 07:46
Репутация: 193
Откуда: Иркутск
Контактная информация:

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

Сообщение Kost_irk »

Ворон226 писал(а): Оказывается, что в INI прописывается путь к загружаемому файлу для AXIS-а...
Это не совсем так, оно там просто прописывается, а вот что с этим делать - решает оболочка.
Грамотнее всего вам будет тоже считать этот параметр из ini и передать в функцию c.program_open
http://linuxcnc.org/docs/html/config/py ... i_values_a
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

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

Сообщение Ворон226 »

Получается, что этим способом будет корректнее и надёжнее прописывать кнопки и привязанные к ним действия) Спасибо!
Хочешь быть счастливым? Будь им!
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

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

Сообщение steals_y2k »

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

Вернуться в «LinuxCNC»