Skip to content

Commit f51a6de

Browse files
authored
Merge pull request #3454 from Sigma1912/2.9_Fix_issue_3447
2.9 Gmoccapy: fix issues #3447 and #982
2 parents ba65e41 + ed37e07 commit f51a6de

2 files changed

Lines changed: 54 additions & 24 deletions

File tree

src/emc/usr_intf/gmoccapy/gmoccapy.glade

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2670,6 +2670,7 @@
26702670
<property name="draw-indicator">False</property>
26712671
<property name="group">rbt_stop</property>
26722672
<signal name="clicked" handler="on_rbt_reverse_clicked" swapped="no"/>
2673+
<signal name="released" handler="on_rbt_reverse_released" swapped="no"/>
26732674
</object>
26742675
<packing>
26752676
<property name="expand">True</property>
@@ -2708,6 +2709,7 @@
27082709
<property name="draw-indicator">False</property>
27092710
<property name="group">rbt_stop</property>
27102711
<signal name="clicked" handler="on_rbt_forward_clicked" swapped="no"/>
2712+
<signal name="released" handler="on_rbt_forward_released" swapped="no"/>
27112713
</object>
27122714
<packing>
27132715
<property name="expand">False</property>

src/emc/usr_intf/gmoccapy/gmoccapy.py

Lines changed: 52 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ def __init__(self, argv):
224224
self.height = 750 # The height of the main Window
225225

226226
self.gcodeerror = "" # we need this to avoid multiple messages of the same error
227+
self.max_spindle_disp = 999999 # maximum display value for 'S' and 'Vc'
227228

228229
self.file_changed = False
229230
self.widgets.hal_action_saveas.connect("saved-as", self.saved_as)
@@ -3951,38 +3952,42 @@ def _update_spindle(self):
39513952
self.widgets.rbt_stop.set_active(True)
39523953
return
39533954

3954-
# set the speed label in active code frame
3955-
if self.stat.spindle[0]['speed'] == 0:
3956-
speed = self.stat.settings[2]
3955+
# set the S label in active code frame
3956+
self.widgets.active_speed_label.set_label("{0:.0f}".format(self.stat.settings[2]))
3957+
3958+
# set the 'Spindle [rpm]' label
3959+
#Note: self.stat.spindle[0]['speed'] does not reflect 'spindle.0.speed-out' pins when using G96 mode (issue #3449)
3960+
speed = hal.get_value("spindle.0.speed-out")
3961+
# catch very large values eg when using G96 w/o D value
3962+
if speed > self.max_spindle_disp:
3963+
self.widgets.lbl_spindle_act.set_text("S >"+str(self.max_spindle_disp))
3964+
elif speed < -self.max_spindle_disp:
3965+
self.widgets.lbl_spindle_act.set_text("S <"+str(self.max_spindle_disp))
39573966
else:
3958-
speed = self.stat.spindle[0]['speed']
3959-
self.widgets.active_speed_label.set_label("{0:.0f}".format(abs(speed)))
3960-
self.widgets.lbl_spindle_act.set_text("S {0}".format(int(round(speed * self.spindle_override))))
3967+
self.widgets.lbl_spindle_act.set_text("S {0}".format(int(round(speed))))
39613968

39623969
def _update_vc(self):
3963-
if self.stat.spindle[0]['direction'] != 0:
3964-
if self.stat.spindle[0]['speed'] == 0:
3965-
speed = self.stat.settings[2]
3966-
else:
3967-
speed = self.stat.spindle[0]['speed']
3968-
3969-
if not self.lathe_mode:
3970-
diameter = self.halcomp["tool-diameter"]
3971-
else:
3972-
diameter = int(self.dro_dic["Combi_DRO_0"].get_position()[1] * 2)
3973-
speed = self.widgets.spindle_feedback_bar.value
3974-
vc = abs(int(speed * self.spindle_override) * diameter * 3.14 / 1000)
3970+
#Note: self.stat.spindle[0]['speed'] does not reflect 'spindle.0.speed-out' pins when using G96 mode (issue #3449)
3971+
speed = hal.get_value("spindle.0.speed-out")
3972+
if not self.lathe_mode:
3973+
diameter = self.halcomp["tool-diameter"]
39753974
else:
3976-
vc = 0
3977-
if vc >= 100:
3975+
diameter = int(self.dro_dic["Combi_DRO_0"].get_position()[1] * 2)
3976+
speed = self.widgets.spindle_feedback_bar.value
3977+
vc = abs(int(speed * self.spindle_override) * diameter * 3.14 / 1000)
3978+
# catch very large Vc values due to very large S values eg when using G96 w/o D value
3979+
if vc > self.max_spindle_disp:
3980+
text = "Vc= >" + str(self.max_spindle_disp)
3981+
elif vc >= 100:
39783982
text = "Vc= {0:d}".format(int(vc))
39793983
elif vc >= 10:
39803984
text = "Vc= {0:2.1f}".format(vc)
39813985
else:
39823986
text = "Vc= {0:.2f}".format(vc)
39833987
self.widgets.lbl_vc.set_text(text)
39843988

