بسم الله الرحمن الرحيم
والصلاة والسلام على سيدنا محمد واله وصحبه أجمعين
السلام عليكم ورحمة الله وبركاته
مقدمة : سنتكلم إن شاء الله عن أوامر AT بشكل مبسط و موسع قليلاً بالنسبة للهاتف المحمول
أوامر AT commands: هي مجموعة من الأوامر التي يستخدمها الكمبيوتر للتحكم والتواصل مع أجهزة الاتصالات الخارجية مثل المودم أو الجوال أو GSM modem أو GPRS Modem
الآن وصل الكمبيوتر مع جهاز الموبايل أو المودم المعتبر :
طبعا الهاتف المحمول لابد أن يكون من الأنواع الجديدة أو على الأقل يحوي تقنية متقدمة وليس قديم وأغلب الأنواع الحديثة تدعم أوامر AT Commands وهذا ما يهمنا عموما في سياق الموضوع سنتعرف على كيفية معرفة صلاحية الهاتف لموضوعنا
يتم توصيل الموبايل مع الكمبيوتر بواسطة USB Cable أو أحد الأشكال المعروفة في هذا العصر

تعريف الموبايل Driver:
طبعا عند توصيل الجهاز مع الحاسوب عبر الوصلة فأن الحاسوب سيتعرف عليه كجهاز جديد بالتالي لا بد من تعريف هذا الجهاز عبر ملفات التعريف Driver الخاصة به Nokia Connectivity Cable Driver في بحثنا هذا سنعتمد على هاتف من طراز نوكيا Nokia
طبعا مع الجهاز يأتي قرص CD مضغوط يحوي التعريف وبرنامج الاتصال أو بطرق أخرى
يمكنك البحث في الانترنت عن التعريف وبالنسبة للنوكيا أرح نفسك ونصب برنامج آل بي سي سيوت Nokia PC Suite
بعد تنصيب Nokia PC Suite و الانتهاء من التنصيب قم بوصل الجهاز وسيتعرف عليه الجهاز وسيتم تثبيت الملفات اللازمة للوصلة
الآن الوصلة معرفة والجهاز متصل
بعد انتهاء التعريف : نذهب إلى خصائص النظام من لوحة التحكم Device Manager نجد تحت بند Modems المودم نجد انه تم تعريف مودم خاص بجهازك المحمول الذي تم توصيله
ومن صفحة خصائص المودم ضمن تبويب Modemنعرف رقم المنفذ المخصص لهذا المودم وهو كما في الصورة المنفذCom4

الأمر مشابه للمودم العادي المتصل عبر Serial Port والذي نستخدمه للاتصال بالهاتف أو الانترنيت
الآن الأمور جيدة لدينا هاتف متصل مع الجهاز ومعتبر كمودم ونعرف المنفذ الخاص به يبقى علينا الآن إجراء التجارب لكيفية التعامل مع هذا المودم
الاتصال بالمودم وإرسال الأوامر له: طبعا البرنامج المعتاد هو Hyper Terminal الشهيرة الموجودة مع Windows
أهم خطوة هي أن نتأكد من أن الجهاز يدعم أوامر AT
سنبدأ الآن إن شاء الله بشرح أساسي للتعامل مع Hyper Terminal ثم سننتقل للغة البرمجة حتى نتعرف على كيفية التعامل مع هذه الأوامر من خلال برنامجنا
بالنسبة للـــ Hyper Terminal
نفتح برنامج Hyper Terminal ضمن مساره الافتراضي في الجهاز XP

نحدد اسم الاتصالوهو اسم اختياري حسب رغبتك ثم نضغط OK

نحدد منفذ الاتصال (Com4)أو المنفذ المخصص للهاتف المحمول الموصول مع الجهاز و الذي تعرفنا عليه سابقا من خلال خصائص المودم طبعا ستجد المنفذ ضمن القائمة

تظهر نافذة الخصائص للمودم HardWare =Configure اضغط OK

تم إعداد البرنامج فتظهر لنا الشاشة التالية لنكتب فيها الأوامر والبيانات التي نريد إرسالها إلى الموبايل وتظهر فيها أيضا رد الموبايل على تلك الأوامر

الآن حاول أن تكتب في صفحة البرنامج البيضاء أي حرف إذا لم يظهر مع شيء على الشاشة فقم بعميلة الضبط كما في الصورة التالية

انتقل للتبويب الثاني و اضغط على ASCII Setup

ضع علامة الاختيار على الخيار الثاني Echo Typed Characters Locally

بعد ذلك اكتب AT ثم اضغط Enter إذا ظهر لك OK كما في الصورة التالية فإن الجوال يدعم أوامر AT

