LinuxCNC реверс Gкода

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

LinuxCNC реверс Gкода

Сообщение nkp » 06 дек 2012, 12:44

я все таки не оставляю надежду "научить" емс исполнение программы в реверсном режиме(пусть даже только линейные перемещения и без подпрограмм)
вот такие наработки:
1. по внешнему сигналу останавливаемся:
Код: Выделить всёРазвернуть
   def run_from_line(self,widget):
#      self.c.set_feed_hold(1)
#      self.c.wait_complete()
      self.c.abort()
      self.c.wait_complete()
      print 'task_mode-' , self.s.task_mode,'program_line',self.halcomp["program-line"]

2. получаем номер текущего кадра в переменную(из хал в скрипт)
3. вот тут пока недорешенный вопрос:
Код: Выделить всёРазвернуть
   def run_from_line_re(self,widget):
      self.program_start_line = int(self.halcomp["program-line"]) - 1
      self.c.auto(linuxcnc.AUTO_RUN , self.program_start_line)
      self.c.wait_complete()
      self.c.auto(linuxcnc.AUTO_STEP)

после остановки нужно вернуться в предыдущий кадр и повторять это в цикле до команды
тут загвоздка вот в чем:
насколько я понял - емс может (пока) начать с указанного кадра только в обычном(не пошаговом) режиме
Код: Выделить всёРазвернуть
self.c.auto(linuxcnc.AUTO_RUN , self.program_start_line)

а вот включая пошаговый :
Код: Выделить всёРазвернуть
self.c.auto(linuxcnc.AUTO_STEP)

мы не можем арументом указать требуемый стартовый кадр
(может выйдет и имеющимися средствами обойтись - а может и модуль linuxcnc.so нужно изменять)
какие у кого мнения по самому принципу?

Эта тема была отделена от: MyGUI #532
--Nick
nkp
Мастер
 
Сообщения: 7793
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: MyGUI

Сообщение Nick » 06 дек 2012, 19:25

А что будет, если написать:
Код: Выделить всёРазвернуть
self.c.auto(linuxcnc.AUTO_STEP,  self.program_start_line) 
Аватара пользователя
Nick
Мастер
 
Сообщения: 22543
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1572
Заслуга: Developer
Медальки:

Re: MyGUI

Сообщение nkp » 06 дек 2012, 19:44

Nick писал(а):А что будет, если написать:

как и следовало ожидать:
Код: Выделить всёРазвернуть
Traceback (most recent call last):
  File "/home/nkp/emc2-dev-80db2a2/bin/mygui", line 75, in run_from_line_re
    self.c.auto(linuxcnc.AUTO_STEP , self.program_start_line)
TypeError: function takes exactly 1 argument (2 given)
nkp
Мастер
 
Сообщения: 7793
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: MyGUI

Сообщение nkp » 06 дек 2012, 20:20

в принципе - учитывая потребность в отходе на сравнительно небольшое расстояние при кз (в EDM)
даже такое решение может быть достаточным

естественно вместо кнопок получаем сигнал напряжения на эрозионном промежутке
и "на весь" кадр конечно не нужно отходить - только до устранения кз
nkp
Мастер
 
Сообщения: 7793
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: MyGUI

Сообщение Nick » 06 дек 2012, 21:35

nkp писал(а):как и следовало ожидать:
TypeError: function takes exactly 1 argument (2 given)

Так функция же одна и та же?!
Можешь целиком ошибку скопировать?

nkp писал(а):в принципе - учитывая потребность в отходе на сравнительно небольшое расстояние при кз (в EDM)
даже такое решение может быть достаточным

Ахренеть! :good: Это медаль!
Ток я не понял, а как ты все это сделал??? По кнопке реверсируется Gкод, и автоматом загружается в MyGUI? Кстати, код целиком реверсируешь и после загрузки есть пройденный путь (который раньше был окончанием траектории)?
Аватара пользователя
Nick
Мастер
 
Сообщения: 22543
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1572
Заслуга: Developer
Медальки:

Re: MyGUI

Сообщение nkp » 06 дек 2012, 22:00

Nick писал(а):По кнопке реверсируется Gкод, и автоматом загружается в MyGUI

