Bonjour. Je cherche à créer une DLL en C qui simule une carte d'acquisition. J'ai donc suivi un tutorial et créer un fichier .h:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
#include "windows.h"
#define export __declspec (dllexport)

export int __stdcall StartAcquisition(void);
export void __stdcall StopAcquisition(void);
export int __stdcall GetValues(float*mtab, int maxval);
DWORD WINAPI Fthread( LPVOID lpParam);
double Lit_une_donnee();
un fichier .c:

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
#include "dllacq.h"
#include <math.h>

volatile int FINACQ=0;
volatile float tabacq[1000];
double PI=3.141;
    int ir;
	int iw;
    int v;

int __stdcall StartAcquisition(void) {
    HANDLE hThread;
    DWORD dwThreadId, dwThrdParam = 1;
    
    FINACQ = 0;

    
    hThread = CreateThread(NULL, 0, Fthread, &dwThrdParam, 0, &dwThreadId);
    if (hThread == NULL) {
                return(GetLastError());
    }
    else{
         CloseHandle(hThread);
         }
    return 0;
}

DWORD WINAPI Fthread( LPVOID lpParam) {
	while(FINACQ != 1)
	  {
		if (iw = ir)
		{
			tabacq[iw] = Lit_une_donnee();
			if(iw != ir)
			{
			iw=(iw+1)%1000;
			}
		}
        Sleep (400);
      }
                   FINACQ=2;
                   return 0;
}

double Lit_une_donnee() {
       int parasite;
       static double X=0;
       
       X+=0.3; if(X> (2*PI)) X = X - (2*PI);
       parasite = (rand() % 3 - 2);
       return(10*sin(X) + parasite);
}

void __stdcall StopAcquisition(void) {
     FINACQ = 1;
     while(FINACQ != 2);
     FINACQ=0;
     }
     

int __stdcall GetValues(float*mtab, int maxval){
    int n=0;
    while ((ir!= iw)&&(n<=maxval))
	{
		mtab[n]= tabacq[ir];
		ir=(ir+1)%1000;
	}
                        
    return n;
}
et un fichier .def

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
LIBRARY	DLLacq
DESCRIPTION "DLL test"
EXPORTS
       StartAcquisition
       StopAcquisition
       GetValues
Je voudrais savoir comment je peux tester les procédures de ma DLL.