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;
Partager