import sys import time import serial # communication serie from PyQt5.QtWidgets import QWidget, QApplication, QMainWindow # from Test_Serial_COM.Tuto_serial_port import * # fichier obtenu à partir QtDesigner et pyuic4 from My_IHM.Tuto_serial_port_I2C import Ui_Form from Python_Serial_Arduino.Find_and_connect_port_arduino import * from Python_Serial_Arduino.Nanpy_MPU_6050 import MPU_6050_read_data from Nanpy_Arduino_Test import Initialize_I2C_com # from My_IHM import Tuto_serial_port_I2C class myApp(QWidget, Ui_Form): # la classe reçoit le Qwidget principal ET la classe définie dans test.py obtenu avec pyuic4 def __init__(self, parent=None): QMainWindow.__init__(self) # initialise le Qwidget principal # super().__init__(parent) self.setupUi(parent) # Obligatoire # connecte le signal Clicked de l'objet bouton à l'appel de la fonction voulue self.pushButtonInitSerial.clicked.connect(self.pushButtonInitSerialClicked) # --- déclaration utiles --- self.serialPort = None # déclaration initiale self.pushButtonInitI2C.clicked.connect(self.pushButtonInitI2Cclicked) self.pushButtonFindSerialPort.clicked.connect(self.pushButtonFindSerialPortclicked) self.pushButtonReadallRegisterMap.clicked.connect(self.pushButtonReadallRegisterMapclicked) # les fonctions appelées, utilisées par les signaux def pushButtonInitSerialClicked(self): print("Bouton Init cliqué") if self.serialPort: # si le port existe déjà self.serialPort.close() # ferme le port si existe # -- initialise paramètres initialisation strPortInit = str(self.comboBoxPort.currentText()) # sinon utilise paramètre champ texte pour le port strDebitInit = str(self.comboBoxDebit.currentText()) # paramètre champ texte pour debit # strPortInit = Initialize_serial_port(strDebitInit) print("le debit entre est: " + strDebitInit + " et le nom du port est:" + strPortInit) # --- initialisation série avec gestion erreur --- try: # essaie d'exécuter les instructions # initialise port serie avec délai attente en réception en sec self.serialPort = serial.Serial(strPortInit, strDebitInit, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE, 0.100) # self.serialPort=serial.Serial(strPortInit, strDebitInit) # initialise port serie forme réduite self.serialPort.flushInput() # vide la file d'attente série print("Initialisation Port Série : " + strPortInit + " @ " + strDebitInit + " = OK ") # affiche debug # -- change aspect bouton init self.pushButtonInitSerial.setStyleSheet("background-color: rgb(0, 255, 0);") # bouton en vert self.pushButtonInitSerial.setText("Connexion Serie: OK") # change titre bouton if self.serialPort: # si le port existe déjà self.serialPort.close() # ferme le port si existe except: # si erreur initialisation print("Erreur initialisation Série") # -- change aspect bouton init self.pushButtonInitSerial.setStyleSheet("background-color: rgb(255, 127, 0);") # bouton en orange self.pushButtonInitSerial.setText("Bus Serie\n' 'Non connecté") # change titre bouton if self.serialPort: # si le port existe déjà self.serialPort.close() # ferme le port si existe def pushButtonInitI2Cclicked(self): strPortInit = str(self.comboBoxPort.currentText()) # sinon utilise paramètre champ texte pour le port try: print('Verification LED 13 Arduino en cours') test = Initialize_I2C_com(strPortInit) print('la valeur renvoyee par test I2C est = ', test) #self.serialPort.flushInput() self.pushButtonInitI2C.setStyleSheet("background-color: rgb(0, 255, 0);") # bouton en vert self.pushButtonInitI2C.setText("Connexion Arduino: OK") # change titre bouton except: print('echec d initialisation du bus I2C') # self.serialPort.flushInput() self.pushButtonInitI2C.setStyleSheet("background-color: rgb(255, 127, 0);") # bouton en orange self.pushButtonInitI2C.setText("Arduino\n' 'Ne répond pas") # change titre bouton def pushButtonFindSerialPortclicked(self): strDebitInit = str(self.comboBoxDebit.currentText()) # paramètre champ texte pour debit try: SerialPortName = Find_Arduino_serial_port(strDebitInit) self.lineEditSerialPortName.setText(SerialPortName) self.pushButtonFindSerialPort.setStyleSheet("background-color: rgb(0, 255, 0);") # bouton en vert self.pushButtonFindSerialPort.setText("Arduino connecte au port: ") # change titre bouton if self.serialPort: # si le port existe déjà self.serialPort.close() # ferme le port si existe except: print('Aucun composant connecte au port serie') self.pushButtonFindSerialPort.setStyleSheet("background-color: rgb(255, 127, 0);") # bouton en orange self.pushButtonFindSerialPort.setText("Arduino\n' 'Ne répond pas") # change titre bouton def pushButtonReadallRegisterMapclicked(self): try: strPortInitMPU6050 = str(self.comboBoxPort.currentText()) testmpu6050 = MPU_6050_read_data(strPortInitMPU6050) self.pushButtonReadallRegisterMap.setStyleSheet("background-color: rgb(0, 255, 0);") # bouton en vert self.pushButtonReadallRegisterMap.setText("Donnees du MPU-6050\n" 'Correctement lues') # change titre bouton except: print('Probleme de lescture des donnees du MPU-6050') self.pushButtonReadallRegisterMap.setStyleSheet("background-color: rgb(255, 127, 0);") # bouton en orange self.pushButtonReadallRegisterMap.setText("Erreur de lecture du\n' 'MPU-6050") # change titre bouton def main(args): a = QApplication(args) # crée l'objet application f = QMainWindow() # crée le QWidget racine c = myApp(f) # appelle la classe contenant le code de l'application f.show() # affiche la fenêtre QWidget r = a.exec_() # lance l'exécution de l'application return r if __name__ == "__main__": # pour rendre le code exécutable main(sys.argv) # appelle la fonction main