@@ -233,6 +233,7 @@ def __init__(self, argv):
233233 self .height = 750 # The height of the main Window
234234
235235 self .gcodeerror = "" # we need this to avoid multiple messages of the same error
236+ self .max_spindle_disp = 999999 # maximum display value for 'S' and 'Vc'
236237
237238 self .file_changed = False
238239 self .widgets .hal_action_saveas .connect ("saved-as" , self .saved_as )
@@ -4005,30 +4006,33 @@ def _update_spindle(self):
40054006 self .widgets .rbt_stop .set_active (True )
40064007 return
40074008
4008- # set the speed label in active code frame
4009- if self .stat .spindle [0 ]['speed' ] == 0 :
4010- speed = self .stat .settings [2 ]
4009+ # set the S label in active code frame
4010+ self .widgets .active_speed_label .set_label ("{0:.0f}" .format (self .stat .settings [2 ]))
4011+
4012+ # set the 'Spindle [rpm]' label
4013+ #Note: self.stat.spindle[0]['speed'] does not reflect 'spindle.0.speed-out' pins when using G96 mode (issue #3449)
4014+ speed = hal .get_value ("spindle.0.speed-out" )
4015+ # catch very large values eg when using G96 w/o D value
4016+ if speed > self .max_spindle_disp :
4017+ self .widgets .lbl_spindle_act .set_text ("S >" + str (self .max_spindle_disp ))
4018+ elif speed < - self .max_spindle_disp :
4019+ self .widgets .lbl_spindle_act .set_text ("S <" + str (self .max_spindle_disp ))
40114020 else :
4012- speed = self .stat .spindle [0 ]['speed' ]
4013- self .widgets .active_speed_label .set_label ("{0:.0f}" .format (abs (speed )))
4014- self .widgets .lbl_spindle_act .set_text ("S {0}" .format (int (round (speed * self .spindle_override ))))
4021+ self .widgets .lbl_spindle_act .set_text ("S {0}" .format (int (round (speed ))))
40154022
40164023 def _update_vc (self ):
4017- if self .stat .spindle [0 ]['direction' ] != 0 :
4018- if self .stat .spindle [0 ]['speed' ] == 0 :
4019- speed = self .stat .settings [2 ]
4020- else :
4021- speed = self .stat .spindle [0 ]['speed' ]
4022-
4023- if not self .lathe_mode :
4024- diameter = self .halcomp ["tool-diameter" ]
4025- else :
4026- diameter = int (self .dro_dic ["Combi_DRO_0" ].get_position ()[1 ] * 2 )
4027- speed = self .widgets .spindle_feedback_bar .value
4028- vc = abs (int (speed * self .spindle_override ) * diameter * 3.14 / 1000 )
4024+ #Note: self.stat.spindle[0]['speed'] does not reflect 'spindle.0.speed-out' pins when using G96 mode (issue #3449)
4025+ speed = hal .get_value ("spindle.0.speed-out" )
4026+ if not self .lathe_mode :
4027+ diameter = self .halcomp ["tool-diameter" ]
40294028 else :
4030- vc = 0
4031- if vc >= 100 :
4029+ diameter = int (self .dro_dic ["Combi_DRO_0" ].get_position ()[1 ] * 2 )
4030+ speed = self .widgets .spindle_feedback_bar .value
4031+ vc = abs (int (speed * self .spindle_override ) * diameter * 3.14 / 1000 )
4032+ # catch very large Vc values due to very large S values eg when using G96 w/o D value
4033+ if vc > self .max_spindle_disp :
4034+ text = "Vc= >" + str (self .max_spindle_disp )
4035+ elif vc >= 100 :
40324036 text = "Vc= {0:d}" .format (int (vc ))
40334037 elif vc >= 10 :
40344038 text = "Vc= {0:2.1f}" .format (vc )
@@ -4075,7 +4079,8 @@ def on_gcode_properties(self, widget, data):
40754079 def on_ntb_tool_code_info_switch_page (self , widget , page , page_num ):
40764080 self .prefs .putpref ("info_tab_page" , page_num , int )
40774081
4078- def on_rbt_forward_clicked (self , widget , data = None ):
4082+ # This is for handling mouse clicks on the GUI button
4083+ def on_rbt_forward_released (self , widget , data = None ):
40794084 if widget .get_active ():
40804085 widget .set_image (self .widgets .img_spindle_forward_on )
40814086 self ._set_spindle ("forward" )
@@ -4085,7 +4090,8 @@ def on_rbt_forward_clicked(self, widget, data=None):
40854090 widget .set_sensitive (not widget .get_sensitive ())
40864091 widget .set_sensitive (not widget .get_sensitive ())
40874092
4088- def on_rbt_reverse_clicked (self , widget , data = None ):
4093+ # This is for handling mouse clicks on the GUI button
4094+ def on_rbt_reverse_released (self , widget , data = None ):
40894095 if widget .get_active ():
40904096 widget .set_image (self .widgets .img_spindle_reverse_on )
40914097 self ._set_spindle ("reverse" )
@@ -4095,6 +4101,26 @@ def on_rbt_reverse_clicked(self, widget, data=None):
40954101 widget .set_sensitive (not widget .get_sensitive ())
40964102 widget .set_sensitive (not widget .get_sensitive ())
40974103
4104+ # This is for handling self.widgets.rbt_forward.set_active(True)
4105+ def on_rbt_forward_clicked (self , widget , data = None ):
4106+ if widget .get_active ():
4107+ widget .set_image (self .widgets .img_spindle_forward_on )
4108+ else :
4109+ widget .set_image (self .widgets .img_spindle_forward )
4110+ # Toggling the sensitive property is important here! See the commit description.
4111+ widget .set_sensitive (not widget .get_sensitive ())
4112+ widget .set_sensitive (not widget .get_sensitive ())
4113+
4114+ # This is for handling self.widgets.rbt_reverse.set_active(True)
4115+ def on_rbt_reverse_clicked (self , widget , data = None ):
4116+ if widget .get_active ():
4117+ widget .set_image (self .widgets .img_spindle_reverse_on )
4118+ else :
4119+ widget .set_image (self .widgets .img_spindle_reverse )
4120+ # Toggling the sensitive property is important here! See the commit description.
4121+ widget .set_sensitive (not widget .get_sensitive ())
4122+ widget .set_sensitive (not widget .get_sensitive ())
4123+
40984124 def on_rbt_stop_clicked (self , widget , data = None ):
40994125 if widget .get_active ():
41004126 widget .set_image (self .widgets .img_spindle_stop_on )
@@ -4168,11 +4194,13 @@ def on_spc_spindle_value_changed(self, widget, data=None):
41684194 # get the current spindle speed
41694195 if not abs (self .stat .settings [2 ]):
41704196 if self .widgets .rbt_forward .get_active () or self .widgets .rbt_reverse .get_active ():
4171- speed = self .stat .spindle [0 ]['speed' ]
4197+ #speed = self.stat.spindle[0]['speed'] does not work when using G96 mode (issue #3449)
4198+ speed = hal .get_value ("spindle.0.speed-out" )
41724199 else :
41734200 speed = 0
41744201 else :
4175- speed = abs (self .stat .spindle [0 ]['speed' ])
4202+ #speed = abs(self.stat.spindle[0]['speed']) does not work when using G96 mode (issue #3449)
4203+ speed = abs (hal .get_value ("spindle.0.speed-out" ))
41764204 spindle_override_in = widget_value / 100
41774205 spindle_speed_out = speed * spindle_override_in
41784206
0 commit comments