Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Besoin d'aide : DLL et Labview




  1. #1
    SportsEngine

    Post Besoin d'aide : DLL et Labview

    Bonjour,

    Pour un projet j'ai besoin d'écrire une DLL pour utiliser avec Labview.
    Le but étant de commander un microcontrôleur PIC24 (Microchip) en USB.

    Je développe la DLL sous Visual Studio 8.
    Labview est en version student 2011.
    OS : Windows 7 64 bits.

    Pour le moment dans la DLL j'ai une fonction qui écrit une valeur de 32 bits et une autre qui lit cette valeur en utilisant "return".
    Cela fonctionne très bien (j'allume une LED en fonction de la valeur et je relis correctement la valeur).

    Là où ça se complique, c'est que dans la vraie utilisation j'ai besoin d'utiliser le "return" pour le retour d'erreur, et j'ai 2 variables 32 bits à retourner.

    Dans un premier temps je pensais en traiter qu'une comme précédemment pour le debug. Pour cela je pensais donc faire passer la variable par pointeur en tant qu'arguments de ma fonction, mais Labview étant une merde sans nom, j'ai des soucis de type qui m'empêchent de faire ce que je veux aussi simplement...

    Voici ce que j'ai dans ma DLL pour la réception de la valeur 32 bits :

    Code:
    __declspec(dllexport) short __cdecl GetLedValue (unsigned long * ledValue)
    {
    send_buf[0] = GET_LED_VAL; // 0x30 : commande envoyée au µControleur
    send_buf[1] = STOP_BYTE; // '#' : caractère de terminaison
    
    if (usb_interrupt_write(dev, EP1_OUT, send_buf, 2, 5000)>0)
    {
    if (usb_interrupt_read(dev, EP1_IN, receive_buf, 64, 5000)>0)
    {
    *ledValue = (unsigned long*)(receive_buf);
    return 0;
    }
    }
    return 0;
    }
    Je sais que le "*ledValue = (unsigned long*)(receive_buf);" ne marche pas mais c'est pour illustrer ce que je veux faire.

    Dans Labview je veux importer la DLL et définir ledValue comme SORTIE pour l'afficher sur un indicateur.

    à savoir que lorsque j'utilise "return" ça fonctionne :

    Code:
    __declspec(dllexport) unsigned long __cdecl GetLedValue (void)
    {
    send_buf[0] = GET_LED_VAL; // 0x30 : commande envoyée au µControleur
    send_buf[1] = STOP_BYTE; // '#' : caractère de terminaison
    
    unsigned long ledValue=0;
    
    if (usb_interrupt_write(dev, EP1_OUT, send_buf, 2, 5000)>0)
    {
    if (usb_interrupt_read(dev, EP1_IN, receive_buf, 64, 5000)>0)
    {
    ledValue = atol(receive_buf);
    return ledValue;
    }
    }
    return 0;
    }
    Merci beaucoup

    -----


  2. Publicité
  3. #2
    SportsEngine

    Re : Besoin d'aide : DLL et Labview

    Personne ne peut m'aider?

  4. #3
    SportsEngine

    [RESOLU] Re : Besoin d'aide : DLL et Labview

    Bon en fait il suffisait de dire
    Code:
    *ledValue=_atoi64(receive_buf);
    return 0;
    Je l'avais déjà fait une fois mais pour une raison inconnue ça marchait pas, en faisant un clean et rebuild de la DLL, et en lançant un nouveau projet Labview ça tourne.


  5. #4
    Jack

    Re : [RESOLU] Re : Besoin d'aide : DLL et Labview

    Merci pour ton retour d'information.

Sur le même thème :

Discussions similaires

  1. Aide sur LabView
    Par cubitus_54 dans le forum Électronique
    Réponses: 2
    Dernier message: 21/10/2013, 20h54
  2. Besoin d'aide Labview 8.6 : acquisition de donné oscilloscope
    Par isabelle63 dans le forum Électronique
    Réponses: 0
    Dernier message: 20/05/2010, 10h25
  3. Besoin d'aide sur LabView 8.6
    Par isabelle63 dans le forum Électronique
    Réponses: 1
    Dernier message: 22/04/2010, 12h26
  4. logiciel labview..! besoin d'aide.
    Par dona85 dans le forum Électronique
    Réponses: 1
    Dernier message: 26/05/2009, 20h59
  5. Aide sous Labview
    Par &Tom dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 17/08/2008, 16h39