الآن و الحمد لله تم التأكد من دعم الهاتف المحمول لأوامر AT
تطبيق سريع :
طبعا أوامر AT عديدة ومتنوعة من اتصال و إرسال و استقبل و معرفة خصائص وبحث .... الخ ....
وسنختار منها الاستخدامات الشائعة بالنسبة للـــ Hyper Terminal
سنقوم الآن بتجربة إجراء اتصال صوتي عبر رقم هاتف محدد وكذلك إرسال رسالة نصية لهذا الهاتف
أولاً : إجراء اتصال برقم هاتف :
داخل نافذة Hyper Terminal البيضاء نكتب
AT
ثم نضغط زر الإدخال ENTER
فيكون الرد هو OK طبعا تم شرح هذه النقطة من سابق
الآن نكتب الأمر التالي وهو للاتصال ATD أو ATDT وهو على الشكل التالي :
ATDT <+963966993175;>
ثم نضغط زر الإدخال ENTER
ماذا ترى ؟ الآن انظر إلى شاشة جوالك سترى جهازك يقوم بعملية الاتصال
تستطيع تغير الرقم أو كتابته بأي طريقة فربما يكون داخلي أو خارجي المهم أنك تكتب الرقم سواء داخلي أو دولي ADTA 0966993175
ملحوظة ربما تثير فضولك الفاصلة المنقوطة الموجودة في نهاية الرقم فما الغاية منها
هذه الفاصلة المنقوطة تشير إلى المودم على أن المكالمة هي مكالمة صوتية وليست من نوع البيانات أو الفاكس وبدونها سيتم الاتصال بمكالمة بيانات والرقم هو رقم هاتفي بالتالي لن يتم الاتصال فالفاصلة ضرورية لهذه العملية .
ثانياً : إرسال رسالة نصية :
سنبدأ ببعض المعلومات النظرية حول الرسائل وهي مقتبسة من مشاركة الأخ م. عبد الملك هنا
الرسائل النصية القصيرة (ٍSMS) تنقسم في تركيبها إلى قسمين
1- أسلوب النص( Text Mod)
2- أسلوب وحدات البيانات (PDU Mode)
أسلوب وحدات البيانات (PDU mode)
1-تكون الرسالة على شكل سلسلة من البيانات على بالهكسا (hexadecimal) مثال: A782340B11DCEFFF
2-أصعب لأن المبرمج يحتاج إلى معرفة تقسيم ال
Frame وماذا تعنى كل خانة بالهكسا مثال:
A789660B11DCEFFF
A78 : رمز الرسائل القصيرة
9660 : رقم الفتح
B11DC : الرقم المرسل إليه
CEFFF : نص الرسالة
3-أكثر مرونة
أسلوب النص text mod
1-تكون الرسالة بال ASCII بحروف مقروءة للمستخدم
مثال:How Are You
2-الأبسط في الاستخدام ولا يحتاج المبرمج سوى كتابة الرسالة والرقم المرسل إليه بشكل صحيح
3-أقل مرونة وأقل إمكانية لاستخدامها في تطبيقات مختلفة
المثال في فقرة 2 ليس دقيق وإنما للتوضيح فقط
• أسلوب النص أقل مرونة لأن التركيبة ثابتة واللغة ثابتة مثلاُ لو أردت أن ترسل رسالة بالعربي ، لن تتمكن من ذلك إذا كنت تستخدم أسلوب النص
• أسلوب وحدة البيانات تحتاج إلى برنامج للتحويل من هكسا إلى لغة مقروءة عند المستقبل وعلى هذا البرنامج أن يقوم بتحليل سلسلة الهكسا وتفكيكها اعتمادا على معرفته بتركيب إل Frame المستخدم في أسلوب وحدة البيانات
الآن ننتقل لعملية الإرسال :
طبعا لن ننسى الهاتف يدعم AT أليس كذلك؟
الآن نكتب الأمر التالي هو AT+CMGF=?
ثم نضغط زر الإدخال ENTER
وهو يستعلم عن نمط الرسائل التي يدعمها الموبايل وهناك نمطين SMS PDU و SMS Text كما ذكر أنفاً
ورد الموبايل على هذا الأمر هو الرقم 0 و 1 وصفر تعنى النمط SMS PDU و واحد تعنى النمط SMS Text
أي إن الموبايل يدعم النمطين ولو ظهر أحدهما فالموبايل يدعم نوع دون أخر

ونحن سنستخدم النمط SMS Text لأنه الأسهل حيث يتم إرسال الرسالة إلى الموبايل على هيئة نص عادى بدون أية معالجة
لذلك سنكتب الأمر التالي لنجعل النمط هو SMS Text
الأمر هو AT+CMGF=1 ثم Enter ورد الموبايل عليه هو OK

