MyGUI

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

Re: MyGUI

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

В первый раз всё запустилось чётко. Но со второго раза при запуске через start моей панели Линукс спрашивает:
LinuxCNC is still running? Restart it?
При нажитии - ДА - вылетает сообщение об ошибке. Его закрываю и открывается моя панель.

Вот я и пишу:
Ворон226 писал(а):добавил к свойствам нашего окна панели сигнал " on_window1_destroy "
, но это не решило проблемы...

Хотя, скорее всего, это я просто не прописал кучу кнопок, которые уже нарисовал ;)
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Ворон226 писал(а):Хотя, скорее всего, это я просто не прописал кучу кнопок, которые уже нарисовал
можно нарисовать кучу всего - никакой ошибки не должно быть
основополагающим тут является то - что наш скрипт ждет каких то событий
события мы прописываем в функциях
а эти функции привязываем к элементам окна(кнопки и т.п.)
привязывать можно 2-я способами:
в скрипте
в форме
Выделение(013).jpg (2060 просмотров) <a class='original' href='./download/file.php?id=12409&sid=80eb9c95d176928f6773567521aeb3a1&mode=view' target=_blank>Загрузить оригинал (408.7 КБ)</a>
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: MyGUI

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

Прошу прощения за ночной диалог в теме.
nkp! Спасибо за помощь!
Результат выкладываю в текстовом файле. Если есть замечания - делайте! Если есть нужда поместить этот текст в соответствующее место Вики - давайте положим.
Может кому-то и понадобится? (мне точно понадобится еще не раз ;) )
Вложения
Подготовка к созданию своей панели управления.odt
(1.23 МБ) 701 скачивание
Последний раз редактировалось Ворон226 01 мар 2013, 10:33, всего редактировалось 1 раз.
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: MyGUI

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

Похоже в конце накосячил...

В файле start прописал:

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

#!/bin/bash
. scripts/rip-environment

linuxcnc 

      def on_window1_destroy(self, widget, data=None):
        print "quit++"
        gtk.main_quit()
Всё запустилось. Но при повторном запуске Линукс выдал ошибку, а потом ваще завис :(

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

Re: MyGUI

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

nkp писал(а):(продолжение следует)
А где следует?
В какой теме можно почитать по дальнейшей работе с Glade?
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Ворон226 писал(а):Если есть замечания - делайте
Ворон226 писал(а):Линукс выдал ошибку, а потом ваще завис
файл start не надо изменять
он нам нужен всего лиш чтоб запускать окно выбора конфигурации ,которую мы хотим загрузить:
Выделение(015).jpg (2052 просмотра) <a class='original' href='./download/file.php?id=12425&sid=80eb9c95d176928f6773567521aeb3a1&mode=view' target=_blank>Загрузить оригинал (126.72 КБ)</a>
наша "тетрадка" сейчас - это скрипт питона (файл mygui)
емс через него загружает экран (тот ,который mygui.glade)
в нем и пишем все функции...
зы
продолжение и есть вся эта тема :)
тут про работу с glade не много - (но кое что и есть ;)
но сам конструктор Glade не так и сложен - там почти все интуитивно понятно
главное с питоном его "дружить" научиться
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: MyGUI

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

nkp писал(а):... наша "тетрадка" сейчас - это скрипт питона (файл mygui)
емс через него загружает экран (тот ,который mygui.glade)
в нем и пишем все функции...
Получается, что файл start должен выглядеть так:

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

#!/bin/bash
. scripts/rip-environment

linuxcnc 
, а файл mygui, который лежит в папке linuxcnc-dev/bin:

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

#!/usr/bin/python

import pygtk
pygtk.require("2.0")
import gtk
import gladevcp.makepins
from gladevcp.gladebuilder import GladeBuilder
import hal

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 Mygui(object):

	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()
		panel = gladevcp.makepins.GladePanel( halcomp, xmlname, self.builder, None)
	def on_window1_destroy(self, widget, data=None):
		print "quit++"
		gtk.main_quit()

if __name__ == "__main__":
	app = Mygui()
	gtk.main()
Так?
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Ворон226 писал(а):Так?
точно
----------------------
есть конечно большая польза запускать емс из консоли
то есть командуем из терминала:

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

