LabView 3,1: at skabe DLL i C med Dev-C + + og LabView kalder

Hej, jeg vil skrive et simpelt eksempel på en nem måde at oprette opdaget DLL (Dynamic Link Libraries) i C, og så være i stand til at ringe i LabView, eksemplet er en pop over "Hello World". Flere problemer er for mig at skabe en DLL (fordi det kun givet ting er udarbejdet direkte til maskinkode fastsat biblioteker), at kalde en C funktion i LabView, da dette gøres nemt med Call Library Function Node VI.

På National Instruments er tre sider af hvordan man laver et opkald, skal du oprette en C-fil og bygge DLL, jeg lavede de første to trin, men den tredje havde brug for programmet Microsft Visual C + + 6.0, som jeg har, så men at bringe de skridt til at gøre det, jeg forlader siden her i mellemtiden.

Men jeg kan lade dig oprette regler for dine egne biblioteker og køre, men jeg håber du kan lide dette eksempel til at forstå hele dette spørgsmål om DLL. Jeg tror der er tutorials om hvordan man laver DLL med Dev, så du skal ikke foregive, at dette er en, også fordi jeg ikke læst den endnu heller, og så jeg tror jeg har problemer med at kompilere mine egne koder. C-overskrifter. H. Def. Kan du anbefale en anden kommentar på et link for at hjælpe med at skabe DLL i C / C + + let fra ethvert program og derefter nogle, hvis LabView forklarer meget bedre.

  • Trin 1: Har installeret Dev-C + + og skabe DLL

Det eksempel, som jeg sætter er version 4.9.9.2, kan du se, hvad der er tilgængeligt her .

For at oprette en DLL-fil-> navn-> Projekt

Vælg DLL, vælg sprog i C og sætte et projekt navn, f.eks HelloDll. Du skal afslutte projektet to filer automatisk dllmain.cy dll.h. Hvis du udvælges til C + + af disse to arichivos men uden eksemplet med Hello World.

. Arkiv C (jeg har ikke udskiftet eller den første linje):

/ * Erstat "dll.h" med navnet på din header * /
# Include "dll.h"
# Medtag <windows.h>
# Medtag stdio.h
Stdlib.h

Dllimport void HelloWorld ()
{
MessageBox (0, "Hello World fra DLL \ N!", "Hej", MB_ICONINFORMATION);
}

APIENTRY BOOL DllMain (HINSTANCE hInst / * Library eksempel håndtaget. * /,
DWORD grund / * Årsag denne funktion bliver kaldt. * /
Reserveret LPVOID / * Anvendes ikke. * /)
{
switch (årsag)
{
tilfælde DLL_PROCESS_ATTACH:
bryde;

DLL_PROCESS_DETACH tilfælde:
bryde;

DLL_THREAD_ATTACH tilfælde:
bryde;

tilfælde DLL_THREAD_DETACH:
bryde;
}

/ * Returnerer TRUE ved succes og FALSE ved fejl * /
returnere sandt;
}

. H:

# Ifndef _DLL_H_
# Definer _DLL_H_

# Hvis BUILDING_DLL
# Definer dllimport __ declspec (dllexport)
# Else / * Ikke BUILDING_DLL * /
# Definer dllimport __ declspec (startværdi)
# Endif / * Ikke BUILDING_DLL * /

Dllimport void HelloWorld (void);

# Endif / * _DLL_H_ * /

Det er det, nu du behøver ikke at skrive noget, bare gå til køre-> kompilere eller Ctrl + F9 eller ikonfarve cudraditos over venstre, og vi genereret DLL. Måske han beder dig om at holde projektet. Dev og de ​​genererede filer. C. H, DLL'en vil blive gemt i samme mappe, eller hvis du angive dit navn og projekt-> projekt indstillinger-> konstruktion du kan ændre dem.

  • Trin 2: Opret VI

Du tager en ny VI, gå til blokdiagram, og placeres i Call Library Function Node VI, kan findes i conectivity-> biblioteker og eksekverbare. Og dette, er det så let, men godt for RUN arbejde better'll sat i en struktur i ansigtet hvis det er sandt, en knap-styret boolean, og alle inden for en løkke løkke, der kan styres også stoppe med samme knap.

  • Trin 3: Call Library Function Node Udfyld

Det gives to gange sjette eller anden knap sæt:

- I biblioteket eller stien er sat stien til den DLL

- Afhængig af HelloWorld, og det vil skrive det (men det går dårligt tror jeg)

- Kaldekonventioner i C vi

- Parameter tomrum, som vi skrev selv (dvs. ikke returnere noget)

- Type ugyldig.

Og det er det, nedenfor er i form af funktionen void HelloWorld (void) Hvis det ikke var en funktion af type VI returnere intet ville ændre den måde, du kan tilslutte indgange eller udgange.

Det er over-run og lykke.

Blogger Indlæg Facebook WordPress E-mail Del
Opret PDF    Send artiklen i PDF-format   

