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

C Discussion :

Compteur avec des caractères


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Par défaut Compteur avec des caractères
    Bonjour à tous,
    j'aimerais déboguer mes programmes, pour microcontrôleurs, de manière séquentielle. Je crée mes fonctions et je mets une ligne d'impression vers le port RS-232 aux endroits qui posent problêmes, un peu comme le déboguage avec printf();.
    Je ne peux envoyer que des caractères sur ce port RS-232.
    Je voudrais comme résultat cette représentation : "X.X" où X est un numéro allant de 0 à 9.
    Mon problème est que je ne peux modifier une chaîne de caractères donc il me faudrait 100 tableaux pour déboguer de 0.0 à 9.9.
    Voilà une fonction de principe :
    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
    /*******FONCTION PRINCIPALE*******/
    void main(void)
    {
    	unsigned int number=0;
    	const unsigned char numb[]="0123456789";
    	port_init();
    	init_USART();
     
    	while(1)
    	{
    		if(BOUTON==0)
    	{
    		/***OPERATION-1***/
    		Sendchar_UART(numb[number++]);//Valeur à envoyer sur UART
    		tempo(65500);
    		/***OPERATION-2***/
    		Sendchar_UART(numb[number++]);//Valeur à envoyer sur UART
    		tempo(65500);
    		/***OPERATION-X***/
    		/*****************/
    	}
    	}
    }
    /***ENVOI D'UN CHAR SUR RS-232***/
    void Sendchar_UART(unsigned char data)
    {
     
    	TXREG=data;//TXREG écrit sur le RS-232
    	while(TXSTAbits.TRMT==0);//Si débordement de tampon
     
    }
    Je pourrais déboguer en répétant ce code à l'infini(0->9, 0->9...), mais je préfère réaliser ce système.

    Je vous remercie pour vos suggestions.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par bibilolo2
    Mon problème est que je ne peux modifier une chaîne de caractères
    Pourquoi donc ??

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Par défaut
    Pourquoi donc ??
    Pour pouvoir faire :
    1.00
    1.01
    1.02... car je ne peux envoyer que des caractères.

    Avez-vous des idées sinon?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Je ne comprend pas trop, mais est-ce ça que tu veux faire ?


    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
     
    int  Number1=0, Number2 = 0;
    unsigned char chaine[20] ;
     
    ...
     
      while(1)
        {
           if ( BOUTON == 0 )
             {
                  Number1 = (Number2+1) % 10 ;
                  Number2 = (Number2 + 1) % 10 ;
     
                  sprintf ( (char *)chaine, "%d.%d", Number, Number2 );
     
     	 /***OPERATION-1***/
                  Sendchar_UART(chaine);
                  tempo(65500);
     .......
     
     
     
    /***ENVOI D'UN CHAR SUR RS-232***/
    void Sendchar_UART(unsigned char *data)
    {
        int l = strlen((char *)data);
        int i ;
     
        for ( i = 0 ; i < l ; i++ )
           {
              TXREG=data[i];//TXREG écrit sur le RS-232
              while(TXSTAbits.TRMT==0);//Si débordement de tampon
           }	
    }

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Par défaut
    Je vous remercie de cette solution, elle va me permettre d'avancer.
    Il y a un petit souci, le résultat en sortie est :
    0.0
    1.1
    2.2
    3.3
    4.4...
    Pas tout à fait ce que je voulais mais je vais y travailler et je posterai ma solution.

    Voici une solution à mon problème :
    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
     
    int  Number1=0, Number2 = 0;
    unsigned char chaine[4] ;
           if ( BOUTON == 0 )
             {
    			if(Number2==9){Number1++;Number2=-1;}
    			Number2++;
                  sprintf ( (char *)chaine, "%d.%d", Number1, Number2 );
     
    			  Sendchar_UART(chaine);
    			  tempo(65500);
    		}
    }
    }
    /***ENVOI D'UN CHAR SUR RS-232***/
    void Sendchar_UART(unsigned char *data)
    {
        int l = strlen((char *)data);
        int i ;
     
        for ( i = 0 ; i < l ; i++ )
           {
              TXREG=data[i];//TXREG écrit sur le RS-232
              while(TXSTAbits.TRMT==0);//Si débordement de tampon
           }	
    }
    Merci beaucoup Souviron34 .
    __WIL__

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    euh oui je voulais dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                  Number1 = (Number2+1) / 10 ;

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

Discussions similaires

  1. [Oracle10] DROP TABLE avec des caractères bizarres
    Par molgow dans le forum Oracle
    Réponses: 1
    Dernier message: 04/10/2006, 08h49
  2. Ecrire un fichier binaire avec des caractères
    Par stokastik dans le forum C
    Réponses: 18
    Dernier message: 17/08/2006, 17h40
  3. Réponses: 26
    Dernier message: 25/11/2005, 16h12
  4. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  5. Chaînes avec des caractères accentués dans Interbase
    Par Invité dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/03/2004, 22h39

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