Две конфигурации с разными MyGUI на одном компе (РЕШЕНО)
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Две конфигурации с разными MyGUI на одном компе (РЕШЕНО)
Хочется разобраться вот в каком вопросе:
Когда мы "собираем" станок на базе 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 ???
Подскажите, пожалуйста!
Когда мы "собираем" станок на базе 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 ???
Подскажите, пожалуйста!
Последний раз редактировалось Ворон226 25 май 2014, 17:33, всего редактировалось 3 раза.
Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Две конфигурации станков с различными MyGUI на одном ком
Да, можно и так, если есть желание развести помойку в системе. 
А можно и разложить всё по полочкам:
В home/<имя>/linuxcnc/configs/<имя станка>/ кладём все файлы конфигурации.
Скрипт mygui кладём в эту-же папку. В ini пишем:
DISPLAY = ./mygui
т.е. путь указываем относительный.
В самом скрипте, там, где загружается mygui.glade путь к файлу указываем относительный, а сам mygui.glade кладём рядом с ini и hal.
вобщем если всё правильно сделать, то все файлы, для конкретного станка будут находится в одном каталоге, каталог можно будет перемещать куда попало и всё будет работать даже независимо от того как установлен linuxcnc, из исходников или в систему.
В принципе в одном каталоге можно держать несколько вариантов конфигурации станка, но это уже сами разбирайтесь как - примеров полно.
А можно и разложить всё по полочкам:
В home/<имя>/linuxcnc/configs/<имя станка>/ кладём все файлы конфигурации.
Скрипт mygui кладём в эту-же папку. В ini пишем:
DISPLAY = ./mygui
т.е. путь указываем относительный.
В самом скрипте, там, где загружается mygui.glade путь к файлу указываем относительный, а сам mygui.glade кладём рядом с ini и hal.
вобщем если всё правильно сделать, то все файлы, для конкретного станка будут находится в одном каталоге, каталог можно будет перемещать куда попало и всё будет работать даже независимо от того как установлен linuxcnc, из исходников или в систему.
В принципе в одном каталоге можно держать несколько вариантов конфигурации станка, но это уже сами разбирайтесь как - примеров полно.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Две конфигурации станков с различными MyGUI на одном ком
А вот у меня в скрипте прописан путь так:
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")
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")
Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Две конфигурации станков с различными MyGUI на одном ком
Наверно так:
xmlname = "mygui.glade"
xmlname = "mygui.glade"
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Две конфигурации станков с различными MyGUI на одном ком
Тогда первые строчки вроде и не к чему?UAVpilot писал(а):Наверно так:
xmlname = "mygui.glade"
Значит в общем должно выглядеть так?
import sys,os
xmlname = "mygui.glade"
Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Две конфигурации станков с различными MyGUI на одном ком
Да. Если конечно они где-то дальше не используются.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Две конфигурации станков с различными MyGUI на одном ком
Есть ещё похожее упонимание о файле, в котором описаны кнопки визуальной панели - 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() Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Две конфигурации станков с различными MyGUI на одном ком
Вобщем идея проста: везде использовать относительные пути, относительно каталога с ini.
P.S. Я питон вообще не знаю.
Хотя разглядывая ваши потуги наверно уже смогу изобразить "Hello, world!". 
P.S. Я питон вообще не знаю.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Две конфигурации станков с различными MyGUI на одном ком
Проверил - работает!
ИТОГ:
Если нужно иметь на одном компе несколько конфигураций станков со своими визуальными панелями (mygui), то делать это нужно следующим образом:
1. Конфигурацию станка и все остальную файлы держать в отдельной папке вместе.
2. В .INI прописываем
[DISPLAY]
DISPLAY = ./mygui
# эта запись говорит о том, что скрипт запуска Вашей панели находится в текущей для процесса папке. LinuxCNC устроен так, что в самом начале в качестве текущего назначает каталог с ini файлом.
3. В файле mygui пишем:
Теперь Вы можете копировать Вашу конфигурацию на другой комп и эта конфигурация заработает без специальных настроек системы и адресов...
Это позволяет на одном компе держать любое количество конфигураций, которые не будут мешать друг другу.
ИТОГ:
Если нужно иметь на одном компе несколько конфигураций станков со своими визуальными панелями (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()
Это позволяет на одном компе держать любое количество конфигураций, которые не будут мешать друг другу.
Последний раз редактировалось Ворон226 26 май 2014, 01:00, всего редактировалось 3 раза.
Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Две конфигурации с разными MyGUI на одном компе (РЕШЕНО)
Не в корневой, а в текущей для процесса папке, буквально Current Work Directory.Ворон226 писал(а):находится в корневой папке
Посмотреть CDW процесса в какой-то момент времени можно командой
Код: Выделить всё
ls -l /proc/<pid_процесса>/cwdС LinuxCNC нам повезло, что оно в самом начале в качестве CWD назначает каталог с ini файлом и позже его не меняет.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Две конфигурации с разными MyGUI на одном компе (РЕШЕНО)
Исправил. Если никаких дополнений и изменений в ближайшие дни не поступит - перенесу в первое сообщение. Спасибо!
Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Две конфигурации с разными MyGUI на одном компе (РЕШЕНО)
Лучше вот так:

Всё остальное это пояснения почему каталог называется именно текущим, это лучше в куда-нибудь про линуксы. Да и для винды это справедливо.# эта запись говорит о том, что скрипт запуска Вашей панели находится в текущей для процесса папке. LinuxCNC устроен так, что в самом начале в качестве текущего назначает каталог с ini файлом.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...