Programme en C
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Programme en C



  1. #1
    invite55e51cf9

    Programme en C


    ------

    bonjour,

    je suis en ce moment sur un projet ou une appli android commande un pic en usb. J'ai trouver des exemple sur internet. Mais je ne comprend pas une partie du programme.

    Code:
    if(usb_kbhit(1))
                {
                msgRcvLength=usb_gets(1, msg, 64, 100);
                if(msgRcvLength>4&& msg[0]=='P'&& msg[1]=='I'&& msg[2]=='N')
                {
                   if(msg[5]=='h'||msg[5]=='H')
                   {
                      output_high((msg[3]<<8)|msg[4]);
                   }else
                   {
                      output_low((msg[3]<<8)|msg[4]);
                   }
                }else
                {
                   for(i=0;  i<msgRcvLength; i++)
                   {
                      putc(msg[i]);
                   }
                   putc('\n');  
                }
                }
    j'ai du mal à comprendre les parties où msg apparaît. Je sais que le programme android envoi un code de 5 chiffres identifiant la pin a mettre en high ou low. Je ne comprend pas les partie du type msg[8]<<8 ou msg[4] .

    Merci de votre aide.

    -----

  2. #2
    invite635643ae

    Re : Programme en C

    Regarde ca et essaie d'assimiler ce qui est dis http://skyduino.wordpress.com/2013/0...pour-les-nuls/

  3. #3
    invite5637435c

    Re : Programme en C

    Hello,

    msg[8] indique un tableau pouvant contenir 8 valeurs.

    Comme il est destiné à recevoir des caractères sur l'USART il faut le déclarer comme ça:

    Code:
    unsigned char msg[8];
    quant à:

    Code:
     output_high(msg[8]<< 8 | MSG[4]);
    ça signifie:

    On prend le contenu de msg[8], donc le contenu du 8eme élément, on fait un décalage à gauche de 8 et on fait un OU bit à bit avec le contenu de msg[4].
    Ce qui me semble curieux c'est qu'un décalage de 8 à gauche d'un char donne forcément 0... puisque à chaque décalage tu introduis un 0.
    Il faudrait voir l'ensemble du programme pour voir si c'est bien un format de type octet contenu dans msg, mais si on stocke des lettres ou des chiffres ce doit être le cas normalement.
    A moins qu'il y ait une autre volonté et que plutôt qu'un char se soit un int, mis à la seule vue du bout de code je n'en vois pas l'intérêt.
    Autre hypothèse le but est de concaténer des caractères, ça prend tout du coup tout son sens car en prenant un format unsigned int tu peux stocker 2 caractères.

  4. #4
    invite0bbe92c0

    Re : Programme en C

    Citation Envoyé par HULK28 Voir le message
    On prend le contenu de msg[8], donc le contenu du 8eme élément,.
    Non; du 9ème; c'est indexé à 0 comme la quasi-totalité des langages.

  5. A voir en vidéo sur Futura
  6. #5
    invite5637435c

    Re : Programme en C

    Tu as tout à fait raison

    Merci d'avoir corrigé

  7. #6
    invite55e51cf9

    Re : Programme en C

    Merci pour vos réponses.

    le msg est en fait msg[3] << 8 .

    de ce que j'ai compris du code android il envoi P I N puis la constante de la pin et pour finir La Lettre H pour High ou la Lettre L pour Low.

    mais ça me parrait bizarre parce que le code du port est du type 31760

    et une librairie précharger indique : #define PIN_C0 31760.

    Je comprend le principe mais je ne comprend pas le messagee exacte que l'appli envoi au pic

    Code:
    private byte[] getPIN(int pinNumId) {
    		int pinNum = getResources().getInteger(pinNumId);
    		byte[] pin = { (byte) ((pinNum >> 8) & 0xFF), (byte) (pinNum & 0xFF) };
    		return pin;
    Voila la fonction qui donne le code du Port à envoyer au PIC.

    Merci d'avance

Discussions similaires

  1. Programme en C
    Par invite67ee8e47 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 25/08/2011, 11h54
  2. programme qui lance un autre programme
    Par invite01c3c114 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/02/2011, 13h26
  3. comment utiliser les résultats d'un programme fortran dans un autre programme
    Par invitedb78a3a3 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 30/09/2010, 20h21
  4. programme pic
    Par invite207d8bb6 dans le forum Électronique
    Réponses: 13
    Dernier message: 04/01/2009, 12h49
  5. Programme
    Par invite98b1e16f dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 06/02/2005, 15h11
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...