. scripts/rip-environment
linuxcnc 
(те же строки - что и в файле start)
при таком способе питон выводит в терминал текст ошибок (а их будет очень много при отладке :) )
вот например вот эта строка :

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

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

Re: MyGUI

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

nkp писал(а):Теперь в Glade будем наполнять наше окно:
поставим размеры ...
разделим окно...
привязку действий к кнопкам делаем тут же:
рассмотрим на примере оси z:
(для просмотра содержимого нажмите на ссылку)
А у меня нет менюшки, в которой я могу выбрать, например, emc_home_z
Вложения
Снимок-1.png (2046 просмотров) <a class='original' href='./download/file.php?id=12427&sid=80eb9c95d176928f6773567521aeb3a1&mode=view' target=_blank>Загрузить оригинал (124.08 КБ)</a>
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Ворон226 писал(а):например, emc_home_z
emc_home_z - это название кнопки, ты задаешь его сам
а вот к какой оси будет применено деймтвие (home) выбыраешь здесь
Выделение(016).jpg (2043 просмотра) <a class='original' href='./download/file.php?id=12428&sid=80eb9c95d176928f6773567521aeb3a1&mode=view' target=_blank>Загрузить оригинал (113.59 КБ)</a>
и прсваиваешь здесь
(если ничего не путаю - поскольку я у себя применил немного другой способ)
Вложения
Выделение(017).jpg (2043 просмотра) <a class='original' href='./download/file.php?id=12429&sid=80eb9c95d176928f6773567521aeb3a1&mode=view' target=_blank>Загрузить оригинал (183.95 КБ)</a>
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: MyGUI

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

nkp писал(а):то есть командуем из терминала:

Код: Выделить всё • Развернуть

. scripts/rip-environment
linuxcnc


(те же строки - что и в файле start)
при таком способе питон выводит в терминал текст ошибок (а их будет очень много при отладке :) )
У меня прошло так:

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

cnc@cnc-desktop:~/linuxcnc-dev$ . scripts/rip-environment
cnc@cnc-desktop:~/linuxcnc-dev$ linuxcnc
LINUXCNC - 2.6.0-pre0-3876-g3bf98ee
Machine configuration directory is '/home/cnc/linuxcnc-dev/configs/MyGUI'
Machine configuration file is 'MyGUI.ini'
Starting LinuxCNC...
redis server started as: 'redis-server ', logging to: /dev/null
io started
emc/iotask/ioControl.cc 751: can't load tool table.
halcmd loadusr io started
task pid=1843
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.
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

ну в смысле это запустился емс ??
или нет??
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: MyGUI

Сообщение Nick »

Если это все, то наверное запустился :)
Ворон226 писал(а):RTAPI: ERROR: Unexpected realtime delay on task 1
Это говорит, что у тебя basepeiod маленький, а latency большой.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: MyGUI

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

Через некоторое время появилось ещё:

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

RTAPI: ERROR: could not open shared memory (errno=2)
ERROR: Module hal_lib does not exist in /proc/modules
ERROR: Module rtapi does not exist in /proc/modules
ERROR: Module rtai_math does not exist in /proc/modules
ERROR: Module rtai_sem does not exist in /proc/modules
ERROR: Module rtai_fifos does not exist in /proc/modules
ERROR: Module rtai_sched does not exist in /proc/modules
ERROR: Module rtai_hal does not exist in /proc/modules
Cleanup done
LinuxCNC terminated with an error.  You can find more information in the log:
    /home/cnc/linuxcnc_debug.txt
and
    /home/cnc/linuxcnc_print.txt
as well as in the output of the shell command 'dmesg' and in the terminal
cnc@cnc-desktop:~/linuxcnc-dev$
а в файле linuxcnc_debug.txt:

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

Can not find -sec MOT -var MOT -num 1 
Can not find -sec IO -var IO -num 1 
Can not find -sec LINUXCNC -var NML_FILE -num 1 
Can not find -sec EMC -var NML_FILE -num 1 
Can not find -sec REDIS -var DISABLE_SERVER -num 1 
Can not find -sec REDIS -var SERVER_PATH -num 1 
Can not find -sec REDIS -var SERVER_ARGS -num 1 
Can not find -sec REDIS -var SERVER_LOG -num 1 
Stopping realtime threads
Unloading hal components
Хочешь быть счастливым? Будь им!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: MyGUI

