MyGUI

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

MyGUI

Сообщение nkp »

«Любая кухарка способна управлять государством» - мало кто уже помнит , кто это сказал и по какому поводу»......
(в этой теме мы попробуем написать свой экран для Linuxcnc за полчаса,ну может и немного больше времени уйдет :hehehe: )

Итак,что нам для начала нужно:
установленная версия Linuxcnc из исходников.
установленный редактор интерфейсов Glade (у меня 3.6.7)
мозг программиста (у меня пока инсталированна версия 0.0.1) ;)

Создаем папку для новой конфигурации с названием MyGUI, в нее кидаем стандартные файлы (ну например из Sherline3Axis)
Переименуем наш ini файл в MyGUI.ini
Проверяем роботоспособность нашей конфигурации запуском: если ок - идем дальше...
В Glade "рисуем наше окно: сохраняем наш труд в файл mygui.glade в папку /share/linuxcnc (я буду указывать пути относительно папки установки Linuxcnc)
теперь сам скрипт на питоне:
в папку /bin ложим файл mygui с таким содержимым:
(для просмотра содержимого нажмите на ссылку)

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

#!/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)

if __name__ == "__main__":
  app = Mygui()
  gtk.main()
делаем его исполняемым
ну и конечно в нашем ини-файле пропишем :

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

  DISPLAY =             mygui 
Запускаем Linuxcnc и наслаждаемся свежесозданным интерфейсом: Ура!!! Вышепоставленная задача выполнена,и в лимит времени уложились ;)
(предваряя чьи-то мысли скажу-а никто и не говорил что это будет красиво)
идем дальше....
если мы захотим "обрадоваться" второй раз(второй раз запустить емс) - то наткнемся на ошибку.
добавим к нашему окну сигнал " on_window1_destroy " : а в код добавим функцию для корректного выхода:

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

  def on_window1_destroy(self, widget, data=None):
    print "quit++"
    gtk.main_quit()
проверяем запуском из консоли: мы видим- наша функция отработала

Теперь в Glade будем наполнять наше окно:
поставим размеры при загрузке 640*480 : и будем активно пользовать инструменты из выделенной области
разделим окно:
сверху - меню,слева три кнопки, справа- gremlin: привязку действий к кнопкам делаем тут же:
рассмотрим на промере оси z: сам файл :
mygui.glade.rar
(1.42 КБ) 772 скачивания
Последний раз редактировалось nkp 27 июн 2015, 08:35, всего редактировалось 1 раз.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Вот итог:
https://www.youtube.com/watch?v=Qhm-IegND4c
(продолжение следует)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

рановато ты тему затеял
:bender:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

Lexxa писал(а):рановато ты тему затеял
я не знаю про что ты- но так мне легче разбираться самому
(ну может кому и интересно будет )
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: MyGUI

Сообщение Serg »

Спасибо тебе добрый человек! Я тоже всё хотел попробовать в этом разобраться, но всё никак руки не доходили, а после такого пинка появляется стимул. :hehehe:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: MyGUI

Сообщение psha »

Поработаю чорным вороном...

Заранее предрекаю проблемы с кнопками для движений (jog).
Через halui это делать весьма неудобно, а в gladevcp действия для движений не сделаны
Когда мне такое понадобилось получилось вот что:

http://psha.org.ru/cgit/psha/cnccutter/tree/gui.py#n331
http://psha.org.ru/cgit/psha/cnccutter/ ... hal_jog.py
root, доделай конвертацию! :)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

у меня вопрос (вроде и не в тему-но все ж)
где увидеть исходник модуля linuxcnc.cc в ( котором poll() )
вот вроде бы здесь он должон быть: а нету ;)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

psha писал(а):Поработаю чорным вороном...

Заранее предрекаю проблемы с кнопками для движений (jog).
Через halui это делать весьма неудобно, а в gladevcp действия для движений не сделаны
Когда мне такое понадобилось получилось вот что:

http://psha.org.ru/cgit/psha/cnccutter/tree/gui.py#n331
http://psha.org.ru/cgit/psha/cnccutter/ ... hal_jog.py
почему через halui неудобно?
:bender:
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: MyGUI

Сообщение psha »

src/emc/usr_intf/axis/extensions/emcmodule.cc
root, доделай конвертацию! :)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: MyGUI

