продолжение работы после отключения питания компьютера

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
fredy79
Опытный
Сообщения: 100
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 »

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

Re: продолжение работы после отключения питания компьютера

Сообщение Serg »

fredy79 писал(а):я имею в виду что при возобновлении питания нажимаем кнопку "идти в дом" при этом должна быть загружена незавершенная программа, и должна быть кнопка "продолжить незавершенную работу"
Я ж только что привёл пример того, что опасно "продолжать незавершенную работу" из какой попало точки...
Предварительно выставив инструмент в некую безопасную точку и запустить обработку с повтора последнего исполненного кадра нет проблем.
Хотя всётаки есть: для полного счастья этот кадр должен содержать движение по всем задействованным осям, а т.к. такое довольно редко, то придётся перед продолжением выполнить некоторые операции вручную.

P.S. Вашу цитату я поправил, чтобы ваши слова не приписывались мне. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение nkp »

запоминание места ,где остановила авария:
файл numstr.py

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

#!/usr/bin/python
import hal 
h = hal.component("numstr")
h.newpin("in", hal.HAL_S32, hal.HAL_IN)
h.ready()
tmp = 0
flog = '/home/nkp/linuxcnc-reverse-run/configs/sim/axis/line-number.log'
f = open(flog,'w')
f.write('0')
f.close()
try:
    while 1:
       if h['in'] == 0:
          continue
       else:
         if h['in'] > tmp:
            f = open(flog,'w')
            f.write(str(int(h['in'])))
            f.close()
            tmp = h['in']
except KeyboardInterrupt:
    raise SystemExit
помещаем в папку конфига и делаем исполняемым

-------------------------
в хал файл допишем :
loadusr -Wn numstr python numstr.py
net line motion.program-line => numstr.in
---------------------------
редактируем наше "окошко" (файл restart.py)^

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

#!/usr/bin/env python
# --*-- coding:utf-8 --*--

import pygtk
pygtk.require('2.0')
import gtk
import re
import os,sys
import linuxcnc

class WRestart:
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False
        
    def go(self):
        s = linuxcnc.stat()
        s.poll()
        filename = s.file
        f = open(filename, "r")
        lines = f.readlines()
        number_line = int(self.entry.get_text())
        string='' 
        w=0
        while not re.search("M2\s*",lines[w], re.I):
            w+=1
            if (w <= number_line):
                try:
                    tool =  int(re.search("T\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass
                try:
                    speed = int(re.search("S\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass
                try:
                    feed =  int(re.search("F\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass                                        
            if (w >= number_line):
                string+=lines[w]
        string +='M2\n'
        print 'M6 T',tool
        print 'F',feed
        print 'M3 S',speed
        sys.stdout.write(string) 
        gtk.main_quit()
             
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("restart")
        self.window.connect("delete_event", self.delete_event)
        self.window.set_border_width(20)

        self.vbox = gtk.VBox(True, 2)
        self.window.add(self.vbox)
        
        #self.entry = gtk.Label()
        #self.entry.set_text("№ line")
        #self.vbox.pack_start(self.entry, True, True, 2)
        #self.entry.show() 
               
        fr = open('/home/nkp/linuxcnc-reverse-run/configs/sim/axis/line-number.log','r')
        ls = fr.readlines()
        l = re.sub("^\s+|\n|\r|\s+$", '',  ls[0] )
        
        self.entry = gtk.Entry()
        self.entry.set_max_length(10)
        self.entry.set_text(l)
        self.vbox.pack_start(self.entry, True, True, 2)
        self.entry.show()
        

                      
        self.button = gtk.Button("Open")
        self.button.connect("clicked", lambda x: self.go())
        self.vbox.pack_start(self.button, True, True, 2)
        self.button.show()
        self.vbox.show()
        
        
        
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.show()
        
def main():    
    gtk.main()
    return 0       
if __name__ == "__main__":
    WRestart()
    main()
    
    
теперь оно берет номер строки...
----------------
путь к файлам разумеется подправляем...
fredy79
Опытный
Сообщения: 100
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 »

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

Re: продолжение работы после отключения питания компьютера

Сообщение Serg »

fredy79 писал(а):так для этого и делается кнопка, отвел на безопасную позицию и нажал))
А есть понимание какая позиция безопасна для продолжения? :)
Например если пилим паз или делаем раскрой, то перед нажатием кнопки "продолжение" придётся сначала инструмент во включенном шпинделе завести точно в прорезанный паз - ибо только именно эта позиция будет безопасна всегда (ну почти всегда).
Я думаю пока не стоит заострять внимание, что электричество предпочитает пропадать не строго между кадрами, а где-то посередине выполняемого. :)
fredy79 писал(а):отвел на безопасную позицию и нажал
Т.е. про "функцию автоматического продолжения работы после отключения питания" всётаки уже не говорим? :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
fredy79
Опытный
Сообщения: 100
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 »

говорим, шпиндель естественно должен включиться до того момента как ось Z пойдет вниз, оси Х и У уже должны стоять в нужном месте и в этом случае фреза опускается вниз со включенным шпинделем при приближении шпинделя к заданной точке скорость оси должна уменьшиться.
UAVpilot писал(а):"функцию автоматического продолжения работы после отключения питания"
и подразумевает нажатие кнопки оператором без поиска нужной строки и позиции. То есть если нет никаких препятствий движению фрезы то нажал кнопку и станок поехал в нужную точку и продолжил, если есть, отвел оси в безопасное место, нажал кнопку и станок продолжил работу.
fredy79
Опытный
Сообщения: 100
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 »

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

Re: продолжение работы после отключения питания компьютера

Сообщение Serg »

Допустим этот кадр выглядит так: что именно стано должен будет сделать?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
fredy79
Опытный
Сообщения: 100
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 »

система должна при этом знать позицию У и Z, скорость и направление шпинделя, скорость подачи осей , у строки Х100 есть номер, допустим 50 , продолжение должно быть со строки 50-1=49
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение Serg »

fredy79 писал(а):и подразумевает нажатие кнопки оператором без поиска нужной строки и позиции.
Так с этим никаких проблем нет - решение не раз описывалось на этом форуме и в этой теме.
fredy79 писал(а):система должна при этом знать позицию У и Z, скорость и направление шпинделя, скорость подачи осей , у строки Х100 есть номер, допустим 50 , продолжение должно быть со строки 50-1=49

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

...
N49 X90
N50 X100
...
:)

Ах да, чуть не забыл:

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

...
N40 G90 G98 G81 X0 Y0 Z-10 R5
...
:)

