Labview 3.1: crear DLL en C con Dev-C + + e Labview chamar
Ola, eu vou escribir un exemplo sinxelo de un xeito doado de crear DLL descuberto (Dynamic Link libraries) no C e, a continuación, ser capaz de chamar en Labview, o exemplo é un pop de "Ola Mundo". Máis problemas para min e para crear unha DLL (porque o único dato é feita directamente para as bibliotecas de código de máquina fixos), para chamar unha función C en Labview, como iso é feito facilmente coa chamada Biblioteca de Funcións no VI.
Sobre os instrumentos nacionais son tres páxinas de como facer unha chamada, cree un arquivo C e crear a DLL, fixen as dúas primeiras etapas, pero o terceiro necesario o programa Microsft Visual C + + 6.0 que eu teño, así aínda traer á tona os pasos para facelo, deixo a páxina aquí no mesmo período.
Con todo, podo deixalo crear regras para as súas propias bibliotecas e executar, pero eu espero que lle gusta deste exemplo para entender toda esta cuestión da DLL. Eu creo que hai tutoriais sobre como facer DLL con Dev, non finxa que esta é unha, porque eu non lin aínda quere e por iso eu creo que teño problemas para compilar os meus propios códigos. Cabeceiras C. H. Fixar Pode recomendar calquera outro comentario sobre unha ligazón para axudar a crear DLL en C / C + + facilmente desde calquera programa e, a continuación, algúns se Labview explica moito mellor.
- Paso 1: Ter instalado o Dev-C + + DLL e crear
O exemplo que eu coloque é a versión 4.9.9.2, podes ver o que está dispoñible aquí .
Para crear un arquivo DLL-> nome-> Project
Escolla DLL, seleccione o idioma en C e poñer un nome HelloDll tal proxecto. Ten que saír do proxecto dous arquivos automaticamente dllmain.cy dll.h. Se é seleccionado para C + + estes dous arichivos pero sen o exemplo Ola Mundo.
. Arquivo C (non substituído ou a primeira liña):
/ * Substituír "dll.h" co nome do seu cabeceira * /
# Include "dll.h"
# Incluír <windows.h>
# Incluír stdio.h
Stdlib.hDLLImport baleiro HelloWorld ()
{
MessageBox (0, "Ola Mundo de DLL \ n", "Hi", MB_ICONINFORMATION);
}APIENTRY BOOL DllMain (HINSTANCE hInst / * identificador de instancia Biblioteca. * /,
DWORD razón / * Razón esta función está a ser chamada. * /
Reservados LPVOID / * Non utilizar. * /)
{
switch (razón)
{
DLL_PROCESS_ATTACH caso:
romper;DLL_PROCESS_DETACH caso:
romper;DLL_THREAD_ATTACH caso:
romper;caso DLL_THREAD_DETACH:
romper;
}/ * Devolve TRUE en éxito, FALSE en falla * /
voltar TRUE;
}
A H.:
# Ifndef _DLL_H_
# Definir _DLL_H_# Se BUILDING_DLL
# Definir DLLImport declspec __ (dllexport)
# Else / * Non BUILDING_DLL * /
# Definir DLLImport declspec __ (dllimport)
# Endif / * Non BUILDING_DLL * /DLLImport baleiro HelloWorld (void);
# Endif / * _DLL_H_ * /
É iso aí, agora non é preciso escribir nada, só tes que ir a executar-> compilación ou Ctrl + F9 ou cudraditos icona de cor por enriba de esquerda e que xerou a DLL. Quizais pídelle para manter o proxecto. Dev e os arquivos xerados. C. H, a DLL serán gardados na mesma carpeta ou se indicar o seu nome e proxecto-> opcións de proxecto-> construción pode cambia-las.
- Paso 2: Crear o VI
Toma un novo VI, vaia para o diagrama de bloques, e colocado na chamada Biblioteca de Funcións no VI, que se atopa en liña-> bibliotecas e executables. E iso, é tan fácil, pero bo para o traballo better'll Run colocado nunha estrutura na cara se é certo, un booleano botón controlado, e todo dentro dun loop loop que pode ser controlado tamén parar con o mesmo botón.
- Paso 3: Call Nó Biblioteca de Funcións Encha
É dada dúas veces un conxunto botón sexta ou segunda:
- En nome da biblioteca ou camiño está definido o camiño para a DLL
- Dependendo do HelloWorld e vai gravala-lo (aínda que vai mal creo)
- Convenios de chamada en C nós
- Parámetro baleiro que escribiu a nós mesmos (ou sexa, non retorna nada)
- O tipo nulo.
E iso, a continuación está a forma da función void HelloWorld (void); Se non fose unha función do tipo VIN non voltar nada cambiaría o xeito no que se pode conectar entradas ou saídas.
É sobre o funcionamento e sorte.



















































