شكرا على تجاوبك اخي حسن
بالنسبة لدالة الارسال التالية :
كود:
// Send Status SMS
void Send_Msg(char* Msg)
{
GM862_Send(atc3);
while (rsp != GSM_Ready_To_Receive_Message) ;
GM862_Send_Ram(Msg);
UART1_Write(0x1A);
UART1_Write(0x0D);
while (rsp != GSM_OK) ;
}
استبدلتها بهذه كما وضحت في شرحك أخي الكريم:
كود:
// Send Status SMS
void Send_Msg(char* Msg)
{
GM862_Send(atc3);
GM862_Send(phone_number);
while (rsp != GSM_Ready_To_Receive_Message) ;
GM862_Send_Ram(Msg);
UART1_Write(0x1A);
UART1_Write(0x0D);
while (rsp != GSM_OK) ;
}
لاكنه عند الفحص يعطيني خطأ في السطر التالي
كود:
GM862_Send(phone_number);
لذلك عدلته على النحو التالي :
كود:
GM862_Send(phone_number[i]);
بعد الفحص كل شيء جيد لكن عند المحاكات و ارسال كلمة status? للجوال يتوقف البيك عن الارسال بعد الامر التالي "=AT+CGMS
ويبقى متوقف دون ان يكمل بقية الاوامر كتحديد رقم الهاتف و الرسالة...
وبعد تجربة المشروع الاصلي الذي ارفقته اخي حسن عند المحاكات بارسال كلمة status? للجوال يتوقف البيك عن الارسال بعد كلمة end اي دون ان يرسل الرسالة و يبقى متوقف
اعتذر اخي الكريم عن كثرة الاسئلة فأنا مبتدأ في هذا المجال و شكرا على تفهمك أخي بارك الله فيك
|
السلام عليكم
انا بخدمتك أخي فلا داعي لاعتذار انت أسئل وانا شيئ الذي اعرفه اجيبك به فورا
عفوا اخي انا قمت بمراجعه الكود والرساله الخطأ الي ظهرت لك امر طبيعي لماذا
لانك لو تراجع الكود ستجد هذه الرساله وهي من نوع الثابت
كود:
const char atc3[] = "AT+CMGS=\"123456789\"";
وعليه عند استخدام كود جديد لاستخدام اي رقم هاتف قمنا بتغير هذه مصفوفه الى التالي وهذه من نوع متغير
كود:
char atc3[] = "AT+CMGS=\"";
وعليه هنا اختلفت طبيعه الارسال
انظر
كود:
void GM862_Send(const char *s)
تلاحظ لون احمر تعني مصفوفه او متغير من نوع ثابت (( متغيرات مخزونه في روم))
كود:
void GM862_Send_Ram(char *s1)
اما هذه داله مهمتها ارسال متغير او مصفوفه مخزونه في رام
ولهذا عليك تصحيح الكود الى التالي
كود:
unsigned ComposeMessage(char* Message);
// Send Status SMS
void Send_Msg(char* Msg){
GM862_Send_Ram(atc3);
GM862_Send_Ram(phone_number);
while (rsp != GSM_Ready_To_Receive_Message) ; // Wait for appropriate ready signal
GM862_Send_Ram(Msg); // Send message content
UART1_Write(0x1A); // Send CTRL + Z as end character
UART1_Write(0x0D); // Send CR
while (rsp != GSM_OK) ; // Wait OK as confirmation that the message was sent
}
تم تصحيح الشرح وستلاحظ التعديل بلون احمر صفحه 34 و 35 و 38
http://www.mediafire.com/view/nof6m2...0%20%20GSM.pdf