Bonjour à tous;
Je désire créer une dll qui reçoit un échantillon et le met dans deux tableaux, l'un de taille fixe et l'autre de taille variable;
Lorsque le tableau de taille fixe est plein, je voudrais écraser les premières valeurs par les nouvelles, un par un (comme dans un buffer circulaire). Ci joint le code que j'ai essayer d'utiliser; le fichier d'entente est le suivant
le code source est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Table.h #include <vector> using namespace std; extern "C" { __declspec( dllexport ) int UptadeTableau(float echantillon,float *signal, int nb); }
Lorsque je lance l'exécution, je vois bien que les échantillons arrivent dans la dll. Le probleme est que la tableau de sortie qui devrait contenir une centaine d'échantillons est rempli avec le même échantillon, le dernier qui vient d'arriver;
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 #include <stdio.h> #include<vector> #include<math.h> #include<conio.h> #include"Table.h" typedef vector<float> Tableau; /* chantillon = echantillon qui vient d'arriver signal = tableau de sortie de taille 100 nb = nbre d'echantillon (en rélité celui n'est pas connu d'avance) */ int UptadeTableau(float echantillon,float *signal, int nb) { int n; int t=0; // compteur du nombre d'echantillon dans le tableau Tableau tab; // tableau destiné à contenir les echantillons for(int l=0; l<100; ++l){signal[l]=0;} // Initialisation du tableau de sortie while(t<nb) { /* Mise de l'echantillon dans le tableau de sortie a la position t%100; */ signal[t%100]= echantillon; tab.push_back(echantillon);// mise de l'echantillon dans le tableau n= t; t++; // inrementation du compteur } return n; }
je ne sais pas exactement ce qui ne va pas.
Je sollicite de l'aide;
Partager