Сообщение Nick »

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

Re: MyGUI

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

Nick писал(а):А как ты его запускал?
Так выше есть:
cnc@cnc-desktop:~/linuxcnc-dev$ . scripts/rip-environment
cnc@cnc-desktop:~/linuxcnc-dev$ linuxcnc

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

Re: MyGUI

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

Продолжаю пытать отдельную визуальную панель GladeVCP...
В свойствах окна в Glade прописал on_window1_destroy
Запускаю из терминала:

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

cnc@cnc-desktop:~/linuxcnc-dev$ . scripts/rip-environment
cnc@cnc-desktop:~/linuxcnc-dev$ linuxcnc
LINUXCNC - 2.6.0-pre0-3876-g3bf98ee
Machine configuration directory is '/home/cnc/linuxcnc-dev/configs/MyGUI2'
Machine configuration file is 'MyGUI.ini'
Starting LinuxCNC...
redis server started as: 'redis-server ', logging to: /dev/null
libnml/cms/tcp_srv.cc 276: bind error: 98 -- Address already in use
libnml/cms/tcp_srv.cc 277: Server can not bind the connection socket on port 5005.
libnml/rcs/rcs_exit.cc 96: 
 Errors Reported!!!
 Press ^C to exit.
insmod: error inserting '/usr/realtime-2.6.32-122-rtai/modules/rtai_hal.ko': -1 File exists
Realtime system did not load
Shutting down and cleaning up LinuxCNC...
ERROR: Removing 'rtai_hal': Device or resource busy
Cleanup done
LinuxCNC terminated with an error.  You can find more information in the log:
    /home/cnc/linuxcnc_debug.txt
and
    /home/cnc/linuxcnc_print.txt
as well as in the output of the shell command 'dmesg' and in the terminal
cnc@cnc-desktop:~/linuxcnc-dev$ linuxcnc
LINUXCNC - 2.6.0-pre0-3876-g3bf98ee
Machine configuration directory is '/home/cnc/linuxcnc-dev/configs/MyGUI2'
Machine configuration file is 'MyGUI.ini'
Starting LinuxCNC...
redis server started as: 'redis-server ', logging to: /dev/null
io started
emc/iotask/ioControl.cc 751: can't load tool table.
halcmd loadusr io started
task pid=6547
emcTaskInit: using builtin interpreter

Окно закрыл, а запись в консоли quit++ так и не появилась.

Что не так?
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

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

Re: MyGUI

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

Прописал в mygui

def on_window1_destroy(self, widget, data=None):
print "quit++"
gtk.main_quit()


В консоли опять запустилось не сразу (видать процесс так и не снялся предыдущий):

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

cnc@cnc-desktop:~/linuxcnc-dev$ . scripts/rip-environment
This script only needs to be run once per shell session.
cnc@cnc-desktop:~/linuxcnc-dev$ linuxcnc
LINUXCNC - 2.6.0-pre0-3876-g3bf98ee
Machine configuration directory is '/home/cnc/linuxcnc-dev/configs/MyGUI2'
Machine configuration file is 'MyGUI.ini'
LinuxCNC is still running.  Restart it? [Y/n] 
Cleaning up old LinuxCNC...
Shutting down and cleaning up LinuxCNC...
Waiting for other session to finish exiting...lockfile still not removed
Cleanup done
Starting LinuxCNC...
redis server started as: 'redis-server ', logging to: /dev/null
io started
emc/iotask/ioControl.cc 751: can't load tool table.
halcmd loadusr io started
task pid=7878
emcTaskInit: using builtin interpreter
/home/cnc/linuxcnc-dev/bin/mygui:21: RuntimeWarning: missing handler 'on_window1_destroy'
  self.builder.connect_signals(self)

Вложения
mygui.tar.gz
(550 байт) 1006 скачиваний
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

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

#!/usr/bin/python

import pygtk
pygtk.require("2.0")
import gtk
import gladevcp.makepins
from gladevcp.gladebuilder import GladeBuilder
import hal

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 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.builder.connect_signals(self)
		self.window = self.builder.get_object("window1")
		self.window.show()
		panel = gladevcp.makepins.GladePanel( halcomp, xmlname, self.builder, None)

if __name__ == "__main__":
	app = Mygui()
	gtk.main()
Ответить

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