[Enseignement] Dll acquisition (DAQ) labview -> scilab : autres DLL d'acquisition

Pierre DIEUMEGARD pierre.dieumegard at ac-orleans-tours.fr
Jeu 1 Aou 09:55:47 CEST 2013


Je me permets d'intervenir dans cette discussion, même si ce n'est pas
le sujet principal.
Depuis de nombreuses années, je développe des pilotes de type
bibliothèques dynamiques (dll de windows, so de linux)  pour des
appareils et interfaces de mesure, et des logiciels pour utiliser ces
pilotes. C'est disponible sur mon site http://sciencexp.free.fr.
Scilab ne peut pas utiliser directement ces pilotes, mais on peut faire
un adaptateur (une dll spécifique de Scilab, qui est capable d'échanger
avec les pilotes en question), voir
http://sciencexp.free.fr/sciencexp2011/documents/programmation/appilotes/appilotes_win_scilab.zip 


En espérant que ça puisse être utile à quelqu'un

Pierre Dieumegard

La 01/08/2013 09:24, Thierry ROYANT skribis:
>
> 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
>
>  
>
>
>
> _______________________________________________
> enseignement mailing list
> enseignement at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/enseignement

-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/enseignement/attachments/20130801/04493c52/attachment.htm>


Plus d'informations sur la liste de diffusion enseignement