3985-
def on_rbt_forward_clicked(self, widget, data=None):
3989+
# This is for handling mouse clicks on the GUI button
3990+
def on_rbt_forward_released(self, widget, data=None):
39863991
if widget.get_active():
39873992
widget.set_image(self.widgets.img_spindle_forward_on)
39883993
self._set_spindle("forward")
@@ -3992,7 +3997,8 @@ def on_rbt_forward_clicked(self, widget, data=None):
39923997
widget.set_sensitive(not widget.get_sensitive())
39933998
widget.set_sensitive(not widget.get_sensitive())
39943999

3995-
def on_rbt_reverse_clicked(self, widget, data=None):
4000+
# This is for handling mouse clicks on the GUI button
4001+
def on_rbt_reverse_released(self, widget, data=None):
39964002
if widget.get_active():
39974003
widget.set_image(self.widgets.img_spindle_reverse_on)
39984004
self._set_spindle("reverse")
@@ -4002,6 +4008,26 @@ def on_rbt_reverse_clicked(self, widget, data=None):
40024008
widget.set_sensitive(not widget.get_sensitive())
40034009
widget.set_sensitive(not widget.get_sensitive())
40044010

4011+
# This is for handling self.widgets.rbt_forward.set_active(True)
4012+
def on_rbt_forward_clicked(self, widget, data=None):
4013+
if widget.get_active():
4014+
widget.set_image(self.widgets.img_spindle_forward_on)
4015+
else:
4016+
widget.set_image(self.widgets.img_spindle_forward)
4017+
# Toggling the sensitive property is important here! See the commit description.
4018+
widget.set_sensitive(not widget.get_sensitive())
4019+
widget.set_sensitive(not widget.get_sensitive())
4020+
4021+
# This is for handling self.widgets.rbt_reverse.set_active(True)
4022+
def on_rbt_reverse_clicked(self, widget, data=None):
4023+
if widget.get_active():
4024+
widget.set_image(self.widgets.img_spindle_reverse_on)
4025+
else:
4026+
widget.set_image(self.widgets.img_spindle_reverse)
4027+
# Toggling the sensitive property is important here! See the commit description.
4028+
widget.set_sensitive(not widget.get_sensitive())
4029+
widget.set_sensitive(not widget.get_sensitive())
4030+
40054031
def on_rbt_stop_clicked(self, widget, data=None):
40064032
if widget.get_active():
40074033
widget.set_image(self.widgets.img_spindle_stop_on)
@@ -4075,11 +4101,13 @@ def on_spc_spindle_value_changed(self, widget, data=None):
40754101
# get the current spindle speed
40764102
if not abs(self.stat.settings[2]):
40774103
if self.widgets.rbt_forward.get_active() or self.widgets.rbt_reverse.get_active():
4078-
speed = self.stat.spindle[0]['speed']
4104+
#speed = self.stat.spindle[0]['speed'] does not work when using G96 mode (issue #3449)
4105+
speed = hal.get_value("spindle.0.speed-out")
40794106
else:
40804107
speed = 0
40814108
else:
4082-
speed = abs(self.stat.spindle[0]['speed'])
4109+
#speed = abs(self.stat.spindle[0]['speed']) does not work when using G96 mode (issue #3449)
4110+
speed = abs(hal.get_value("spindle.0.speed-out"))
40834111
spindle_override_in = widget_value / 100
40844112
spindle_speed_out = speed * spindle_override_in
40854113

0 commit comments

Comments
 (0)