Ola
Fago-lles as DLLs con TurboExploer http://www.turboexplorer.com/ que é libre, pero pesa 200 megas. Tamén pode facer coas ofertas libres do compilador Borland (a 5,5).
Saúdos!
moitas grazas! Eu teño sido moi útil.
Ola que tal!
Quero poñer en marcha un poder canon G9 cmaara tiro e obter a imaxe a través dunha fiestra do Labview, aparentemente eu teño algunhas dll para este tipo de intefaces .... Pode axudar ou me dar algúns consellos.
César Jiménez Calvillo.
Ola César.
O primeiro que vexo é máis facilmente a súa cámara non tiña que velo como un programa de webcam ou a ficha pode ser visto en "Meu Computador" como cámara web, se así se pode usar o código postal? Labview Visión 0.5: código cámara USB simple
eo índice indica o nome da cámara a ser seleccionado.
Se non, ningún software ou non funciona o cable USB (que seguramente se conecta ben) busca un controlador xenérico que servirá como unha webcam, ou un programa para descargar fotos directamente da cámara ... Eu non sei, o caso é que se ver o vídeo a través do PC coa certeza de que está listado na lista.
Eu non creo que sexa máis fácil de atopar (e moito menos facer) unha dll que contén unha función que chama a secuencia de imaxes que actúa como un vídeo. Se cre que sabe a través do nodo chamada de función (descubrir que tipo de datos ten que chamar a función ou de volta, a matriz, se punteiro do array, etc ... para definir a chamada).
Bonito, como o uso da biblioteca co dev mesmo cun lengauje co C + +
Ben, como calquera biblioteca, coloque # include biblioteca (entre comiñas triángulo e con base na localización do ficheiro, se o cartafol por defecto ou non) e xa, chamar a función no programa.
Ademais eu descubrir que poñendo só o C. Na fronte da función que queremos exportar, cando definimos as funcións en principio, a palabra chave __ declspec (dllexport) xa é función pública, así dado ao botón para crear programa de dll estamos utlizando para a compilación. Esta palabra clave pode ser un pouco diferente, eu creo dun programa a outro, pero Google é rápido.
Hey hey o que podo facer un constructor de programa e usalo como describe en Labview 6.1? Eu teño que facer un programa en Labview pero creo que é máis complicado que eu estou acostumado a sempre utilizar a linguaxe C
Apreciar moito me fóra de cuestión!
Grazas anticipadamente!
Podes empregar calquera programa para facer DLL, se coñece e que pode facer. Para probar se eu poñer funcións públicas como eu uso o programa pouco dependencia Walker.
E se en Labview 6.1 pode facer o mesmo para chamar unha DLL, eu creo que cambia a forma de facer e o lugar desde a versión 7, pero tes a chamada función do nodo libray iguais. Tamén evita o nó da interface de código (CIN), que tamén serve para realizar o código, pero o feito de que por moito que lin non enterder como funciona.
Tamén lembrar que pode usar código C ou linguaxe da mesma maneira fai estruturado estrutura de nó, pero non podía poñer aquí inclúe ou chamadas de función ... E con MathScrpt linguaxe MATLAB Node, pero para iso eu creo que necesitamos o Labview que inclúe un completo ...
Aquí está un manual en inglés para chamar código externo en Labview eu 6.0 e 6.1, usan o no como dixen antes, pero en un longo, creando tamén a dll dende o principio ...
http://www.ni.com/pdf/manuals/370109a.pdf
Podería explicar un pouco mellor que podo ir de linguaxe C + + para Labview?
Paso non pasar, podes engadir código engadido.
- Se hai funcións ou saltos, ou estruturas nada de anormal, só .. outra cousa .. a ... entón Formula Node.
- Se existen funcións e un programa máis elaborado crea unha DLL e chamalo con chamada de función no libray (as ferramentas auxiliares »Importación» Shared Library (DLL) ven a cadra.).
Nó da interface de código non sei como se usa, aquí está un exemplo: Exemplo de CIN con Labview e MS Visual C + + 5.0 .
Código externo para Labview - CIN / DLL - Punto de Partida
-. MathScript Node código matlab O meu escritorio, necesitas ter matlab.
- Queres máis C? Eu creo que pasate para LabWindows CVI.
ola exite quería saber se a posibilidade de outro xeito en todo, para que eu é que se eu conseguir o que fago en Labview para C. a miña pregunta é que é o que fago en Labview que eu poida facer a usalo en un micro
Agora, a pregunta que eu fixen varias veces, pero o que eu recollín ata agora, seguindo a liña do FPGA é que eu creo que non.
Para programar un FPGA o programa Labview todo e dado a compilar un arquivo para converter VHDL ou que acepta o FPGA (tan fácil como para o NXT), pero só é válida para 4 ou 5 modelos e FPGA O módulo custa moitos cartos. Eu creo que para a versión micro do ¿ARM? Eu non me lembro vai facer o mesmo.
Polo que pode obter un booleano definido cluster, ... en C. é dicir, se conectar un cluster (por exemplo, ter máis cousas e complicado) para un nó función chamada Biblioteca (primeiro ten que entrar e poñer nos parámetros como tipo Adpat tipo) que dá ao segundo botón para ver as opcións que teñen Vis e bater Crear. Arquivo C. Ben, eu estou dicindo é só comezar a partida con unha cabeceira de arquivo. C para cubrir o seu código enteiro.
Como sempre é a opción de Labview CVI, pero iso é como programar en C (non visual) e está chamado Labview de bibliotecas de botóns da interface subVI.
Ola,
Eu son novato en cuestións DLL, pero me pregunta se, en termos de arquivos de Matlab Mex, eu entendín son similares para a DLL, eu tamén podo usalos en Labview. É dicir, eu teño un código C q é complexo e ten sido utilizado en Matlab como arquivos Mex, e eu usalo en Labview. Non se é posible, ou se debería axudar a converter ese código para unha DLL C cos métodos que teñen propostas.
Porque ata agora nunca lera nada de arquivos DLL como Matlab Mex chamado. pero mirando para NI.com coas palabras clave "matlab mex" deixou-me o seguinte:
* VI mex usando NI Labview Matemáticas Interface Toolkit Labview Vis Chamada de The MathWorks Inc MATLAB ® ambiente de software
* Aquí eu creo que fai conexión entre Simulink e Labview NI Labview Simulation Interface Toolkit
Para utilizar o mex en Labview non deixou nada tan rápido e eu nunca fun de ler para conectarse coas bibliotecas do Labview, pero está claro que eu non fora doutro xeito, ou a partir de arquivos de AutoCAD normais ... Entón, se pode compilar C calquera programa e facer DLL é unha solución.
*
[...]
Bo período despois de que pode crear a dll para ser invocado Labview non importa cal compilador usa, abre un mundo de posibilidades, pero tamén ver un mundo de problemas, especialmente cando o que facemos é máis que "Ola mundo". Eu teño a traballar duro para usar dll está feita a partir de bibliotecas artificiais neurunales rede para uso en Labview.
Primeiro problema, tipos de datos, cando teña que dll bibliotecas pasados como parámetros de tipos de datos complexos como grandes estruturas C + +, a tarefa é algo angustiante para tratar un pouco con estes obstáculos, crear funcións de conexión en C + + que pode tratar con estruturas de datos C + + e Labview facelos máis comestible.
Segundo problema, xestión de memoria, ás veces, especialmente cando comezar a programar, tende a pensar "se compilou é porque este ben", pero se crear un bucle no Labview onde unha función é chamada miles de veces por segundo , aloxado nunha dll e se esa función non ten un uso axeitado da memoria, pode simplemente voltar o sistema inestable. É así despois de ser feliz en ver como o ARN funcionou perfecto, caín en poucos segundos decepcioncuando viu todo e deixou como o ordenador quedou lento. Eu comproba todo o código C + +, destrutores, construtores, os chamados new e delete, pero non atopou problemas.
Concordo con vostede, a verdade como ela non recibe os datos para unha dll en Labview, se gastar o tamaño, apuntando a outra cousa ... de súpeto fai o crack Labview e pecha de súpeto. E lentamente claro, polo menos en 8.6.1.