Bonjour,

J utilise actuellement Matlab (vous devez vous demander ce que je fais la...lool mais je vous explique...) avec Simulink et GUIDE.

J ai un modele Simulink que je compile et obtiens du code C, C++ et un dll.
J utilise des fonctions pour controler via Matlab mon dll directement.
Bien evidemment je dois ameliorer le code C, C++ pour pouvoir le faire fonctionner correctement...

En realite, je cherche a obtenir des parametres de ce dll et les envoyer dans l environnement Matlab...
Pour cela, mes amis les pointeurs sont la...youpiii j en raffole...

Mon probleme est qu'entre ma source (le code C,C++) et ma destination (Matlab variable) j utilisais la fonction memcpy() mais elle ne supporte que des void * !!! Et moi je ne veux lui renvoyer que des DOUBLE sachant qu a la source j ai des types de parametres du genre SS_UINT8, SS_UINT16, SS_INT8, SS_INT16...etc

Voila donc ma question : existe t il une fonction qui copie (comme memcpy()) et qui CONVERTIT egalement ds le type desire (DOUBLE ici)...?

OU dois je tout coder a la main avec des pointeurs ?

Merci d avance pour vos reponses...

Simplement pour vous montrer comment j l utilise je mets un ptit bout de code :
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
case SS_UINT8 :
        if (isComplex)
        {
            /* If is Complex and SS_INT32, the data type is unhandled */
            mexPrintf("Unhandled Data Type: Complex values");
        }
        else
        {
            uint8_T* paramVal = (uint8_T *) paramAddress;
 
             // ret est un pointeur sur un 
            // tableau contenant des infos sur le parametre
            // mxGetData nous permet de pointer vers le tableau specifique 
            void *start_of_pr = mxGetData(ret); 
 
 
            size_t bytes_to_copy = numRows * numCols *(size_t)mxGetElementSize(ret);
            // memcpy(destination,source,number_of_bytes)
            memcpy(start_of_pr, paramVal, bytes_to_copy); 
        }
        break;