нет ,ничего не грузится
вот примерно так:
Код: Выделить всёРазвернуть
   def run_from_line(self,widget):
      self.c.abort() #  делаем стоп
      self.c.wait_complete() # ждем выполнения (может это лишнее...)
      self.run_from_line_re(self) # вызываем следующую функцию
      print 'task_mode-' , self.s.task_mode,'program_line',self.halcomp["program-line"]  #контроль
   def run_from_line_re(self,widget):
      self.program_start_line = int(self.halcomp["program-line"]) - 1 #вычисляем нужный нам номер кадра (коннект с пином motion.program-line)
      self.c.auto(linuxcnc.AUTO_RUN , self.program_start_line)# начать обработку с кадра  self.program_start_line

вот если бы подправить модуль linuxcnc в плане
Код: Выделить всёРазвернуть
c.auto(linuxcnc.AUTO_STEP,  self.program_start_line) 

то таким образом можно было бы отходить хоть до начала...
найти бы для начала исходники модуля...
nkp
Мастер
 
Сообщения: 7793
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: MyGUI

Сообщение nkp » 06 дек 2012, 23:48

вот исходники модуля linuxcnc.so
насколько я понимаю - именно в нем сосредоточена большая часть(или весь?) интерфейса емс
знатокам Си:
возможно ли изменение работы в пошаговом режиме с указанием начального кадра
(по аналогии с c.auto(linuxcnc.AUTO_RUN, self.program_start_line) - где
вторым аргументом указываем номер начального кадра(строки)
хочеться иметь команду:
Код: Выделить всёРазвернуть
c.auto(linuxcnc.AUTO_STEP,  self.program_start_line) 

emcmodule.txt
расширение .cc
(73.41 Кб) Скачиваний: 1004

наверно вот эта функция:
Код: Выделить всёРазвернуть
static PyObject *emcauto(pyCommandChannel *s, PyObject *o) {
    int fn;
    EMC_TASK_PLAN_RUN run;
    EMC_TASK_PLAN_PAUSE pause;
    EMC_TASK_PLAN_RESUME resume;
    EMC_TASK_PLAN_STEP step;

    if(PyArg_ParseTuple(o, "ii", &fn, &run.line) && fn == LOCAL_AUTO_RUN) {
        run.serial_number = next_serial(s);
        s->c->write(run);
        emcWaitCommandReceived(s->serial, s->s);
    } else {
        PyErr_Clear();
        if(!PyArg_ParseTuple(o, "i", &fn)) return NULL;
        switch(fn) {
        case LOCAL_AUTO_PAUSE:
            pause.serial_number = next_serial(s);
            s->c->write(pause);
            emcWaitCommandReceived(s->serial, s->s);
            break;
        case LOCAL_AUTO_RESUME:
            resume.serial_number = next_serial(s);
            s->c->write(resume);
            emcWaitCommandReceived(s->serial, s->s);
            break;
        case LOCAL_AUTO_STEP:
            step.serial_number = next_serial(s);
            s->c->write(step);
            emcWaitCommandReceived(s->serial, s->s);
            break;
        default:
            PyErr_Format(error, "Unexpected argument '%d' to command.auto", fn);
            return NULL;
        }
    }
    Py_INCREF(Py_None);
    return Py_None;
}
nkp
Мастер
 
Сообщения: 7793
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: MyGUI

Сообщение UAVpilot » 07 дек 2012, 00:03

по
c.auto(linuxcnc.AUTO_STEP
оно должно "провалится" вот сюда
case LOCAL_AUTO_STEP: ...
Останется только проверить наличие второлго аргумента...
Не понял только что делает PyArg_ParseTuple(...), вроде достаёт соотв. аргументы, надо только почитать как.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 18850
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4582
Медальки:
Настоящее имя: Сергей

Re: MyGUI

Сообщение nkp » 07 дек 2012, 00:20

PyArg_ParseTuple(...) как я понял конвертирует типы данных из питоновских в сишные...
nkp
Мастер
 
Сообщения: 7793
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: MyGUI

Сообщение UAVpilot » 07 дек 2012, 00:26

Возможно, я просто не понял эти "i" и "ii", а уже спать охота. :nobeer:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 18850
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4582
Медальки:
Настоящее имя: Сергей

Re: MyGUI

Сообщение Nick » 07 дек 2012, 11:26

UAVpilot писал(а):Не понял только что делает PyArg_ParseTuple(...), вроде достаёт соотв. аргументы, надо только почитать как.

Она парсит Tuple, в питоне это тип, который может содержать n переменных. ii - по ходу это два интеджера.


Попробуй :
Вместо:

if(!PyArg_ParseTuple(o, "i", &fn)) return NULL;

написать:
Код: Выделить всёРазвернуть
        if(!(PyArg_ParseTuple(o, "ii", &fn, &run.line) ) # если не берется два параметра
        {
                if(!PyArg_ParseTuple(o, "i", &fn)) return NULL# пробуем взять хотя бы  один, если не возьмется - return Null
        }
Аватара пользователя
Nick
Мастер
 
Сообщения: 22543
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1572
Заслуга: Developer
Медальки:

Re: MyGUI

Сообщение nkp » 08 дек 2012, 13:40

выложу файлы где отходы можно протестировать в axis
функции повесил на кнопки zoom (на видео видно)
принцип простой : командуем начать выполнение с такого то кадра( точнее строки)
из-за этого есть ограничения по структуре программы(ж-кода)
но это решается простым парсером кода

для "попробовать" нужно:
1. заменить "родной" файл axis.py (который лежит /usr/bin) - это в случае с установленным в систему емс (делаем под root, не забывая сохранить оригинальный файл)
2. папку EDM1 положить в папку configs к остальным конфигурационным директориям
то же можно сделать и на установленном емс из исходников(еще проще )
этот примитивный ж-код в архиве (1_re.ngc)
----------------
маленькое отступление:
я стараюсь ставить емс в мужском роде - ведь это контроллер - он
а язык чешеться всегда сказать емс - она :)

--------------
новая папка.rar
(32.34 Кб) Скачиваний: 492
nkp
Мастер
 
Сообщения: 7793
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: MyGUI

Сообщение nkp » 08 дек 2012, 19:05

сейчас немного подправил - так компактней и без использования пинов хал
теперь внеся такие изменения только в axis.py , получаем отъезды в любой конфигурации:
Код: Выделить всёРазвернуть
###############################################################################################rev
    def zoomin(event=None):
   s.poll()
        c.abort()
   c.wait_complete()
   c.auto(linuxcnc.AUTO_RUN , (s.motion_line-1))

    def zoomout(event=None):
   s.poll()
   c.abort()
   c.wait_complete()
   c.auto(linuxcnc.AUTO_RUN , (s.motion_line+1))
##################################################################################################end_rev
nkp
Мастер
 
Сообщения: 7793
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: MyGUI

Сообщение nkp » 09 дек 2012, 00:19

Nick писал(а):Попробуй :Вместо: if(!PyArg_ParseTuple(o, "i", &fn)) return NULL;

наверно в этом модуле только исключительно интерфейс "общения " с помощью питона
а основные функции режимов (AUTO_RUN , AUTO_STEP,...) зарыты глубже...
найти бы где это????
там бы уже попытаться прицепить к step номер стартового кадра
nkp
Мастер
 
Сообщения: 7793
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: MyGUI

Сообщение Nick » 09 дек 2012, 01:32

А что получается, если if поменять?
Аватара пользователя
Nick
Мастер
 
Сообщения: 22543
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1572
Заслуга: Developer
Медальки:

Re: MyGUI

Сообщение vmarkiv » 09 дек 2012, 12:53

По #544 не удается запустить реверс . Ошибки Print file information:
RUN_IN_PLACE=no
LINUXCNC_DIR=
LINUXCNC_BIN_DIR=/usr/bin
LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc
LINUXCNC_SCRIPT_DIR=
LINUXCNC_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/linuxcnc
LINUXCNC_CONFIG_DIR=
LINUXCNC_LANG_DIR=/usr/share/linuxcnc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
LINUXCNC_EMCSH=/usr/bin/wish8.5
LINUXCNC - 2.5.1
Machine configuration directory is '/home/cnc/linuxcnc/configs/EDM1'
Machine configuration file is 'Sherline3Axis_mm.ini'
INIFILE=/home/cnc/linuxcnc/configs/EDM1/Sherline3Axis_mm.ini
PARAMETER_FILE=stepper.var
TASK=milltask
HALUI=halui
DISPLAY=axis
Starting LinuxCNC...
Starting LinuxCNC server program: linuxcncsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting LinuxCNC IO program: io
Starting HAL User Interface program: halui
Starting TASK program: milltask
Starting DISPLAY program: axis
Shutting down and cleaning up LinuxCNC...
Killing task linuxcncsvr, PID=5627
Killing task milltask, PID=5678
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done

Debug file information:
Can not find -sec MOT -var MOT -num 1
Can not find -sec IO -var IO -num 1
Can not find -sec LINUXCNC -var NML_FILE -num 1
Can not find -sec EMC -var NML_FILE -num 1
rev.py:2: DeprecationWarning: the emc module is deprecated; use the linuxcnc module instead
import hal, time, emc
Traceback (most recent call last):
File "/usr/bin/axis", line 3036, in <module>
setup_grid_menu(grids)
File "/usr/bin/axis", line 3031, in setup_grid_menu
variable="grid_size", command="set_grid_size")
File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 2642, in add_radiobutton
self.add('radiobutton', cnf or kw)
File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 2630, in add
self._options(cnf, kw))
_tkinter.TclError: invalid command name ".menu.view.grid"
5627
PID TTY STAT TIME COMMAND
5678
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components

