يتم دمج التحكم في الاتصال في VisualBasic وطريقة تصميم برنامج الاتصال ضمن نظام التشغيل windows مع أمثلة محددة لإعطاء برنامج الاتصال الأساسي.
في عام 1992، قامت شركة Crescent Software Inc. بتصميم التحكم في اتصالات المستخدم mscomm.vbx خصيصًا لـ VB، وهو يوفر إمكانات الاتصال التسلسلي لإرسال البيانات واستقبالها من خلال المنفذ التسلسلي، وهو لا يشمل فقط الوظائف المكتملة بواسطة جميع وظائف الاتصال التسلسلي الستة عشر في Windows API، وقام بتطوير المزيد من سمات الكائنات التي تسهل تصميم المستخدم لتلبية احتياجات المستخدمين المختلفين والشركات المختلفة. في الوقت الحاضر، نادرًا ما تتضمن العديد من مواد VB المحلية مقدمة للتحكم في الاتصال هذا، ستقدم هذه المقالة طرق التحكم في الاتصال والبرمجة mscomm.vbx بالتفصيل، وستقدم برنامج اتصال أساسيًا يعتمد على مثال في العمل.
1mscomm.vbx وصف التحكم في الاتصالات
يمكن إضافة عنصر تحكم الاتصال mscomm.vbx مباشرة إلى نموذج النموذج من مربع أدوات VB، ويمكن استخدامه للاتصال. إذا لم يكن هناك مثل هذا التحكم في مربع الأدوات، استخدم عناصر التحكم المخصصة للأدوات لإضافة mscomm.vbx من الدليل الفرعي للنظام الخاص بالنوافذ إلى مربع أدوات vb.
1.1 طرق الاتصال
لدى mscomm.vbx طريقتان مختلفتان للتعامل مع مشكلات تطوير وتصميم برامج الاتصالات المختلفة وحلها
1. يحركها الحدث. وهي تشبه وظيفة رد الاتصال للنافذة عند كتابة برامج Windows باستخدام C/C، وهي طريقة فعالة للتعامل مع المشكلات. في العمل الفعلي، غالبًا ما يتعين علينا التعامل مع العديد من الأحداث ذات الصلة في الاتصال، على سبيل المثال: عندما تصل بيانات الخط إلى النهاية المحلية أو تتغير حالة خط القرص المضغوط وخط إشارة rts، يتعين علينا استخدام الأحداث المقابلة. يتم استخدام عنصر التحكم هذا، ويتم تنفيذ حدث oncomm، والذي يتضمن أيضًا اكتشاف ومعالجة أخطاء الاتصال والمشكلات الأخرى. تُرجع قيمة commevent أحدث حدث اتصال أو رمز رقمي للخطأ. تتضمن الأمثلة التفصيلية للأخطاء والأحداث الخاصة بعناصر التحكم في الاتصال ما يلي:
تلقى mscomm-er-break إشارة استراحة واحدة
انتهت مهلة إشارة mscomm-er-cdtocd
…
تغييرات إشارة mscomm-ev-cdcd
…
2. طريقة الاستفسار. تقع على عاتق المبرمج مسؤولية قراءة قيمة التعليق ومعالجة الأخطاء أو الأحداث التي تحدث. عادةً ما يمكن لتصميم التطبيق البسيط أن يتبنى هذا النهج.
1.2 خصائص ضوابط الاتصالات
إن مفتاح استخدام عناصر التحكم في الاتصال لتجميع برامج الاتصال هو الفهم الدقيق لخصائص عناصر التحكم في الاتصال وتعيينها. يوفر mscomm.vbx 27 خاصية حول عناصر التحكم في الاتصال، مثل:
comport: قم بتعيين أو إرجاع رقم منفذ الاتصال.
الإعدادات: قم بتعيين أو إرجاع تنسيق اتصال البيانات في شكل سلسلة: معدل الباود، والتكافؤ، وبتات البيانات، وبتات التوقف.
portopen: تعيين أو إرجاع حالة منفذ الاتصال (بما في ذلك فتح وإغلاق منفذ الاتصال)
…
3. أمثلة
الخلفية التطبيقية لهذا البرنامج هي برنامج نظام المراقبة الأوتوماتيكي للمرسب الكهروستاتيكي dcc95، والذي يحل مشكلة الاتصال بين جهاز كمبيوتر صناعي واحد (المحطة الرئيسية) و32 وحدة تحكم دقيقة (محطات فرعية). يعتمد هيكل شبكة الحافلات بين المحطة الرئيسية والمحطة الفرعية معيار الاتصال rs-485 ويقوم بإجراء اتصالات البيانات بطريقة الأسئلة والأجوبة. نظرًا لأن المحطات الفرعية البالغ عددها 32 محطة ترسل أوامر الاتصال (أوامر الوصلة الهابطة) إلى المحطة الرئيسية، فإن المحطة الرئيسية تستمر في إرسال أوامر الوصلة الهابطة بعد تلقي أوامر الرد المقابلة (أوامر الوصلة الصاعدة) المرسلة مرة أخرى بواسطة المحطات الفرعية. وفقًا لمتطلبات وظائف النظام، تحتاج المحطة الرئيسية إلى إرسال نوعين من الأوامر: (1) أمر متزامن، يتم تشغيله بواسطة مؤقت ويتم إرساله مرة واحدة في كل دورة ls؛ (2) أمر غير دوري، يتم تشغيله بواسطة المشغل الناتج عن تحريك زر الأمر المقابل، يتم إرساله بشكل دوري. يتم تثبيت برنامج نظام المراقبة التلقائي على المحطة الرئيسية، كما يتم تثبيت برنامج الاتصال على المحطة الرئيسية كجزء من برنامج نظام المراقبة التلقائي.
تسرد هذه المقالة فقط قائمة البرامج التجريبية الأساسية للاختبار عند تصحيح أخطاء برامج الاتصال. أثناء الاختبار، تم استخدام جهاز كمبيوتر واحد كمحطة رئيسية، وقام جهاز كمبيوتر آخر بمحاكاة عمل 32 محطة فرعية. استخدم جهازي الكمبيوتر اتصال المنفذ التسلسلي rs232c. أضف عنصر تحكم واحد في الاتصالات، وعنصري تحكم في المؤقت، وعنصر تحكم في زر الأمر إلى نموذج (نموذج) برنامج عرض الاتصالات الخاص بالمحطة الرئيسية. يتم استخدام عنصر التحكم في الاتصال (mscomm1) للوصول إلى المنفذ التسلسلي، وإرسال واستقبال البيانات (التحكم في المؤقت الدوري). دوري) يستخدم للتحكم في المحطة الرئيسية لإرسال أوامر دورية إلى كل محطة فرعية كل ثانية؛ يتم استخدام زر التحكم في الأمر (أمر غير دوري) والتحكم في المؤقت غير الدوري (غير دوري) لإرسال أوامر غير دورية. يستخدم نقل البيانات الاتصالات المستندة إلى الأحداث، ويتم تعيين سمة rtreshlod وفقًا لأوامر إرسال مختلفة، مما يتسبب في تلقي حدث oncomm للبيانات.
2.1 إجراءات التهيئة لكل عنصر تحكم في النموذج
قم بتعيين معلمات العمل للمنفذ التسلسلي للاتصالات، واضبط الفاصل الزمني للمقاطعة للمؤقت الدوري على ls، والفاصل الزمني للمقاطعة للمؤقت غير الدوري على 0.5 ثانية.
تحميل النموذج الفرعي ()
mscomm1.commport=2'حدد المنفذ التسلسلي com2
mscomm1.settings="9600,n8,1"'معدل الباود 9600، بدون بت تكافؤ، 8 بتات بيانات وبت توقف واحد
mscomm1.inputlen=0'input سوف يقرأ محتويات المخزن المؤقت للتلقي بالكامل
mscomm1.inbuffersize=1024'قم بتعيين طول البايت للمخزن المؤقت للتلقي
mscomm1.portopen=true'افتح منفذ الاتصال
mscomm1.inbuffercount=0'مسح بيانات المخزن المؤقت للإرسال
mscomm1.outbuffercount=0'مسح بيانات المخزن المؤقت للتلقي
الدورية.inteval=100'اضبط الفاصل الزمني للتوقيت ls بحيث يتم إرسال أمر القياس عن بعد مرة واحدة كل ls
Nonperiodic.inteval=500'قم بتعيين الفاصل الزمني 0.5 ثانية واستفسر عما إذا كان زر الأمر نشطًا لتحديد ما إذا كان سيتم إرسال أوامر دورية أم لا
Command-PRessed=false'زر الأمر غير نشط
أثناء-دوري=خطأ'لم يبدأ بعد نقل بيانات الأوامر الدورية
أثناء-nonperiodic=false'لم يبدأ بعد نقل بيانات الأوامر غير الدورية
endub
2.2 برنامج إرسال الأوامر بشكل غير دوري
وفقًا لحالة زر الأمر وحالة نقل بيانات الأمر الدوري، يتم إرسال الأوامر غير الدورية في برنامج المقاطعة للمؤقت غير الدوري.
النقر على الأمر دون الدوري ()
Command-pressed=true'تنشيط زر الأمر
endub
مؤقت فرعي ()
ifduring-periodic=trueorcommand-pressed=false
"thenexitsub" إذا لم ينته إرسال بيانات الأوامر الدورية أو تم تنشيط زر الأمر، فاخرج من البرنامج الذي يرسل أوامر دورية.
Command-pressed=false'يعود زر الأمر إلى الحالة غير النشطة
callenddata(nonperiodic-command)'أرسل أوامر غير دورية
mscomm1.rthreshold=r-nonperiodic-byte'بعد إرسال الأمر غير الدوري، قم بتعيين سمة rthreshold بحيث تقوم المحطة الرئيسية بتشغيل حدث oncomm بعد تلقي العدد المحدد من البايتات.
endub
2.3 برنامج توقيت الدوري
إرسال أوامر دورية في برنامج المقاطعة للمؤقت الدوري:
الموقت دون الدوري ()
ifduring-nonperiodic=truethenexitsub'إذا لم ينته بعد إرسال بيانات الأوامر غير الدورية، فاخرج من البرنامج لإرسال أوامر غير دورية.
"خلال الفترة الدورية = صحيح" يضبط حالة نقل بيانات الأوامر الدورية على أنها قيد التقدم
callenddata(الأمر الدوري)'إرسال الأوامر الدورية
mscomm1.rthreshold=r-periodic-byte'بعد إرسال الأمر الدوري، تستقبل المحطة الرئيسية بايتات r-remot-edata-byte، والتي يمكن أن تؤدي إلى حدث oncomm
endub
2.4oncomm برنامج الحدث
وفقًا لقيمة إعداد سمة rthreshold، عند استلام حرف البايت المقابل في المخزن المؤقت المتلقي، يتم تشغيل حدث oncomm وتلقي البيانات في برنامج المقاطعة.
submscomm1-oncomm()
Selectcasemscomm1.commevent'هنا يمكنك إدراج تعليمات برمجية للتعامل مع الأخطاء أو الأحداث المختلفة.
casemscomm-ev-receive
تلقي سلسلة$=mscomm1.input
حددcasemscomm1.rthreshold
بيانات الاستجابة للبايت الدوري للأمر الدوري
calldisposedata(periodic-command)'معالجة البيانات المستلمة
"خلال الفترة = خطأ" يضبط حالة نقل بيانات الأوامر الدورية على النهاية
بيانات الاستجابة للأوامر غير الدورية Caser-nonperiodic-byte
calldisposedata(nonperiodic-command)'معالجة البيانات المستلمة
أثناء-nonperiodic=false' يضبط حالة نقل بيانات الأوامر غير الدورية على النهاية
endselect
endselect
endub
مع الترقية المستمرة لإصدار vb، سيصبح vb أسرع وأسهل استخدام وأقوى أداة لتطوير التطبيقات، وأحد أدوات الاختيار الأولى لتطوير برامج تطبيقات العميل/الخادم على مستوى المؤسسة. ->