P.S. LinuxCNC развивается с 2000-ого года. Вы правда считаете разработчиков LinuxCNC настолько глупыми, что они за 17 лет так и не смогли реализовать сию фичу?.. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
fredy79
Опытный
Сообщения: 100
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 »

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

Re: продолжение работы после отключения питания компьютера

Сообщение Serg »

автоматического продолжения нет и скорее всего не будет. Причины тут 100500 раз описывались, например в #110.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
fredy79
Опытный
Сообщения: 100
Зарегистрирован: 03 июн 2014, 20:22
Репутация: 3
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение fredy79 »

так она особо не нужна там, где время обработки небольшое и обрабатываемый материал не дорогой, эта функция нужна там, где коды из поста 110 не используются, как это реализовано в дешевой Nc-studio? как это реализовано в пультах RichAuto? я работаю с камнем и деревом, в основном гравировка надписей и 3D рельефы, да и многие кому интересна эта функция занимаются подобной работой, так если китайцы смогли это реализовать, неужели это невозможно сделать в Linuxcnc?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение Serg »

fredy79 писал(а):я работаю с камнем и деревом, в основном гравировка надписей и 3D рельефы, да и многие кому интересна эта функция занимаются подобной работой
Видимо все вы выбрали не ту систему ЧПУ, наверно надо было брать Nc-studio и RichAuto.
fredy79 писал(а):так если китайцы смогли это реализовать, неужели это невозможно сделать в Linuxcnc?
Сделать чтобы иногда работало, а иногда крушило фрезы, заготовки, оснастку можно - в этой теме описывалось несколько способов по несколько раз.
Китайцы без проблем сделают какую угодно фигню и назовут её как нравится покупателям, а когда эта фигня что-то у вас порушит, то просто не ответят на ваши претензии/вопросы или ответят с стиле "сам дурак", ибо ваши деньги уже давно у них.
Я, например, ни разу не встречал подобную фичу в стойках Fanuc - неужели не могут сделать?.. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение nkp »

добавил сканирование "модальных" жкодов:
(т.н. строка безопасности и не только)
в массив

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

        self.gcodes = [
                      ['G90','G91'], ['G20','G21'], ['G17','G18','G19'],['G54','G55','G56'],
                      ['G41','G42','G40'],
                      ]
помещаем "модальные" группы, выводится активный (один из группы)

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

#!/usr/bin/env python
# --*-- coding:utf-8 --*--

import pygtk
pygtk.require('2.0')
import gtk
import re
import os,sys
import linuxcnc

