7
7
from msgbox import *
8
8
from QtSerial import QSerialComm
9
9
from grblDecode import grblDecode
10
+ from grblQueryTimer import grblQueryThread
10
11
11
12
defaultBaudRate = 115200
12
13
@@ -19,6 +20,7 @@ def __init__(self, parent=None):
19
20
20
21
self .timerDblClic = QtCore .QTimer ()
21
22
self .decode = grblDecode (self .ui )
23
+ self .grblQuery = grblQueryThread ()
22
24
23
25
pathname = os .path .abspath (os .path .dirname (sys .argv [0 ]))
24
26
print (pathname )
@@ -28,26 +30,7 @@ def __init__(self, parent=None):
28
30
QtGui .QFontDatabase .addApplicationFont (pathname + "/fonts/LEDCalculator.ttf" ) # Chargement de la police des labels de status machine
29
31
self .ui .btnConnect .setText ("Connecter" ) # Label du bouton connect
30
32
self .serial = QSerialComm () # Création Objet pour communications
31
- self .ui .cmbPort .addItem ("" ) # On rempli la liste des ports série
32
- if len (QSerialComm .portsList ()) > 0 :
33
- for p in QSerialComm .portsList ():
34
- self .ui .cmbPort .addItem (p .portName () + ' - ' + p .description ())
35
- else :
36
- m = msgBox (
37
- title = "Attention !" ,
38
- text = "Aucun port de communication disponible !" ,
39
- info = sys .argv [0 ] + " n'a pas trouvé de port série permettant de communiquer avec grbl." ,
40
- icon = msgIconList .Information ,
41
- detail = "\n class serialCom:\n L'appel de \" serial.tools.list_ports.comports()\" n'a renvoyé aucun port." ,
42
- stdButton = msgButtonList .Close
43
- )
44
- m .afficheMsg ()
45
- if self .ui .cmbPort .currentText () == "" :
46
- self .ui .cmbBauds .setEnabled (False )
47
- self .ui .btnConnect .setEnabled (False )
48
- else :
49
- self .ui .cmbBauds .setEnabled (True )
50
- self .ui .btnConnect .setEnabled (True )
33
+ self .populatePortList () # On rempli la liste des ports série
51
34
52
35
curIndex = - 1 # On rempli la liste des vitesses
53
36
for v in QSerialComm .baudRates ():
@@ -64,11 +47,43 @@ def __init__(self, parent=None):
64
47
self .ui .cmbPort .currentIndexChanged .connect (self .on_cmbPort_changed ) # un clic sur un élément de la liste appellera la méthode 'on_item_changed'
65
48
self .ui .mnuAppOuvrir .triggered .connect (self .on_mnuAppOuvrir ) # Connexions des routines du menu application
66
49
self .ui .mnuAppQuitter .triggered .connect (self .on_mnuAppQuitter )
50
+ self .ui .btnRefresh .clicked .connect (self .populatePortList ) # Refresh de la liste des ports serie
67
51
self .ui .btnConnect .clicked .connect (self .action_btnConnect ) # un clic sur le bouton "(De)Connecter" appellera la méthode 'action_btnConnect'
68
52
self .ui .btnSend .pressed .connect (self .sendCmd ) # Bouton d'envoi de commandes unitaires
69
53
self .ui .txtGCode .returnPressed .connect (self .sendCmd ) # Même fonction par la touche entrée
70
- self .serial .lePort .readyRead .connect (self .readSerial ) # gestion du port série
54
+ self .ui .txtGCode .textChanged .connect (self .txtGCode_on_Change ) # Analyse du champ de saisie au fur et a mesure de son édition
55
+ self .serial .lePort .readyRead .connect (self .readSerial ) # gestion du port série
56
+
57
+ def populatePortList (self ):
58
+ ''' Rempli la liste des ports série '''
59
+ self .ui .cmbPort .clear ()
60
+ self .ui .cmbPort .addItem ("" )
61
+ if len (QSerialComm .portsList ()) > 0 :
62
+ for p in QSerialComm .portsList ():
63
+ self .ui .cmbPort .addItem (p .portName () + ' - ' + p .description ())
64
+ else :
65
+ m = msgBox (
66
+ title = "Attention !" ,
67
+ text = "Aucun port de communication disponible !" ,
68
+ info = sys .argv [0 ] + " n'a pas trouvé de port série permettant de communiquer avec grbl." ,
69
+ icon = msgIconList .Information ,
70
+ detail = "\n class serialCom:\n L'appel de \" serial.tools.list_ports.comports()\" n'a renvoyé aucun port." ,
71
+ stdButton = msgButtonList .Close
72
+ )
73
+ m .afficheMsg ()
74
+ self .setConnectControlsStatus ()
75
+
76
+ def setConnectControlsStatus (self ):
77
+ # Active ou désactive les contrôles en fonction de l'état de sélection du port
78
+ if self .ui .cmbPort .currentText () == "" :
79
+ self .ui .cmbBauds .setEnabled (False )
80
+ self .ui .btnConnect .setEnabled (False )
81
+ else :
82
+ self .ui .cmbBauds .setEnabled (True )
83
+ self .ui .btnConnect .setEnabled (True )
71
84
85
+ def keyPressEvent (self , e ):
86
+ pass
72
87
73
88
def on_mnuAppOuvrir (self ):
74
89
pass
@@ -118,30 +133,33 @@ def action_btnConnect(self):
118
133
self .ui .cmbPort .setEnabled (False )
119
134
self .ui .cmbBauds .setEnabled (False )
120
135
self .ui .btnConnect .setText ("Déconnecter" ) # La prochaine action du bouton sera pour déconnecter
136
+ if not self .grblQuery .isActif ():
137
+ self .grblQuery .run ()
121
138
else :
122
139
print ('Appui bouton Déconnecter.' )
123
140
self .serial .disconnect ()
124
141
self .ui .lblConnectStatus .setText ("<Non Connecté>" )
125
142
self .ui .cmbPort .setEnabled (True )
126
143
self .ui .cmbBauds .setEnabled (True )
127
144
self .ui .btnConnect .setText ("Connecter" ) # La prochaine action du bouton sera pour connecter
145
+ if self .grblQuery .isActif ():
146
+ self .grblQuery .stop ()
128
147
129
148
def on_cmbPort_changed (self ):
130
149
print (self .ui .cmbPort .currentIndex ())
131
150
print (self .ui .cmbPort .currentText ())
132
- if self .ui .cmbPort .currentText () == "" :
133
- self .ui .cmbBauds .setEnabled (False )
134
- self .ui .btnConnect .setEnabled (False )
135
- else :
136
- self .ui .cmbBauds .setEnabled (True )
137
- self .ui .btnConnect .setEnabled (True )
151
+ self .setConnectControlsStatus ()
138
152
139
153
def sendCmd (self ):
140
154
if self .ui .txtGCode .text () != "" :
141
155
buffWrite = bytes (self .ui .txtGCode .text () + "\n " , sys .getdefaultencoding ())
142
156
self .serial .lePort .write (buffWrite )
143
157
self .ui .txtGCode .setSelection (0 ,len (self .ui .txtGCode .text ()))
144
158
159
+ def txtGCode_on_Change (self ):
160
+ if self .ui .txtGCode .text () == "?" :
161
+ self .sendCmd () # Envoi direct si ?
162
+
145
163
def readSerial (self ):
146
164
print ("Lecture des données..." )
147
165
s = ''
0 commit comments