[Enseignement] Dll acquisition (DAQ) labview -> scilab

Bruno JOFRET bruno.jofret at scilab-enterprises.com
Mer 31 Juil 15:04:38 CEST 2013


Bonjour,

Je vous joins un code Scilab qui fonctionne, avec un morceau de C 
compilé a la volée par Scilab.
Si 'res' est votre variable de retour dans AddInt, alors il est en 
position 3 dans la séquence d'appel et doit
se trouver après le "out" dans l'appel a call.

Bonne reception

//=================== Code Scilab ======================

cd TMPDIR;
//Code C
f1=['#include <stdint.h>'
     'void AddInt(int32_t *a, int32_t *b, int32_t *res)'
     '{'
     ' *res = *a + *b;'
     '}'];

//Ecriture dans un fichier
mputl(f1, 'AddInt.c')
// Creation de la librairie en code Scilab
ilib_for_link('AddInt', 'AddInt.c',[],"c")
// Chargement de la librairie
exec loader.sce

a = 2;
b = 4;
// Entrees:
// a est un entier 'i' a la position 1
// b est un entier 'i' a la position 2
// Sorties:
// res est un entier 'i' a la position 3 de taille 1x1
res = call("AddInt",a,1,"i",b,2,"i","out",[1,1],3,"i");
disp(res)

//===================================================

On 07/30/2013 12:52 PM, Thierry ROYANT wrote:
> Je souhaite développer une partie acquisition de données (DAQ) en 
> utilisant une Dll créée avec LabVIEW.
> Je commence au plus simple, en essayant d'utiliser une fonction 
> d'addition de 2 entiers, sans succès :
> le chargement de la bibliothèque semble ok (link)
> mais blocage au niveau de l'appel de la fonction (call)
> le protype de ma fonction est :
>
> void __cdecl AddInt(int32_t *a, int32_t *b, int32_t *res);
>
> si quelqu'un a déjà fait cette manip?
> peut-être est-ce un simple problème de paramétrage de la fonction call.
> exemples de retours :
> 1°)
> -->call('AddInt',a,b,res)
> Warning !!!
> Scilab has found a critical error (EXCEPTION_ACCESS_VIOLATION)
> with "call" function.
> Save your data and restart Scilab.
>  ans  =
>     5.
> Attention: problème avec la pile ... nettoyé.
> 2°)
> -->call('AddInt',a,1,"i",b,2,"i",res,3,"i","out",[1,1],4,"i")
>  ans  =
>   - 11.
>  le résultat n'est pas correct (-11 tout le temps, quels que soient a 
> et b)
> merci d'avance
> TR
>
>
> _______________________________________________
> enseignement mailing list
> enseignement at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/enseignement


-- 
Bruno JOFRET
Software Architect

Scilab Enterprises
143bis rue Yves Le Coz - 78000 Versailles, France
Phone: +33.1.80.77.04.69
http://www.scilab-enterprises.com

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


Plus d'informations sur la liste de diffusion enseignement