Kernel message information:
[ 5073.388137] I-pipe: Domain RTAI registered.
[ 5073.388149] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[ 5073.388154] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[ 5073.388220] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 5073.388226] PIPELINE layers:
[ 5073.388233] fca3de20 9ac15d93 RTAI 200
[ 5073.388238] c085cb20 0 Linux 100
[ 5073.416421] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 5073.417283] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 5073.417294] RTAI[sched]: hard timer type/freq = APIC/12468720(Hz); default timing: periodic; linear timed lists.
[ 5073.417301] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 2992667000 hz.
[ 5073.417307] RTAI[sched]: timer setup = 999 ns, resched latency = 2944 ns.
[ 5073.417440] RTAI[usi]: enabled.
[ 5073.505313] RTAI[math]: loaded.
[ 5073.708346] config string '0x0378'
[ 5076.792568] RTAI[math]: unloaded.
[ 5076.868542] SCHED releases registered named ALIEN RTGLBH
[ 5076.900889] RTAI[malloc]: unloaded.
[ 5077.000047] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[ 5077.004708] I-pipe: Domain RTAI unregistered.
[ 5077.004785] RTAI[hal]: unmounted.
vmarkiv
Мастер
 
Сообщения: 491
Зарегистрирован: 21 янв 2012, 00:23
Откуда: Ивано-Франковск
Репутация: 28

