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 :

Récupération de données


Sujet :

C

  1. #21
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 16
    Points
    16
    Par défaut
    ok mais c'est quoi les codes pour faire ceci ? car la je suis perdu dsl

  2. #22
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 16
    Points
    16
    Par défaut
    Non c'est bon, j'ai juste remplacé le int par un short et ca marche. Par contre pour cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (count=0;count < points;count=count + 5)
    le count+5 me prend les mesures tout les 0.5 GHz mais quand je met count+0.5 pour récupérer les mesures tout les 0.05 GHz ca marche pas ya erreur.

  3. #23
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par cyril19 Voir le message
    Non c'est bon, j'ai juste remplacé le int par un short et ca marche. Par contre pour cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (count=0;count < points;count=count + 5)
    le count+5 me prend les mesures tout les 0.5 GHz mais quand je met count+0.5 pour récupérer les mesures tout les 0.05 GHz ca marche pas ya erreur.
    count est un entier donc count + 5 est valide mais count + 0.5 (ou 0.05), cela fait comme count + 0 du fait de la transformation du nombre flottant (0.5) en entier (0)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #24
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 16
    Points
    16
    Par défaut
    Donc il faudrait que je mette quoi pour que ca marche ?

  5. #25
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (count=0;count < points;count=count + 5)
    n'affiche qu'un point de mesure sur 5. Si ça n'affiche que tous les 0.5Ghz, c'est que les points sont espacés de 0.1GHz.
    Pour avoir tous les points possibles dans cette mesure, faire count = count+1

    Tu ne peux pas descendre en dessous de cette résolution qui doit être celle que tu as programmée sur le Wiltron. Si tu veux mieux que ça, il faut reprogrammer le Wiltron avec une meilleure résolution et refaire la mesure.
    Ca peut changer le nombre de points d'acquisition.

    ram-0000
    count est un entier donc count + 5 est valide mais count + 0.5 (ou 0.05), cela fait comme count + 0 du fait de la transformation du nombre flottant (0.5) en entier (0)
    Ce n'est pas le float qui est convertit en entier mais le contraire et c'est le float count+0.5 qui est convertit en entier (ce qui laisse de toute façon count inchangé)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  6. #26
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par diogene Voir le message
    ram-0000
    Ce n'est pas le float qui est convertit en entier mais le contraire et c'est le float count+0.5 qui est convertit en entier (ce qui laisse de toute façon count inchangé)
    C'est vrai
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #27
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 16
    Points
    16
    Par défaut
    ok mais ca changera pas le problème. Car si je laisse count en entier et que je met count+0.5, ca ne marchera toujours pas.

  8. #28
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Relis mon post précédent

    count n'est PAS la fréquence, c'est un indice du tableau et on ne DOIT faire que coun= count+un entier.

    Tu ne peux pas avoir avec cette mesure des points tous les 0.05GHz
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  9. #29
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 16
    Points
    16
    Par défaut
    ok mais si j'espace mes points de 0.01GHz avec un point sur 5, ca m'affichera tout les 0.05GHz. non ?

  10. #30
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Oui, mais cela demande que tu fasses une autre mesure avec le wiltron correctement programmé
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  11. #31
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 16
    Points
    16
    Par défaut
    Je l'ai fait mais cela ne marche toujours pas.

  12. #32
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Que veux-tu que je te dise avec comme information "ça ne marche pas"?
    Qu'est-ce qui ne marche pas ?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  13. #33
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 16
    Points
    16
    Par défaut
    Ben j'ai changé le nombre de points ya une erreur:
    Images attachées Images attachées  

  14. #34
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Tu as demandé combien de points ?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  15. #35
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 16
    Points
    16
    Par défaut
    J'ai fais 400 points espacés de 10 MHz et j'ai mis count + 5.Ca devré me faire des fréquence tout les 0.05GHz normalement.

  16. #36
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    J'ai fais 400 points
    Alors, tes tableaux sont trop petits (41 éléments) pour mettre les 400 valeurs !
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  17. #37
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 16
    Points
    16
    Par défaut
    Bon voila affaire résolu, au lieu d'ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s11[41],s12[41],s21[41],s22[41];
    Il fallais juste que je mette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s11[501],s12[501],s21[501],s22[501];
    Merci

  18. #38
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Le code suivant devrait réserver et libérer la quantité de mémoire nécessaire et suffisante pour stocker les données.
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    ...
    #include <stdlib.h>
    //---------------------------------------------------------------------------
    typedef  struct
    {
       double mag;
       double phase;
    } sData;
     
    typedef struct
    {
       short size ;
       double * freq;
       sData * s11;
       sData * s12;
       sData * s21;
       sData * s22;
    } Data;
    //---------------------------------------------------------------------------
    void afficheData(Data * data, int step)
    {
      int count ;
      int points;
      points= data->size/16;
      printf("\n\n\n\n\n\n");
      printf("                 S11          S12          S21          S22\n");
      printf(" FREQUENCY    MAG   PHASE  MAG   PHASE  MAG   PHASE  MAG   PHASE\n");
      printf("    GHZ)      (dB)  (Deg)  (dB)  (Deg)  (dB)  (Deg)  (dB)  (Deg)\n");
      for (count=0;count < points;count += step)
       printf("%7.2f  %7.2f  %7.2f  %7.2f  %7.2f  %7.2f  %7.2f  %7.2f  %7.2f\n",
              data->freq[count]/1E9,
              data->s11[count].mag,data->s11[count].phase,
              data->s12[count].mag,data->s12[count].phase,
              data->s21[count].mag,data->s21[count].phase,
              data->s22[count].mag,data->s22[count].phase);
    }
    //---------------------------------------------------------------------------
    void liberer(Data * data)
    {
      if(data != NULL)
      {
        data->size = 0;
        free(data->freq); data->freq = NULL;
        free(data->s11) ; data->s11  = NULL;
        free(data->s12) ; data->s12  = NULL;
        free(data->s21) ; data->s21  = NULL;
        free(data->s22) ; data->s22  = NULL;
      }
    }
    //---------------------------------------------------------------------------
    void * mesurer(int vna, Data * data)
    {
      void * p;
      char preamble[2];
      ibrd(vna,preamble,2);
      ibrd(vna,&data->size,2);
      p = malloc(data->size);
      if(p == NULL)
      {
        printf("Mémoire insuffisante\n");
        liberer(data);
      }
      else  ibrd(vna,p,data->size);
      return p;
    }
    //---------------------------------------------------------------------------
    int meas_data(int vna, Data *data )
    {
      char const cmd1[] = "TRS WFS HLD" ;
      char const cmd2[] = "FMB LSB OFV CH1 OFD CH2 OFD CH3 RDA OFD CH4 RDA OFD";
     
      ibwrt(vna,cmd1,sizeof cmd1);
      ibwrt(vna,cmd2,sizeof cmd2);
      return    (data->freq = mesurer(vna,data)) != NULL
             && (data->s11  = mesurer(vna,data)) != NULL
             && (data->s12  = mesurer(vna,data)) != NULL
             && (data->s21  = mesurer(vna,data)) != NULL
             && (data->s22  = mesurer(vna,data)) != NULL ;
    }
    //---------------------------------------------------------------------------
    void meas_device(int vna)
    {
     char key;
     
     printf("\n\t\t         MEASUREMENT AND DATA OUTPUT\n");
     printf("\nConnect Device Under Test:\n");
     printf("Appuyer sur ENTREE pour effectuer la mesure ou ECHAP pour sortir\n");
     while((key = getch()) !=27 )
     {
       if(key=='\r')
       {
         Data data = {0,NULL,NULL,NULL,NULL,NULL};
         printf("Mesure en cours...");
         if(meas_data(vna,&data))
         {
           afficheData(&data,1);
           liberer(&data);
         }
         printf("\nConnect Device Under Test:\n");
         printf("Appuyer sur ENTREE pour effectuer la mesure ou ECHAP pour sortir\n");
       }
     }
     printf("\n\t\t\t\tPROGRAM ENDED\n");
    }
    //---------------------------------------------------------------------------
    Naturellement, je n'ai pas testé normalement ce code puisque je ne dispose pas du matériel.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  19. #39
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 63
    Points : 16
    Points
    16
    Par défaut
    c'est à dire, tu peux m'expliquer un peu plus en détail ce que fait ce programme stp ?

  20. #40
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Il est censé faire la même chose que le programme que tu avais mais la dimension des tableaux étant connue au moment de l'exécution (quand on lit les deux octets suivants le préambule) il construit à ce moment là les tableaux par allocation dynamique avec la taille qu'il faut (dans la fonction mesurer). Une fois que les tableaux ne sont plus utiles, la fonction liberer récupère la mémoire allouée et détruit les tableaux. Toutes les données utiles sont regroupées dans la structure Data
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/04/2004, 10h09
  2. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  3. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  4. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  5. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36

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