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 6 et antérieur Discussion :

[VB6] Probleme d'INDEX


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Par défaut [VB6] Probleme d'INDEX
    Bonjour,
    J'ai choper une source sur un site mais il y a qq trucs que je ne comprend pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 To 55 
        TABLEAU(i, Index) = 0 
    Next i
    Ca c'est la création d'un tableau de valeur ??
    Mais comment entrer les valeurs dans ce tableau, et comment les extraires ??
    Merci

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par Renard-fou
    Bonjour,
    J'ai choper une source sur un site mais il y a qq trucs que je ne comprend pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 To 55 
        TABLEAU(i, Index) = 0 
    Next i
    Ca c'est la création d'un tableau de valeur ??
    Mais comment entrer les valeurs dans ce tableau, et comment les extraires ??
    Merci
    non cela c'est l'utilisation d'un tableau de valeur à deux dimensions..
    pour faire vite... (tu dois avoir mieux dans Faq/cours/tutoriels..)

    déclaration d'un tableau
    entrée de valeur
    lecture


  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For index = 1 to quelquechose
         For i = 0 To 55 
             TABLEAU(i, Index) = 0 
         Next i
    Next
    Et là, tu remplis index fois les index de ton tableau à deux dimensions de 0
    Y'a plus simple

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Par défaut Merci
    Merci bcp pour vos réponse,
    Est ce que je rentre les valeurs du tableau aprés la trame ici ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    For i = 0 To 55 
        TABLEAU(i, Index) = 0 
    Next i 
     
    Sleep (80) 
     
    '''''''''''''''''''''''''''''''''' Constitution de la trame d'emission'''''''''''''''''''''''''''''''''' 
     
    TRAME(0) = cent                 'adresse modbus du guide coke choisi 
    TRAME(1) = 3                    'code requete modbus permettant la lecture de N mot
    Trame(0) reprend la valeur 0 du tableau ??

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par Renard-fou
    Merci bcp pour vos réponse,
    Est ce que je rentre les valeurs du tableau aprés la trame ici ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    For i = 0 To 55 
        TABLEAU(i, Index) = 0 
    Next i 
     
    Sleep (80) 
     
    '''''''''''''''''''''''''''''''''' Constitution de la trame d'emission'''''''''''''''''''''''''''''''''' 
     
    TRAME(0) = cent                 'adresse modbus du guide coke choisi 
    TRAME(1) = 3                    'code requete modbus permettant la lecture de N mot
    Trame(0) reprend la valeur 0 du tableau ??
    non ...à priori dans ton code Trame et Tableau sont deux tableaux différent ( pas terrible comme nom de variable tableau pour une variable de type tableau )

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Par défaut
    Et le tableau trame il faut que je le déclare avant ?? parce qu'il ne l'est pas :
    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
     
    Public Sub Acquisition(cent, Nb_mots, adresse_poidsfort, adresse_poidsfaible, Index) 
     
    Dim i, j As Integer 
     
    'Création d'un tableau pour sauvegarder les valeurs 
     
    For i = 0 To 55 
        TABLEAU(i, Index) = 0 
    Next i 
     
    Sleep (80) 
     
    '''''''''''''''''''''''''''''''''' Constitution de la trame d'emission'''''''''''''''''''''''''''''''''' 
     
    TRAME(0) = cent                 'adresse modbus du guide coke choisi 
    TRAME(1) = 3                    'code requete modbus permettant la lecture de N mot 
    TRAME(2) = adresse_poidsfort    'adresse poids fort de début de lecture des mots 
    TRAME(3) = adresse_poidsfaible  'adresse poids faible de début de lecture des mots 
    TRAME(4) = 0                    'nombre de mots poids fort, ici zéro met en evidence qu'on ne lit pas plus de F mots 
    TRAME(5) = Nb_mots              'nombre de mots poids faible (Fh max, ou 15d) 
     
    'Calcul du CRC 
     
    CRC = &HFFFF& 
    For i = 0 To 5 
        CRC = TRAME(i) Xor CRC 
        For j = 0 To 7 
            R = CRC Mod 2                 'donne le retenue de la division par 2 
            CRC = Fix(CRC / 2)            'decalage vers la droite d'1 bit en divisant par 2 
            If R = 1 Then                 'test depassement de capacité 
                CRC = CRC Xor &HA001& 
            End If 
        Next j 
    Next i 
    CRC_MSB = Fix(CRC / 256) 
    CRC_LSB = CRC And 255 
     
    TRAME(6) = CRC_LSB 
    TRAME(7) = CRC_MSB 
     
     
     
    '''''''''''''''''''''''''''''''''''' Envoie de la trame '''''''''''''''''''''''''''''''''''' 
     
    Form1.MSComm1.Output = Chr$(TRAME(0))       'Adresse station 
    Form1.MSComm1.Output = Chr$(TRAME(1))       'Code requete de lecture 
    Form1.MSComm1.Output = Chr$(TRAME(2))       'Adresse debut poids fort 
    Form1.MSComm1.Output = Chr$(TRAME(3))       'Adresse debut poids faible 
    Form1.MSComm1.Output = Chr$(TRAME(4))       'Nombre de mots a lire poids fort 
    Form1.MSComm1.Output = Chr$(TRAME(5))       'Nombre de mots a lire poids faible 
    Form1.MSComm1.Output = Chr$(TRAME(6))       'CRC poids faible 
    Form1.MSComm1.Output = Chr$(TRAME(7))       'CRC poids fort 
     
    '''''''''''''''''''''''''''''' Lecture de la trame de reponse ''''''''''''''''''''''''''''''' 
    TRAME(0) = Input_comm(1)                     'Adresse station 
    TRAME(1) = Input_comm(1)                     'Code requete de lecture 
    TRAME(2) = Input_comm(1)                     'Nombre d'octets envoyes 
     
    For i = 0 To TRAME(2) - 1 
         TRAME(3 + i) = Input_comm(1)            'Lecture des mots 
         DoEvents 
         Sleep (10) 
    Next i 
     
    TRAME(3 + TRAME(2)) = Input_comm(1)          'CRC poids faible 
    TRAME(4 + TRAME(2)) = Input_comm(1)          'CRC poids fort 
     
    ''''''''''''''''''''''''''''''''''' Verification CRC ''''''''''''''''''''''''''''''''''''''''' 
     
    'Calcul du CRC 
    CRC = &HFFFF& 
    For i = 0 To (2 + TRAME(2)) 
        CRC = TRAME(i) Xor CRC 
        For j = 0 To 7 
            R = CRC Mod 2 
            CRC = Fix(CRC / 2) 
            If R = 1 Then 
                CRC = CRC Xor &HA001& 
            End If 
        Next j 
    Next i 
    CRC_MSB = Fix(CRC / 256) 
    CRC_LSB = CRC And 255 
     
     
    'Test validite du CRC 
    If CRC_MSB = TRAME(4 + TRAME(2)) And CRC_LSB = TRAME(3 + TRAME(2)) Then 
                For i = 1 To TRAME(2) Step 2 
                    TR = TRAME(3 + i - 1) * 256 + TRAME(3 + i) 
                    TRAME(3 + i - 1) = Int(TR / 100) 
                    TRAME(3 + i) = Int(TR - (TRAME(3 + i - 1) * 100)) 
                    TABLEAU(i, Index) = TRAME(3 + i) 
                    TABLEAU(i - 1, Index) = TRAME(3 + i - 1) 
                Next i 
    Else 
        Error 1003 
    End If 
     
     
    End Sub

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Effectivement, il faut le déclarer. Soit il est déclaré en Public et on ne voit pas cette déclaration dans la procédure que tu nous mets, soit tu dois le déclarer ici en local. Avec les éléments que nous avons, il faudrait le déclarer
    Dim Tableau(7) as type de donnée 'et là il nous faudrait connaître le type de valeur que sont tes adresses

    Tu devrais pouvoir le déterminer

    A+

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bien ton tableau ... doit bien être déclaré ( et utilisé ) quelque par ailleurs dans ton code...

    au début du code la boucle For .. permet d'inialiser à 0 .. les valeurs contenu dans le TABLEAU , relative à l'index donnée en paramétre..

    ensuite le dans le deuxiéme tableau : TRAME, une requête de lecture modbus est mis en forme .. ( avec calcul CRC...), la requête est ensuite envoyé (vers un esclave Modbus...) via le controle MScomm ... ,

    ensuite la fonction Input_comm .. permet de lire 1 à 1 les caractéres issue de la trame de réponse de l'esclave ces caractéres sont stockés dans le même tableau TRAME.. , le CRC .. est vérifié... ensuite les données reçues en réponse sont stockées dans le TABLEAU en utilisant l'index..

    bon aprés faut voir ce que tu ve faire de ce code .. et ce qu'il y as autour..

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

Discussions similaires

  1. Direct8X/Direct3D sous VB6, probleme de récup d'animations
    Par John Blobsmith dans le forum DirectX
    Réponses: 3
    Dernier message: 28/04/2004, 10h32
  2. [VB6]Problème de fonction
    Par mustang-ffw02 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/03/2004, 15h09
  3. [VB6] probleme de redirection d'une commande DOS
    Par WriteLN dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/06/2003, 09h36
  4. [VB6] Problèmes avec ListView
    Par FlopErik dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/03/2003, 16h33
  5. [VB6] Problème d'addition de dates et de nombres
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/11/2002, 21h12

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