بعض الملاحظات حول عنصر التحكم MSCOMM
يوفر التحكم في الاتصالات MSComm الخاص بـ VB5.0/6 سلسلة من واجهات أوامر الاتصال القياسية، والتي تسمح بإنشاء اتصالات المنفذ التسلسلي ويمكن توصيلها بأجهزة اتصال أخرى (مثل المودم).
يمكنك أيضًا إرسال الأوامر وتبادل البيانات ومراقبة مختلف الأخطاء والأحداث التي قد تحدث أثناء عملية الاتصال والرد عليها، مما يسمح لك بإنشاء إرسال مزدوج كامل ومعتمد على الأحداث
برنامج اتصال ديناميكي وفعال وعملي. ومع ذلك، في عملية تصميم برامج الاتصال الفعلية، فإن التحكم MSComm ليس مثاليًا وسهل التحكم فيه كما يتصور. وخاصة في Wln الصينية
سيكون هناك المزيد من المشاكل عند الاتصال تحت 95/98. سيبدأ ما يلي بالمقدمة الأساسية، ثم يناقش تدريجيًا المشكلات التي تنشأ في برمجة عنصر تحكم MSComm وتقنيات البرمجة.
1. التواصل مع التحكم MSComm
1. المعرفة الأساسية للاتصالات التسلسلية
بشكل عام، تحتوي أجهزة الكمبيوتر على واحد أو أكثر من المنافذ التسلسلية، وهي com1، com2،...، وتوفر هذه المنافذ التسلسلية أيضًا أجهزة خارجية وأجهزة كمبيوتر لنقل البيانات و
مرور الرسالة. تعمل هذه المنافذ التسلسلية كمترجمين فوريين بين وحدة المعالجة المركزية والأجهزة الطرفية. عندما يتم إرسال بيانات الأحرف من وحدة المعالجة المركزية إلى الأجهزة الطرفية، يتم تحويل بيانات الأحرف هذه إلى بتات تسلسلية
دفق البيانات؛ عند تلقي البيانات، يتم تحويل بيانات دفق البت إلى بيانات أحرف وتمريرها إلى وحدة المعالجة المركزية. علاوة على ذلك، فيما يتعلق بنظام التشغيل، يستخدم Windows برنامج تشغيل اتصال
(COMM.DRV) يستدعي وظائف API لإرسال البيانات وتلقيها عندما يتم استدعاء وظائف API باستخدام عناصر تحكم الاتصال أو الإعلانات، يتم تفسيرها بواسطة COMM.DRV وتمريرها إلى برنامج تشغيل الجهاز.
باعتبارك مبرمج لغة vB، فأنت بحاجة إلى كتابة برامج التواصل. ما عليك سوى معرفة الواجهة التي يوفرها التحكم في الاتصال لوظيفة اتصال Windows AP1. وبعبارة أخرى، ما عليك سوى إعداد ومراقبة
فقط ثق في خصائص وأحداث عنصر التحكم.
2. باستخدام التحكم Mscomm
قبل البدء في استخدام عنصر التحكم MSComm. تحتاج أولاً إلى فهم خصائصه أو أحداثه أو أخطاءه
وصف العقار
يقوم CommPort بتعيين أو إرجاع رقم منفذ الاتصال
تقوم الإعدادات بتعيين أو إرجاع معدل البث بالباود، والتكافؤ، وبتات البيانات، وبتات التوقف كسلاسل
يقوم PortOpen بتعيين أو إرجاع حالة منفذ الاتصال. يمكن أيضًا فتح المنافذ وإغلاقها
يقوم الإدخال بإرجاع وحذف الأحرف الموجودة في المخزن المؤقت للتلقي
يقوم الإخراج بكتابة السلسلة في المخزن المؤقت للإرسال
تقوم الخاصية CommEvent بإرجاع إحدى القيم التالية لحدث اتصال أو خطأ. يمكن أيضًا العثور على هذه الثوابت في مكتبة كائنات عنصر التحكم.
وصف القيمة الثابتة
تلقى ComEventBreak1001 إشارة استراحة
ComEventCTSTO1002ClearToSendTimeout. عند إرسال الأحرف، ضمن الحدث المحدد بواسطة النظام، يكون خط CTS (ClearToSend) منخفض المستوى
ComEventDSRTO1003DataSetReadyTimeout. عند إرسال الأحرف، ضمن الحدث المحدد بواسطة النظام، يكون خط DSR (DataSetReady) منخفض المستوى
خطأ في إطار البيانات ComEventFrame1004. اكتشف الجهاز خطأً في إطار البيانات
تجاوز سعة المنفذ ComEventOverrun1006. لم تتم قراءة الشخصية الموجودة في الجهاز بعد، وتصل الشخصية التالية وتضيع
ComEventCDTO1007CarrierDetectTime. عند إرسال الأحرف، يكون مستوى خط القرص المضغوط (CarrierDetect) منخفضًا خلال الحدث المحدد بواسطة النظام. قرص مضغوط
يُسمى أيضًا RLSD (ReceiveLineSingalDetect، كشف إشارة خط الاستقبال)
ComEventRxOver1008 يتلقى تجاوز سعة المخزن المؤقت. لا توجد مساحة في تلقي المخزن المؤقت
خطأ في التكافؤ ComEventRxParity1009. تم اكتشاف خطأ في التكافؤ في الأجهزة 7
ComEventTxFull1010 المخزن المؤقت للإرسال ممتلئ. أثناء انتظار إرسال الأحرف، يكون المخزن المؤقت للإرسال ممتلئًا.
ComEventDCB1011 حدث خطأ غير متوقع أثناء استرداد منفذ DCB (DeviceControlBlick).
تتضمن أحداث الاتصال الإعدادات التالية:
وصف القيمة الثابتة
عدد الأحرف في المخزن المؤقت للإرسال ComEvSend1 أقل من قيمة العتبة
تلقى ComEvReceive2 أحرف Rthreshold. يستمر إنشاء هذا الحدث حتى يتم حذف البيانات الموجودة في المخزن المؤقت للتلقي باستخدام خاصية الإدخال.
تم تغيير خط ComEvCTS3CTS(ClearToSend).
تم تغيير خط ComEvDSR4DSR(DataSetReady). يحدث هذا الحدث عندما يتغير DSR من 1 إلى 0
يتغير خط ComEvCD5CD (CarrierDetect) عندما يكتشف ComEvRing6 إشارة رنين. بعض URAT(UniversalAsynchronousReciver-
- أجهزة الإرسال، جهاز الاستقبال والإرسال العالمي غير المتزامن) لا يدعم هذا الحدث
تلقى ComEvEOF7 حرف EOF (حرف ASCII رقم 26)
رسائل الخطأ (تحكم MSComm) يسرد الجدول التالي رسائل الخطأ التي يمكن لعنصر تحكم MSComm التقاطها:
وصف القيمة الثابتة
ComInvalidPropertyValue380 قيمة الخاصية غير صالحة
خاصية ComSetNotSupported383 للقراءة فقط
خاصية ComGetNotSupported394 للقراءة فقط
يعتبر هذا التواجد غير صالح عند فتح منفذ ComPortOpen8000.
يجب أن يكون إعداد المهلة 8001 أكبر من 0
ComPortInvalid8002 رقم المنفذ غير صالح
سمات 8003 صالحة فقط في وقت التشغيل
8004 الخصائص تكون للقراءة فقط في وقت التشغيل
تم فتح منفذ ComPortAleadyOpen8005
8006 معرف الجهاز غير صالح أو غير مدعوم
8007 معدل الباود الخاص بالجهاز غير مدعوم
8008 حجم البايت المحدد غير صالح
8009 خطأ في المعلمة الافتراضية
8010 الأجهزة غير متوفرة (مقفلة بواسطة أجهزة أخرى)
لا يمكن لوظيفة 8011 تخصيص قائمة الانتظار
جهاز ComNoOpen8012 غير مفتوح
8013 الجهاز مفتوح بالفعل
8014 لا يمكن استخدام إعلام الاتصال
لا يمكن لـ ComSetCommStateFailed8015 تعيين حالة الاتصال
8016 غير قادر على تعيين حماية حدث الاتصال
ComPortNotOpen8018 يكون هذا التواجد صالحًا فقط عندما يكون المنفذ مفتوحًا
8019 الجهاز مشغول
خطأ في قراءة جهاز الاتصال ComReadError8020
ComDCBError8021 حدث خطأ داخلي أثناء استرداد كتلة التحكم بجهاز المنفذ
بعد فهم الخصائص الأساسية المذكورة أعلاه، يمكنك البدء في كتابة برامج أذونات الاتصال. قم بإنشاء ملف مشروع جديد في VB5.0/6.0. إضافة مجموعة MicrosoftCommControl5.0
ملف، أضف زر الأمر إلى Simplified Form1 وقم بتسميته CmdTest، وقم بتسمية عنصر التحكم MSComm MSComm1، ثم قم بإضافة رمز البرنامج التالي.
PrivateSubcmdTestClick()'افتح المنفذ التسلسلي
MSComml.CommPort=2'Set Com2
IfMSComml.PortOpen=FalseThen
MSComm1.Settings="9600,n,8,1"'9600 معدل الباود، بدون تكافؤ، 8 بتات بيانات، 1 بت توقف
MSComm1.PortOpen=True'افتح المنفذ التسلسلي
إنديف
MSComm1.OutBufferCount=0'مسح مخزن الإرسال المؤقت
MSComm1.InBufferCount=0'أزل المخزن المؤقت للتلقي
'عند إرسال بيانات الأحرف، تأكد من إنهائها بحرف إرجاع (vbcr)
MSComm1.Output="Thisisaqoodbook!"&vbCr
'ضع رقم الهاتف أو أرسل أمراً
MSComm1.Output="ATDT05778191898,&vbCr
'عند إرسال بيانات مصفوفة الأحرف، لاحظ أنه يجب تعيين قيمة لـ ByteArray مسبقًا
ديمبايتي أرياس بايت ()
"تعريف المصفوفة الديناميكية."
ريديمبايتيأراي(1)
"أعد تعريف حجم المصفوفة."
بايت صفيف (0) = 0
بايت صفيف (1) = 1
MSComm1.Output=ByteArray
EndSub
PrivateSubMScommEvent()
حددCaseMSComm1.CommEvent
CasecomEvReceive
DimBufferAsVariant
MSComm1.InputLen=0
"تلقي البيانات الثنائية."
MSComm1.InputMode=ComInputModeBinary
المخزن المؤقت=MSComm1.Input
"تلقي بيانات الشخصية."
MSComm1.InputMode=comInputModeText
المخزن المؤقت=MSComml.Input
كاسيلس
EndSelect
إندسوب
(الإجراء 1)
1 2 اقرأ النص كاملاً في الصفحة التالية