Сообщение Serg »

nkp писал(а):у меня вопрос (вроде и не в тему-но все ж)
где увидеть исходник модуля linuxcnc.cc в ( котором poll() )
вот вроде бы здесь он должон быть:
а нету ;)
полагаю он внутри Tk, ибо цикл обработки событий используется его.

Upd: Я не про тот подумал. :idiot:
Последний раз редактировалось Serg 27 авг 2012, 17:05, всего редактировалось 1 раз.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

psha писал(а):src/emc/usr_intf/axis/extensions/emcmodule.cc
спасибо!
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: MyGUI

Сообщение psha »

Lexxa писал(а):почему через halui неудобно?
Хотя бы потому, что скорость задается одна на всех. Если, например, оси линейные и угловые это не очень здорово.
Что-то еще было, но сейчас уже не вспомню
root, доделай конвертацию! :)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

psha, скорость и должна задаваться одна на всех
если не так, то почему все взрослые ЧПУ так и сделали?
:bender:
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: MyGUI

Сообщение psha »

А в чем задается эта самая скорость? В м/c? Или в углах/c?
root, доделай конвертацию! :)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

в единицах измерения станка для оси.
Логика работы такая - установил инкремент, нажал плюс или минус.
Если инкремент задавать от, например, внешнего энкодера, то ничего не мешает перейти от мм к градусам.
Как правило в станках для поворота оси на нужный угол пользуются mdi.

Пример. Токарный станок с приводным инструментом и осью C.
Ось С в данном случае для наладчика выступает как обычная линейная ось. УЧПУ расчитывает линейноедвижение по координате Х и угловое движение по координате С таким образом, чтобы соблюсти заданную траекторию.
Я не вижу сложности при задании инкремента угловой координаты,psha, поясни
:bender:
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: MyGUI

Сообщение psha »

У нас есть медленная линейная ось (1мм/c) и быстрая угловая (90г/c).
Какую скорость мы выставляем для halui.jog.speed?
Поскольку у нас есть огранчения на ось мы можем поставить 90 и на линейной она обрежется.
Но меня как-то такой подход несколько напрягает

upd
Я сам это делал не через MDI, а через обычные jog'и

upd2
Я, к сожалению, совершенно не в курсе как это всё происходит на "взрослых" станках, поэтому могу пороть чушь
root, доделай конвертацию! :)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: MyGUI

Сообщение Lexxa »

psha писал(а):Какую скорость мы выставляем для halui.jog.speed?
я думаю, что можно через промежуточную переменную и 2 коэффициента
:bender:
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: MyGUI

Сообщение psha »

Можно. Можно кучей разных способов, но мне было проще сделать независимые halui-подобные каталки по осям для gladevcp
Благо всё равно без питона не получалось, ибо камеры
root, доделай конвертацию! :)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

далее расмотрим вопрос- как мы можем в gui получать нужную информацию из емс .
используем модуль емс (в случае загрузки емс) или linuxcnc (соответственно -если у нас linuxcnc)
маленькое отступление
имхо удобно пользовать в gedit дополнительный модуль ,который позволяет запускать скрипты питона прямо не отходя от кассы: вызывается он по Ctrl+F9 : загружаем EMC2 (не linuxcnc)
(все дальнейшие действия - в консоли Python)
подгружаем модуль емс :

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

import emc
посмотрим - что он нам может предложить:

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

help(emc)
(для просмотра содержимого нажмите на ссылку)

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

>>> help(emc)
Help on module emc:

NAME
    emc - Interface to EMC

FILE
    /usr/lib/pymodules/python2.6/emc.so

