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
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);
}
le code source est :
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;
 
}
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;
je ne sais pas exactement ce qui ne va pas.
Je sollicite de l'aide;