مراقبة منفذ السيريال والتنصّت عليه وتصحيح أخطائه وتسجيله

في هذه الصفحة ستتعلّم ثلاث طرق لتحليل الاتصال التسلسلي بين الأجهزة (الكمبيوتر، وحدات التحكم، اللوحات المدمجة) ولماذا أداة COM Sniffer من SerialTool غالبًا ما تكون الحل الأفضل: برمجية فقط، من دون تمديدات سلكية، شفافة، ومناسبة للاستخدام كـمراقِب/منصّت/أداة تصحيح/مسجّل حتى لأيام متتالية.

ما الذي ستجده

  • الفصل 1: معنى مراقبة منفذ COM، وكيف تُبنَى البايتات/البتات وكيف تُرسِلها السيريال (بدء/بيانات/تساوي/توقّف)، إضافةً إلى TX/RX ومعدل البود.
  • الفصل 2: الطريقة التقليدية لـالتنصّت الفيزيائي باستخدام محولين USB↔Serial: توصيل RX فقط إلى خطوط TX للجهازين ومشاركة الأرضي. مثالي لـمراقبة/تسجيل بسيطة.
  • الفصل 3: الفكرة نفسها مطبّقة على كمبيوتر رئيسي يتحدث مع جهاز هدف عبر محولات USB↔Serial/RS-232/RS-485 (نفس البروتوكول، مستويات فيزيائية مختلفة). تتضمن نظرة عامة على Modbus RTU/ASCII وحالات الاستخدام الصناعي/‏CNC/‏المضمن (تصحيح، برمجيات ثابتة، هندسة عكسية).
  • الفصل 4: لماذا غالبًا ما يجدر استخدام COM Sniffer من SerialTool: مراقِب منفذ سيريال يعتمد على تعريف نواة Windows يعترض البيانات وIOCTL والإشارات و المعلمات للمنافذ المفتوحة مسبقًا بواسطة برامج أخرى. من دون أسلاك، مرشِّحات دقيقة، تصدير إلى pcap/pcapng (مثلًا لـ Wireshark)، وثبات لعمليات التقاط طويلة.

إذا كان هدفك تحليل برنامج طرفٍ ثالث بسرعة أو مراقبة تطبيقك باستمرار، فابدأ من الفصل 4 – COM Sniffer: إنها أسرع طريقة لـالمراقبة والتنصّت وتصحيح الأخطاء والتسجيل من دون بناء منصّة اختبار.

الفصل 1 – مراقبة البيانات من منفذ COM

1.1 ما معنى “مراقبة منفذ سيريال”

مراقبة منفذ COM (السيريال) تعني رصد البايتات التي تنتقل على خطوط الاتصال بين الكمبيوتر والجهاز لحظةً بلحظة. عادةً نُميّز اتجاهين: TX (إرسال من الكمبيوتر إلى الجهاز) وRX (استقبال من الجهاز إلى الكمبيوتر). المراقِب الجيد يعرض البيانات كنص (تفسير ASCII/UTF-8) وكـستّ عشري (HEX)، أي البايتات الخام.

ما الفائدة
  • التحقّق من أن الإرسال والاستقبال يتمّان باستخدام المعلمات الصحيحة (البود، بتات البيانات، التساوي، التوقّف).
  • فهم ما يُرسَل/يُجاب عنه، بايتًا ببايت، حتى عندما لا يكون النص مقروءًا.
  • تشخيص أخطاء الإعداد أو البروتوكول (مثل Modbus/RTU أو أوامر مملوكة).

1.2 البايتات والبتّات: التمثيل المنطقي مقابل الإرسال التسلسلي

عندما نكتب النص Hello، تتحوّل الأحرف الخمسة إلى خمسة بايتات ASCII: 48 65 6C 6C 6F بالستّ عشري. يتيح عارض البايت مثل أداة SerialTool رؤية الموجة المنطقية للبتّات الفردية داخل كل بايت.

مخطط موجة البِتّات لكلمة 'Hello' (عرض منطقي في أداة عرض البايت لـ SerialTool)

الشكل 1 — تمثيل «منطقي» للبِتّات للكلمة Hello