CLASSES
    __builtin__.object
        command
        error_channel
        ini
        positionlogger
        stat
    exceptions.RuntimeError(exceptions.StandardError)
        error
    
    class command(__builtin__.object)
     |  Methods defined here:
     |  
     |  __init__(...)
     |      x.__init__(...) initializes x; see x.__class__.__doc__ for signature
     |  
     |  abort(...)
     |  
     |  auto(...)
     |  
     |  brake(...)
     |  
     |  debug(...)
     |  
     |  feedrate(...)
     |  
     |  flood(...)
     |  
     |  home(...)
     |  
     |  jog(...)
     |  
     |  load_tool_table(...)
     |  
     |  maxvel(...)
     |  
     |  mdi(...)
     |  
     |  mist(...)
     |  
     |  mode(...)
     |  
     |  override_limits(...)
     |  
     |  program_open(...)
     |  
     |  reset_interpreter(...)
     |  
     |  set_adaptive_feed(...)
     |  
     |  set_analog_output(...)
     |  
     |  set_block_delete(...)
     |  
     |  set_digital_output(...)
     |  
     |  set_feed_hold(...)
     |  
     |  set_feed_override(...)
     |  
     |  set_max_limit(...)
     |  
     |  set_min_limit(...)
     |  
     |  set_optional_stop(...)
     |  
     |  set_spindle_override(...)
     |  
     |  spindle(...)
     |  
     |  spindleoverride(...)
     |  
     |  state(...)
     |  
     |  teleop_enable(...)
     |  
     |  teleop_vector(...)
     |  
     |  tool_offset(...)
     |  
     |  traj_mode(...)
     |  
     |  unhome(...)
     |  
     |  wait_complete(...)
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  serial
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
    
    class error(exceptions.RuntimeError)
     |  Method resolution order:
     |      error
     |      exceptions.RuntimeError
     |      exceptions.StandardError
     |      exceptions.Exception
     |      exceptions.BaseException
     |      __builtin__.object
     |  
     |  Data descriptors defined here:
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from exceptions.RuntimeError:
     |  
     |  __init__(...)
     |      x.__init__(...) initializes x; see x.__class__.__doc__ for signature
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes inherited from exceptions.RuntimeError:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
     |  
     |  ----------------------------------------------------------------------
     |  Methods inherited from exceptions.BaseException:
     |  
     |  __delattr__(...)
     |      x.__delattr__('name') <==> del x.name
     |  
     |  __getattribute__(...)
     |      x.__getattribute__('name') <==> x.name
     |  
     |  __getitem__(...)
     |      x.__getitem__(y) <==> x[y]
     |  
     |  __getslice__(...)
     |      x.__getslice__(i, j) <==> x[i:j]
     |      
     |      Use of negative indices is not supported.
     |  
     |  __reduce__(...)
     |  
     |  __repr__(...)
     |      x.__repr__() <==> repr(x)
     |  
     |  __setattr__(...)
     |      x.__setattr__('name', value) <==> x.name = value
     |  
     |  __setstate__(...)
     |  
     |  __str__(...)
     |      x.__str__() <==> str(x)
     |  
     |  __unicode__(...)
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors inherited from exceptions.BaseException:
     |  
     |  __dict__
     |  
     |  args
     |  
     |  message
    
    class error_channel(__builtin__.object)
     |  Methods defined here:
     |  
     |  __init__(...)
     |      x.__init__(...) initializes x; see x.__class__.__doc__ for signature
     |  
     |  poll(...)
     |      Poll for errors
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
    
    class ini(__builtin__.object)
     |  Methods defined here:
     |  
     |  __init__(...)
     |      x.__init__(...) initializes x; see x.__class__.__doc__ for signature
     |  
     |  find(...)
     |      Find value in inifile as string.  This uses the ConfigParser-style (section,option) order, not the emc order.
     |  
     |  findall(...)
     |      Find value in inifile as a list.  This uses the ConfigParser-style (section,option) order, not the emc order.
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
    
    class positionlogger(__builtin__.object)
     |  Methods defined here:
     |  
     |  __init__(...)
     |      x.__init__(...) initializes x; see x.__class__.__doc__ for signature
     |  
     |  call(...)
     |      Plot the backplot now
     |  
     |  clear(...)
     |      Clear the position logger
     |  
     |  last(...)
     |      Return the most recent point on the plot or None
     |  
     |  start(...)
     |      Start the position logger and run every ARG seconds
     |  
     |  stop(...)
     |      Stop the position logger
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  npts
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T
    
    class stat(__builtin__.object)
     |  Methods defined here:
     |  
     |  __init__(...)
     |      x.__init__(...) initializes x; see x.__class__.__doc__ for signature
     |  
     |  poll(...)
     |      Update current machine state
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  acceleration
     |  
     |  active_queue
     |  
     |  actual_position
     |  
     |  adaptive_feed_enabled
     |  
     |  ain
     |  
     |  angular_units
     |  
     |  aout
     |  
     |  axes
     |  
     |  axis
     |  
     |  axis_mask
     |  
     |  block_delete
     |  
     |  command
     |  
     |  current_line
     |  
     |  current_vel
     |  
     |  cycle_time
     |  
     |  debug
     |  
     |  delay_left
     |  
     |  din
     |  
     |  distance_to_go
     |  
     |  dout
     |  
     |  dtg
     |  
     |  echo_serial_number
     |  
     |  enabled
     |  
     |  estop
     |  
     |  exec_state
     |  
     |  feed_hold_enabled
     |  
     |  feed_override_enabled
     |  
     |  feedrate
     |  
     |  file
     |  
     |  flood
     |  
     |  g5x_index
     |  
     |  g5x_offset
     |  
     |  g92_offset
     |  
     |  gcodes
     |  
     |  homed
     |  
     |  id
     |  
     |  inpos
     |  
     |  input_timeout
     |  
     |  interp_state
     |  
     |  interpreter_errcode
     |  
     |  joint_actual_position
     |  
     |  joint_position
     |  
     |  kinematics_type
     |  
     |  limit
     |  
     |  linear_units
     |  
     |  lube
     |  
     |  lube_level
     |  
     |  max_acceleration
     |  
     |  max_velocity
     |  
     |  mcodes
     |  
     |  mist
     |  
     |  motion_line
     |  
     |  motion_mode
     |  
     |  motion_type
     |  
     |  optional_stop
     |  
     |  paused
     |  
     |  pocket_prepped
     |  
     |  position
     |  
     |  probe_tripped
     |  
     |  probe_val
     |  
     |  probed_position
     |  
     |  probing
     |  
     |  program_units
     |  
     |  queue
     |  
     |  queue_full
     |  
     |  read_line
     |  
     |  rotation_xy
     |  
     |  settings
     |  
     |  spindle_brake
     |  
     |  spindle_direction
     |  
     |  spindle_enabled
     |  
     |  spindle_increasing
     |  
     |  spindle_override_enabled
     |  
     |  spindle_speed
     |  
     |  spindlerate
     |  
     |  state
     |  
     |  task_mode
     |  
     |  task_paused
     |  
     |  task_state
     |  
     |  tool_in_spindle
     |  
     |  tool_offset
     |  
     |  tool_table
     |  
     |  velocity
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __new__ = <built-in method __new__ of type object>
     |      T.__new__(S, ...) -> a new object with type S, a subtype of T

