هل يمكن لـ LabView VI معرفة ما إذا كانت إحدى أطراف الإخراج سلكية؟

StackOverflow https://stackoverflow.com/questions/3512574

  •  29-09-2019
  •  | 
  •  

سؤال

في LabView ، هل من الممكن معرفة من داخل VI ما إذا كانت محطة الإخراج سلكية في المكالمات السادسة؟ من الواضح أن هذا يعتمد على الاتصال السادس ، ولكن ربما هناك طريقة للعثور على الإجابة على الاحتجاج الحالي للسادس.

بعبارات C ، سيكون هذا مثل تحديد وظيفة تأخذ الحجج التي هي مؤشرات إلى مكان تخزين معلمات الإخراج ، ولكنه سوف يقبل NULL إذا كان المتصل غير مهتم بهذه المعلمة.

هل كانت مفيدة؟

المحلول

كما قيل لا يمكنك القيام بذلك بالطريقة الطبيعية ، ولكن هناك حل بديل باستخدام مراجع قيمة البيانات (يتطلب LV 2009). إنها نفس فكرة إعطاء مؤشر فارغ إلى وسيطة الإخراج. ترد النتيجة في الإدخال كمرجع قيمة البيانات (وهو المؤشر) ، ويتم فحصه ليس مرجعا بواسطة subvi. إذا كان فارغا ، لا تفعل شيئا.

إليكم Subvi (الحالة True لا يفعل شيئًا بالطبع):

alt text

وهنا هو الدعوة السادس:

alt text

الصور هي قصاصات VI حتى تتمكن من السحب والإسقاط على رسم بياني للحصول على الرمز.

نصائح أخرى

أقترح أنك تدور حول هذا بالطريقة الخاطئة. إذا لم يكن المترجم ذكيًا بما يكفي لتجنب الحساب من تلقاء نفسه ، فقم بعمل نسختين من هذا السادس. واحد يفعل الحساب باهظ الثمن ، واحد لا. ثم قم بعمل تعدد الأشكال السادس يسمح لك بالتبديل بينهما. أنت تعرف بالفعل في وقت التصميم ما هو الإصدار الذي تريده (لأنك إما توصيل محطة الإخراج أم لا) ، لذلك فقط استخدم الإصدار الصحيح من متعدد الأشكال.

بدلاً من ذلك ، تمرير متغير يقوم بتشغيل أو إيقاف بيان حالة للقسم باهظ الثمن من حسابك.

كما قال Underflow ، الجواب الأساسي هو لا.

يمكنك إلقاء نظرة هنا للحصول على ما هو على الأرجح الإجابة الرسمية والتفصيلية التي ستوفرها NI على الإطلاق.

تمديد القياس الخاص بك ، يمكنك القيام بذلك في LV ، باستثناء LV ليس لديه مفهوم NULL الذي يفعله C. يمكنك رؤية مثال على هذا هنا.

لاحظ أن الرمز في الارتباط المتدني المقدم لن يعمل في عملية تنفيذ ، لأن المخططات يتم تجريدها افتراضيًا عند إنشاء EXE ولأن RTE لا تدعم بعض الخصائص والأساليب المستخدمة هناك.


آسف ، أرى أنني أسيء فهم السؤال. اعتقدت أنك كنت تسأل عن المدخلات ، لذلك فإن الفكرة التي اقترحتها لا تنطبق. القيود التي أشارت إليها تنطبق ، رغم ذلك.

لماذا تريد أن تفعل هذا؟ قد يكون هناك حل آخر.

عموما ، لا.

من الممكن إجراء تحليل ثابت على الكود باستخدام ميزات "البرمجة النصية". هذا يتطلب سحب التسلسل الهرمي للاتصال ، وتتبع المراجع السلكية.

تجميع تجربة من هذا ، هناك بعض الصعوبات. من الصعب التمييز بين المراكز الفرعية المتطابقة المتعددة على نفس الرسم البياني. أيضًا ، يبدو أن المراجع الطرفية يمكن الوصول إليها في الغالب بالاسم ، والتي يمكن أن تؤدي إلى بعض الاصطدامات مع محطات متماثلة من السادس الأخرى.

لقد قامت Ni ببعض العمل على تباين في هذه المشكلة ؛ الدفع هذه.

بشكل عام ، يقوم برنامج التحويل البرمجي LV بتحسين رمز الجهاز بطريقة لا يتم تضمينها حتى في الكود غير المستخدمة في القابل للتنفيذ.

لا ينطبق هذا على subvis (لأنه لا توجد طريقة لمعرفة أنك لن تحاول استخدام قيمة المؤشرات بطريقة أو بأخرى ، على الرغم من أن LV يمكن أن تفعل ذلك إذا كان يزيل FP عند بناء قابلة للتنفيذ ، وربما يفعل) ، ولكن هناك) ، ولكن هناك) ، ولكن هناك) هي إحدى الطرق التي يمكنك من خلالها تطبيقها على subvi - ضمن subvi ، والتي يجب أن تسمح للمترجم برؤية المخرجات لم يتم استخدامها. يمكنك أيضًا تحديد أولويتها على الروتين الفرعي ، والتي من المحتمل أن تفعل ذلك أيضًا ، لكنني لا أوصي بذلك.

من الناحية الرسمية ، لا يتوفر التواصل إلا في LV 2010 ، ولكن هناك طرق للوصول إلى خاصية VI الخاصة في الإصدارات القديمة. على الرغم من ذلك ، لا أوصي بذلك ، ومن المحتمل أن يكون لدى عام 2010 بعض التحسينات في هذا المجال الذي لم تفعله الإصدارات القديمة.

PS بشكل عام ، لا تتعرض تفاصيل عملية التجميع وتختلف بين إصدارات LV حيث تقوم Ni بتعديل المترجم. من المفترض أن تكون العملية برمتها قد تم منح ترقية كبيرة في LV 2010 ويجب أن يكون هناك بث عبر الإنترنت على موقع NI مع بعض التفاصيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top