17 Kommentarer til "LabView 3,1: at skabe DLL i C med Dev-C + + og LabView opkald"

  1. yelinna siger:

    Hej
    Jeg gør dem dlls med TurboExploer http://www.turboexplorer.com/ som er gratis, men vejer 200 Megs. Du kan også gøre med de gratis compiler Borland tilbud (på 5,5).

    Greetings!

  2. Cristina siger:

    mange tak! Jeg har været virkelig nyttigt.

  3. Cesar Jimenez siger:

    Hello at sådanne!

    Jeg ønsker at tilslutte en Canon Power skud G9 cmaara og få billedet gennem et vindue af LabVIEW, tilsyneladende Jeg har brug for nogle dll-filer til denne type intefaces .... Kan du hjælpe eller give mig nogle tips.

    Cesar Jimenez Calvillo.

  4. weeberp siger:

    Hej Cæsar.
    Det første jeg ser er lettere at dit kamera var nødt til at se det som et webcam software eller stik kan ses i "Denne computer" som webcam, hvis så sikker på, du kan bruge postnummeret? Labview Vision 0,5: kode simpel USB-kamera
    og indekset angiver navnet på kameraet vælges.
    Hvis ikke, søger ingen software eller ikke virker din USB-kabel (der sikkert forbinder vel) en generisk driver, der vil tjene som et webcam, eller et program til at importere billeder direkte fra kameraet ... Jeg ved ikke, sagen er, at hvis du ser video via pc'en med det sikkert, at der er opført på listen.
    Jeg tror ikke, det nemmere at finde (meget mindre gør) en DLL, der indeholder en funktion, der kalder billedet sekvens, der fungerer som en video. Hvis du finder som bekendt gennem funktionskald node (finde ud af, hvad slags data, skal du kalder funktionen eller du tilbage, hvis array, hvis række pointer, etc ... at definere opkaldet).

  5. Uyuni Kenjin Joe siger:

    Nice-nyt, som at bruge biblioteket med det samme dev med en co lengauje C + +

  6. weeberp siger:

    Nå, som enhver bibliotek, sat # include bibliotek (mellem trekant og citater er baseret på placeringen af ​​filen, hvis standardmappen eller ej), og allerede ringe til din funktion i programmet.
    Derudover har jeg fundet, at sætte kun. C foran den funktion, vi ønsker at eksportere, når vi definerer de funktioner, i første omgang, nøgleordet __ declspec (dllexport) allerede er offentlig funktion, og derefter givet til knappen for at oprette dll-program Vi er utlizando til kompileringen. Dette søgeord kan være lidt anderledes Jeg tror, ​​fra det ene program til et andet, men Google er hurtig.

  7. Ray siger:

    Hey hey jeg kan gøre et program bygherre og bruge det som du beskriver i LabVIEW 6,1? Jeg nødt til at gøre et program i LabVIEW, men jeg finder det mere kompliceret, jeg er vant til altid at bruge C-sproget

    Ville sætte stor pris på mig ud af det spørgsmål!
    På forhånd tak!

  8. weeberp siger:

    Du kan bruge et program til at lave DLL, hvis du ved, og hvad du kan gøre. For at bevise, om jeg sætter offentlige funktioner, hvordan jeg bruger det lille program Dependecy Walker.
    Og hvis i Labview 6,1 kan gøre det samme for at kalde en dll, jeg tror, ​​det ændrer den måde, du gør, og det sted siden version 7, men du har Call funktion Node Libray ens. Også undgår kodeksen interface Node (CIN), som også tjener til at udføre kode, men det faktum, at uanset hvor meget jeg læser, jeg har ikke enterder hvordan det fungerer.
    Husk også, at du kan bruge C-kode eller sprog på samme måde gør struktureret node struktur, men kunne ikke sættes i her omfatter eller funktionskald ... Og med MathScrpt Node Matlab sprog, men for det jeg tror, ​​vi har brug for LabView der omfatter en fuldstændig ...
    godt her er der en manual på engelsk at kalde ekstern kode i LabVIEW jeg 6,0 og 6,1, bruger vi knude, som du sagde før, men i en længere, også skabe dll fra begyndelsen ...
    http://www.ni.com/pdf/manuals/370109a.pdf

  9. martin siger:

    Jeg kunne du forklare lidt bedre, da jeg kan gå fra C + + sproget til LabVIEW?

  10. weeberp siger:

    Pass går ikke bestået, kan du føje kode tilføjes.
    - Hvis der er funktioner, eller hopper, eller noget usædvanlige strukturer kun, hvis .. andet .. for ... så Formula Node.
    - Hvis der er funktioner og et mere omfattende program skaber en DLL-fil, og kalder det med Call funktion Node Libray (hjælperen Værktøj »Import» Shared Library (DLL) kommer i handy.).
    Kode interface Knude ved ikke, hvordan det bruges, her er et eksempel: Eksempel på CIN med LabVIEW og MS Visual C + + 5.0 .
    Ekstern Kode til LabVIEW - CIN / DLL - Udgangspunkt
    -. MathScript Node matlab koden Mit kontor, skal du have Matlab.
    - Vil du have mere C? Jeg tror pasate til LabWindows CVI.

  11. Federico siger:

    hej exite ønskede at vide, om muligheden for anden vej rundt, som jeg er, at hvis jeg kan få, hvad jeg gør i Labview til C. mit spørgsmål er, er, at hvad jeg gør i Labview kan jeg ikke bruge det i en mikro

  12. weeberp siger:

    Nu det spørgsmål, jeg har jeg gjort flere gange, men hvad jeg har samlet indtil videre, efter linje FPGA er, at jeg ikke tænke.
    Sådan planlægges en FPGA hvis alt LabView program og givet at udarbejde en fil til at konvertere VHDL eller en, der accepterer FPGA (så nemt som for NXT), men gælder kun for 4 eller 5 modeller og FPGA Modulet koster en masse penge. Jeg gætte på mikro-versionen af ​​ARM ¿? Jeg husker ikke vil gøre det samme.
    Så meget som du kan få en boolean defineret, klynge ... i C. dvs hvis du tilslutter en klynge (for eksempel at have flere ting og komplicerede) til et opkald biblioteksfunktion Node (du først nødt til at gå ind og sat i de parametre, som type Adpat Type), du giver til den anden knappen for at se de muligheder, de har VIS og du rammer Opret. C fil. Jamen jeg siger dig kun få starten med en fil header. C at fylde hele din kode.
    Som det er altid mulighed for at LabView CVI, men det er sådan at programmere i C (ikke visuelle) og kalder LabVIEW fra biblioteker til grænseflade knapper subVI.

  13. Fabian siger:

    Hej,
    Jeg er nybegynder i DLL-spørgsmål, men mon ikke i form af Matlab MEX-filer, har jeg forstået, svarer til den DLL, kan jeg også bruge dem i LabVIEW. Det vil sige, jeg har en kode C q er kompleks og er blevet brugt i Matlab som MEX-filer, og jeg bruger det i LabVIEW. Ikke hvis det er muligt, eller hvis jeg skulle bedre konvertere denne kode til en C DLL med de metoder, du har foreslået.

  14. weeberp siger:

    For indtil nu aldrig havde læst noget om dll-filer, som Matlab MEX kaldes. men ser man på NI.com med søgeordene "matlab mex" har forladt mig følgende:

    * VI ​​til mex med NI LabVIEW Math interface Toolkit Calling LabVIEW VIS fra The MathWorks Inc. MATLAB ®-software miljø

    * Her mener jeg, der gør forbindelsen mellem Simulink og LabVIEW NI LabVIEW Simulation interface Toolkit

    Hvis du vil bruge MEX i LabView har ikke efterladt noget så hurtigt, og jeg aldrig gik på at læse at forbinde med LabVIEW biblioteker, men selvfølgelig havde jeg aldrig gået anderledes, eller fra normale AutoCAD-filer ... Så hvis du kan kompilere C ethvert program og gør DLL er en løsning.
    *

  15. Fernando_H siger:

    God periode derefter, som formår at skabe den dll kan påberåbes i LabVIEW ligegyldigt, hvilken compiler du bruger, det åbner en verden af ​​muligheder, men ser også en verden af ​​problemer, især når, hvad vi gør, er mere end "hej verden". Jeg har arbejdet hårdt for at bruge DLL'er indsamlet fra kunstige neurunales netværk biblioteker til brug i LabVIEW.
    Første problem, datatyper, når du skal bruge bibliotekerne dll sendes som parametre komplekse datatyper som store strukturer C + +, opgaven er en smule sørgeligt at håndtere lidt med disse hindringer, skabe linkfunktioner i C + +, der kan håndtere datastrukturer C + + og LabVIEW gøre dem mere spiselige.
    For det andet problem, hukommelse ledelse, til tider, især når du begynder at programmere, du har tendens til at tænke "hvis du har kompileret er fordi det godt," men hvis du opretter en sløjfe i LabVIEW, hvor en funktion kaldes tusindvis af gange i sekundet , ligger i en DLL, og hvis denne funktion ikke gør en korrekt brug af hukommelse, kan du blot returnere systemet ustabilt. Det er så efter at være glad for at se, hvordan RNA fungerede perfekt, faldt jeg i et par sekunder decepcioncuando så alt og stoppet som computeren blev langsom. Jeg tjekkede al den kode, C + +, destructor, konstruktører, såkaldte nye og slette, men fandt ingen problemer.

  16. weeberp siger:

    Jeg er enig med dig, sandheden da det ikke få data til en dll i LabView, hvis du tilbringer med den størrelse, sigter mod noget andet ... pludselig gør LabVIEW crack og lukker pludseligt. Og langsomt klar, i det mindste 8.6.1.

Efterlad et svar

(påkrævet)

(påkrævet)

CAPTCHA Image
Opdater billede
*