سؤال

لقد حصلت على مودم GSM الأعلى Wavecom. كتبت تطبيقا بسيطا يتواصل مع المودم ويقرأ الرسائل النصية التي يتلقاها.

يستعلم طلبي المودم للحصول على معلومات حول عدد الرسائل التي تخزنها في ذاكرته وإذا كان الرقم أكبر من 0، فهذا يقرأ الرسائل التي تحذفها من ذاكرة المودم. أسهل المودم بهذه الطريقة كل بضع ثوان.

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

يمكن أن يكون بالطبع خطأ المودم، لكنني أتساءل عما إذا كانت الطريقة التي أتواصل بها معها على ما يرام.

تنشيط الجميع، أفتح منفذ المودم التسلسلي للعمليات غير المتزامنة. ثم قمت بتعيين هيكل DCB كما يلي:

GetCommState(PortHandle, DCB);
DCB.BaudRate := 115200;
DCB.ByteSize := 8;
DCB.Parity := NOPARITY;
DCB.StopBits := ONESTOPBIT;
DCB.EvtChar := #13;
SetCommState(PortHandle, DCB);
SetCommMask(PortHandle, EV_RXFLAG);

//the modem does not respond without setting these:
EscapeCommFunction(PortHandle, SETDTR);
EscapeCommFunction(PortHandle, SETRTS);

ثم كل ما أقوم به هو إرسال الأوامر وانتظر استجابة المودم. أنا لا أستخدم أي تحكم في التدفق. كل ما أفعله هو انتظار حدث التكنولوجيا، وقراءة البيانات من قائمة انتظار المنفذ التسلسلي عندما يستجيب المودم واكتب بعض الأوامر التي تليها حرف رقم 13 للاستعلام عن المودم للرسائل.

أعتقد أنني قد أقوم بتعيين بنية DCB بشكل غير صحيح، لأنه يمكنك أن ترى، لا أقوم بتعديل بعض حقوله. لأن معرفتي على المنفذ التسلسلي لا يكفي، لا أعرف كيفية ضبط RTS و DTR التحكم (ممكن / المعوقين / المصافحة / التبديل).

إذا لاحظت بعض الأخطاء الواضحة بهذه الطريقة في التعامل مع المودم، سأكون ممتنا لو شرحت لي ما فعلته خطأ. إذا كان كل شيء على ما يرام، فمن ناحية أخرى، ربما لديك فكرة لماذا معلقة المودم؟

شكرا لكم مقدما.

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

تأكد من أن التحكم في التدفق في إدارة الأجهزة، والمودم، ويتم تعيين جميعها البرنامج نفسه. لا أعرف دلفي، لكنني أعتقد أن DCB يجب أن يكون لديك حقل "أعلام". حاول إعداده إلى 24 للتحكم في تدفق الأجهزة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top