@@ -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