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

MATLAB Discussion :

envoi et lecture des données via port série rs232


Sujet :

MATLAB

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Points : 98
    Points
    98
    Par défaut envoi et lecture des données via port série rs232
    bonjour à tous

    j'ai une petit application avec MATLAB et isis

    je fais la simulation de la commande d'un système par un microcontrolleur (pic) via une interface MATLAB;

    MATLAB envoi des données vers le pic à travers le port série selon le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     s=serial('COM2');
     set(s,'BaudRate',9600);
     fopen(s);
     t=[-2.4406  , 0.1652,  -0.0301  , 0.1177,-0.00017 , 0.1784...
         0.1815,  -0.7570  ,-0.9396 ,-0.9940 ,-0.9986 , -0.9998];
     for k=1:length(t)
         fprintf(s,'%f',t(k));
         enter=13;
         fwrite(s,enter);
         pause(0.2)
     end
     fclose(s)
     delete(s)
     clear s
    une fois ces données sont reçues par le pic, ce dernier commence à générer un signal dont la valeur est calculée chaque 100 ms (c'est le signal qui commande un moteur par exemple).
    toutes ces taches sont réalisées et fonctionnent comme il faut, il me reste un petit souci; je veux tracer le signal de commande sur l'interface MATLAB, c'est à dire le signal calculé chaque 100 ms doit aussi être envoyé vers l'interface MATLAB via rs232 et ensuite tracé en temps réel,
    ma question de façon directe est; comment faire la lecture sur le port série des données éventuellement reçues chaque 100 ms
    j’espère que mon problème est clair et merci d'avance.

    pour plus vous assimiler les choses, je cherche le code qui rassemble au code suivant relatif au pic

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     while(h<12)
    {
        if (kbhit()) 
        { 
             gets(c);
             t[h]=n;
             h=h+1;
        }
    }
    Nb; la fonction fscanf de MATLAB prend beaucoup de temps

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Citation Envoyé par guefrachi Voir le message
    Nb; la fonction fscanf de MATLAB prend beaucoup de temps
    Pourrais-tu nous montrer ce que tu as essayé de coder avec FPRINTF ?

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Points : 98
    Points
    98
    Par défaut
    merci de répondre

    c'est déjà montré au dessus, je n'ai pas de problème avec l'envoi-MATLAB, le problème est avec la réception, je peux te montrer le code de réception-MATLAB
    mais le problème est que data me renvoi toutes les données dans une chaîne de caractères

    Warning: A timeout occurred before the
    Terminator was reached.

    data =

    0.00 0.00 0.11 0.53 0.91 1.04 1.03 1.02 1.02 1.01 1.00 1.00 0.99 0.99 0.98 0.98 0.98 0.98 0.98 0.98 0.98 0.98 0.98 0.98 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99
    ces valeurs sont envoyées chaque 100 ms du pic, je veux les recevoir par MATLAB valeur par valeur et non pas toutes ensemble dans une même variable pour les tracer en temps réel, bref ce que je cherche, une chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    y=[];
    tant que (1)
        si (il y nouvelle donnée sur le port série)
            y(i)=lecture(port_série)
        fi si
    fi tant que
    autre question; est-il possible de contrôler le temps de lecture ? Si j'ai bien compris c'est
    A timeout occurred before the Terminator was reached.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Commence par lire la documentation : Getting Started with Serial I/O

    Tu trouveras des explications sur les propriétés ici : Property Reference

Discussions similaires

  1. [Débutant] Enttec DMX USB Pro - Envoi de données via port série
    Par herr_inspektor dans le forum C#
    Réponses: 0
    Dernier message: 24/11/2014, 10h14
  2. [Débutant] Réception de données via port Série RS232
    Par enatiwoe dans le forum VB.NET
    Réponses: 3
    Dernier message: 07/04/2014, 10h20
  3. envoi et réception des données via serial port
    Par azert2010 dans le forum C#
    Réponses: 2
    Dernier message: 09/05/2011, 23h53
  4. Allumer des led via port série en VB, Python, C, ... autres langages ?
    Par damdev955 dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 02/06/2007, 12h03

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