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 :

Compatibilité RECORD Delphi


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Electricien
    Inscrit en
    Juillet 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2013
    Messages : 74
    Par défaut Compatibilité RECORD Delphi
    Bonjour à Tous ,

    je galère depuis plusieurs jour sur ce problème
    J'ai besoin d'envoyer via socket un équivalent record du langage delphi en python
    ma struct en delphi et celle ci
    Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Type
       tSendsw = Record
       ActiveFunc:integer;
       SWnbr:integer;
       SWdir:integer;
    End;
    je récupère mon buffer via indy comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Acontext.Connection.IOHandler.ReadBytes(BuffRecv, SizeOf(RecSwitch),False);
               BytesToRaw(BuffRecv, RecSwitch, SizeOf(RecSwitch));
    mon problème est que je n'arrive pas à trouvez un code python compatible pour envoyer mon buffer pour qu'il soit décodé sur le server Delphi

    Merci par avance pour votre aide
    je vais créer un autre fil coté Forum Delphi pour avoir plus de chance de trouver de l'aide

    Cordialement
    Oscar02

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 726
    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 726
    Par défaut
    Salut,

    Citation Envoyé par Oscar02 Voir le message
    mon problème est que je n'arrive pas à trouvez un code python compatible pour envoyer mon buffer pour qu'il soit decodé sur le server Delphi
    Ce qui est expédié/reçu à travers un socket n'est qu'une suite d'octets.
    Et s'il faut les mapper avec une représentation mémoire plus riche, vous avez des bibliothèques comme struct ou ctypes qui peuvent aider.

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

  3. #3
    Membre confirmé
    Homme Profil pro
    Electricien
    Inscrit en
    Juillet 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2013
    Messages : 74
    Par défaut
    Bonjour,

    voila le test que j'ai fait en python pour envoyé le paquet par contre je ne récupère pas les donnée correctement sur le serveur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                                t_packet_struc = '>iii'
                                ActiveFunc= 1
                                SWnbr = 345
                                SWdir= 1
                                t_packet_data = struct.pack(t_packet_struc, ActiveFunc, SWnbr, SWdir)
                                socket3.sendall(t_packet_data)
    il n'est pas correctement re-décomposer dans mon record en Delphi Pascal

    Une idée SVP

    Cordialement

    Oscar

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 726
    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 726
    Par défaut
    Salut,

    Citation Envoyé par Oscar02 Voir le message
    il n'est pas correctement re-décomposer dans mon record en Delphi Pascal

    Une idée SVP
    Faites un print(t_packet_data). Vous allez visualiser la suite d'octets construite par struct.pack et pouvoir vérifier que c'est ce que vous attendiez côté nombre d'octets et boutisme/endianess.

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

  5. #5
    Membre confirmé
    Homme Profil pro
    Electricien
    Inscrit en
    Juillet 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2013
    Messages : 74
    Par défaut
    Hello

    le print donne ceci

    b'\x00\x00\x00\x01\x00\x00\x01Y\x00\x00\x00\x01'

    Je ne sait pas comment traiter ceci coté Server Delphi

    Cordialement

    Oscar

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 726
    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 726
    Par défaut
    Salut,

    Citation Envoyé par Oscar02 Voir le message
    b'\x00\x00\x00\x01\x00\x00\x01Y\x00\x00\x00\x01'

    Je ne sait pas comment traiter ceci coté Server Delphi
    Vous devez avoir la possibilité de faire 2 choses:
    • vérifier que BytesToRaw appliqué à cette suite de bytes fabrique votre record avec les données attendues.
    • afficher ce que reçoit ReadBytes pour le comparer à ce qui a été envoyé.


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

  7. #7
    Membre confirmé
    Homme Profil pro
    Electricien
    Inscrit en
    Juillet 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2013
    Messages : 74
    Par défaut
    Salut

    je n'est pas réussi à utiliser cette façon de faire j'ai changer mon fusil d’épaule je travail directement avec l'envoi de String.

    la ça fonctionne.

    par contre j'ai un nouveau problème

    J'ai mon appli fonction ainsi
    je reçois des informations text via socket celle ci change lorsque je demande la page concerner via des Bouton switch avec GPIO pour se faire j'utilise ce code
    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
     
    from threading import Thread
    import RPi.GPIO as GPIO
    import time
    import socket
    import sys
     
     
     
     
    hote ="192.168.1.21"
    port =9000
    socket3 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    socket3.connect((hote, port))
    ActiveFunc = 1
     
     
    GPIO.setmode(GPIO.BCM)
    MATRIX = [[308,309,310],
              [311,311,312],
              [255,256,303]]
     
    ROW = [18,23,24]
    COL = [22,27,12]
     
    for j in range(3):             
        GPIO.setup(COL[j], GPIO.OUT)
        GPIO.output(COL[j],1)
     
        for i in range(3):
     
            GPIO.setup(ROW[i],GPIO.IN, pull_up_down = GPIO.PUD_UP)
     
     
     
    class Worker(Thread):
        def run(self):
            try:
     
                while(True):
                    for j in range(3):
                        GPIO.output(COL[j],0)
                        for i in range(3):                        
                            if GPIO.input(ROW[i]) == 0:
     
                                ActiveFunc= '1'
                                SWnbr=str(MATRIX[i][j])
                                SWdir='3'
                                    #t_packet_data = struct.pack(t_packet_struc,ActiveFunc,SWnbr,SWdir)
                                    #socket3.sendall(t_packet_data)
                                txt=SWnbr+'\r''\n'
                                print(len(txt))
                                print(txt)
                                socket3.send(txt.encode('utf_8'))
     
                                while(GPIO.input(ROW[i]) == 0):
                                   time.sleep(1.8)
                                    pass
                        GPIO.output(COL[j],1)
     
            except KeyboardInterrupt:
                    GPIO.cleanup()
     
     
     
                    return
     
    Worker().start()
    Mon Problème c'est que le rafraîchissement de mes labels soit 336 label ralenti fortement des que la boucle time.sleep(1.2) est inférieur à cette valeur comme si la boucle while gênait le thread de rafraîchissement des labels. mon soucis est que la valeur de 1.2 est trop longue pour mon fonctionnement optimum de mon GPIO

    je ne comprend pas pourquoi vu que ma boucle est dans un Thread et mon rafraîchissement aussi

    Si vous avez une idée SVP

    Cordialement
    Oscar

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 726
    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 726
    Par défaut
    Salut,

    Nouveau problème, nouvelle discussion.

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

  9. #9
    Membre confirmé
    Homme Profil pro
    Electricien
    Inscrit en
    Juillet 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2013
    Messages : 74
    Par défaut
    Ok je creer une Nouvelle Discussion

    Cordialement
    Oscar

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compatibilité structures Delphi / C++
    Par bhtechnologies dans le forum Langage
    Réponses: 1
    Dernier message: 29/06/2007, 13h28
  2. Compatibilité Turbo Delphi et D7
    Par tekilx dans le forum Delphi
    Réponses: 3
    Dernier message: 30/03/2007, 20h34
  3. Compatibilité de Delphi 5 (bde) et Oracle 10G
    Par AMM015 dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/02/2007, 20h01
  4. compatibilité fireworks, delphi
    Par faten7 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/04/2006, 23h29
  5. Réponses: 10
    Dernier message: 17/02/2006, 08h11

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