[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