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

VB.NET Discussion :

Création de fonction - Structure d'une trame - vb 2008


Sujet :

VB.NET

  1. #1
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut Création de fonction - Structure d'une trame - vb 2008
    Bonjour,
    je travail dans un secteur industriel et il faut que je créer une routine entre PC industriel et des variateurs (3 exactement)

    Dans cette routine, je vais envoyer sans cesse des trames qui n'auront que 2 paramètres variables la coordonnée et le variateur
    c'est pourquoi je cherche à réaliser une fonction qui va me simplifier la vie par la suite

    j'ais commencé a créer la fonction suivante:
    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
     
        Public Sub EnvoieTrame(ByVal Variateur As String, ByVal Position As Int32)
            Dim AdrVar As Byte
            Select Case Variateur
                '     Variateur X
                Case "varX"
                    AdrVar = 1
     
                    ' Variateur Y
                Case "varY"
                    AdrVar = 2
     
                    ' Variateur Z
                Case "varZ"
                    AdrVar = 3
     
                    ' Erreur de Variateurs
                Case Else
            End Select
     
            Dim OctetPosition(4) As Byte
     
        End Sub
    Seulement je n'arrive pas a faire rentrer ma "Position" qui est en Int32
    dans mon tableau "OctetPosition" de 4 Octets ....




    Tout ceci pour n'avoir plus qu'a la une fonction trés simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnvoieTrame("varY",250)

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    J'ai pas tout compris... peux-tu essayer de préciser ta question ?

    Pour convertir un entier en tableau de byte, tu peux utiliser BitConverter.GetBytes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim OctetPosition As Byte() = BitConverter.GetBytes(Position)

  3. #3
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    C'est exactement ce que je cherché
    *merci beaucoup tomlev*

    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
        Public Sub EnvoieTrame(ByVal Variateur As String, ByVal Position As Int32)
            ' Déclaration des tableaux d'octets
            Dim AdrVar(1) As Byte
            Dim OctetPosition As Byte()
            ' Déclaration des chaines Hexadécimales
            Dim HexaAdr As String = ""
            Dim HexaPosition As String = ""
            ' Recherche de l'addresse du Variateur
            Select Case Variateur
                '     Variateur X
                Case "varX"
                    AdrVar(0) = 1
     
                    ' Variateur Y
                Case "varY"
                    AdrVar(0) = 2
     
                    ' Variateur Z
                Case "varZ"
                    AdrVar(0) = 3
     
                    ' Erreur de Variateurs
                Case Else
            End Select
            ' Convertion de l'addresse du variateur en Hexadécimale
            HexaAdr = HexaAdr & Hex(AdrVar(1))
            HexaAdr = HexaAdr & Hex(AdrVar(0))
     
     
            'Récupération de la postion dans un tableau d'octets
            OctetPosition = BitConverter.GetBytes(Position)
            'déclaration d'une variable qui permet de classer les octetsPosition *voir Boucle FOR*
            Dim jj As Integer = OctetPosition.Length - 1
            ' Création de la Chaine HéxaPostion
            For ii As Integer = 1 To OctetPosition.Length
                HexaPosition = HexaPosition & Hex(OctetPosition(jj))
                jj = jj - 1
            Next ii
        End Sub
    Il me reste plus qu'a ajouter deux paramétres fixes dans ma trame et puis l'envoyer
    *Je post ma solution quand c'est fini, on c'est jamais sa peut toujours servir*

  4. #4
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut Calcul du Checksum ....
    je cherche a calculer le ChekSum de ma trame mais je ne suis pas sur que sa soi juste ...
    *en tout cas sa me génére aucunes erreur*

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            For Each b As Byte In OctetPosition
                somme += b
            Next
     
            Dim sommeNot As Integer = (Not somme) + 1
            ChekSum = Strings.Right(Hex(sommeNot), 2)
    quelqu'un pourrais me dire comment calculer un Cheksum
    parce-que ce bout de code provient pas vraiment de moi et je n'ais aucunes certitudes qu'il soit juste ...

    *Merci*

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    un checksum n'a pas de méthode de calcul unique
    le calcul du checksum est défini par celui qui le recoit, essaie de trouver un doc ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    ah ...
    le mien est un XOR (allias OU EXCLUSIF) sur chaque bit
    0 0 0 0 0 0 1 0.........0x02<- 1er Octet
    0 0 0 0 0 0 0 1.........0x01
    1 0 0 0 0 0 1 1.........0x83
    0 0 0 0 0 0 0 0.........0x00
    0 0 0 0 0 1 1 0.........0x06
    0 0 1 1 1 0 1 0.........0x3A
    1 0 1 1 0 0 0 0.........0x98 <- Dernier Octet
    ____________
    0 0 1 0 0 1 0 0.........0x24 <- Cheksum
    existe-t-il un outil déjà développé en vb 2008 pour faire ?

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    l'instruction xor existe en vb.net tu n'as rien de spécial à coder donc (ca doit exister sur quasiment tous les langages informatiques depuis l'invention de l'informatique d'ailleurs)
    mais dans ton exemple je ne vois de très exclusif
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'remplissage des octets
            octets(0) = 2
            octets(1) = 1
            octets(2) = 131
            octets(3) = 0
            octets(4) = 6
            octets(5) = 58
            octets(6) = 152
     
            Dim somme As Integer = octets(0) Xor octets(1) Xor octets(2) Xor octets(3) Xor octets(4) Xor octets(5) Xor octets(6)
     
            Dim hexSomme As String = Hex(somme)
    dans HexSomme j'ais bien 24
    Merci beaucoup Pol63

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

Discussions similaires

  1. retourner une structure pour une fonction
    Par emardjean dans le forum C
    Réponses: 5
    Dernier message: 24/01/2007, 20h36
  2. Passage d'une structure dans une fonction
    Par god_enel dans le forum C
    Réponses: 8
    Dernier message: 22/01/2007, 15h35
  3. structure dans une fonction
    Par isma92 dans le forum C
    Réponses: 14
    Dernier message: 03/12/2006, 23h47
  4. passé une structure a une fonction
    Par M.a.n.u. dans le forum C
    Réponses: 24
    Dernier message: 30/04/2006, 15h47
  5. Passer une structure dans une fonction ...
    Par pilouface dans le forum C
    Réponses: 4
    Dernier message: 03/04/2006, 01h00

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