وزيادة في التأكيد سنستعلم عن النمط المستخدم لنتأكد انه SMS Text
ولذلك سنكتب الأمر AT+CMGF? ليكون الرد 1 مما يعنى أن النمط المستخدم هو SMS Text
لاحظ أن الاختلاف بين هذا الأمر وبين ما كتبناه سابقا هو علامة تساوى

الأمر التالي هو AT+CMGS وهو إرسال SMS
وصيغته التالية "AT+CMGS="0966993175 حيث إن الرقم بين العلامتين هو رقم الموبايل الذي تريد أن ترسل له الرسالة
ورد الموبايل على هذا الأمر هو العلامة < حيث ينتظر منك الموبايل أن تكتب نص الرسالة

نكتب نص الرسالة ولكن لن ننهى النص بـ Enter ولكن بالضغط على CTRL+Z ليتم إرسال الرسالة
ملحوظة :
نعلم أن لكل حرف كود معين يسمى AScii Code (الاسكى كود) وهناك حروف تكتب مثل الحروف العادية وهناك حروف لا تكتب ولكن لها معنى
ونلاحظ انه عند نهاية كل أمر كنا نضغط ENTER وهذا يعنى إرسال حرف الاسكى كود له هو 13 بالنظام العشري وD بالنظام السداسي عشر وهذا الحرف يسمى Carriage Return واختصارا CR
وأيضا نلاحظ انه عن إنهاء الرسالة ضغطنا CRTL+Z وهذا يعنى أننا أرسلنا الحرف الذي كوده 26 بالنظام العشري و A1 بالنظام السداسي عشر واسمه Substitute أو اختصاراً Sub
بعد الانتهاء من هذين القسمين أنوه إلى انه يمكن إجراء جميع أوامر AT بالها يبر وربما بفعالية أكبر من بعض لغات البرمجة لكن كوننا في مجتمع برمجي فما يهمنا أن تكون هذه العمليات تنفذ من خلال برنامجنا .
صراحة أنا الموضوع كله بحثت عنه لأجل إجراء مكالمة ليست صوتية أو بيانات أو فاكس وإنما مكالمة خدمة مثل الاستعلام عن الرصيد و التي تحوي في بدايتها رمز النجمة * وفي نهايتها رمز المربع # ولم تفلح معي إلى الآن مثال *150*5555#
وللامانة ما سبق قمت بتجميعه من هنا وهناك مع اضافة مايلزم وتصويب الخطا بعد التجربة
وكل ما سبق هو مقدمة للرد اللاحق وهو الموضوع الاساسي
نعود لموضوعنا :
بعد أن تركزت في أذهاننا أساسيات هذه العملية و أوامر AT و الفائدة منها سنقوم بكتابة بعض الأكواد التي نتعامل مع AT من خلال برنامجنا
اللغة المستخدمة VB6
بسم الله نبدأ :
سنستخدم الأداة Microsoft Comm Control يعني MSComm
ببساطة افتح مشروع جديد
أضف الأداة (Microsoft Comm control 6.0) كما تراها في الصورة التالية :
اضغط CTRL+T للوصول لنافذة الComponents وابحث عن الأداة وأضفها

بعد أن تضيف الأداة جهز النموذج على هذا الشكل بالأدوات التالية :
أداة Microsoft Comm control 6.0 عدد 1 تحت مسمى MSComm1
أداة Text عدد 3 تحت مسمى TextCom و TextNum و TextMsg
أداة Command عدد 2 تحت مسمى CommandMsg و CommandCall
هذا هو تصميم الفورم :

الآن الصق الكود التالي كاملا :
وهو كود الرسالة للزر الأول و الاتصال للزر الثاني :
'AT >> VB4ARAB Private Sub CommandCall_Click() 'CALL MSComm1.CommPort = TextCom.Text MSComm1.Settings = "9600,n,8,1" MSComm1.InputLen = 0 MSComm1.PortOpen = True MSComm1.Output = "AT" & Chr$(13) & Chr(10) MSComm1.Output = "ATDT" & Chr$(34) & TextNum.Text & ";" & Chr$(13) & Chr(10) MSComm1.PortOpen = False End Sub Private Sub CommandMsg_Click() MSG MSComm1.CommPort = TextCom.Text MSComm1.Settings = "9600,n,8,1" MSComm1.InputLen = 0 MSComm1.PortOpen = True MSComm1.Output = "AT" & Chr$(13) & Chr(10) MSComm1.Output = "AT+CMGF=1" & Chr$(13) & Chr(10) MSComm1.Output = "AT+CMGS=" & Chr$(34) & TextNum.Text & Chr$(34) & Chr(13) & Chr(10) MSComm1.Output = TextMsg.Text & Chr(26) MSComm1.PortOpen = False End Sub
الآن شغل البرنامج و أملأ المدخلات المطلوبة : المنفذ و الرقم ونص الرسالة ثم جرب زر الاتصال وزر الإرسال .