Re: MyGUI

Сообщение nkp » 09 дек 2012, 13:20

да ,забыл отметить:
если пользуем linuxcnc (а не емс) - то модуль rev.py такой:
Код: Выделить всёРазвернуть
#!/usr/bin/python
import hal, time,linuxcnc
h = hal.component("rev")
h.newpin("rev", hal.HAL_BIT, hal.HAL_IN)
h.newpin("rerev", hal.HAL_BIT, hal.HAL_IN)
h.newpin("program-line", hal.HAL_FLOAT, hal.HAL_IN)
h.ready()
c =linuxcnc.command()
def back():
   c.abort()
   c.wait_complete()      
   c.auto(emc.AUTO_RUN , program_start_line)
def again_forward ():
   c.abort()
   c.wait_complete()
   program_start_line = int(program_start_line) + 1
   c.auto(emc.AUTO_RUN , program_start_line)
try:
    while 1:
   program_start_line = int(h["program-line"])-2
   
   if h["rev"]==1:
      back()
      time.sleep(0.1)
      h["rev"]=0
      print program_start_line

except KeyboardInterrupt:
    raise SystemExit

то есть разница в импортируемых модулях(точнее в их названии)
зы лучше попробовать внести изменения как в #545 (всего 8 строк кода) :проще, без привязки к хал,и работает в любой конфигурации
nkp
Мастер
 
Сообщения: 7793
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1421
Медальки:

Re: MyGUI

Сообщение vmarkiv » 09 дек 2012, 13:26

