ok mais c'est quoi les codes pour faire ceci ? car la je suis perdu dsl
ok mais c'est quoi les codes pour faire ceci ? car la je suis perdu dsl
Non c'est bon, j'ai juste remplacé le int par un short et ca marche. Par contre pour cette ligne :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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part for (count=0;count < points;count=count + 5)
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.
Donc il faudrait que je mette quoi pour que ca marche ?
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part for (count=0;count < points;count=count + 5)
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
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é)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)
Publication : Concepts en C
Mon avatar : Glenn Gould
--------------------------------------------------------------------------
Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
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.
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.
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 !
ok mais si j'espace mes points de 0.01GHz avec un point sur 5, ca m'affichera tout les 0.05GHz. non ?
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 !
Je l'ai fait mais cela ne marche toujours pas.
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 !
Ben j'ai changé le nombre de points ya une erreur:
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 !
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.
Alors, tes tableaux sont trop petits (41 éléments) pour mettre les 400 valeurs !J'ai fais 400 points
Publication : Concepts en C
Mon avatar : Glenn Gould
--------------------------------------------------------------------------
Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
Bon voila affaire résolu, au lieu d'ecrire
Il fallais juste que je mette :
Code : Sélectionner tout - Visualiser dans une fenêtre à part s11[41],s12[41],s21[41],s22[41];
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part s11[501],s12[501],s21[501],s22[501];
Le code suivant devrait réserver et libérer la quantité de mémoire nécessaire et suffisante pour stocker les données.
Naturellement, je n'ai pas testé normalement ce code puisque je ne dispose pas du matériel.
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"); } //---------------------------------------------------------------------------
Publication : Concepts en C
Mon avatar : Glenn Gould
--------------------------------------------------------------------------
Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
c'est à dire, tu peux m'expliquer un peu plus en détail ce que fait ce programme stp ?
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 !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager