[Enseignement] Dll acquisition (DAQ) labview -> scilab
Thierry ROYANT
thierry.royant at orange.fr
Jeu 1 Aou 09:24:07 CEST 2013
Bonjour,
Ok pour opérations sur des tableaux d'entiers.
J'ai reconfiguré le prototype de la fonction AddTabint2 de la façon suivante (2 fonctions dans la bibliothèque) :
#include "extcode.h"
#pragma pack(push)
#pragma pack(1)
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
int32_t dimSize;
int32_t CommandeNumRique[1];
} Int32ArrayBase;
typedef Int32ArrayBase **Int32Array;
/*!
* AddTabInt
*/
void __cdecl AddTabInt(Int32Array *tabA, Int32Array *tabB,
Int32Array *tabRes);
/*!
* AddTabInt2
*/
void __cdecl AddTabInt2(int32_t tabA[], int32_t tabB[], int32_t tabRes[],
int32_t *NBelts);
long __cdecl LVDLLStatus(char *errStr, int errStrLen, void *module);
/*
* Memory Allocation/Resize/Deallocation APIs for type 'Int32Array'
*/
Int32Array __cdecl AllocateInt32Array (int32 elmtCount);
MgErr __cdecl ResizeInt32Array (Int32Array *hdlPtr, int32 elmtCount);
MgErr __cdecl DeAllocateInt32Array (Int32Array *hdlPtr);
#ifdef __cplusplus
} // extern "C"
#endif
#pragma pack(pop)
Le code scilab pour l'utiliser :
a=[12,25,24]
b=[2,41,9]
nbelts=3
NomsFonctions=['AddTabInt','AddTabInt2']
link('F:\Prog LabVIEW\Dll labview\dll2\SharedLibTabIntAdd.dll',NomsFonctions,'c')
res = call("AddTabInt2",a,1,"i",b,2,"i",nbelts,4,"i","out",[1,3],3,"i")
disp(res)
résultat :
-->exec('C:\Documents\Scilab\TestDllAddTabInt2.sce', -1)
14. 66. 33.
Au niveau de LabVIEW il faut définir des pointeurs sur les données.
(si quelqu'un est intéressé je peux faire un petit document sur cette configuration)
reste à tester les tableaux de double.
Cordialement
TR
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/enseignement/attachments/20130801/ff7abca0/attachment.htm>
Plus d'informations sur la liste de diffusion enseignement