По #545 ошибки Print file information:
RUN_IN_PLACE=no
LINUXCNC_DIR=
LINUXCNC_BIN_DIR=/usr/bin
LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc
LINUXCNC_SCRIPT_DIR=
LINUXCNC_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/linuxcnc
LINUXCNC_CONFIG_DIR=
LINUXCNC_LANG_DIR=/usr/share/linuxcnc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
LINUXCNC_EMCSH=/usr/bin/wish8.5
LINUXCNC - 2.5.1
Machine configuration directory is '/home/cnc/linuxcnc/configs/EDM1'
Machine configuration file is 'Sherline3Axis_mm.ini'
INIFILE=/home/cnc/linuxcnc/configs/EDM1/Sherline3Axis_mm.ini
PARAMETER_FILE=stepper.var
TASK=milltask
HALUI=halui
DISPLAY=axis
Starting LinuxCNC...
Starting LinuxCNC server program: linuxcncsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting LinuxCNC IO program: io
Starting HAL User Interface program: halui
Starting TASK program: milltask
Starting DISPLAY program: axis
Shutting down and cleaning up LinuxCNC...
Killing task linuxcncsvr, PID=9069
Killing task milltask, PID=9120
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done

Debug file information:
Can not find -sec MOT -var MOT -num 1
Can not find -sec IO -var IO -num 1
Can not find -sec LINUXCNC -var NML_FILE -num 1
Can not find -sec EMC -var NML_FILE -num 1
rev.py:2: DeprecationWarning: the emc module is deprecated; use the linuxcnc module instead
import hal, time, emc
File "/usr/bin/axis", line 1807
s.poll()
^
IndentationError: unindent does not match any outer indentation level
9069
PID TTY STAT TIME COMMAND
9120
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components

Kernel message information:
[ 6986.863061] I-pipe: Domain RTAI registered.
[ 6986.863073] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[ 6986.863079] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[ 6986.863145] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 6986.863150] PIPELINE layers:
[ 6986.863155] fa3dce20 9ac15d93 RTAI 200
[ 6986.863160] c085cb20 0 Linux 100
[ 6986.896331] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 6986.896745] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 6986.896757] RTAI[sched]: hard timer type/freq = APIC/12468720(Hz); default timing: periodic; linear timed lists.
[ 6986.896764] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 2992667000 hz.
[ 6986.896769] RTAI[sched]: timer setup = 999 ns, resched latency = 2944 ns.
[ 6986.896894] RTAI[usi]: enabled.
[ 6986.986062] RTAI[math]: loaded.
[ 6987.214376] config string '0x0378'
[ 6988.729366] RTAI[math]: unloaded.
[ 6988.791508] SCHED releases registered named ALIEN RTGLBH
[ 6988.820910] RTAI[malloc]: unloaded.
[ 6988.920530] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[ 6988.924629] I-pipe: Domain RTAI unregistered.
[ 6988.924716] RTAI[hal]: unmounted.
vmarkiv
Мастер
 
Сообщения: 491
Зарегистрирован: 21 янв 2012, 00:23
Откуда: Ивано-Франковск
Репутация: 28

Re: MyGUI

Сообщение vmarkiv » 09 дек 2012, 13:28

файл axis
Вложения
axis.zip
редуктирован
(28.31 Кб) Скачиваний: 472
vmarkiv
Мастер
 
Сообщения: 491
Зарегистрирован: 21 янв 2012, 00:23
Откуда: Ивано-Франковск
Репутация: 28

Re: MyGUI

Сообщение vmarkiv » 09 дек 2012, 13:35

С версией
nkp писал(а):то модуль rev.py такой:
и версией вставки файла из сообщ 545 ошибки такие Print file information:

Can not find -sec LINUXCNC -var NML_FILE -num 1
Can not find -sec EMC -var NML_FILE -num 1
File "rev.py", line 2
import hal, time,linuxcnc
^
IndentationError: unexpected indent
core_stepper.hal:54: python exited without becoming ready
9886
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components
vmarkiv
Мастер
 
Сообщения: 491
Зарегистрирован: 21 янв 2012, 00:23
Откуда: Ивано-Франковск
Репутация: 28

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: aftaev, ALViktor, antoxa-kylibin, arkhnchul, bberkhin, Bing [Bot], calabr, CNCCLUB, Den120881, gendos, Google [Bot], jkwe45, Majestic-12 [Bot], MaksSavchuk, master_70, mdi, mikehv, MSN [Bot], nik1, nizamus, nkp, sasaa, ScrewDriver, sopar, techie.raccoon, tehnic, uralpt, Vovik939, xvovanx, Yandex [bot], Кварк, Тарантос

Reputation System ©'