class WRestart:
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False
         
    def go(self):
        s = linuxcnc.stat()
        s.poll()
        filename = s.file
        f = open(filename, "r")
        lines = f.readlines()
        number_line = int(self.entry.get_text())
        string_f = ''
        string_s = ''
        str_code = '' 
        w=0
        while not re.search("M2\s*",lines[w], re.I):
            w+=1
            if (w <= number_line):
            
                for i in range(len(self.gcodes)):
                    for n in range(len(self.gcodes[i])):
                        if (re.search(str(self.gcodes[i][n]),lines[w], re.I)):
                            self.G[i].append(str(self.gcodes[i][n]))
                            
                try:
                    tool = int(re.search("T\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass                                                          
                try:
                    speed = int(re.search("S\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass
                try:
                    feed =  int(re.search("F\s*([0-9.]+)",lines[w], re.I).group(1))
                except:
                    pass
                                                            
            if (w >= number_line):
                string_s += lines[w]
                
        string_f += 'M6 T%d\n' % tool
        string_f += 'M3 S%d\n' % speed
        string_f +=' F%d\n'    % feed
        
        for i in self.G:
            try:
                str_code += i[-1]  
            except:
                pass            
        string =  str_code + '\n' + string_f + string_s           
        sys.stdout.write(string) 
        gtk.main_quit()
             
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("restart")
        self.window.connect("delete_event", self.delete_event)
        self.window.set_border_width(20)

        self.vbox = gtk.VBox(True, 2)
        self.window.add(self.vbox)
        
        self.gcodes = [
                      ['G90','G91'], ['G20','G21'], ['G17','G18','G19'],['G54','G55','G56'],
                      ['G41','G42','G40'],
                      ]
        self.G = []
        for i in range(len(self.gcodes)):
            self.G.append([])     
        fr = open('line-number.log','r')
        ls = fr.readlines()
        l = re.sub("^\s+|\n|\r|\s+$", '',  ls[0] )
        
        self.entry = gtk.Entry()
        self.entry.set_max_length(10)
        self.entry.set_text(l)
        self.vbox.pack_start(self.entry, True, True, 2)
        self.entry.show()
                             
        self.button = gtk.Button("Open")
        self.button.connect("clicked", lambda x: self.go())
        self.vbox.pack_start(self.button, True, True, 2)
        self.button.show()
        self.vbox.show()
        
        
        
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.show()
        
def main():    
    gtk.main()
    return 0       
if __name__ == "__main__":
    WRestart()
    main()
    
    
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение nkp »

https://www.youtube.com/watch?v=fwC-rRY ... e=youtu.be
подумалось еще о таком варианте:
просто сканировать все коды подряд(кроме ж1,2,3) и вставлять их в таком же порядке в шапку "нового" файла
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение Serg »

Всякие M6 порушат всю автоматику. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение nkp »

UAVpilot писал(а):Всякие M6 порушат всю автоматику. :)
не совсем понял даже кому это адресовано))
но на всякий случай,если мне - то я не пытаюсь сделать какую то "автоматику" :)
просто ,можно сказать:
1). проверяю выложенные "решения" (вот например в этой теме (наверно) никто так и не попробовал код Ника,
потому что он с ошибкой :) (ну или промолчал))
2). собираю "до кучи" эти мелкие фичи(загрузка последнего файла, запоминание номера строки, старт с этой строки)
пока так ;)
вот между делом убрал везде явные пути, прописываем только в ини файле:

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

#!/usr/bin/env python
# --*-- coding:utf-8 --*--

import pygtk
pygtk.require('2.0')
import gtk
import re
import os,sys
import linuxcnc

dir_ini = str(os.getcwd())
all_files = os.listdir(os.getcwd()) 
n_ini = filter(lambda x: x.endswith('.ini'),all_files)
if len(n_ini)>1 : print 'ini file > 1'
f_ini = os.path.join(dir_ini, n_ini[0])
inifile = linuxcnc.ini(f_ini)

main_file =  inifile.find("RESTART", "MAIN_NAME")
open_file  = inifile.find("DISPLAY", "OPEN_FILE")

