كيفية عرض البيانات في عنصر تحكم في LabView

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

  •  03-10-2019
  •  | 
  •  

سؤال

لدي عنصر تحكم رقمي (وليس مؤشر) و A for loop (الحد 5)

أحتاج إلى عرض [قيمة مؤشر الحلقة الحالية+ في عنصر التحكم الرقمي] في عنصر التحكم الرقمي. أنا جديد على لابفيو. هل هناك أي فكرة للقيام بذلك؟

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

المحلول

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

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

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

نصائح أخرى

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

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

Google "وظيفية عالمية" أو "LabView 2 Style Global". النمط الأساسي هو استخدام حلقة الوقت مشفرة صلبة للتوقف بعد التكرار. أضف سجل التحول الموحد. أضف بنية حالة داخل الحلقة. استخدم عنصر تحكم (منطقي أو تعداد أو سلسلة) لتحديد بنية الحالة. إسقاط زوج تحكم/مؤشر لنفس نوع البيانات على السادس. قم بتوصيل المؤشر إلى الإخراج الخارجي من الحافة اليمنى على السطح الخارجي للحلقة. ضع عنصر التحكم داخل الحلقة في "Set" (عادةً ما يكون صحيحًا ، غير متفق) وقم بتوصيله خارج العلبة إلى مدخلات الحافة اليمنى. انتقل إلى الحالات (الحالات) الفارغة الأخرى وقم بتوصيل الإخراج الداخلي للمغادرة اليسرى من خلال الحالات إلى المحطة التي تتصل بالمدخلات الداخلية.

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

الفوائد الرئيسية الثلاثة هي الحفاظ على تدفق البيانات ، وخيط Saftey ، والأداء. يمكنك الحصول على تدفق البيانات عن طريق إضافة خطأ IO إلى VI الخاص بك. يتم ضمان Thread Saftey لأن تنفيذ السادس مضمون ليكون ذريًا. تم تحسين Perfomance لأن بيانات LV تريد العيش على سلك. في كل مرة تكتب فيها البيانات إلى عقدة ProPerty لعنصر ، يكتب وقت تشغيل LV تلك البيانات إلى مؤشر ترابط واجهة المستخدم. أعتقد أن هناك أداءً مماثلًا للأداء القائم على الخيوط للسكان المحليين أيضًا ، لكنني لست متأكدًا.


لكل تعليق أول ...

تم نسخها هنا من الرابط لمصلحتك (نعم أنت السيد القارئ). المشكلة: أفكر في استخدام المتغيرات المحلية أو العالمية ؛ في أي موضوع تنفذ المتغيرات؟

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

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

اقرأ: عندما تقرأ من متغير محلي أو عالمي ، ستحدث العملية في مؤشر الترابط الذي ينفذه السادس ، وبالتالي ، يمكنك التأكد من عدم حدوثه في مؤشر ترابط واجهة المستخدم عن طريق تعيين نظام التنفيذ في خصائص VI إلى المعيار. هناك آلية لحماية الخيوط للتأكد من عدم قيام أي كاتب في العالم بتغيير البيانات أثناء قراءتها ، ولكن يتم ذلك عن طريق Mutex ، وليس عن طريق الذهاب إلى سلسلة واجهة المستخدم. ومع ذلك ، إذا تم فتح لوحة المتغير العالمي ، فسيتم نشر رسالة لإعادة رسم التحكم العالمي ، وسوف يحدث إعادة الرسم في مؤشر ترابط واجهة المستخدم.


النيكومية صحيحة. لا يحدث تبديل الموضوع عند الكتابة إلى السكان المحليين.

وأنا أتفق مع طن. إذا كنت تقوم بتغيير قيمة عنصر التحكم برمجيًا ، فيجب عليك النظر في ما إذا كان ينبغي أن يكون مؤشراً ، أو ربما يكون لديك مؤشر زائف من عنصر التحكم.

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

إذا كنت ترغب في الحفاظ على تدفق البيانات للتحكم في تدفق البرنامج ، فيمكنك بدلاً من ذلك استخدام عقدة خاصية لعنصر التحكم وتعيين خاصية "القيمة".

لإنشاء عقدة الخاصية ، انقر بزر الماوس الأيمن على محطة التحكم على مخطط الكتلة ، وحدد القيمة »عقدة الخاصية» القيمة. يمكنك الآن الالتزام ببرمجة تدفق البيانات باستخدام أسلاك الخطأ للتحكم في تدفق البرنامج.

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

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