diff --git a/src/emc/usr_intf/gmoccapy/gmoccapy.glade b/src/emc/usr_intf/gmoccapy/gmoccapy.glade index d8c8d05dbee..bec6b1dbc1a 100644 --- a/src/emc/usr_intf/gmoccapy/gmoccapy.glade +++ b/src/emc/usr_intf/gmoccapy/gmoccapy.glade @@ -2670,6 +2670,7 @@ False rbt_stop + True @@ -2708,6 +2709,7 @@ False rbt_stop + False diff --git a/src/emc/usr_intf/gmoccapy/gmoccapy.py b/src/emc/usr_intf/gmoccapy/gmoccapy.py index 1b81f07549e..d99f1fdedb5 100644 --- a/src/emc/usr_intf/gmoccapy/gmoccapy.py +++ b/src/emc/usr_intf/gmoccapy/gmoccapy.py @@ -224,6 +224,7 @@ def __init__(self, argv): self.height = 750 # The height of the main Window self.gcodeerror = "" # we need this to avoid multiple messages of the same error + self.max_spindle_disp = 999999 # maximum display value for 'S' and 'Vc' self.file_changed = False self.widgets.hal_action_saveas.connect("saved-as", self.saved_as) @@ -3951,30 +3952,33 @@ def _update_spindle(self): self.widgets.rbt_stop.set_active(True) return - # set the speed label in active code frame - if self.stat.spindle[0]['speed'] == 0: - speed = self.stat.settings[2] + # set the S label in active code frame + self.widgets.active_speed_label.set_label("{0:.0f}".format(self.stat.settings[2])) + + # set the 'Spindle [rpm]' label + #Note: self.stat.spindle[0]['speed'] does not reflect 'spindle.0.speed-out' pins when using G96 mode (issue #3449) + speed = hal.get_value("spindle.0.speed-out") + # catch very large values eg when using G96 w/o D value + if speed > self.max_spindle_disp: + self.widgets.lbl_spindle_act.set_text("S >"+str(self.max_spindle_disp)) + elif speed < -self.max_spindle_disp: + self.widgets.lbl_spindle_act.set_text("S <"+str(self.max_spindle_disp)) else: - speed = self.stat.spindle[0]['speed'] - self.widgets.active_speed_label.set_label("{0:.0f}".format(abs(speed))) - self.widgets.lbl_spindle_act.set_text("S {0}".format(int(round(speed * self.spindle_override)))) + self.widgets.lbl_spindle_act.set_text("S {0}".format(int(round(speed)))) def _update_vc(self): - if self.stat.spindle[0]['direction'] != 0: - if self.stat.spindle[0]['speed'] == 0: - speed = self.stat.settings[2] - else: - speed = self.stat.spindle[0]['speed'] - - if not self.lathe_mode: - diameter = self.halcomp["tool-diameter"] - else: - diameter = int(self.dro_dic["Combi_DRO_0"].get_position()[1] * 2) - speed = self.widgets.spindle_feedback_bar.value - vc = abs(int(speed * self.spindle_override) * diameter * 3.14 / 1000) + #Note: self.stat.spindle[0]['speed'] does not reflect 'spindle.0.speed-out' pins when using G96 mode (issue #3449) + speed = hal.get_value("spindle.0.speed-out") + if not self.lathe_mode: + diameter = self.halcomp["tool-diameter"] else: - vc = 0 - if vc >= 100: + diameter = int(self.dro_dic["Combi_DRO_0"].get_position()[1] * 2) + speed = self.widgets.spindle_feedback_bar.value + vc = abs(int(speed * self.spindle_override) * diameter * 3.14 / 1000) + # catch very large Vc values due to very large S values eg when using G96 w/o D value + if vc > self.max_spindle_disp: + text = "Vc= >" + str(self.max_spindle_disp) + elif vc >= 100: text = "Vc= {0:d}".format(int(vc)) elif vc >= 10: text = "Vc= {0:2.1f}".format(vc) @@ -3982,7 +3986,8 @@ def _update_vc(self): text = "Vc= {0:.2f}".format(vc) self.widgets.lbl_vc.set_text(text) - def on_rbt_forward_clicked(self, widget, data=None): + # This is for handling mouse clicks on the GUI button + def on_rbt_forward_released(self, widget, data=None): if widget.get_active(): widget.set_image(self.widgets.img_spindle_forward_on) self._set_spindle("forward") @@ -3992,7 +3997,8 @@ def on_rbt_forward_clicked(self, widget, data=None): widget.set_sensitive(not widget.get_sensitive()) widget.set_sensitive(not widget.get_sensitive()) - def on_rbt_reverse_clicked(self, widget, data=None): + # This is for handling mouse clicks on the GUI button + def on_rbt_reverse_released(self, widget, data=None): if widget.get_active(): widget.set_image(self.widgets.img_spindle_reverse_on) self._set_spindle("reverse") @@ -4002,6 +4008,26 @@ def on_rbt_reverse_clicked(self, widget, data=None): widget.set_sensitive(not widget.get_sensitive()) widget.set_sensitive(not widget.get_sensitive()) + # This is for handling self.widgets.rbt_forward.set_active(True) + def on_rbt_forward_clicked(self, widget, data=None): + if widget.get_active(): + widget.set_image(self.widgets.img_spindle_forward_on) + else: + widget.set_image(self.widgets.img_spindle_forward) + # Toggling the sensitive property is important here! See the commit description. + widget.set_sensitive(not widget.get_sensitive()) + widget.set_sensitive(not widget.get_sensitive()) + + # This is for handling self.widgets.rbt_reverse.set_active(True) + def on_rbt_reverse_clicked(self, widget, data=None): + if widget.get_active(): + widget.set_image(self.widgets.img_spindle_reverse_on) + else: + widget.set_image(self.widgets.img_spindle_reverse) + # Toggling the sensitive property is important here! See the commit description. + widget.set_sensitive(not widget.get_sensitive()) + widget.set_sensitive(not widget.get_sensitive()) + def on_rbt_stop_clicked(self, widget, data=None): if widget.get_active(): widget.set_image(self.widgets.img_spindle_stop_on) @@ -4075,11 +4101,13 @@ def on_spc_spindle_value_changed(self, widget, data=None): # get the current spindle speed if not abs(self.stat.settings[2]): if self.widgets.rbt_forward.get_active() or self.widgets.rbt_reverse.get_active(): - speed = self.stat.spindle[0]['speed'] + #speed = self.stat.spindle[0]['speed'] does not work when using G96 mode (issue #3449) + speed = hal.get_value("spindle.0.speed-out") else: speed = 0 else: - speed = abs(self.stat.spindle[0]['speed']) + #speed = abs(self.stat.spindle[0]['speed']) does not work when using G96 mode (issue #3449) + speed = abs(hal.get_value("spindle.0.speed-out")) spindle_override_in = widget_value / 100 spindle_speed_out = speed * spindle_override_in