class WRestart:
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False
                
    def go(self):
        s = linuxcnc.stat()
        s.poll()
        filename = s.file
        if (os.path.basename(filename) == main_file):
            filename = open_file
        f = open(filename, "r")
        lines = f.readlines()
        f.close()
        self.number_line = int(self.entry.get_text())-2

        string_f = ''        
        string_s = ''
        str_code = '' 
        s=-1
        while not re.search("M2\s*",lines[s], re.I):
            s+=1
            if (s <= self.number_line):
            
                for i in range(len(self.gcodes)):
                    for n in range(len(self.gcodes[i])):
                        if (re.search(str(self.gcodes[i][n]),lines[s], re.I)):
                            self.G[i].append(str(self.gcodes[i][n]))
                            
                try:
                    tool = int(re.search("T\s*([0-9.]+)",lines[s], re.I).group(1))
                except:
                    pass                                                          
                try:
                    speed = int(re.search("S\s*([0-9.]+)",lines[s], re.I).group(1))
                except:
                    pass
                try:
                    feed =  int(re.search("F\s*([0-9.]+)",lines[s], re.I).group(1))
                except:
                    pass
                try:
                    pos_Z = float(re.search("Z\s*([-0-9.]+)",lines[s], re.I).group(1))
                except:
                    pass                    
                if (s == self.number_line):
                    try:
                        pos_X = float(re.search("X\s*([-0-9.]+)",lines[s], re.I).group(1))
                    except:
                        pass  
                    try:
                        pos_Y = float(re.search("Y\s*([-0-9.]+)",lines[s], re.I).group(1))
                    except:
                        pass                                                                 
            if (s > self.number_line):
                    string_s += lines[s]                   
        try: 
            string_f += 'M3 S%d \n' % speed       
            string_f += 'M6 T%d \n' % tool
            string_f += 'F%d \n\n'   % feed
            
            #self.string_add(string_f,'G0 X%f\n',pos_X)
            #self.string_add(string_f,'G0 Y%f\n',pos_Y)
            
            string_f += 'G0 X%f\n'  % pos_X             
            string_f += 'G0 Y%f\n'  % pos_Y
            
            string_f += 'G0 Z%f \n\n'  % (pos_Z + 5)
            string_f += 'F%d \n'   % (feed * 0.1)
            string_f += 'G1 Z%f \n'  % pos_Z 
            string_f += 'F%d \n\n'   % feed
        except:
            pass
            
        for i in self.G:
            try:
                str_code += str(i[-1] + ' ')
            except:
                pass 
                           
        string =  str_code + '\n' + string_f + string_s + '\n'
        try:
            sys.stdout.write(string)
        finally:
            
            filename = open_file
            f = open(filename, "w") 
            f.write(string)
            f.close()
        gtk.main_quit()
        
    def chang(self):
        if self.check.get_active():
            self.go() 
        else:
            self.go()     
    def string_add(self,s,reg,v):
        try:
            s += 'reg' % v
        except:
            pass                  
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("restart")
        self.window.connect("delete_event", self.delete_event)
        self.window.set_border_width(20)

        self.vbox = gtk.VBox(True, 2)
        self.window.add(self.vbox)
        
        self.gcodes = [
                      ['G90','G91'], ['G20','G21'], ['G17','G18','G19'],['G54','G55','G56'],
                      ['G41','G42','G40'],['G49'],
                      ]
        self.G = []
        for i in range(len(self.gcodes)):
            self.G.append([])     
        fr = open('line-number.log','r')
        ls = fr.readlines()

        l = re.sub("^\s+|\n|\r|\s+$", '',  ls[0] )
                
        self.entry = gtk.Entry()
        self.entry.set_max_length(10)
        self.entry.set_text(l)
        self.vbox.pack_start(self.entry, True, True, 2)
        self.entry.show()
                             
        self.button = gtk.Button("Open")       

        self.button.connect("clicked", lambda x: self.chang())
            
        self.vbox.pack_start(self.button, True, True, 2)
        self.button.show()
        self.vbox.show()

        self.hbox = gtk.HBox(False, 0)
        self.vbox.add(self.hbox)
        self.hbox.show()
                                  
        self.check = gtk.CheckButton("All codes")
        self.hbox.pack_start(self.check, True, True, 0)
        self.check.set_active(0)
        self.check.show()        
        
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.show()
        
def main():    
    gtk.main()
    return 0       
if __name__ == "__main__":
    WRestart()
    main()
    
    
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение Serg »

nkp писал(а):не совсем понял даже кому это адресовано))
но на всякий случай,если мне - то я не пытаюсь сделать какую то "автоматику" :)
Ну эта тема про автоматическое возобновление... :)
Если забыть про это, то всё решается просто - отдельный компонент, который мониторит состояние LinuxCNC (координаты, активные G-коды, номер строки и т.п.) и периодически пишет его в файл. При необходимости продолжения восстанавливает записанное состояние.
Правда всё равно будут нюансы со всякими локальными нестандартными кодами и пинами.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: продолжение работы после отключения питания компьютера

Сообщение nkp »

UAVpilot писал(а):Ну эта тема про автоматическое возобновление..
если ТС посчитает,что мои потуги здесь неуместны - я открою отдельныю тему))
UAVpilot писал(а):Если забыть про это, то всё решается просто - отдельный компонент, который мониторит состояние LinuxCNC (координаты, активные G-коды, номер строки и т.п.) и периодически пишет его в файл. При необходимости продолжения восстанавливает записанное состояние.
так я и выкладываю УЖЕ это решение :)
а "просто" - видать не всем,потому в теме одна вода ))
Ответить

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