подсветка строки gcode

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

подсветка строки gcode

Сообщение nkp »

когда в жкоде встречается подпрограмма,
то в емс начинает подсвечиваться как бы номер строки из этой подпрограммы...
как то раньше это не мешало ,но вот пришлось на это обратить внимание))
разрабы вроде давно поднимали этот вопрос,но что то в 2.7.15 все прыгает по прежнему
такая ситуация и в Axis , и в hal_sourceview.py (хотя на Gmoccapy не проверял)
"ноги растут" из current_line из linuxcnc.stat(),
потому как текущая строка(ее номер) в GUI передается именно отсюда (так еще два параметра идентичных есть)
----------------
багрепорт написал
пока решится сделал костыль - чтоб хотя бы не "откидывало" назад по коду

для hal_sourceview.py

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

def set_line_number(self,linenum):
        self.offset = linenum
        self.check_offset()
        self.highlight_line(self.gstat, self.offset)
        if linenum == 0:   #nkp
            self.line_mem  = 0  



    def highlight_line(self, w, l):
        if l > self.line_mem :  #nkp
            self.line_mem  = l  
        else:
            return
	....
	....
для Axis

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

--- /home/nkp//axis
+++ /home/nkp/linuxcnc/configs/jog/axis
@@ -664,7 +664,8 @@
         self.notifications_clear = False
         self.notifications_clear_info = False
         self.notifications_clear_error = False
-
+        self.current_line_mem = 0
+        
     def start(self):
         if self.running.get(): return
         if not os.path.exists(linuxcnc.nmlfile):
@@ -734,14 +735,16 @@
                 root_window.tk.eval(pane_top + ".tabs raise manual")
             if (self.current_task_mode == linuxcnc.MODE_MDI):
                 root_window.tk.eval(pane_top + ".tabs raise mdi")
-            if (self.current_task_mode == linuxcnc.MODE_AUTO):
+            if (self.current_task_mode != linuxcnc.MODE_AUTO):
                 # not sure if anything needs to be done for this
                 pass
+                self.current_line_mem = 0 
 
         self.after = self.win.after(update_ms, self.update)
-
-        self.win.set_current_line(self.stat.id or self.stat.motion_line)
-
+        if (self.stat.id or self.stat.motion_line) > self.current_line_mem :
+            self.win.set_current_line(self.stat.id or self.stat.motion_line)
+            self.current_line_mem = (self.stat.id or self.stat.motion_line)
+            
         speed = self.stat.current_vel
 
         limits = soft_limits()
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: подсветка строки gcode

Сообщение nkp »

то есть - сравниваем номер следующей строки с текущей
и подсвечиваем если только нарастание...
казалось бы ,что должно сработать из hal_glib:

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

line_old = old.get('line', None)
        line_new = self.old['line']
        if line_new > line_old:
            self.emit('line-changed', line_new)
но почему то так не работает (долго не заморачивался)
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: подсветка строки gcode

Сообщение Сергей Саныч »

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

Re: подсветка строки gcode

Сообщение nkp »

Сергей Саныч писал(а):Да, проблема давно перезрела.
решение ее как бы и на поверхности - у нас уже есть флаг,который активен ,когда обрабатываем подпрограмму(remap)
вот по этому флагу и нужно смотреть - менять вывод в stat или оставить текущее значение...
можно даже попробовать(я про себя :) )
Ответить

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