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

Python Discussion :

Récupérer une liste des variable d'une requête réponse Modbus


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 43
    Par défaut Récupérer une liste des variable d'une requête réponse Modbus
    Je voudrais récupérer une liste des variables à partir des fichiers pcap (capture du réseau) qui se compose de ModbusADURequest pour la requête et d'une ModbusADUResponse pour la réponse en fonction du code de fonction. Le souci c'est ces variables sont des fois dans ModbusADURequest et d'autres fois dans ModbusADUResponse comme le montre le code suivant. Je ne sais pas si mon code est bon sur tout pour la fonction 16 pour laquelle les variables que je cherche à récupérer sont dans le ModbusADUResponse ou bien à la place du if p.haslayer('ModbusADURequest') il faut mettre elif p.haslayer('ModbusADURequest'):


    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
    def reg_val_list(s):
        v = []
        for p in s:
            if p.haslayer('ModbusADUResponse'):
                try:
                    if p['ModbusADUResponse'][1].funcCode == 6:
                        a = p['ModbusADUResponse'][1].registerValue
                        v.append(p['ModbusADUResponse'][1].registerValue)
                    elif p['ModbusADUResponse'][1].funcCode == 5:
                        v.append(p['ModbusADUResponse'][1].outputValue)
                    else:
                        v += p['ModbusADUResponse'][1].registerVal
                except AttributeError:
                    pass
            if p.haslayer('ModbusADURequest'):
                try:
                     v.append(p['ModbusADURequest'][1].outputsValue)
                except AttributeError:
                    pass
        return v

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par salwa17 Voir le message
    ou bien à la place du if p.haslayer('ModbusADURequest') il faut mettre elif p.haslayer('ModbusADURequest')
    Deux "if" à suivre permettent d'évaluer deux conditions indépendantes. Ex if A: actionA puis if B: actionB te permettent d'obtenir actionA+actionB ; ou bien actionA ; ou bien actionB ; ou bien rien du tout
    Un "if" suivi d'un "elif" permettent d'évaluer une seconde condition seulement si la première n'a pas été validée. Donc if A: actionA puis elif B: actionB te permettent d'obtenir actionA ; ou bien actionB ; ou bien rien du tout.
    Les deux structures de contrôle ne sont donc pas équivalentes et choisir l'une plutôt que l'autre ne dépend que de ton besoin. Si ta valeur se trouve dans l'un ou dans l'autre de façon exclusive, il te faut alors un "elif". Si ta valeur peut se trouver à la fois dans l'un et à la fois dans l'autre, alors il te faut deux "if" à suivre.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [RegEx] Récupérer la liste des variables déclarées
    Par neuro6 dans le forum Langage
    Réponses: 0
    Dernier message: 05/07/2010, 20h15
  2. Récupérer liste des variables d'une table
    Par Betty.m dans le forum Macro
    Réponses: 2
    Dernier message: 09/06/2008, 16h13
  3. récupérer la liste des noms des champs d'une table
    Par la_didise dans le forum Access
    Réponses: 2
    Dernier message: 29/05/2006, 16h55
  4. [C#][VB.Net]Récupérer la liste des dataadapter d'une form
    Par Sonny dans le forum Windows Forms
    Réponses: 12
    Dernier message: 11/01/2006, 20h13
  5. Comment récupérer la liste des logiciels installés sur une machine ?
    Par david_chardonnet dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 19/09/2003, 17h41

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