Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/emc/usr_intf/gmoccapy/gmoccapy.glade
Original file line number Diff line number Diff line change
Expand Up @@ -2670,6 +2670,7 @@
<property name="draw-indicator">False</property>
<property name="group">rbt_stop</property>
<signal name="clicked" handler="on_rbt_reverse_clicked" swapped="no"/>
<signal name="released" handler="on_rbt_reverse_released" swapped="no"/>
</object>
<packing>
<property name="expand">True</property>
Expand Down Expand Up @@ -2708,6 +2709,7 @@
<property name="draw-indicator">False</property>
<property name="group">rbt_stop</property>
<signal name="clicked" handler="on_rbt_forward_clicked" swapped="no"/>
<signal name="released" handler="on_rbt_forward_released" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
Expand Down
76 changes: 52 additions & 24 deletions src/emc/usr_intf/gmoccapy/gmoccapy.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -3951,38 +3952,42 @@ 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)
else:
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")
Expand All @@ -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")
Expand All @@ -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)
Expand Down Expand Up @@ -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

Expand Down