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 :

Communication avec le port série


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 48
    Points : 30
    Points
    30
    Par défaut Communication avec le port série
    Bonjour à tous

    J'ai récemment fait l'acquisition d'un kit robot avec un micro contrôleur DFRduino (compatible arduino). J'aimerais échanger des informations entre la carte et mon pc durant l'exécution du programme chargé sur la carte.

    Après quelques recherches je suis tombé sur ce site :
    http://www.aqra.ca/Port-serie-en-C-sous-Linux

    Le code fonctionne, j'arrive a transmettre 1 caractère à la carte. Cependant quand j'essaye d'envoyer une chaine de caractères celle ci est fractionné. Voici le résultat du moniteur série du soft pour programmer la carte :

    J'ai recu : a
    J'ai recu : s
    J'ai recu : t
    J'ai recu : est de transm
    J'ai recu : ission du port serie

    voici la partie du code que j'utilise pour recevoir les données sur ma carte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    i = 0;
    	while(Serial.available() > 0)
            {
    		buffer[i] = Serial.read();
    		i++;
    	}
     
    	if(i > 0)
    	{
    		buffer[i] = '\0';
     
    		Serial.print("J'ai recu : ");
    		Serial.println(buffer);
    	}
    D'après la doc pour Serial.available() :
    Valeur renvoyée :
    Le nombre d'octet disponible pour lecture dans la file d'attente (buffer) du port série, ou 0 si aucun caractère n'est disponible. Si une donnée est arrivée, Serial.available() sera supérieur à 0. La file d'attente du buffer peut recevoir jusqu'à 128 octets.

    Donc normalement tant qu'il y a des données en attente la boucle while devrait tourner, mais j'ai peut-être raté un truc ...

    Pour envoyer les données depuis mon pc j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (write(srl_handle, chaine, strlen(chaine)) < 0)
    	fputs("write() failed!\n", stderr);
    De ce coté là non plus je ne vois pas ce qui cloche ...

    Quelqu'un à une idée ?

    Merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    C'est normal de recevoir les données par morceaux. A toi de mettre en place un protocole de communication qui permettra au lecteur de reconstituer le message entier.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Une petite astuce peut être ? Parce qu'il y à certain point que je ne vois pas comment résoudre. Par exemple si 2 informations sont envoyé l'une après l'autre, comment faire pour qu'elle ne soit pas vu comme 1 seule information de taille double ?

Discussions similaires

  1. Communication avec un port série
    Par Cacophrene dans le forum Caml
    Réponses: 1
    Dernier message: 13/08/2014, 10h53
  2. Communication avec un port série
    Par Yann_69 dans le forum Android
    Réponses: 0
    Dernier message: 03/04/2013, 17h27
  3. Communication avec un port série
    Par Artist dans le forum VB.NET
    Réponses: 3
    Dernier message: 04/06/2011, 18h34
  4. Problème de communication avec un port série
    Par hélène2 dans le forum C#
    Réponses: 8
    Dernier message: 22/04/2009, 09h26
  5. Code VBA pour communication avec un port série dans EXCEL
    Par Fbroom dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2008, 10h14

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