FUNCTIONS
    draw_dwells(...)
        Draw a bunch of dwell positions in the 'rs274.glcanon' format
    
    draw_lines(...)
        Draw a bunch of lines in the 'rs274.glcanon' format
    
    line9(...)
        Draw a single line in the 'rs274.glcanon' format; assumes glBegin(GL_LINES)
    
    vertex9(...)
        Get the 3d location for a 9d point

DATA
    AUTO_PAUSE = 1
    AUTO_RESUME = 2
    AUTO_RUN = 0
    AUTO_STEP = 3
    AXIS_ANGULAR = 2
    AXIS_LINEAR = 1
    BRAKE_ENGAGE = 1
    BRAKE_RELEASE = 0
    DEBUG_CONFIG = 2
    DEBUG_INTERP = 256
    DEBUG_INTERP_LIST = 2048
    DEBUG_MOTION_TIME = 128
    DEBUG_NML = 64
    DEBUG_RCS = 512
    DEBUG_TASK_ISSUE = 16
    DEBUG_VERSIONS = 8
    EXEC_DONE = 2
    EXEC_ERROR = 1
    EXEC_WAITING_FOR_DELAY = 8
    EXEC_WAITING_FOR_IO = 5
    EXEC_WAITING_FOR_MOTION = 3
    EXEC_WAITING_FOR_MOTION_AND_IO = 7
    EXEC_WAITING_FOR_MOTION_QUEUE = 4
    EXEC_WAITING_FOR_PAUSE = 6
    EXEC_WAITING_FOR_SYSTEM_CMD = 9
    FLOOD_OFF = 0
    FLOOD_ON = 1
    INTERP_IDLE = 1
    INTERP_PAUSED = 3
    INTERP_READING = 2
    INTERP_WAITING = 4
    JOG_CONTINUOUS = 1
    JOG_INCREMENT = 2
    JOG_STOP = 0
    KINEMATICS_BOTH = 4
    KINEMATICS_FORWARD_ONLY = 2
    KINEMATICS_IDENTITY = 1
    KINEMATICS_INVERSE_ONLY = 3
    MIST_OFF = 0
    MIST_ON = 1
    MODE_AUTO = 2
    MODE_MANUAL = 1
    MODE_MDI = 3
    NML_DISPLAY = 3
    NML_ERROR = 1
    NML_TEXT = 2
    OPERATOR_DISPLAY = 13
    OPERATOR_ERROR = 11
    OPERATOR_TEXT = 12
    RCS_DONE = 1
    RCS_ERROR = 3
    RCS_EXEC = 2
    SPINDLE_CONSTANT = 12
    SPINDLE_DECREASE = 11
    SPINDLE_FORWARD = 1
    SPINDLE_INCREASE = 10
    SPINDLE_OFF = 0
    SPINDLE_REVERSE = -1
    STATE_ESTOP = 1
    STATE_ESTOP_RESET = 2
    STATE_OFF = 3
    STATE_ON = 4
    TRAJ_MODE_COORD = 2
    TRAJ_MODE_FREE = 1
    TRAJ_MODE_TELEOP = 3
    nmlfile = '/usr/share/emc/emc.nml'
    version = '2.5.0-pre2-626-g402b6cd'
