[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