> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/arabic/alblwkat-alwzyfyh/blocks-reference/input-output/communication/serial-write.md).

# Serial Write

هذه الدالة ترسل بيانات خام عبر اتصال تسلسلي محدد. صُممت لإرسال بسيط وغير حابس (non-blocking) وتوفر خيارات واجهة مستخدم سهلة لتحويل أنواع البيانات الشائعة، إضافة نهايات السطر، والتحكم في سلوك إعادة الإرسال.

## 📥 المدخلات

* `Enable` — استخدم لتمكين أو تعطيل الإرسال. عندما تكون قيمة الإدخال false، لا يرسل البلوك بيانات.
* `Data` — الحمولة التي تُرسل. يقبل أرقامًا، نصوصًا، قوائم، قيم منطقية أو قيم شبيهة بالبايت حسب الضبط المختار.
* `ConnId` — معرف الاتصال التسلسلي المراد استخدامه. زود القيمة التي تُنتجها كتلة إدارة الاتصالات (connection manager).

## 📤 المخرجات

* هذا البلوك لا يُنتج مخرجات.

## 🕹️ عناصر التحكم

* `Data Type` — اختر كيفية تحويل `Data` قبل الإرسال. الخيارات الشائعة تشمل string، integer، float، boolean، وصيغ byte/hex.
* `Line ending` — اختر تسلسل نهاية سطر يضاف إلى الحمولة (مثل LF، CRLF، CR أو none).
* `Send policy` — اختر متى يتم الإرسال:
  * `On change` يرسل فقط عندما تختلف الحمولة النهائية عن آخر حمولة مرسلة.
  * `Always` يرسل في كل مرة يتم فيها تقييم البلوك وتمكينه.

## 🎨 الميزات

* تحويل نوع البيانات للصيغ الشائعة حتى تتمكن من إدخال قيم مقروءة للبشر والبلاك يتحول لها إلى تسلسل البايت المناسب.
* إمكانية ضبط نهاية السطر لتطابق توقعات الجهاز المستلم.
* سياسة إرسال لتجنب تكرار رسائل متطابقة عندما لا يكون ذلك ضروريًا.
* سلوك كتابة غير حابس بحيث يستمر تدفق النظام أثناء إرسال البيانات.
* يعمل مع كتل مدير الاتصال الخارجية التي تزود قيم `ConnId`.

## 📊 آلية التشغيل

عند تقييم البلوك:

1. إذا كان إدخال `Enable` غير نشط أو فارغ، لا يُرسل شيء.
2. إذا وُجدت قيم صالحة في `Data` و`ConnId`، يقوم البلوك بتحويل `Data` وفقًا لـ `Data Type` المختار ويضيف `Line ending` المحدد.
3. إذا كانت سياسة الإرسال `On change`، يقارن البلوك الحمولة المُحضرة بالحمولة السابقة ويتخطى الإرسال إذا كانت متطابقة.
4. تُرسل الحمولة البايتية المحضرة إلى الاتصال التسلسلي المشار إليه بـ `ConnId` دون حجب بقية النظام.

## 📝 تعليمات الاستخدام

1. أنشئ أو اختر اتصالًا تسلسليًا وسجل معرف الاتصال (connection id).
2. زود ذلك المعرف إلى مدخل `ConnId`.
3. أدخل القيمة التي تريد إرسالها إلى مدخل `Data`.
4. اضبط تحكم `Data Type` ليتوافق مع بياناتك (مثلاً استخدم `HexBytes` لسلاسل hex أو `Bytes` لقوائم البايت الخام).
5. اختر `Line ending` المطلوب إذا كان الجهاز المستقبل يتوقع نهاية سطر.
6. استخدم `Send policy` لتجنب التكرارات غير الضرورية عند بث قيم ثابتة.
7. قم بتبديل `Enable` لبدء أو إيقاف الإرسال.

## 💡 نصائح وحيل

* اجمعه مع كتل `Serial Connect` / مديري الاتصال للحصول على قيم `ConnId` وإدارتها.
* استخدم كتل `String Input` أو `Number Input` لتحضير والتحقق من `Data` قبل الإرسال.
* قم بتهيئة الحمولات المعقدة مسبقًا باستخدام `String Merge` أو `Data to JSON` عند الحاجة إلى سلاسل منظمة (مثل رسائل JSON).
* لإضافة سجل أو تصدير للبيانات المرسلة، أضف `CSV Export` أو `Image Logger` (لسجلات مرئية) بعد البلوك في التدفق.
* للإرسال المشروط بناءً على منطق، ادمجه مع `Logic Input`، `And`، `Or`، أو `Greater` لبوابة الإرسال.
* لجسور البروتوكول، أقرنه مع `MQTT Publish` أو `REST API - Post` لإعادة توجيه بيانات السيريال إلى خدمات الشبكة.
* استخدم `Debug Input` لفحص الحمولات الصادرة أثناء التطوير.

## 🛠️ استكشاف الأخطاء وإصلاحها

* لا يُرسل شيء: تحقق أن `Enable` مفعل، وأن `Data` غير فارغ، و`ConnId` يشير إلى اتصال نشط.
* الجهاز المستقبل يتجاهل الرسائل: تحقق `Line ending` جرب خيارات مختلفة (LF، CRLF، CR أو none).
* الرسائل المتطابقة لا تُرسل عندما تتوقع ذلك: تأكد أن `Send policy` مضبوطة على `Always` إذا كنت بحاجة لإرسال متكرر.
* بايتات غير متوقعة على السلك: تأكد أن `Data Type` يطابق شكل القيمة التي تزودها (مثلاً استخدم `HexBytes` لسلاسل hex أو `Bytes` لقوائم رقمية).
