Странно. У меня в случае, если в программе есть подпрограмма после завершения подпрограммы, когда подпрогрмма уже отработала и вернула управление основной программе, linuxcnc.stat.file все равно возвращает имя подпрограммы.UAVpilot писал(а):linuxcnc.stat.file возвращает имя файла, обрабатываемого интерпретатором rs274ngc.
GladeVCP и PyVCP для начинающих
-
MIX
- Кандидат
- Сообщения: 89
- Зарегистрирован: 23 авг 2015, 09:48
- Репутация: 34
- Настоящее имя: Михаил
- Откуда: С. Петербург
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
-
MIX
- Кандидат
- Сообщения: 89
- Зарегистрирован: 23 авг 2015, 09:48
- Репутация: 34
- Настоящее имя: Михаил
- Откуда: С. Петербург
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
А как можно получить содержимое этой переменной в Python-е, а вернее в обработчике моей панели GladeVCP?UAVpilot писал(а):Имя файла загруженного в axis и узнавать нужно у axis, например там есть глобальная переменная loaded_file...
Попытка просто вызвать в одном из методов
Код: Выделить всё
print loaded_fileКод: Выделить всё
NameError: global name 'loaded_file' is not defined- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Значит там имя последнего загруженного файла.MIX писал(а):linuxcnc.stat.file все равно возвращает имя подпрограммы.
она глобальная внутри axis. Надо разбираться с областями видимости...MIX писал(а):NameError: global name 'loaded_file' is not defined
попробуй так:
Код: Выделить всё
global loaded_file
print loaded_fileЯ не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
MIX
- Кандидат
- Сообщения: 89
- Зарегистрирован: 23 авг 2015, 09:48
- Репутация: 34
- Настоящее имя: Михаил
- Откуда: С. Петербург
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
К сожалению не помогло. Вот отклик в логе:
К тому же если эта переменная 'loaded_file' глобальная, то зачем ее дополнительно объявлять?
На удачу попробовал также:
С примерно тем же успехом:
а можно как то вывести список всех атрибутов (глобальных не глобальных)?
Код: Выделить всё
gladevcp: trouble looking for handlers in 'THC_control': global name 'loaded_file' is not defined
Traceback (most recent call last):
File "/usr/bin/gladevcp", line 122, in load_handlers
objlist = h(halcomp,builder,useropts)
File "./THC_control.py", line 676, in get_handlers
return [THC_control(halcomp,builder,useropts)]
File "./THC_control.py", line 26, in __init__
print loaded_file
NameError: global name 'loaded_file' is not defined
На удачу попробовал также:
Код: Выделить всё
name_file = self.loaded_file
print name_fileКод: Выделить всё
gladevcp: trouble looking for handlers in 'THC_control': THC_control instance has no attribute 'loaded_file'
Traceback (most recent call last):
File "/usr/bin/gladevcp", line 122, in load_handlers
objlist = h(halcomp,builder,useropts)
File "./THC_control.py", line 676, in get_handlers
return [THC_control(halcomp,builder,useropts)]
File "./THC_control.py", line 25, in __init__
name_file = self.loaded_file
AttributeError: THC_control instance has no attribute 'loaded_file'
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
К сожалению ожидаемо... Тогда только патчить axis, чтобы он например писал в какой-нибудь файл имя загруженной УП, а из файла смогут читать все желающие...MIX писал(а):К сожалению не помогло.
Да, помогут функцииMIX писал(а):а можно как то вывести список всех атрибутов (глобальных не глобальных)?
vars()
dir()
locals()
globals()
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
MIX
- Кандидат
- Сообщения: 89
- Зарегистрирован: 23 авг 2015, 09:48
- Репутация: 34
- Настоящее имя: Михаил
- Откуда: С. Петербург
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Кажется нашел вариант. Если кому интересно, сначала останавливаю программу:
self.linuxcnc_command.abort(),
затем смотрю атрибут,
self.linuxcnc_stat.poll()
self.file_name = self.linuxcnc_stat.file
В него снова заносится имя основного файла. Это меня вполне устраивает т.к. все равно останавливать резку при потере дуги.
self.linuxcnc_command.abort(),
затем смотрю атрибут,
self.linuxcnc_stat.poll()
self.file_name = self.linuxcnc_stat.file
В него снова заносится имя основного файла. Это меня вполне устраивает т.к. все равно останавливать резку при потере дуги.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
А как из стороннего скрипта достучаться до переменной axis?
ЗЫ, можно в начало каждого файла дописать M100, в котором записывать имя файла куда-нибудь...
ЗЫ, можно в начало каждого файла дописать M100, в котором записывать имя файла куда-нибудь...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Без его ведома/желания никак.Nick писал(а):А как из стороннего скрипта достучаться до переменной axis?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Ок, а с ведомом?
Как передать переменную с одного скрипта в другой, через внешний Файл? Может есть более красивый вариант?
Как передать переменную с одного скрипта в другой, через внешний Файл? Может есть более красивый вариант?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Если в момент старта другого, то например тупо - параметром ком.строки.
Если в процессе работы, то тоже есть много способов: временный файл, именованный канал, IPC, сеть, ...
Если в процессе работы, то тоже есть много способов: временный файл, именованный канал, IPC, сеть, ...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
А про этих где почитать?UAVpilot писал(а): именованный канал, IPC
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Как это ни странно, но почитать можно в манах.
man pipe
man ipc

