IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Envoyer Commande AT Sur Le Port Serie


Sujet :

PyQt Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 0
    Points
    0
    Par défaut Envoyer Commande AT Sur Le Port Serie
    Salut a tous, je me permet de vous déranger une fois de plus sur mon projet.

    En effet, j'ai 3 Spinbox dont les valeur vont de -96 à 0.

    Ainsi je veut envoyer une commande AT sur le port serie, mais sont appliquer les modification des spinbox dans la commande AT.

    Donc voici la commande AT : AT + ECHO = 1,6,7,0,-96,-96

    Pour résumer :

    Si on change les valeurs des spinbox, le programme met a jour les 3 valeurs (en partant de la droite) du commande AT et l'envoie sur le port série.

    Voici le programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    #!/usr/bin/env python
    # -*- coding: cp1252 -*-
    #SPEC 0.4
     
    import sys
    import time
    import serial
    import binascii
     
    from PyQt4 import QtCore, QtGui
     
    class essai(QtGui.QMainWindow):
        def __init__(self):
     
            # Main Window #
            QtGui.QMainWindow.__init__(self)
            self.resize(310,310)
            self.setWindowTitle(' Travaille ')
     
     
            #Titre et Spinbox : 1#
            self.Label_1 = QtGui.QLabel()
            self.Label_1.setText("rx_drcsat") 
            self.SpinBox_1 = QtGui.QSpinBox(self)
            self.SpinBox_1.setRange(-60,0)
            self.SpinBox_1.setSingleStep(1)
            self.SpinBox_1.setValue(0)
     
            #Titre et Spinbox : 2#
            self.Label_2 = QtGui.QLabel()
            self.Label_2.setText("rx_drcbend") 
            self.SpinBox_2 = QtGui.QSpinBox(self)
            self.SpinBox_2.setRange(-96,0)
            self.SpinBox_2.setSingleStep(1)
            self.SpinBox_2.setValue(0)
     
            #Titre et Spinbox : 3#
            self.Label_3 = QtGui.QLabel()
            self.Label_3.setText("rx_drcng")        
            self.SpinBox_3 = QtGui.QSpinBox(self)
            self.SpinBox_3.setRange(-96,0)
            self.SpinBox_3.setSingleStep(1)
            self.SpinBox_3.setValue(0)
     
            self.PushButton_1 = QtGui.QPushButton("SAVE")
            self.connect(self.PushButton_1,QtCore.SIGNAL("clicked()"),self.M_Action2)
     
            GridLayout_1 = QtGui.QGridLayout()
            GridLayout_1.addWidget(self.Label_1,       0,1,1,1)
            GridLayout_1.addWidget(self.SpinBox_1,     1,1,1,1)
            GridLayout_1.addWidget(self.Label_2,       2,1,1,1)
            GridLayout_1.addWidget(self.SpinBox_2,     3,1,1,1)
            GridLayout_1.addWidget(self.Label_3,       4,1,1,1)
            GridLayout_1.addWidget(self.SpinBox_3,     5,1,1,1)
            GridLayout_1.addWidget(self.PushButton_1,  6,1,1,1)
     
            O_GroupBox_1 = QtGui.QGroupBox()
            O_GroupBox_1.setLayout(GridLayout_1)
     
            self.setCentralWidget(O_GroupBox_1)
     
            self.SpinBox_1.valueChanged.connect(self.test_DRC)
            self.SpinBox_2.valueChanged.connect(self.test_DRC)
            self.SpinBox_3.valueChanged.connect(self.test_DRC)
     
        def test_DRC(self):
            a = [self.SpinBox_1.value()]
            b = [self.SpinBox_2.value()]
            c = [self.SpinBox_3.value()]
     
     
            Tab = [a, b, c]
            print Tab
     
     
    #----------------------------------------------------------------------------------------------
     
        def M_Action2(self,mode,signal):
     
            self.mode1 = mode
            self.signal1 = signal
     
            reponse = self.SpinBox_11.value()
            fichier = open("C:/Users/ssrinivasa/Desktop/fichier.txt", "a")
            fichier.write(str(reponse) +"\r\n") # ajouter nouvelle ligne après écriture
            reponse = self.SpinBox_22.value()
            fichier.write(str(reponse) +"\r\n")
            reponse = self.SpinBox_33.value()        
            fichier.write(str(reponse) +"\r\n")        
            print reponse
     
    #--------------------------------------------
     
    def main():
            '''Application'''
            App = QtGui.QApplication(sys.argv)
            App.setStyle("windows")
            MainWin2 = essai()
            MainWin2.show()
            editor = essai()
            sys.exit(App.exec_() )
     
    if __name__=='__main__':
        main()
    Cordialement

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Techniquement, vous avez besoin d'une fonction genre "port_send" qui expédie au port série trois valeurs entières a, b, c dans un format bien particulier: AT + ECHO = 1,6,7,0,-96,-96
    Puisque vous semblez maîtriser un peu les classes, vous pourriez commencer par écrire un script à part qui contienne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import serial
    class Port:
            def __init__(self,....):
                 self.port = serial.Serial(...)
     
            def send(self, a, b, c):
                 self.port.write('AT + ECHO = %d, %d, %d' % (a, b, c))
     
    def test_port():
           # le code pour tester un peu les fonctionnalités de Port
           ...
     
    if __name__ == '__main__':
           test_port()
    Comment appeler ce send là depuis l'interface Qt est un sujet qui pourra attendre un peu.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. envoyer un fichier .bin sur le port serie
    Par buldo87 dans le forum Débuter
    Réponses: 5
    Dernier message: 01/05/2013, 14h16
  2. [USB]envoyer une trame sur le port USB
    Par ced38100 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 03/11/2005, 12h54
  3. lecture & ecriture sur le port serie
    Par anouar dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 08/07/2005, 17h15
  4. evenement sur le port serie !
    Par Stopher dans le forum Windows
    Réponses: 10
    Dernier message: 27/01/2005, 22h12
  5. Comment déterminer la fin d'un message sur le port serie ?
    Par zeddy23 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/01/2005, 05h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo