LabView 3,1: skapa DLL i C med Dev-C + + och LabView ringa
Hej, jag kommer att skriva ett enkelt exempel på ett enkelt sätt att skapa upptäcktes DLL (Dynamic Link Libraries) i C och sedan kunna ringa i LabVIEW, är exemplet en pop på "Hello World". Mer problem är för mig att skapa en DLL (eftersom det enda som ges sammanställs direkt till fasta maskin kodbibliotek), att kalla en C-funktion i LabVIEW, eftersom detta sker enkelt med Call bibliotek funktion Node VI.
På National Instruments är tre sidor om hur man gör ett samtal, skapa en C-fil och bygga DLL, gjorde jag de två första stegen, men det tredje behövde programmet Microsft Visual C + + 6.0 som jag har så men att få ut stegen för att göra så, lämnar jag sidan här under tiden.
Men jag kan låta dig skapa regler för dina egna bibliotek och köra, men jag hoppas du gillar det här exemplet för att förstå hela denna fråga om DLL. Jag antar att det finns tutorials om hur man gör DLL med Dev, så att inte låtsas att detta är en, också för att jag inte läst den än heller, och så jag antar att jag har problem med att kompilera mina egna koder. C rubriker. H. Def. Kan du rekommendera någon annan kommentar på en länk för att skapa DLL i C / C + + lätt från alla program och lite till om LabView förklarar mycket bättre.
- Steg 1: Har installerat Dev-C + + och skapa DLL
Det exempel som jag lägger är version 4.9.9.2, kan du se vad som finns tillgängligt här .
För att skapa en DLL-fil-> namn-> Project
Välj DLL, välj språk i C och sätta ett projektnamn som HelloDll. Du måste avsluta projektet två filer automatiskt dllmain.cy dll.h. Om valts för C + + på dessa två arichivos men utan exemplet Hello World.
. Archive C (jag har inte ersätts eller den första raden):
/ * Ersätt "dll.h" med namnet på din header * /
# Include "dll.h"
# Include <windows.h>
# Include stdio.h
Stdlib.hDLLImport void HelloWorld ()
{
MessageBox (0, "Hello World från DLL \ N", "Hej", MB_ICONINFORMATION);
}APIENTRY BOOL DllMain (HINSTANCE hInst / * bibliotek exempel handtaget. * /,
DWORD Orsak / * Anledningen till att denna funktion anropas. * /
Reserverad LPVOID / * Används inte. * /)
{
switch (orsak)
{
Vid DLL_PROCESS_ATTACH:
break;DLL_PROCESS_DETACH fall:
break;DLL_THREAD_ATTACH fall:
break;Vid DLL_THREAD_DETACH:
break;
}/ * Returnerar TRUE vid framgång, FALSE vid fel * /
återgå SANT;
}
. H:
# Ifndef _DLL_H_
# Define _DLL_H_# Om BUILDING_DLL
# Define DLLImport __ declspec (dllexport)
# Else / * Ej BUILDING_DLL * /
# Define DLLImport __ declspec (dllimport)
# Endif / * Ej BUILDING_DLL * /DLLImport void HelloWorld (void);
# Endif / * _DLL_H_ * /
Det är allt, nu behöver du inte skriva något, bara gå att köra-> compile eller Ctrl + F9 eller på ikonen cudraditos färg ovan till vänster och vi genererade DLL. Kanske han ber dig att hålla projektet. Dev och genererade filerna. C. H, DLL sparas i samma mapp eller om du anger ditt namn och projekt> Projekt alternativ-> konstruktionen kan du ändra dem.
- Steg 2: Skapa VI
Du tar en ny VI, gå till blockschemat och placeras i Call bibliotek funktion Node VI, kan hittas i conectivity-> bibliotek och körbara filer. Och detta är det så enkelt, men bra för RUN arbete better'll sätta i en struktur i ansiktet om detta är sant, en knapp kontrollerad boolean, och alla inom en slinga slinga som kan kontrolleras också sluta med samma knapp.
- Steg 3: Ring bibliotek funktion Node Fyll
Det ges två gånger per 1/6 eller andra knappen set:
- I biblioteket eller sökväg ställ in sökvägen till DLL
- Beroende på HelloWorld och det kommer att skriva det (men det går dåligt tror jag)
- Ringa konventioner i C har vi
- Parameter tomrum som vi skrev själva (dvs. inte återvända något)
- Typ ogiltiga.
Och det är det, nedan är formen av funktionen void HelloWorld (void); Vore det inte en funktion av typ VI återvända ingenting skulle förändra sättet du kan ansluta in-eller utgångar.
Det är över-run och lycka.



















































