Serial Read
هذه الدالة (function block) تقرأ آخر سطر متاح من اتصال تسلسلي (serial) بشكل غير حاجب (non-blocking) وتحوّله إلى نوع البيانات الذي تختاره. تم تصميمها لتكون متسامحة مع المدخلات القديمة أو غير الصحيحة من خلال إرجاع قيمة افتراضية يحددها المستخدم عند الحاجة.
📥 المدخلات
Enableمقبس (socket) من نوع Boolean يُفعّل أو يوقِف عملية القراءة.ConnIdمقبس عام (Generic) لتحديد معرف الاتصال التسلسلي الذي سيتم القراءة منه (connection identifier).
📤 المخرجات
Dataمقبس خرج عام (Generic) يُصدر آخر قيمة بعد تحويلها، أو القيمة الافتراضية عندما تكون البيانات قديمة أو فشل التحويل.
🕹️ الضوابط
Stale timeout (s)حقل نصي يحدد المدة بالثواني التي ننتظرها لوصول سطر جديد قبل اعتبار القراءة "قديمة".Data Typeقائمة منسدلة لاختيار نوع التحويل للسطور الواردة. الخيارات المتاحة:String,Int,Float,Boolean,HexInt,Bytes.Default (on stale/parse fail)حقل نصي يُدخل فيه قيمة الاحتياط التي تُرجَع عندما لا تتوفر بيانات حديثة أو يفشل التحويل. بالنسبة لـBytesأدخل أحرف هكس (hex) مثلAA55.
🎯 الميزات
قراءة غير حاجبة (non-blocking) لأحدث سطر متاح.
اكتشاف البيانات القديمة (stale) بحيث لا تُمرّر الأسطر القديمة بلا حدود.
عدة أنواع تحويل مع قيمة افتراضية قابلة للتكوين.
مدخلات ومخرجات بسيطة لتسهيل دمجها في سيناريوهات أكبر.
📝 كيفية الاستخدام
ضع معرف الاتصال في
ConnIdالذي يشير إلى اتصال تسلسلي فعّال.استخدم
Enableلبدء أو إيقاف القراءة بدون إزالة البلوك.اضبط
Stale timeout (s)لتحديد مدى "جدة" البيانات المطلوبة.اختر
Data Typeالمناسب لتحويل السطور الواردة.عرّف
Default (on stale/parse fail)لتحديد ما يعيد البلوك عندما لا توجد بيانات حديثة أو قابلة للتحويل.استخدم مخرج
Dataفي البلوكات التالية للتسجيل، العرض، أو النشر.
📊 التقييم
عندما يكون مفعلًا، يحاول البلوك قراءة آخر سطر من الاتصال المحدد.
إذا لم يصل سطر جديد خلال المدة المحددة في
Stale timeout (s), يقوم البلوك بإخراج القيمة الافتراضية المحددة.إذا فشل التحويل إلى نوع البيانات المختار، يُرجَع أيضًا القيمة الافتراضية.
بالنسبة لنوع
Bytes، يعتبر البلوك القيمة الافتراضية كنص هكس (hexadecimal).
💡 نصائح وحيل
استخدم
Debug Inputلتسجيل أو فحص النتائج الخام أثناء التطوير.وجه القراءات التسلسلية إلى
Data to JSONأوCSV Exportللتخزين المنظم أو التصدير الدفعي.انشر القيم المعالجة عبر
MQTT Publishأو أرسلها إلى خدمة ويب باستخدامREST API - Post.خزّن القيم للاستخدام لاحقًا عبر
Data Write LocalأوData Write Globalواسترجعها بالبلوكات المقابلة للقراءة.ارسم البيانات الرقمية في الوقت الحقيقي باستخدام
Scopeلمراقبة الاتجاهات أو الشذوذ.اجمع مع
Logic Inputأو بلوكات المقارنة لتفعيل إجراءات بناءً على القيم الواردة (مثال: إنذار عند تجاوز قيمة رقمية لعتبة).
🛠️ استكشاف الأخطاء وإصلاحها
إذا لم تظهر بيانات على
Data, تحقق أنConnIdيشير إلى اتصال فعّال.إذا كان الإخراج دائمًا هو القيمة الافتراضية، زد قيمة
Stale timeout (s)أو تأكد أن المصدر يرسل سطورًا بشكل فعّال.إذا فشل التحويل لأنواع رقمية أو منطقية، افحص النص الخام القادم من الجهاز وعدّل القيمة الافتراضية لتتناسب مع الصيغة.
بالنسبة لنوع
Bytes, تأكد أن القيمة الافتراضية مُدخلة كأحرف هكس صحيحة (بدون مسافات أو أحرف غير هكس).
آخر تحديث