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

LabVIEW Discussion :

Calcul de somme de controle sur une chaine de caractère


Sujet :

LabVIEW

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Calcul de somme de controle sur une chaine de caractère
    Bonjour,
    je dois programmer pour ma boite, un logiciel labview qui doit piloter une étuve. (par liaison série)
    L"objet étant de lancer des cycles de palliers de températures tout en relevant température d'un thermocouple, tensions de plusieurs thermistances et plus si affinité

    la documentation de l'étuve me fournit le protocole qui se sert d'une somme de controle.

    je sais déjà formater la chaine de caractère, mais avant de l'envoyer par liaison série, je souhaiterais programmer un VI qui ajouterais à la chaine la somme de controle.
    Ce meme VI poura me servir quand je recoit des messages de l'étuve afin d'en vérifier la somme de controle.

    Seulement, je débute du labview et j'ai pas mal de mal à calculer cette somme de controle. Je n'arrive pas à prendre séparement les caractère de la chaine, et n'arrive pas a effectuer les opérations nécessaires pour son calcul.

    Voici le programme C équivalent:

    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
    for(i=0;i<nBytesToWrite;i++)
    {
        somme=(somme-Tx_Stream[i])%256;
    }
    if(((somme%256)%16)<10)
    {
            Tx_Stream[nBytesToWrite+1]=((somme%256)%16)+48;
    }
    else
    {
            Tx_Stream[nBytesToWrite+1]=((somme%256)%16)+55;
    }
    if(((somme%256)/16)<10)
    {
            Tx_Stream[nBytesToWrite]=((((somme)%256)/16)+48); 
    }
    else
    {
            Tx_Stream[nBytesToWrite]=((somme%256)/16)+55;
    }
    
    
    Tx_Stream[nBytesToWrite+2]=3;
    serialLink->WriteCOM(Tx_Stream,nBytesToWrite+3,pBytesWritten);
    Merci de votre aide, je suis désesperé, Trois jours plein sur cette étape!!

  2. #2
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    1 144
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 144
    Points : 1 973
    Points
    1 973
    Par défaut
    Hello,

    Tu peux commencer par convertir ta chaine en tableau via une fonction de la palette STRING (array to U8 ou quelque chose du genre, me souviens plus )

    Ensuite, tout simple via une boucle FOR pour calculer tes 2 caracteres de controle.


    a+

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    merci beaucoup pour cette réponse si rapide!

    en fait je crains que ce ne soit pas si simple, parceque certains termes de la chaine ne sont pas reconnue comme des caractère (par exemple {stx} qui signifie start of text dans le protocole de l'étuve, sera noté \03 et donc occupera 3 caractère de la chaine plutot qu'un seul...)

    En revanche la somme semble fonctionner dans mon VI, mais la conversion inverse de la CC ne fonctionne pas non plus...

    Merci encore de votre aide.

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    voici des copies écrans de mon VI.
    merci de votre aide.
    got2boll

  5. #5
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    1 144
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 144
    Points : 1 973
    Points
    1 973
    Par défaut
    Salut,

    Voici a quoi je pensais.

    Pour info, toutes les constantes sont de type U8 afin que les opérations %256 soient directes.

    Le code est à debugger.
    a+
    Images attachées Images attachées  

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Une nouvelle fois merci beaucoup de votre aide.
    Mon programme est maintenant fonctionnel!
    Quelques difficultés pour la somme (en fait soustraction) mais voici mon schéma définitif et fonctionnel:

    A+
    Images attachées Images attachées  

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/11/2012, 11h23
  2. [WD11] calcul sur une chaine de caractére
    Par hanitax dans le forum WinDev
    Réponses: 2
    Dernier message: 30/06/2012, 11h37
  3. prèlèvements sur une chaine de caractères
    Par Nicobp dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2006, 01h14
  4. Dégradé sur une chaine de caractères avec 3 a 4 couleurs
    Par avogadro dans le forum Composants VCL
    Réponses: 6
    Dernier message: 31/03/2006, 13h21
  5. Réponses: 4
    Dernier message: 16/12/2005, 19h36

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