man pipe
man ipc
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
У меня наверное какой-то не такой pipe?
Спасибо!
А вот так вроде то, что надо man 2 pipepipe - Postfix delivery to external command
Спасибо!
-
doska
- Кандидат
- Сообщения: 57
- Зарегистрирован: 08 дек 2014, 08:40
- Репутация: 24
- Настоящее имя: Женя
- Откуда: Одесса
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Привет.
Случился у меня затык с HScale.
Мне нужно сделать ползунки для изменения скорости холостых перемещений (G0).
Добавляю в Glade HScale, Adjustement для него. И не запускается, выдает ошибку Не нашел я ничего на эту тему. Делаю по тутору с gnipsel.com.
Что обидно, все что хотел сделал, и тут на тебе...
Никто не подскажет куда копать?
Случился у меня затык с HScale.
Мне нужно сделать ползунки для изменения скорости холостых перемещений (G0).
Добавляю в Glade HScale, Adjustement для него. И не запускается, выдает ошибку Не нашел я ничего на эту тему. Делаю по тутору с gnipsel.com.
Что обидно, все что хотел сделал, и тут на тебе...
Никто не подскажет куда копать?
Путь в тысячу миль начинается с первого шага.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Скинь целиком свою панельку...
-
doska
- Кандидат
- Сообщения: 57
- Зарегистрирован: 08 дек 2014, 08:40
- Репутация: 24
- Настоящее имя: Женя
- Откуда: Одесса
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Отдал уже машинку, к сожалению.
Вышел из ситуации самым примитивным методом, сделал ползунки просто по числам и вместо G0 использовал G1.
Так я с HScale и не подружился.
Не по феньшуй, но работает.
Запущу когда со всеми доводками, сделаю видео работы, может кому как идея пригодится.
Машинка - ЧПУшная тампопечать.
Вышел из ситуации самым примитивным методом, сделал ползунки просто по числам и вместо G0 использовал G1.
Так я с HScale и не подружился.
Не по феньшуй, но работает.
Запущу когда со всеми доводками, сделаю видео работы, может кому как идея пригодится.
Машинка - ЧПУшная тампопечать.
Путь в тысячу миль начинается с первого шага.
-
doska
- Кандидат
- Сообщения: 57
- Зарегистрирован: 08 дек 2014, 08:40
- Репутация: 24
- Настоящее имя: Женя
- Откуда: Одесса
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Кстати, может кому пригодится.
У меня программа формируется выбором галочек в интерфейсе, потом питоном формируется УП и уже эта УП запускается с обычной кнопки.
Возникла такая проблема, что пока вся функция кнопки не отработает интерфейс как-бы висит, то есть ничего не нажимается, индикации нет и т.п. Если учесть, что программа бесконечная, получилось нежизнеспособно.
Вышел из ситуации очень просто - threads. Сделал функцию на загрузку и запуск УП и ее запускал thread.start_new_thread. То, что нужно. УП запускается, интерфейс работает.
P.S. Так вышло, что использовать AXIS или дописать к нему панельку оказалось крайне неудобно в работе. 8 "осей" и никакой привязки к фрезерному или токарному делу. Поэтому интерфейс пришлось делать с нуля.
У меня программа формируется выбором галочек в интерфейсе, потом питоном формируется УП и уже эта УП запускается с обычной кнопки.
Возникла такая проблема, что пока вся функция кнопки не отработает интерфейс как-бы висит, то есть ничего не нажимается, индикации нет и т.п. Если учесть, что программа бесконечная, получилось нежизнеспособно.
Вышел из ситуации очень просто - threads. Сделал функцию на загрузку и запуск УП и ее запускал thread.start_new_thread. То, что нужно. УП запускается, интерфейс работает.
P.S. Так вышло, что использовать AXIS или дописать к нему панельку оказалось крайне неудобно в работе. 8 "осей" и никакой привязки к фрезерному или токарному делу. Поэтому интерфейс пришлось делать с нуля.
Путь в тысячу миль начинается с первого шага.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Покажи фото хотябы!
-
alexandr1988
- Кандидат
- Сообщения: 77
- Зарегистрирован: 07 окт 2014, 11:54
- Репутация: 5
- Контактная информация:
Re: GladeVCP и PyVCP для начинающих
Эту проблему с помощью Nick'a решил.alexandr1988 писал(а):День добрый! Можно ли каким-то образом отображать координату по оси, но не в миллиметрах, а метрах? Нужно для подсчета выработанной продукции (расстояние, пройденное по оси Y и является метражом, который нужно измерять). Сейчас работает так: в Axis убрал отображение знаков после запятой, и это значение оператор делит на тысячу. Есть вариант поставить отдельный аппаратный счетчик и энкодер, но хотелось бы попробовать сделать это программно.
Панель у меня на Glade, виджет, показывающий координату, пробовал, но не смог с ним сделать ничего, кроме как тоже убрать все после запятой.
Есть какие-то варианты?
Аппетит приходит во время еды, и теперь хочется сделать общий счетчик выработки, типа одометра автомобильного.
А чтобы он при выключении не сбрасывался, наверное нужно сохранять значение в текстовый файл.
В какую сторону здесь копать?
