Страница 1 из 1
Две конфигурации с разными MyGUI на одном компе (РЕШЕНО)
Добавлено: 22 май 2014, 22:09
Ворон226
Хочется разобраться вот в каком вопросе:
Когда мы "собираем" станок на базе AXIS-а, то конфигурацию прописываем в файлах станок.ini, станок.hal и, иногда, в postgui.hal . Затем AXIS, в соответствии с нашими указаниями сам собирает визуальную панель. Это позволяет нам оегко писать и отрабатывать несколько различных конфигураций на одном компе.
Когда мы хотим самостоятельно написать визуальную панель для управления станком, используя, например, редактор Glade, то конфигурация собирается так:
1. В станок.ini пишем:
[DISPLAY]
DISPLAY = mygui
2. Рисуем панель в Glade и сохраняем её в usr/share/linuxcnc под именем mygui.glade
3. Пишем файл mygui загрузки панели, адрес с файлом пинов панели (например, mode.hal) и кладем его в /bin
4. Ну и, конечно, файлы конфигурации и стартовый файл соответственно в home/<имя>/linuxcnc/configs и в home/<имя>/linuxcnc
Вот и вопрос: А КАК ПОСТУПИТЬ СО ВТОРОЙ КОНФИГУРАЦИЕЙ? Что и в каком файле менять, чтобы на компе было несколько стартовых файлов, которые открывали разные панели и конфигурации? Достаточно ли в станок.ini прописать:
[DISPLAY]
DISPLAY = mygui2
а в /bin положить файл mygui2
и в usr/share/linuxcnc файл панели с именем mygui2.glade ???
Подскажите, пожалуйста!
Re: Две конфигурации станков с различными MyGUI на одном ком
Добавлено: 22 май 2014, 23:10
Serg
Да, можно и так, если есть желание развести помойку в системе.
А можно и разложить всё по полочкам:
В home/<имя>/linuxcnc/configs/<имя станка>/ кладём
все файлы конфигурации.
Скрипт mygui кладём в эту-же папку. В ini пишем:
DISPLAY = ./mygui
т.е. путь указываем относительный.
В самом скрипте, там, где загружается mygui.glade путь к файлу указываем относительный, а сам mygui.glade кладём рядом с ini и hal.
вобщем если всё правильно сделать, то все файлы, для конкретного станка будут находится в одном каталоге, каталог можно будет перемещать куда попало и всё будет работать даже независимо от того как установлен linuxcnc, из исходников или в систему.
В принципе в одном каталоге можно держать несколько вариантов конфигурации станка, но это уже сами разбирайтесь как - примеров полно.

Re: Две конфигурации станков с различными MyGUI на одном ком
Добавлено: 22 май 2014, 23:30
Ворон226
А вот у меня в скрипте прописан путь так:
import sys,os
BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
datadir = os.path.join(BASE, "usr", "share", "linuxcnc")
xmlname = os.path.join(datadir,"mygui.glade")
Понимаю, что нужно прописать BASE как относительный адрес, но не соображу как...
Абсолютный я бы прописал так:
import sys,os
BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
datadir = os.path.join(BASE, "home", "sun", "linuxcnc", "configs", "skaner")
xmlname = os.path.join(datadir,"mygui.glade")
Re: Две конфигурации станков с различными MyGUI на одном ком
Добавлено: 22 май 2014, 23:47
Serg
Наверно так:
xmlname = "mygui.glade"
Re: Две конфигурации станков с различными MyGUI на одном ком
Добавлено: 22 май 2014, 23:55
Ворон226
UAVpilot писал(а):Наверно так:
xmlname = "mygui.glade"
Тогда первые строчки вроде и не к чему?
Значит в общем должно выглядеть так?
import sys,os
xmlname = "mygui.glade"
Re: Две конфигурации станков с различными MyGUI на одном ком
Добавлено: 22 май 2014, 23:58
Serg
Да. Если конечно они где-то дальше не используются.
Re: Две конфигурации станков с различными MyGUI на одном ком
Добавлено: 23 май 2014, 00:12
Ворон226
Есть ещё похожее упонимание о файле, в котором описаны кнопки визуальной панели - mode.hal
Код: Выделить всё
if __name__ == "__main__":
app = Mygui()
res = os.spawnvp(os.P_WAIT, "halcmd", ["halcmd", "-f", "/home/sun/linuxcnc/configs/skaner/mode.hal"])
if res: raise SystemExit, res
gtk.main()
(я точно не стану Мастером Питона - мне бы на примерах уловить, хотя бы поверхностно... )
Re: Две конфигурации станков с различными MyGUI на одном ком
Добавлено: 23 май 2014, 00:19
Serg
Вобщем идея проста: везде использовать относительные пути, относительно каталога с ini.
P.S. Я питон вообще не знаю.

Хотя разглядывая ваши потуги наверно уже смогу изобразить "Hello, world!".

Re: Две конфигурации станков с различными MyGUI на одном ком
Добавлено: 25 май 2014, 17:31
Ворон226
Проверил - работает!
ИТОГ:
Если нужно иметь на одном компе несколько конфигураций станков со своими визуальными панелями (mygui), то делать это нужно следующим образом:
1. Конфигурацию станка и все остальную файлы держать в отдельной папке вместе.
2. В .INI прописываем
[DISPLAY]
DISPLAY = ./mygui
# эта запись говорит о том, что скрипт запуска Вашей панели находится в текущей для процесса папке. LinuxCNC устроен так, что в самом начале в качестве текущего назначает каталог с ini файлом.
3. В файле mygui пишем:
Код: Выделить всё
#!/usr/bin/python
import pygtk
pygtk.require("2.0")
import gtk
import gladevcp.makepins
from gladevcp.gladebuilder import GladeBuilder
import hal
[b]import sys,os
xmlname = "mygui.glade"[/b]
# Говорит о том, что файл визуальной панели 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()
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", [b]"./mode.hal"[/b]])
# Говорит о том, что файл с описанием пинов Вашей визуальной панели mode.hal лежит в той же папке
if res: raise SystemExit, res
gtk.main()
Теперь Вы можете копировать Вашу конфигурацию на другой комп и эта конфигурация заработает без специальных настроек системы и адресов...
Это позволяет на одном компе держать любое количество конфигураций, которые не будут мешать друг другу.
Re: Две конфигурации с разными MyGUI на одном компе (РЕШЕНО)
Добавлено: 25 май 2014, 19:17
Serg
Ворон226 писал(а):находится в корневой папке
Не в корневой, а в текущей для процесса папке, буквально Current Work Directory.
Посмотреть CDW процесса в какой-то момент времени можно командой
но нужно понимать, что процесс может в любой момент сменить CWD.
С LinuxCNC нам повезло, что оно в самом начале в качестве CWD назначает каталог с ini файлом и позже его не меняет.
Re: Две конфигурации с разными MyGUI на одном компе (РЕШЕНО)
Добавлено: 25 май 2014, 20:10
Ворон226
Исправил. Если никаких дополнений и изменений в ближайшие дни не поступит - перенесу в первое сообщение. Спасибо!
Re: Две конфигурации с разными MyGUI на одном компе (РЕШЕНО)
Добавлено: 25 май 2014, 23:54
Serg
Лучше вот так:
# эта запись говорит о том, что скрипт запуска Вашей панели находится в текущей для процесса папке. LinuxCNC устроен так, что в самом начале в качестве текущего назначает каталог с ini файлом.
Всё остальное это пояснения почему каталог называется именно текущим, это лучше в куда-нибудь про линуксы. Да и для винды это справедливо.