يُبرز كل إطار بايتًا (0x48، 0x65، 0x6C، 0x6C، 0x6F). أسفل كل بايت ستجد ASCII وHEX والعشري والثنائي. يفيد هذا العرض في فهم محتوى البايتات كما تُخزَّن وتُعالَج برمجيًا.

كيفية قراءة البايتات في العرض المنطقي

  • يُبرز المخطط 8 بتّات بيانات لكل بايت (b7…b0). في الذاكرة يمكن ترتيبها كـMSB→LSB (من الأكثر أهمية إلى الأقل).
  • هذا التمثيل لا يتضمّن بعد عناصر البروتوكول التسلسلي (بدء، تساوي، توقّف) ولا يعكس ترتيب الإرسال على السلك.

كيف تُرسَل البايتات على منفذ السيريال

على خط RS-232/TTL الفيزيائي، يُغلَّف كل بايت وفق الإطار التسلسلي:

بدء (بت واحد، منطق «0»)بيانات (7/8 بت، تُرسَل LSB أولًا)تساوي (اختياري)توقّف (بت واحد أو أكثر، منطق «1»).

  • خمول (Idle): تكون خط TX ثابتة على المنطق «1» (mark). يبقى الإشارة على 1 حتى وصول بت البدء.
  • بت البدء: انتقال إلى «0» (space) يُشير إلى بداية البايت.
  • بتات البيانات: تُرسَل بتات البيانات بترتيب LSB أولًا (الأقل أهمية أولًا).
  • بت التوقّف: عودة إلى «1» لبتّ واحد أو أكثر؛ يضمن استعادة حالة الخمول.
  • معدل البود: يحدد مدة كل بت (مثلًا عند 9600 بود تدوم كل بت ~104.17 ميكروثانية).
مخطط موجة البِتّات لكلمة 'Hello' كأُطر تسلسلية على الخط (عرض في أداة عرض البايت لـ SerialTool)

الشكل 2 — بايتات Hello نفسها كـأُطر تسلسلية على الخط: لكل بايت يظهر خمول → بدء → بيانات (LSB أولًا) → توقّف

يُبرز هذا العرض ترتيب الإرسال والتوقيت الثابت للبتّات الذي يفرضه معدل البود.

ملاحظة حول RS-232 مقابل TTL

  • على مستوى TTL (UART عند 3.3/5 فولت)، «1» مرتفع و«0» منخفض.
  • على مستوى RS-232 تكون مستويات الجهد معكوسة (المنطق «1» ≈ جهد سالب، «0» ≈ موجب)، لكن تسلسل البدء/البيانات/التوقّف يبقى نفسه.

مثال سريع: زمن إرسال “Hello”

مع ضبط 8N1 (1 بدء، 8 بيانات، 1 توقّف) يستهلك كل بايت 10 بتات على الخط. عند 9600 بود، أي نحو 960 بايت/ث. لخمسة بايتات (“Hello”) يلزم نحو 5.21 مللي ثانية.

الفصل 2 – مراقبة/تنصّت، تصحيح، وتسجيل اتصال سيريال باستخدام محولين USB إلى سيريال

التوصيل الفيزيائي للتنصّت على اتصال سيريال باستخدام محولين USB إلى سيريال

مخطط التقاط سلبي عتادي

يفتح الكمبيوتر منفذين (COM5 وCOM6). يستخدم كل محول USB إلى سيريال RX فقط «للاستماع» إلى ما يرسله كل جهاز. تكون الأرضيّات (GND) مشتركة. تمثل الخطوط البنفسجية والزرقاء وصلة TX↔RX العادية بين الجهازين.

2.1 الهدف

إنشاء مراقِب/منصّت سيريال غير تدخّلي لمشاهدة وتصحيح وتسجيل البايتات المتبادلة بين الجهاز 1 والجهاز 2 من دون تعطيل الاتصال.