Hallå
Jag gör dem DLL-filer med TurboExploer http://www.turboexplorer.com/ som är gratis, men väger 200 meg. Du kan också göra med de fria kompilatorn Borland anbud (i 5,5).
Hälsningar!
Tack så mycket! Jag har varit väldigt nyttigt.
Hej sådan!
Jag vill ansluta en kanon effekt skott G9 cmaara och få bilden genom ett fönster på LabVIEW, uppenbarligen behöver jag några dll-filer för den här typen av intefaces .... Kan ni hjälpa eller ge mig några tips.
Cesar Jimenez Calvillo.
Hej Caesar.
Det första jag ser är lättare inte kameran var tvungen att se det som en webbkamera programvara eller plug kan ses i "Min dator" som webbkamera, så att du kan använda postnummer? Labview Vision 0,5: code enkel USB-kamera
och indexet indikerar namnet på kameran för att väljas.
Om inte, vill ingen mjukvara eller inte fungerar USB-kabel (som säkert kopplar också) en generisk drivrutin som kommer att fungera som en webbkamera, eller ett program för att importera bilder direkt från kameran ... jag vet inte, det gäller är att om du ser video via datorn med det säkert som visas i listan.
Jag tror inte det blir lättare att hitta (mycket mindre göra) en dll som innehåller en funktion som anropar bilden sekvens som fungerar som en video. Om du hittar när du vet genom funktionsanropet noden (ta reda på vilken typ av data du måste anropa funktionen eller du tillbaka, om matris, Om matris pekare, osv ... för att definiera samtalet).
Trevlig ny, som att använda biblioteket med samma dev med en co lengauje c + +
Tja, precis som alla bibliotek, satte # include biblioteket (mellan triangeln och citat baserat på platsen för filen, om standardmappen eller inte) och redan, ring din funktion i programmet.
Dessutom har jag funnit att sätta endast. C framför funktionen vi vill exportera, när vi definierar funktionerna först, är nyckelordet __ declspec (dllexport) redan offentliga uppdrag, sedan till knappen för att skapa DLL-program Vi är utlizando för sammanställning. Detta sökord kan skilja sig något tror jag från ett program till en annan, men Google är snabb.
Hej hej jag kan göra ett program byggare och använda det som du beskriver i LabVIEW 6,1? Jag måste göra ett program i LabVIEW, men jag tycker det är mer komplicerat jag är van att alltid använda C-språket
Skulle uppskatta mig ur frågan!
Tack på förhand!
Du kan använda alla program för att göra DLL, om du vet och vad du kan göra. För att bevisa om jag lägger offentliga funktioner hur jag använder den lilla programmet Dependecy Walker.
Och om i LabVIEW 6,1 kan göra samma sak att ringa en dll, jag tror att det förändrar sättet du gör och plats sedan version 7, men du har Funktionen Ringa Node Bibliotek lika. Även undviker koden Interface Node (CIN), som också tjänar till att köra kod, men det faktum att hur mycket jag läste att jag inte har enterder hur det fungerar.
Kom också ihåg att du kan använda C-kod eller språk på samma sätt gör strukturerad nod struktur, men kunde inte sätta in här innehåller eller funktionsanrop ... Och med MathScrpt Nod Matlab språk, men för detta jag tror att vi behöver LabView som innehåller en fullständig ...
Väl här är en manual på engelska att ringa extern kod i LabVIEW I 6,0 och 6,1, använder vi noden som du sa tidigare men i ett längre även skapa dll från början ...
http://www.ni.com/pdf/manuals/370109a.pdf
Jag kan ni förklara lite bättre när jag kan gå från C + + språk LabVIEW?
Pass inte passera förbi, kan du lägga till kod tillsätts.
- Om det finns funktioner, eller hopp, eller något ovanliga strukturer endast om .. annars .. för ... sedan Formel Node.
- Om det finns funktioner och en mer detaljerad Programmet skapar en DLL och kallar den med Funktionen Ringa Node Bibliotek (de hjälpverktyg »Import» Shared Library (DLL) kommer väl till pass.).
Kod Interface Node inte vet hur den används, här är ett exempel: Exempel på CIN med LabVIEW och MS Visual C + + 5,0 .
Extern Kod för LabVIEW - CIN / DLL - startpunkt
-. MathScript Node matlab-kod Mitt kontor, måste du ha Matlab.
- Vill du ha mer C? Jag antar att pasate till LabWindows CVI.
hej exite ville veta om möjligheten att tvärtom, som jag är att om jag kan få vad jag gör i LabVIEW till C. min fråga är är det vad jag gör i LabVIEW kan jag göra använda den i en mikro
Nu är frågan jag har jag gjort flera gånger, men vad jag har samlat hittills, efter raden av FPGA är att jag tror inte.
Om du vill schemalägga en FPGA om allt LabView-program och ges att kompilera en fil att konvertera VHDL eller en som accepterar FPGA (lika lätt som för NXT), men gäller endast för 4 eller 5 modeller och FPGA Modulen kostar en massa pengar. Jag antar att för mikro versionen av ARM ¿? Jag minns inte kommer att göra detsamma.
Så mycket som du kan få en boolesk definierad kluster ... i C. dvs om du ansluter ett kluster (t ex med fler saker och komplicerade) i ett samtal bibliotek funktion Node (först måste du gå in och sätta i de parametrar som typ Adpat typ) som du ger till den andra knappen för att visa alternativen de har VIS och du träffar på Skapa. C fil. Tja Jag säger att du bara får börja med en filhuvudet. C för att fylla hela din kod.
Som alltid möjlighet att LabView CVI, men det är hur man programmerar i C (inte visuell) och ringer LabVIEW från bibliotek till gränssnitt knappar subVI.
Hej,
Jag är nybörjare på DLL-frågor, men jag undrar om det gäller Matlab MEX-filer, har jag förstått liknar DLL, kan jag använda dem också i LabVIEW. Det vill säga, jag har en kod C q är komplex och har använts i Matlab som MEX-filer och jag använder den i LabVIEW. Inte om möjligt eller om jag ska bättre konvertera denna kod till en C DLL med metoder som du har föreslagit.
För fram tills nu hade aldrig läst något om dll-filer som Matlab MEX kallas. men titta på NI.com med sökorden "matlab Mex" har lämnat mig följande:
* VI mex med NI LabVIEW Math Interface Toolkit Calling LabVIEW VIs från The MathWorks Inc. MATLAB ®-programvara miljön
* Här tror jag det gör kopplingen mellan Simulink och LabVIEW NI LabVIEW Simulation Interface Toolkit
För att använda mex i LabVIEW har inte lämnat något så snabbt och jag gick aldrig på att läsa för att ansluta med LabVIEW bibliotek, men naturligtvis har jag aldrig hade gått på annat sätt, eller från vanliga AutoCAD-filer ... Så om du kan kompilera C alla program och göra DLL-filen är en lösning.
*
[...]
Bra period därefter som lyckas skapa DLL åberopas i LabVIEW ingen roll vilken kompilator du använder, öppnas en värld av möjligheter, men också se en värld av problem, särskilt när det vi gör är mer än "Hello World". Jag har arbetat hårt för att använda DLL är sammanställd från artificiella neurunales nätverk bibliotek för användning i LabVIEW.
Första problemet, datatyper, när du behöver biblioteken dll som skickas som parametrar komplexa datatyper som stora konstruktioner C + +, är uppgiften lite beklämmande att hantera lite med dessa hinder, skapa länkar fungerar i c + +, som kan hantera datastrukturer C + + och LabVIEW göra dem mer ätbart.
Andra problemet, minneshantering, ibland, speciellt när du börja programmera, tenderar man att tänka "om du har sammanställt beror detta väl", men om du skapar en slinga i LabVIEW där en funktion anropas tusentals gånger per sekund , inrymt i en dll och om det fungerar inte att göra en korrekt användning av minne kan du enkelt återställa systemet instabilt. Det är så efter att ha glada att se hur RNA fungerade perfekt, föll jag på några sekunder decepcioncuando såg allt och slutade som datorn blev långsam. Jag kollade all kod c + +, destruktorer, konstruktörer, så kallade nya och ta bort, men fann inga problem.
Jag håller med dig, sanningen eftersom det inte få data till en dll i LabVIEW, om du tillbringar med storleken, siktar på något annat ... plötsligt gör LabVIEW spricka och stänger plötsligt. Och långsamt klart, åtminstone i 8.6.1.