aide programme language C
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

aide programme language C



  1. #1
    invitea29d3daa

    aide programme language C


    ------

    slt a tous
    Je suis entrain de concevoir un programme pour commander un module par liaison série rs232 ,j'utilise un pic 18f2685
    le problème est que je n'arrive pas a comparer 2 variables de type char le programme tourne en boucle sans faire la comparaison.j'ai l'impression que le pic ne prend pas en compte les variables de type char.Je veux que quand je reçois des infos sur la broche RX par exemple OK, il soit affecter a une variable puis comparer avec la valeur que je veux .

    extrait du programme:

    Code:
    #include <18F2685.h>   
    #fuses HS,NOWDT,NOPROTECT,NOLVP   
    #use delay(clock=20000000)
    #use RS232(baud=115200, xmit=PIN_C6, rcv=PIN_C7)
    
    void main (void)
    {
        char var[];    
        
        do
        {
            output_high(pin_A0);  //allumer led rouge
            delay_ms(100);           //pause de 100ms
            output_low(pin_A0);   //éteindre led rouge
            delay_ms(100);          //pause de 100ms
            puts("AT");                // envoi de commande AT
            gets(var);                  // réception d'une chaine de caractère et enregistrement dans variable var
        }
        while (var!="OK");             //répéter tant que var différent de OK
        output_high(pin_A2);        //allumage led verte si var=OK
    
    
    while(1)
        {
            
            puts("AT+CGMM=?");    //test Identification modèle
            
            puts("AT+CGMR=?");    //test Identification version
    
            puts("AT+CPAS?");    // test État d’activité du module
            
    .......

    -----
    Dernière modification par Jack ; 06/05/2012 à 23h03. Motif: Balises code, comme d'hab'

  2. #2
    Jack
    Modérateur

    Re : aide programme language C

    il va falloir rebosser tes cours de C:
    Code:
    char var[];
    ne fait que déclarer un pointeur sur des caractères, sans réservation de place pour la chaine.

    Code:
        char var[21];
    réserve de la place pour une chaine de 19 caractères (+ 0 terminal)

    Code:
        while (var!="OK");             //répéter tant que var différent de OK
    Il n'existe pas d'opérateur de comparaison de chaines en C. Le compilateur va zapper le while car il va considérer que l'expression var != "OK" est toujours fausse, ce qui est normal puisque l'adresse de stockage de la chaine "OK" ne sera jamais nulle.
    Pour comparer des chaines, il faut inclure la librairie string et utiliser la fonction strcpy, ou de manière plus sécurisée strncpy.

    A+

  3. #3
    Seb.26

    Re : aide programme language C

    Citation Envoyé par Jack Voir le message
    Pour comparer des chaines, il faut inclure la librairie string et utiliser la fonction strcpy, ou de manière plus sécurisée strncpy.
    ceci fait une copie de chaine ... pour comparer 2 string, c'est strcmp

    http://fr.wikipedia.org/wiki/Strcmp
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  4. #4
    invite2d7144a7

    Re : aide programme language C

    Bonjour,
    Citation Envoyé par Jack Voir le message
    Code:
        char var[21];
    réserve de la place pour une chaine de 19 caractères (+ 0 terminal)
    Pour 20 caractères (indices 0 à 19 inclus) + le 0 final (indice 20).

    Je sais, simple petite inattention.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : aide programme language C

    vous avez raison bien sur

    pour la comparaison, strcmp Ok. Ou mieux à mon avis strncmp.

    Pour 20 caractères (indices 0 à 19 inclus) + le 0 final (indice 20).

    Je sais, simple petite inattention.
    Exactement. Ca m'apprendra à ne pas me relire. Mais la soirée d'hier était un peu spéciale

    A+

Discussions similaires

  1. Programme en language mnenomique a apres?
    Par invite93ed6d5d dans le forum Électronique
    Réponses: 24
    Dernier message: 13/06/2011, 15h09
  2. aide sur programme en language VHDL
    Par inviteeab0141b dans le forum Électronique
    Réponses: 3
    Dernier message: 22/05/2010, 13h46
  3. Programme language ABEL
    Par invite0c5ce357 dans le forum Électronique
    Réponses: 5
    Dernier message: 24/01/2010, 22h01
  4. programme language c ou assembleur
    Par invite0b7bc3b2 dans le forum Électronique
    Réponses: 11
    Dernier message: 27/04/2009, 23h07
  5. Language ASAP, Programme optique
    Par inviteafdc9dda dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 02/06/2006, 10h07
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...