Ho familiarità con la scrittura di DLL che possono essere chiamate da LabVIEW, ma sono curioso di sapere quale sia il modo corretto di passare le immagini IMAQ a una DLL. Ecco un modo in cui ho trovato di farlo - Io uso anche un meccanismo simile per postare istanze di IMAQ Image dalla mia DLL a una struttura di eventi.Immagini LabVIEW, C++ DLL e IMAQ
Nota che i nodi che convertono le istanze di immagine da/per cluster si trovano a ${LABVIEW_INSTALL_DIR}/vi.lib/vision/DatatypeConversion.llb
, e prendono il nome IMAQ Image Datatype to Image Cluster.vi
e IMAQ Image Cluster to Image Datatype.vi
, rispettivamente. Il cluster creato è costituito dal nome dell'immagine e da un valore intero che rappresenta l'indirizzo del puntatore a un tipo Image*
in C/C++.
È questo il modo migliore per farlo, o c'è un modo migliore?
Un problema che posso vedere è che il nodo di conversione sta dando U32. Se sei su 64 bit ci possono essere problemi ... – CharlesB
Sì, ho notato che - sta succedendo perché sto definendo il parametro per la chiamata di funzione nella DLL come un "numero intero di puntatore". Dal momento che sto operando in un ambiente a 32 bit, questo non mi riguarda direttamente: è curioso, anche se a quanto pare un output a 32 bit, visto che sto eseguendo NI Vision 2011, che si propone di avere supporto a 64 bit. Guardando l'output dal cluster sopra, questo non sembra essere del tutto vero ... – hatboyzero
OK, sono abbastanza sicuro che in un ambiente a 64 bit fornisce un puntatore a 64 bit – CharlesB