اطلاعیه

Collapse
No announcement yet.

مشکل در خواندن پیامک sim900

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در خواندن پیامک sim900

    مهندس های عزیز من یه برنامه نوشتم تو کدویژن.
    برنامه خوندن sms دریافتی وصفر کردن PORTD.6 .
    طبق این برنامه وقتی شروع میشه میره تو حلقه while و کل sms ها پاک میشه و j=0 میشه.وقتی smsمیاد برنامه میره تو اینتراپت وبا تابعی که نوشتم دریافت و کپی ومقایسه میشه واگه متن sms ام کد 1 بود PORTD.6=0 میشه.و دوباره برمیگرده و کل اسمس هارو پاک میکنه و j=0 میکنه تا اسمس بعدی.
    حالا وقتی به عنوان اولین smsکد 1 رو میفرستم PORTD.6=0 میشه و مشکلی نیست.
    مشکل اینجاست که این برنامه وقتی درست کار میکنه که فقط اولین sms متن 1 باشه.
    مثلا اگه sms اول رو اشتباه بفرستم که کاری انجام نشه و با درست فرستادن sms دوم PORTD.6=0 کنه این کار انجام نمیشه.
    درحالی که کل sms ها تو حلقه while پاک میشه و sms بعدی که بیاد حتما میره تو خونه 1 حافظه مثل بار اول.
    حالا به نظرتون مشکل از چیه؟
    منون میشم کمک کنید
    اینم برنامه:

    #include <mega32a.h>
    #include <string.h>
    #include <alcd.h>
    #include <stdio.h>
    #include <delay.h>
    char Enter=13;
    char double_quote=34;
    char Ctrlz=26;
    char buffer[32];
    int i=1;
    unsigned char devices;
    float temp;
    char sms[250];
    char B;
    char str1[250];
    char k=0;
    int j=0;
    int p=0;
    char str2[]="1";
    int result;
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    lcd_gotoxy(7,1);
    lcd_putsf("Get sms.."
    delay_ms(1000);
    lcd_clear();
    delay_ms(2000);
    printf("AT+CMGR=1%c",Enter);
    while(j==0){
    B=getchar();
    switch(B){
    case 0:
    break;
    case 10:
    if(sms[61]!=0){
    j=1;
    };
    break;
    case 13:
    if(sms[61]!=0){
    j=1;
    };
    break;
    default:
    sms[p]=B;
    p++;
    };
    };
    strcpy(str1,&sms[61]);
    result=strcmp(str1,str2);
    if(result==0){
    lcd_puts(str2);
    PORTD.6=0;
    }
    delay_ms(500);
    }
    void main(void)
    {
    PORTA=0x00;
    DDRA=0x00;
    PORTB=0x00;
    DDRB=0x00;
    PORTC=0x00;
    DDRC=0xFF;
    PORTD=0x44;
    DDRD=0x40;
    GICR|=0x40;
    MCUCR=0x00;
    MCUCSR=0x00;
    GIFR=0x40;
    UCSRA=0x00;
    UCSRB=0x18;
    UCSRC=0x06;
    UBRRH=0x00;
    UBRRL=0x33;
    ACSR=0x80;
    SFIOR=0x00;
    lcd_init(16);
    lcd_clear();
    printf("ATE0%c",Enter);
    delay_ms(100);
    #asm("sei&quot
    while (1)
    {
    j=0;
    printf("AT+CMGDA=%cDEL ALL%c%c",double_quote,double_quote,Enter);
    delay_ms(1000);
    }
    }
لطفا صبر کنید...
X