2.2 التوصيلات الكهربائية (التقاط سلبي)

  • COM5 (USB إلى سيريال #1): وصّل دبوس RX للمحول بـTX للجهاز 1 (التقاط البيانات المرسلة من الجهاز 1).
  • COM6 (USB إلى سيريال #2): وصّل دبوس RX للمحول بـTX للجهاز 2 (التقاط البيانات المرسلة من الجهاز 2).
  • أرضي مشترك: اربط أرضيّ المحولين مع أرضي الجهازين (مرجع مشترك للمستويات المنطقية).
  • لا توصل TX الخاص بالمحول على الخط: نظل في وضع «استماع فقط» بممانعة عالية فلا نُربك الإشارة.
  • لا تُغذِّ الأجهزة من 5V/3.3V الخاصة بالمحول (VCC غير مستخدم في الالتقاط).

ملاحظة مستويات: تنطبق هذه الطريقة على UART/TTL (3.3/5 فولت) أو الحافلات ذات التعريفات المتوافقة. بالنسبة إلى RS-232 (±12 فولت) لا توصل مدخل RX من نوع TTL مباشرة: تحتاج إلى محوّل RS-232↔USB أو أداة تنصّت/مراقبة RS-232 مخصّصة. أي إن كنت تريد تسجيل خط RS-232 فاستعمل العتاد المناسب.

2.3 العثور على معدل البود وضبطه

لفك الترميز بدقة يجب أن يطابق معدل البود والمعلمات تلك الخاصة بالأجهزة (مثل 9600/8N1). إذا لم تكن معروفة:

  • راجع وثائق الجهاز أو البروتوكول.
  • جرّب المعدلات الشائعة (9600، 19200، 38400، 57600، 115200...).
  • اقِس باستخدام راسم إشارة/محلّل منطقي: مدة البت هي Tbit=1/baud (مثلًا عند 9600 بود ≈ 104.17 ميكروثانية لكل بت).

2.4 فتح منفذي COM باستخدام SerialTool

  1. صِل المحولين: سيتعرف النظام على منفذين (في المثال COM5 وCOM6).
  2. في SerialTool، افتح جلستين:
    • الجلسة A → COM5، واضبط البود/التساوي/التوقّف مثل الأجهزة (مثل 115200/8N1).
    • الجلسة B → COM6، بنفس إعدادات الجلسة A.
  3. ضعهما في وضع المراقبة (RX فقط): سترى على COM5 البايتات التي يرسلها الجهاز 1 وعلى COM6 ما يرسله الجهاز 2.
  4. لأغراض التصحيح استخدم عرض HEX والطوابع الزمنية؛ ولأغراض التسجيل احفظ إلى ملف (CSV/pcap/خام) للتحليل اللاحق.

في هذا السيناريو تعمل كـرجل في الوسط الفيزيائي ولكن بشكلٍ سلبي: تراقب/تتنصّت كهربائيًا من دون تغيير الإشارات.

2.5 دبابيس التحكّم المستثناة في هذا المثال

يركّز المخطط على بيانات TX/RX ولا يراقب دبابيس التحكّم (مثل RTS/CTS، DTR/DSR، DCD، RI). في كثير من التطبيقات لا حاجة لها؛ ولكن إذا كانت الأجهزة تستخدم تحكّمًا بالتدفّق عتاديًا فقد ترغب في «التقاط» تلك الخطوط بواسطة مجسّات مخصّصة.

قراءة إضافية: RS-232 (ويكيبيديا)، RS-232 – الإشارات، التحكّم بالتدفّق العتادي، UART.

2.6 نصائح عملية لمراقِب/منصّت مستقر

  • استخدم كابلات قصيرة وأرضيًا مشتركًا سليمًا؛ وتجنّب حلقات الأرضي.
  • يتحمّل معظم تعريفات UART مدخلي RX (تفرّع) على خط TX واحد، لكن تجنّب التحميل غير الضروري.
  • وحِّد دائمًا إعدادات المنفذ بين الجلستين (البود، البيانات، التساوي، التوقّف).
  • بالنسبة إلى RS-485 أو الحافلات التفاضلية ستحتاج إلى محولات مخصّصة وقواعد التقاط مختلفة.

بهذه التقنية يمكنك المراقبة والتنصّت وتصحيح الأخطاء والتسجيل بثقة لاتصالات سيريال بين جهازين باستخدام أدوات مألوفة: محوّلان USB إلى سيريال + SerialTool.

الفصل 3 – التنصّت/المراقبة على الرابط التسلسلي بين «الكمبيوتر الرئيسي» و«الجهاز الهدف»

التنصّت على الاتصال بين الكمبيوتر الرئيسي والجهاز الهدف بمحولين USB إلى سيريال على كمبيوتر ثانٍ

اتصال بين جهاز عتادي وكمبيوتر عبر السيريال

الكمبيوتر الرئيسي (يمينًا) يتواصل مع الجهاز الهدف عبر جهاز اتصال سيريالي (عادة محوّل USB↔سيريال: UART/TTL أو RS-232 أو RS-485). يفتح كمبيوتر التنصّت (يسارًا) منفذين (COM5 وCOM6) وبمَحوّلين USB إلى سيريال يستمع للخطوط بشكل سلبي: على COM5 يوصَل RX بـTX الجهاز، وعلى COM6 يوصَل RX بـTX الكمبيوتر. والأرضيّات (GND) مشتركة.

3.1 الغرض والمفاهيم

نريد مراقبة والتنصّت على البايتات المتنقلة بين برنامج على الكمبيوتر الرئيسي والجهاز الهدف من دون التدخّل في الاتصال. إنه رجل في الوسط الفيزيائي لكن بشكلٍ سلبي: محوّلان USB إلى سيريال موصولان كمدخلي RX «يقرآن» كل اتجاه. وهذا مفيد لـتصحيح الأخطاء وتحليل البروتوكول، وكسِجلّ Logger للتدقيق أو للهندسة العكسية.

3.2 التوصيلات (خطوة بخطوة)

  1. COM5 (كمبيوتر التنصّت) ← وصّل RX للمحوّل بـTX للجهاز (استمع لما يرسله الهدف).
  2. COM6 (كمبيوتر التنصّت) ← وصّل RX للمحوّل بـTX للكمبيوتر (استمع لأوامر الكمبيوتر الرئيسي).
  3. أرضي مشترك بين المحوّلين والجهازين (مرجع مشترك).
  4. لا توصل TX الخاص بمحوّلي كمبيوتر التنصّت: نظل استماع فقط (ممانعة عالية) بلا إزعاج للخط.

في SerialTool افتح جلستين: COM5 وCOM6. واضبط في كلتيهما معدل البود والصيغة المطابقة لما يستخدمه الكمبيوتر/الجهاز (مثل 115200-8N1). إن لم تعرف البود، جرّب القيم الشائعة أو قِس مدة البِت بمحلّل منطقي/راسم إشارة.

3.3 البروتوكول نفسه، ولكن مستويات مختلفة: UART/TTL، RS-232، RS-485

يظل البروتوكول التسلسلي غير المتزامن (بدء، 7/8 بت بيانات تُرسَل LSB أولًا، تساوي اختياري، 1+ توقّف) نفسه. ما يتغيّر هو المستوى الفيزيائي الذي تنتقل عليه البتّات:

  • UART/TTL (3.3/5 فولت): إشارات أحادية النهاية، «1» مرتفع / «0» منخفض.
  • RS-232: مستويات معكوسة وبجهد ± (عادة ±3…±12 فولت)، وما زالت أحادية النهاية.
  • RS-485: تفاضلية على زوج A/B، غالبًا نصف مزدوج متعدد العقد؛ يُنصَح بوجود أرضي مرجعي مشترك.

لذا استخدم المحوّل المناسب: USB↔TTL لـ UART، وUSB↔RS-232 لـ RS-232، وUSB↔RS-485 لـ RS-485. يظل الإطار متطابقًا، لكن تختلف المستويات الكهربائية والطوبولوجيا (تفاضلي/إنهاء).

3.4 أين يُستخدم (CNC، صناعي، إلخ)

يُعد هذا الإعداد شائعًا في CNC والماكينات الصناعية وPLC/HMI والروبوتات والموازين وPOS والمستشعرات وأجهزة القياس وأتمتة المباني، وبوجه عام في أي نظام يتحكم فيه كمبيوتر/PLC بجهاز عبر السيريال. يتيح لك أسلوب التنصّت هذا المراقبة/التنصّت/التصحيح/التسجيل لأغراض التحليل الوظيفي وتشخيص الأعطال وتتبع الأوامر والتحقّق.

3.5 Modbus عبر السيريال

غالبًا ما تحمل المنافذ التسلسلية Modbus RTU/ASCII، وهو بروتوكول منتشر صناعيًا بنمط رئيس/تابع (عميل/خادم الآن). يرسل الرئيسي الطلبات (قراءة/كتابة ملفات وسجلات) ويرد الجهاز. يتضمن SerialTool عميل Modbus للاستعلام السريع عن السجلات (تشخيص واختبار)، إلى جانب المراقِب/عارض HEX المفيد لرؤية الأُطر الخام (العنوان، الوظيفة، البيانات، CRC).

3.6 تحديث البرمجيات الثابتة والتهيئة

في عالم المضمنات تُستخدم السيريال على نطاق واسع لـتحديث البرمجيات الثابتة أو تمرير المعلمات للجهاز الهدف. أمثلة: محمّلات الإقلاع على اللوحات المخصّصة، منظومات مثل Arduino، متحكّمات دقيقة مختلفة. وقد يحتاج المطوّر إلى أمرين:

  1. تصحيح التطبيق الذي يتحدث إلى الجهاز الهدف (فحص الأوامر والتوقيت والأخطاء).
  2. هندسة عكسية لبروتوكول قائم (برنامج رئيسي «مغلق» يتحدث إلى لوحة؛ أتَنصّت لفهم الرسائل ثم أُعيد إنتاجها ببرنامجي).

3.7 ملاحظات عملية وأدوات

  • يتطلّب هذا الإعداد عادةً كمبيوترين (الرئيسي والتنصّت) ومحولين USB إلى سيريال على الأقل للتنصّت ثنائي الاتجاه.
  • بالنسبة إلى RS-232 استخدم أداة تنصّت/محوّل RS-232؛ وبالنسبة إلى RS-485 صِل واجهة استقبال فقط إلى طرفي A/B (مع احترام الإنهاء والقطبية). في RS-485 نصف المزدوج ستستنتج الاتجاه من السياق الزمني.
  • نستثني دبابيس التحكّم (RTS/CTS وDTR/DSR وDCD وRI)؛ إن استخدم النظام تحكّمًا عتاديًا بالتدفّق ففكّر بمجسّات مخصّصة.
  • في SerialTool يمكنك تفعيل عرض HEX والطوابع الزمنية والحفظ كـمسجّل (نص/CSV/pcap) للتحليل لاحقًا.

باختصار: البروتوكول التسلسلي نفسه (أُطر غير متزامنة)، ولكن مستويات فيزيائية مختلفة (TTL/‏RS-232/‏RS-485). مع التقاط RX مزدوجًا سلبيًا وبرمجيات مثل SerialTool يمكنك المراقبة والتنصّت والتصحيح والتسجيل بثقة للاتصال بين الكمبيوتر الرئيسي والجهاز الهدف.

الفصل 4 – COM Sniffer: مراقبة/تنصّت/تصحيح/تسجيل من دون تمديدات سلكية

COM Sniffer من SerialTool: مراقبة منفذ سيريال فُتح مسبقًا بواسطة برنامج، دون توصيلات فيزيائية

COM Sniffer - مراقِب منفذ سيريال

مع SerialTool – COM Sniffer لست بحاجة إلى توصيلات الفصل 3: يُلتقَط المرور بين الكمبيوتر الرئيسي (برنامج ملكية لطرف ثالث) والجهاز الهدف مباشرةً بواسطة النظام، وبشكل شفاف وغير تدخّلي.

4.1 ما الذي يفعله COM Sniffer

COM Sniffer هو مراقِب منفذ سيريال يعترض الاتصال على منفذ COM مفتوح مسبقًا بواسطة برنامج آخر، ما يتيح لك المراقبة والتنصّت و تصحيح الأخطاء وتسجيل كامل المرور (TX/RX) من دون لمس الأسلاك، ومن دون عتاد إضافي ومن دون التأثير في عمل الكمبيوتر الرئيسي أو الجهاز الهدف.

4.2 كيف يعمل: تعريف نواة

يَرتكز على تعريف نواة لنظام Windows يُدرِج نفسه ضمن مكدّس منفذ السيريال ويُراقب انتقائيًا:

  • مخابئ البيانات المقروءة/المكتوبة (TX ↔ RX) مع فصل واضح للاتجاه؛
  • IOCTL (إدخال/إخراج بتحكّم): الفتح/الإغلاق، إعدادات البود/التساوي/التوقّف، المهل الزمنية، إشارات التحكّم (RTS/DTR/CTS/DSR/DCD/RI)، إلخ؛
  • الأحداث/الإشارات وحالة المنفذ (حالة الخط، حالة المودم).

التعريف قوي لكن الواجهة بسيطة: يمكنك الترشيح حسب النوع (بيانات فقط، IOCTL تهيئة فقط، إشارات فقط، إلخ) للتركيز على ما يهمك. وهو مُصمَّم لعمليات التقاط طويلة الأمد (ساعات/أيام) بثبات، لمراقبة تطبيقك أو تطبيقات طرف ثالث. ملاحظة: يعمل على Windows فقط لاعتماده على تعريفات وضع النواة.

4.3 لماذا يكون أفضل (في كثير من الحالات) من التوصيلات الفيزيائية

  • لا «مختبر» مؤلف من جهازين ومحوّلين USB إلى سيريال: توفّر الوقت وتقلّل نقاط الفشل.
  • أثر كهربائي صفري: لا تحميل للخطوط، ولا مخاطر حلقات أرضي.
  • ترى كل ما يجري بين التطبيق والتعريف: بيانات، IOCTL، إشارات، وحتى على منافذ متعددة بالتوازي.

4.4 التسجيل والتصدير للتحليل البروتوكولي

يمكنك الحفظ مباشرةً إلى ملف كـمسجّل (نص/CSV) أو التصدير إلى pcap/pcapng للتحليل في Wireshark. وهذا مفيد جدًا للبروتوكولات الصناعية مثل Modbus RTU/ASCII: فمع الأُطر والطوابع الزمنية يمكنك التحقّق من التوقيت وCRC وتسلسلات الوظائف، وغير ذلك.

4.5 ما الذي يمكنك رصده

  • بيانات TX/RX مع فصلٍ للاتجاهين، بصيغتي ASCII وHEX، مع طوابع زمنية؛
  • معلمات المنفذ التي يضبطها البرنامج (البود، 7/8 بت، التساوي، التوقّف، المهل الزمنية)؛
  • إشارات التحكّم وIOCTL (RTS وDTR وCTS وDSR وDCD وRI) وتغيّرات الحالة؛
  • أحداث الفتح/الإغلاق والأخطاء (تجاوز، تأطير، تساوي).

4.6 متى تستخدمه

  • تصحيح تطبيقك السيريالي من دون تغيير الكود/الأسلاك؛
  • مراقبة طويلة الأمد لتطبيقات طرف ثالث لأغراض التدقيق/التشخيص؛
  • هندسة عكسية لبروتوكولات مملوكة (حيثما كان ذلك قانونيًا) لإعادة تنفيذ الوظائف ببرنامجك؛
  • التحقّق من البروتوكولات القياسية (مثل Modbus) وإشارات المصافحة.

4.7 ملاحظات وقراءات إضافية

يعمل COM Sniffer على مستوى النظام وفق منطق البروتوكول التسلسلي غير المتزامن (بدء/بيانات/تساوي/توقّف). وإن استخدم التطبيق مستويات فيزيائية مختلفة (UART/TTL أو RS-232 أو RS-485) تبقى عملية الالتقاط نفسها، لأنها تحدث فوق المستوى الكهربائي، داخل مكدّس منفذ COM في Windows.

روابط مفيدة: منفذ سيريال · UART · RS-232 · RS-485 · IOCTL · تعريفات نواة Windows · Wireshark · Modbus.

باختصار: COM Sniffer من SerialTool هو حل «برمجي فقط» لـ المراقبة والتنصّت وتصحيح الأخطاء وتسجيل منفذ سيريال فُتح بواسطة برامج أخرى، مع تعريف نواة موثوق، ومرشّحات دقيقة، وتصدير لتحليل متقدّم.