2012-02-15 16 views
5

मैं DLLs कि LabVIEW से कहा जा सकता है लेखन से परिचित हूँ, लेकिन मैं एक DLL को IMAQ छवियाँ पारित करने के लिए हो सकता है क्या सही तरीका जानने के लिए उत्सुक हूँ। यहां एक ऐसा तरीका है जिसे मैंने ऐसा पाया है - मैं अपने डीएलएल से इवेंट संरचना में IMAQ छवि उदाहरण पोस्ट करने के लिए एक समान तंत्र का भी उपयोग करता हूं।LabVIEW, सी ++ DLL, और IMAQ छवियाँ

Example Diagram

ध्यान दें कि नोड्स समूहों से करने के लिए/छवि उदाहरणों में परिवर्तित ${LABVIEW_INSTALL_DIR}/vi.lib/vision/DatatypeConversion.llb में स्थित हैं, और क्रमशः IMAQ Image Datatype to Image Cluster.vi और IMAQ Image Cluster to Image Datatype.vi, नाम हैं। बनाए गए क्लस्टर में छवि का नाम और एक पूर्णांक मान होता है जो सूचकांक को Image* में C/C++ में टाइप करता है।

इस यह करने के लिए सबसे अच्छा तरीका है, या वहाँ एक बेहतर तरीका है?

+1

एक समस्या जो मैं देख सकता हूं वह यह है कि रूपांतरण नोड U32 दे रहा है। यदि आप 64 बिट पर हैं तो समस्याएं हो सकती हैं ... – CharlesB

+0

हाँ, मैंने देखा कि - ऐसा इसलिए हो रहा है क्योंकि मैं डीएलएल में फ़ंक्शन कॉल के लिए पैरामीटर को 'पॉइंटर साइज्ड इंटीजर' के रूप में परिभाषित कर रहा हूं। चूंकि मैं 32-बिट वातावरण में परिचालन कर रहा हूं, यह मुझे सीधे प्रभावित नहीं करता है - यह उत्सुक है, हालांकि 32-बिट आउटपुट मामला होता है, क्योंकि मैं एनआई विजन 2011 चला रहा हूं, जो स्वयं को समर्पित करता है 64-बिट समर्थन है। उपरोक्त क्लस्टर से आउटपुट को देखते हुए, यह पूरी तरह से सच नहीं प्रतीत होता है ... – hatboyzero

+1

ठीक है, मुझे पूरा यकीन है कि 64 बिट वातावरण में यह 64 बिट पॉइंटर – CharlesB

उत्तर

4

मैं एक अलग दृष्टिकोण का उपयोग करें, निम्न कोड का उपयोग कर एक क्लस्टर में सभी छवि जानकारी (सूचक, आकार, आदि) डाल:

enter image description here

क्लस्टर तो DLL समारोह को पारित कर दिया है, जिससे पिक्सेल पर ऑपरेशन (निश्चित रूप से आकार बदलना नहीं) और बाद में IMAQ के अनैप पिक्सेल पॉइंटर को कॉल करें। चर्चा के बाद


संपादित करें:

आपका समाधान एनआई विजन होने पर निर्भर करता है, और इस मामले में यह मेरा की तुलना में बेहतर है। हालांकि जब आईआईएमक्यू के पिक्सेल डेटा के साथ काम करने का एकमात्र तरीका एनआई विजन खान नहीं है।

+0

देता है जो थोड़ा व्यस्त लगता है, विशेष रूप से यह मानते हुए कि आप कर सकते हैं 'imInqGetImageInfo (_pImage, और imageInfo)' पर कॉल में संदर्भ द्वारा संदर्भित 'imageInfo' संरचना से उस जानकारी तक पहुंच प्राप्त करें, जहां '_pImage' में संग्रहीत पता उदाहरण में पारित पूर्णांक के समतुल्य है ऊपर सवाल – hatboyzero

+0

यह नहीं पता था! क्लस्टर के अनबंडल से पहले नोई का नाम क्या है? वैसे भी अपने समाधान मेरा की तुलना में बेहतर लगता है, अगर यह :-) – CharlesB

+2

दोनों रूपांतरण नोड्स '$ {LABVIEW_INSTALL_DIR}/vi.lib/दृष्टि/DatatypeConversion.llb' में स्थित हैं काम करता है तो आप इसके साथ जाना चाहिए। यह एक दयालु बात है कि वे डिफ़ॉल्ट रूप से IMAQ पैलेट पर शामिल नहीं हैं, ईमानदारी से ... – hatboyzero

संबंधित मुद्दे