на сейчас интересует вот это:

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

    class stat(__builtin__.object)
     |  Methods defined here:
     |  __init__(...)
     |      x.__init__(...) initializes x; see x.__class__.__doc__ for signature 
     |  poll(...)
     |      Update current machine state
пишем:

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

s = emc.stat()
теперь функция обновления параметров:

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

s.poll() 
теперь мы можем посмотреть (или использовать для требуемых целей) нужную нам информацию
выведем все атрибуты:

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

for x in dir(s):
	print x, getattr(s,x)
будет выведен довольно объемный список отображающий состояние машины:
(для просмотра содержимого нажмите на ссылку)

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

import emc

s = emc.stat() 
s.poll() 


for x in dir(s):

        print x, getattr(s,x)
__class__ <type 'emc.stat'>
__delattr__ <method-wrapper '__delattr__' of emc.stat object at 0xc6c3f40>
__doc__ None
__format__ <built-in method __format__ of emc.stat object at 0xc6c3f40>
__getattribute__ <method-wrapper '__getattribute__' of emc.stat object at 0xc6c3f40>
__hash__ <method-wrapper '__hash__' of emc.stat object at 0xc6c3f40>
__init__ <method-wrapper '__init__' of emc.stat object at 0xc6c3f40>
__new__ <built-in method __new__ of type object at 0x4760ec8>
__reduce__ <built-in method __reduce__ of emc.stat object at 0xc6c3f40>
__reduce_ex__ <built-in method __reduce_ex__ of emc.stat object at 0xc6c3f40>
__repr__ <method-wrapper '__repr__' of emc.stat object at 0xc6c3f40>
__setattr__ <method-wrapper '__setattr__' of emc.stat object at 0xc6c3f40>
__sizeof__ <built-in method __sizeof__ of emc.stat object at 0xc6c3f40>
__str__ <method-wrapper '__str__' of emc.stat object at 0xc6c3f40>
__subclasshook__ <built-in method __subclasshook__ of type object at 0x4760ec8>
acceleration 50.0
active_queue 0
actual_position (-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
adaptive_feed_enabled False
ain (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
angular_units 1.0
aout (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
axes 3
axis ({'ferror_current': 0.0, 'max_position_limit': 400.0, 'max_ferror': 26.0, 'inpos': 1, 'ferror_highmark': 0.0, 'units': 1.0, 'input': -0.0, 'min_soft_limit': 0, 'min_hard_limit': 0, 'homing': 0, 'min_ferror': 0.26000000000000001, 'max_hard_limit': 0, 'output': -0.0, 'axisType': 1, 'backlash': 0.0, 'fault': 0, 'enabled': 0, 'max_soft_limit': 0, 'override_limits': 0, 'homed': 0, 'min_position_limit': -400.0, 'velocity': 0.0}, {'ferror_current': 0.0, 'max_position_limit': 300.0, 'max_ferror': 26.0, 'inpos': 1, 'ferror_highmark': 0.0, 'units': 1.0, 'input': -0.0, 'min_soft_limit': 0, 'min_hard_limit': 0, 'homing': 0, 'min_ferror': 0.26000000000000001, 'max_hard_limit': 0, 'output': -0.0, 'axisType': 1, 'backlash': 0.0, 'fault': 0, 'enabled': 0, 'max_soft_limit': 0, 'override_limits': 0, 'homed': 0, 'min_position_limit': -300.0, 'velocity': 0.0}, {'ferror_current': 0.0, 'max_position_limit': 400.0, 'max_ferror': 26.0, 'inpos': 1, 'ferror_highmark': 0.0, 'units': 1.0, 'input': -0.0, 'min_soft_limit': 0, 'min_hard_limit': 0, 'homing': 0, 'min_ferror': 0.26000000000000001, 'max_hard_limit': 0, 'output': -0.0, 'axisType': 1, 'backlash': 0.0, 'fault': 0, 'enabled': 0, 'max_soft_limit': 0, 'override_limits': 0, 'homed': 0, 'min_position_limit': -400.0, 'velocity': 0.0}, {'ferror_current': 0.0, 'max_position_limit': 0.0, 'max_ferror': 0.0, 'inpos': 0, 'ferror_highmark': 0.0, 'units': 0.0, 'input': 0.0, 'min_soft_limit': 0, 'min_hard_limit': 0, 'homing': 0, 'min_ferror': 0.0, 'max_hard_limit': 0, 'output': 0.0, 'axisType': 0, 'backlash': 0.0, 'fault': 0, 'enabled': 0, 'max_soft_limit': 0, 'override_limits': 0, 'homed': 0, 'min_position_limit': 0.0, 'velocity': 0.0}, {'ferror_current': 0.0, 'max_position_limit': 0.0, 'max_ferror': 0.0, 'inpos': 0, 'ferror_highmark': 0.0, 'units': 0.0, 'input': 0.0, 'min_soft_limit': 0, 'min_hard_limit': 0, 'homing': 0, 'min_ferror': 0.0, 'max_hard_limit': 0, 'output': 0.0, 'axisType': 0, 'backlash': 0.0, 'fault': 0, 'enabled': 0, 'max_soft_limit': 0, 'override_limits': 0, 'homed': 0, 'min_position_limit': 0.0, 'velocity': 0.0}, {'ferror_current': 0.0, 'max_position_limit': 0.0, 'max_ferror': 0.0, 'inpos': 0, 'ferror_highmark': 0.0, 'units': 0.0, 'input': 0.0, 'min_soft_limit': 0, 'min_hard_limit': 0, 'homing': 0, 'min_ferror': 0.0, 'max_hard_limit': 0, 'output': 0.0, 'axisType': 0, 'backlash': 0.0, 'fault': 0, 'enabled': 0, 'max_soft_limit': 0, 'override_limits': 0, 'homed': 0, 'min_position_limit': 0.0, 'velocity': 0.0}, {'ferror_current': 0.0, 'max_position_limit': 0.0, 'max_ferror': 0.0, 'inpos': 0, 'ferror_highmark': 0.0, 'units': 0.0, 'input': 0.0, 'min_soft_limit': 0, 'min_hard_limit': 0, 'homing': 0, 'min_ferror': 0.0, 'max_hard_limit': 0, 'output': 0.0, 'axisType': 0, 'backlash': 0.0, 'fault': 0, 'enabled': 0, 'max_soft_limit': 0, 'override_limits': 0, 'homed': 0, 'min_position_limit': 0.0, 'velocity': 0.0}, {'ferror_current': 0.0, 'max_position_limit': 0.0, 'max_ferror': 0.0, 'inpos': 0, 'ferror_highmark': 0.0, 'units': 0.0, 'input': 0.0, 'min_soft_limit': 0, 'min_hard_limit': 0, 'homing': 0, 'min_ferror': 0.0, 'max_hard_limit': 0, 'output': 0.0, 'axisType': 0, 'backlash': 0.0, 'fault': 0, 'enabled': 0, 'max_soft_limit': 0, 'override_limits': 0, 'homed': 0, 'min_position_limit': 0.0, 'velocity': 0.0}, {'ferror_current': 0.0, 'max_position_limit': 0.0, 'max_ferror': 0.0, 'inpos': 0, 'ferror_highmark': 0.0, 'units': 0.0, 'input': 0.0, 'min_soft_limit': 0, 'min_hard_limit': 0, 'homing': 0, 'min_ferror': 0.0, 'max_hard_limit': 0, 'output': 0.0, 'axisType': 0, 'backlash': 0.0, 'fault': 0, 'enabled': 0, 'max_soft_limit': 0, 'override_limits': 0, 'homed': 0, 'min_position_limit': 0.0, 'velocity': 0.0})
axis_mask 5
block_delete False
command 
current_line 0
current_vel 0.0
cycle_time 0.00099796
debug 0
delay_left 0.0
din (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
distance_to_go 0.0
dout (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
dtg (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
echo_serial_number 9
enabled False
estop 1
exec_state 2
feed_hold_enabled True
feed_override_enabled True
feedrate 1.0
file /usr/share/axis/images/axis-lathe.ngc
flood 0
g5x_index 1
g5x_offset (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
g92_offset (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
gcodes (0, 800, -1, 170, 400, 210, 900, 940, 540, 490, 990, 640, -1, 970, 911, 80)
homed (0, 0, 0, 0, 0, 0, 0, 0, 0)
id 0
inpos True
input_timeout False
interp_state 1
interpreter_errcode 0
joint_actual_position (-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
joint_position (-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
kinematics_type 1
limit (0, 0, 0, 0, 0, 0, 0, 0, 0)
linear_units 1.0
lube 0
lube_level 0
max_acceleration 50.0
max_velocity 8.0
mcodes (0, -1, 5, -1, 9, -1, 48, -1, 53, 0)
mist 0
motion_line 0
motion_mode 2
motion_type 0
optional_stop False
paused False
pocket_prepped -1
poll <built-in method poll of emc.stat object at 0xc6c3f40>
position (-0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
probe_tripped False
probe_val 0
probed_position (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
probing False
program_units 2
queue 0
queue_full False
read_line 0
rotation_xy 0.0
settings (0.0, 0.0, 0.0)
spindle_brake 1
spindle_direction 0
spindle_enabled 0
spindle_increasing 0
spindle_override_enabled True
spindle_speed 0.0
spindlerate 1.0
state 1
task_mode 2
task_paused 0
task_state 1
tool_in_spindle 0
tool_offset (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
tool_table (tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=2, xoffset=17.0, yoffset=0.0, zoffset=0.10000000000000001, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0625, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=3, xoffset=0.0, yoffset=0.0, zoffset=1.2729999999999999, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.20100000000000001, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=99999, xoffset=0.0, yoffset=0.0, zoffset=0.10000000000000001, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0), tool_result(id=-1, xoffset=0.0, yoffset=0.0, zoffset=0.0, aoffset=0.0, boffset=0.0, coffset=0.0, uoffset=0.0, voffset=0.0, woffset=0.0, diameter=0.0, frontangle=0.0, backangle=0.0, orientation=0))
velocity 0.0
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

пару слов о модуле linuxcnс
если linuxcnс установлена в систему - проблем наверно быть не должно (не могу проверить)
а если установлены версии из исходников - то укажем путь к нашему модулю:
смотрим сущуствующие пути:

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

import sys
sys.path
добавляем путь к своему модулю:

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

import sys
sys.path.insert(0,'папка_уст_linuxcnc/lib/python')
проверяем:

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

import sys
sys.path
наш путь должен быть добавлен в начало
-----------------------------------------
посмотрим отдельный параметр - например текущую позицию одной оси:

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

import emc
s = emc.stat()
s.poll()
print  s.axis[0]['input']
обновляем в цикле все параметры , вот по моему ,как это сделано в axis:

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

s = linuxcnc.stat();
s.poll()
statfail=0
statwait=.01
while s.axes == 0:
    print "waiting for s.axes"
    time.sleep(statwait)
    statfail+=1
    statwait *= 2
    if statfail > 8:
        raise SystemExit, (
            "A configuration error is preventing LinuxCNC from starting.\n"
            "More information may be available when running from a terminal.")
    s.poll()
Ответить

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