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 :

Programmation en C pour Pic : Transformer de l'ASCII decimal en Hexa


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut Programmation en C pour Pic : Transformer de l'ASCII decimal en Hexa
    Bonjour


    J'essaie d'utiliser la pile Ethernet Microchip, et la petite partie de code ci-dessous me permet d'envoyer, depuis une textbox ( boite de texte ) située sur ma page Web, son contenu vers le port serie du Pic (usart )



    est en fait le contenu du texte qui sera écrit dans la texbox.

    Donc si je tape "Bonjour" dans la textbox puis que je clique sur le bouton 'Envoyer' alors sous hyperterminal je pourrai ce message s'écrire.


    Pour en venir à mon but final, le texte entré dans la textbox est au format ASCII, je voudrai modifier le code ci-dessous pour que :

    - le contenu qui puisse être entré dans la textbox soit limité à une longueur de 3 caractères

    - et que ceux ci soient envoyées au format HEXA.


    Par exemple, je rentre '100' dans la boite de texte, alors ce sera '64' ( hexa ) qui sera envoyé sur l'usart du Pic.


    si je rentre '10' alors se fera 'F' qui sera envoyé ...

    Pourriez vous me dire ce qu'il faut modifier pour arriver à cela ?

    Merci beaucoup,


    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
     
    case CGI_CMD_SERIAL:    // ACTION=6
     
     
     
           if(strlen(argv[2])!=0){
               for(var=0;var<strlen(argv[2]);var++){  
     
                   while(BusyUART());
                   WriteUART(argv[2][var]);
     
               }
           while(BusyUART());
           WriteUART('\r');
           while(BusyUART());
           WriteUART('\n');
          }
     
           memcpypgm2ram((void*)argv[0], (ROM void*)COMMANDS_OK_PAGE, COMMANDS_OK_PAGE_LEN);
           break;

  2. #2
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Par exemple, je rentre '100' dans la boite de texte, alors ce sera '64' ( hexa ) qui sera envoyé sur l'usart du Pic.
    Pouriez-vous jeter un oeil sur sscanf ?

    Est-ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(BufferAsciiEnEntree,"%d",&IntegerEnSortie)
    pourrez convenir à votre besoin ?

    J'insiste sur le &

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut
    Merci de votre aide,

    Je n'arrive pas à inclure votre ligne de code dans ma partie de programme,

    Pourriez vous me dire ou et comment l'intégrer ?

    sur le principe suivant ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            if(strlen(argv[2])!=0){
            	for(var=0;var<strlen(argv[2]);var++){  
     
    				while(BusyUART());
    				sscanf(argv[2][var],"%d",&IntegerEnSortie)
            		WriteUART(IntegerEnSortie);
     
    			}
    J'ai remplacé "BufferAsciiEnEntree" par argv[2][var] qui logiquement doit correspondre à la chaine de caractères entrés dans la texbox, mais pour IntegrerEnSortie je bloque ...

    Pouvez vous m'aider ?

  4. #4
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Comment se comporte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    printf(argv[2]);
    sscanf(argv[2],"%d",&IntegerEnSortie);
    printf("%x", IntegerEnSortie);
    WriteUART((unsigned char)IntegerEnSortie);
    Vérifier si la chaîne est argv[2] ou &argv[2]

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut
    Avec les lignes que vous me proposez j'obtiens ces erreurs lors de la compilation :

    1191:Error [1105] symbol 'IntegerEnSortie' has not been defined
    1191:Error [1101] lvalue required
    1191:Warning [2058] call of function without prototype
    1192:Error [1105] symbol 'IntegerEnSortie' has not been defined
    1193:Error [1105] symbol 'IntegerEnSortie' has not been defined


    en sachant que la ligne 1191 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(argv[2],"%d",&IntegerEnSortie);
    ligne 1192 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%x", IntegerEnSortie);
    ligne 1193 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WriteUART((unsigned char)IntegerEnSortie);

    Merci pour votre aide,

  6. #6
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Include de sscanf
    #include <stdio.h>
     
    // Déclaration d'une variable en langage C
    unsigned int IntegerEnSortie;
     
    printf(argv[2]);
    sscanf(argv[2],"%d",&IntegerEnSortie);
    printf("%x", IntegerEnSortie);
    WriteUART((unsigned char)IntegerEnSortie);

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/04/2013, 12h08
  2. Réponses: 21
    Dernier message: 14/04/2009, 23h01
  3. Réponses: 0
    Dernier message: 30/03/2009, 23h46
  4. programme en C pour PIC
    Par danbike19 dans le forum C
    Réponses: 1
    Dernier message: 14/11/2007, 11h34
  5. [pic 16f84] programmation en c pour RS 232
    Par nojnoj dans le forum C
    Réponses: 2
    Dernier message: 19/03/2007, 11h55

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