Python в LinuxCnC
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Python в LinuxCnC
функция glTranslatef (posx,posy,poz) библиотеки GL смещает центр куба в указаные координаты...
и таки оно смещается: это после:
glTranslatef (10.0, 12.0, 0.0)
дистанция в дюймах...
но следом за "центром" всё перерисовывается (кроме системы координат и линий лимитов)
==========
в общем - как сказал один Хан на нашем форуме: надо подразобраться - тогда будет легко)
и таки оно смещается: это после:
glTranslatef (10.0, 12.0, 0.0)
дистанция в дюймах...
но следом за "центром" всё перерисовывается (кроме системы координат и линий лимитов)
==========
в общем - как сказал один Хан на нашем форуме: надо подразобраться - тогда будет легко)
-
- Кандидат
- Сообщения: 64
- Зарегистрирован: 03 ноя 2013, 22:28
- Репутация: 32
- Откуда: Брест
- Контактная информация:
Re: Python в LinuxCnC
Всем доброго вечера. У меня такой вопрос. А как из программы на Python можно читать и изменять переменные (или параметры) G-code?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python в LinuxCnC
Самое простое через пины - делаешь пин в своей программе, потом его завязываешь на motion.analog-in или digital-in.gennadiy писал(а):А как из программы на Python можно читать и изменять переменные (или параметры) G-code?
Или вот так:
interpreter.this.params['draw_param_g']=g
но не все параметры так можно будет поменять.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python в LinuxCnC
Кстати, может UAVpilot подскажет, может есть какой-то дебаггер, который может показывать все вызовы всех функций? чтобы отследить, что вызывается в конкретный момент времени?nkp писал(а):но следом за "центром" всё перерисовывается (кроме системы координат и линий лимитов)
==========
в общем - как сказал один Хан на нашем форуме: надо подразобраться - тогда будет легко)
-
- Кандидат
- Сообщения: 64
- Зарегистрирован: 03 ноя 2013, 22:28
- Репутация: 32
- Откуда: Брест
- Контактная информация:
Re: Python в LinuxCnC
Если запускать из программы на Python, то не могу добавить модуль:Nick писал(а): interpreter.this.params['draw_param_g']=g
Код: Выделить всё
import interpreter
Код: Выделить всё
;py,import interpreter
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python в LinuxCnC
хммм... хороший вопрос ...
а что ты хочешь делать через эти пины?
а что ты хочешь делать через эти пины?
-
- Кандидат
- Сообщения: 64
- Зарегистрирован: 03 ноя 2013, 22:28
- Репутация: 32
- Откуда: Брест
- Контактная информация:
Re: Python в LinuxCnC
Странно всё это... Есть скрипт (или hal компонент) на Python и я хочу посмотреть параметр... Без этого как работать в Python Linuxcnc?
Пришла в голову одна идея, а если читать параметр из файла .var? Как это сделать?
Пришла в голову одна идея, а если читать параметр из файла .var? Как это сделать?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python в LinuxCnC
Чем тебе черз пины не нравится?
-
- Кандидат
- Сообщения: 64
- Зарегистрирован: 03 ноя 2013, 22:28
- Репутация: 32
- Откуда: Брест
- Контактная информация:
Re: Python в LinuxCnC
Это единственный доступный способ?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python в LinuxCnC
Скорее всего нет. Но этот проверенный .
Ты таким образом хочешь дебагить gкод? Или что-то другое будешь делать?
Ты таким образом хочешь дебагить gкод? Или что-то другое будешь делать?
-
- Кандидат
- Сообщения: 64
- Зарегистрирован: 03 ноя 2013, 22:28
- Репутация: 32
- Откуда: Брест
- Контактная информация:
Re: Python в LinuxCnC
Ладно, раз так, пока сделаю через "motion.analog-in". Хотелось проще, минуя .hal, прямым доступом к параметрам G-code.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Python в LinuxCnC
Если ты имеешь в виду pyhton, то я пока не знаю - я его только начал осваивать (хоть он мне и не нравится, но жизнь заставляет), но наверняка такой механизм в нём есть, иначе я его уважать перестану.Nick писал(а):Кстати, может UAVpilot подскажет, может есть какой-то дебаггер, который может показывать все вызовы всех функций? чтобы отследить, что вызывается в конкретный момент времени?
В системе есть стандартные программки для трассировки вызовов функций в разных библиотеках - ltrace. И для трассировки системных вызовов - strace (можно например посмотреть какие файлы в каких местах ищет).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Python в LinuxCnC
по вопросу ускоренного перемещенияс клавиатуры:
думал всегда ,что это Axis "не видит" моментов нажатия-отпускания Shift-а при нажатой стрелке...
проверил - нет - всё в порядке с этим ...
вот сама функция :
она вызывает функцию jog_on с разной скоростью (так всё и работает - скорость разная на этом этапе)
"нормально " не работает jog_on:
никогда раньше не замечал , что с этим jog в Axis так накручено!!
вот это с наскоку неосилил:
after_cancel
думал всегда ,что это Axis "не видит" моментов нажатия-отпускания Shift-а при нажатой стрелке...
проверил - нет - всё в порядке с этим ...
вот сама функция :
Код: Выделить всё
def bind_axis(a, b, d):
root_window.bind("<KeyPress-%s>" % a, kp_wrap(lambda e: jog_on(d, -get_jog_speed(d)), "KeyPress"))
root_window.bind("<KeyPress-%s>" % b, kp_wrap(lambda e: jog_on(d, get_jog_speed(d)), "KeyPress"))
root_window.bind("<Shift-KeyPress-%s>" % a, lambda e: jog_on(d, -get_max_jog_speed(d)))
root_window.bind("<Shift-KeyPress-%s>" % b, lambda e: jog_on(d, get_max_jog_speed(d)))
root_window.bind("<KeyRelease-%s>" % a, lambda e: jog_off(d))
root_window.bind("<KeyRelease-%s>" % b, lambda e: jog_off(d))
"нормально " не работает jog_on:
Код: Выделить всё
jog_after = [None] * 9
jog_cont = [False] * 9
jogging = [0] * 9
def jog_on(a, b):
if not manual_ok(): return
if not manual_tab_visible(): return
if isinstance(a, (str, unicode)):
a = "xyzabcuvw".index(a)
if a < 3:
if vars.metric.get(): b = b / 25.4
b = from_internal_linear_unit(b)
if jog_after[a]:
root_window.after_cancel(jog_after[a])
jog_after[a] = None
return
jogincr = widgets.jogincr.get()
if s.motion_mode == linuxcnc.TRAJ_MODE_TELEOP:
jogging[a] = b
jog_cont[a] = False
cartesian_only=jogging[:6]
c.teleop_vector(*cartesian_only)
else:
if jogincr != _("Continuous"):
s.poll()
if s.state != 1: return
distance = parse_increment(jogincr)
jog(linuxcnc.JOG_INCREMENT, a, b, distance)
jog_cont[a] = False
else:
jog(linuxcnc.JOG_CONTINUOUS, a, b)
jog_cont[a] = True
jogging[a] = b
вот это с наскоку неосилил:
Код: Выделить всё
if jog_after[a]:
root_window.after_cancel(jog_after[a])
jog_after[a] = None
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Python в LinuxCnC
немного продвинулся:
так как в емс jog можно "организовать" только двумя "способами":
c.jog(linuxcnc.JOG_CONTINUOUS, axis, speed)
c.jog(linuxcnc.JOG_INCREMENT, axis, speed, increment)
то "непрерывное движение" по нажатию стрелки организовано так:
один раз отрабатывает вот эта часть:
начинается движение ,дальше как то отсчитываются тайминги(то ,в чем я пока не разобрался)
==========
но главное то - что скорость передается jog(linuxcnc.JOG_CONTINUOUS, a, b) один раз ,
поэтому(имхо) Shift и не работает как надо - тут так задумано...
(или вышло так)))
так как в емс jog можно "организовать" только двумя "способами":
c.jog(linuxcnc.JOG_CONTINUOUS, axis, speed)
c.jog(linuxcnc.JOG_INCREMENT, axis, speed, increment)
то "непрерывное движение" по нажатию стрелки организовано так:
один раз отрабатывает вот эта часть:
Код: Выделить всё
else:
print a,b,"linuxcnc.JOG_CONTINUOUS"
jog(linuxcnc.JOG_CONTINUOUS, a, b)
jog_cont[a] = True
jogging[a] = b
==========
но главное то - что скорость передается jog(linuxcnc.JOG_CONTINUOUS, a, b) один раз ,
поэтому(имхо) Shift и не работает как надо - тут так задумано...
(или вышло так)))
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Python в LinuxCnC
Вероятно с помощью того самого after.nkp писал(а):начинается движение ,дальше как то отсчитываются тайминги(то ,в чем я пока не разобрался)
Идея как правило следующая: запускается некая функция с помощью after (т.е. через некоторое время), внутри эта функция делает что требуется и снова запускает сама себя с помощью after - получается цикл с периодом заданным after, причем этот цикл выполняется асинхронно по отношению к основной программе.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Python в LinuxCnC
имеется такая ошибка:
что тут синтаксически не правильно??
Код: Выделить всё
nkp@nkp-desktop:~/Beremiz/beremiz$ python Beremiz.pyTraceback (most recent call last):
File "Beremiz.py", line 136, in <module>
from editors.EditorPanel import EditorPanel
File "/home/nkp/Beremiz/beremiz/editors/EditorPanel.py", line 27, in <module>
from controls import VariablePanel
File "/home/nkp/Beremiz/beremiz/controls/__init__.py", line 31, in <module>
from DebugVariablePanel import DebugVariablePanel
File "/home/nkp/Beremiz/beremiz/controls/DebugVariablePanel/__init__.py", line 1, in <module>
from DebugVariablePanel import DebugVariablePanel
File "/home/nkp/Beremiz/beremiz/controls/DebugVariablePanel/DebugVariablePanel.py", line 40, in <module>
from DebugVariableItem import DebugVariableItem
File "/home/nkp/Beremiz/beremiz/controls/DebugVariablePanel/DebugVariableItem.py", line 28, in <module>
from graphics.DebugDataConsumer import DebugDataConsumer, TYPE_TRANSLATOR
File "/home/nkp/Beremiz/beremiz/graphics/__init__.py", line 28, in <module>
from FBD_Objects import *
File "/home/nkp/Beremiz/beremiz/graphics/FBD_Objects.py", line 28, in <module>
from plcopen.structures import *
File "/home/nkp/Beremiz/beremiz/plcopen/__init__.py", line 29, in <module>
from plcopen import PLCOpenParser, LoadProject, SaveProject, LoadPou, \
File "/home/nkp/Beremiz/beremiz/plcopen/plcopen.py", line 269
for body_type in ["FBD", "LD", "SFC"]}
^
SyntaxError: invalid syntax
nkp@nkp-desktop:~/Beremiz/beremiz$
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python в LinuxCnC
Какой питон?
Может с переносами строки что-то не то?
Дай ссылку на код.
Может с переносами строки что-то не то?
Дай ссылку на код.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python в LinuxCnC
Хотя, питону такое тоже не нравится:
Код: Выделить всё
>>> { i:3 for i in [1,2,3]}
File "<stdin>", line 1
{ i:3 for i in [1,2,3]}
^
SyntaxError: invalid syntax
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python в LinuxCnC
Ага. В питону 2.6 не нравится, а 2.7+ проходит:
Код: Выделить всё
nick@ltsp:~$ python2.7
Python 2.7.0+ (r27:82500, Sep 15 2010, 18:04:55)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> { i:3 for i in [1,2,3]}
{1: 3, 2: 3, 3: 3}
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Python в LinuxCnC
должен же наверно быть какой то вариант написания и для 2.6 ??Nick писал(а):Ага. В питону 2.6 не нравится, а 2.7+ проходит: