سلام به دوستان
من دارم با ماژول sim 908 کار می کنم و می خوام با میکرو ازش دیتای سریال دریافت کنم و اون دیتای سریال و با یک دیتای خاص که در میکرو به صورت رشته هست مقایسه کنم و سپس دستوری از میکرو مطابق اون مقیسه به ماژوا بفرستم .
من کد زیر و نوشتم ولی جواب نمی ده !!
روال کار به این صورت است که با ارسال هر پیامی با هر محتویاتی به ماژول میکرو portb.3 رو روشن کنه .
هموان طور که می دونیم با ارسال پیام به ماژول پاسخ ماژول به شکل زیر است:
CMTI: "SM",1+
حالا من تو برنامه به میکرو گفتم هر دیتایی غیر از دیتای RECSMS بیاید PORTB.3 سه بار چشمگ بزند و کل اس ام اس ها رو پاک کنه .
با پروتوس تو قسمت ترمینال مجازی جواب گرفتم ولی تو عمل نه و هر بار که اس ام اس می فرستم وارد مد چشمک میشه .
همچنین مطمن هستم که بود ریتم درسته اخه دستوری رو که می کرو واسه پاک کردن اس ام اسا می فرسته ماژول اجرا می کنه .
بود ریتم هم 4800 هستش .
اینم کدی که نوشتم :
من دارم با ماژول sim 908 کار می کنم و می خوام با میکرو ازش دیتای سریال دریافت کنم و اون دیتای سریال و با یک دیتای خاص که در میکرو به صورت رشته هست مقایسه کنم و سپس دستوری از میکرو مطابق اون مقیسه به ماژوا بفرستم .
من کد زیر و نوشتم ولی جواب نمی ده !!
روال کار به این صورت است که با ارسال هر پیامی با هر محتویاتی به ماژول میکرو portb.3 رو روشن کنه .
هموان طور که می دونیم با ارسال پیام به ماژول پاسخ ماژول به شکل زیر است:
CMTI: "SM",1+
حالا من تو برنامه به میکرو گفتم هر دیتایی غیر از دیتای RECSMS بیاید PORTB.3 سه بار چشمگ بزند و کل اس ام اس ها رو پاک کنه .
با پروتوس تو قسمت ترمینال مجازی جواب گرفتم ولی تو عمل نه و هر بار که اس ام اس می فرستم وارد مد چشمک میشه .
همچنین مطمن هستم که بود ریتم درسته اخه دستوری رو که می کرو واسه پاک کردن اس ام اسا می فرسته ماژول اجرا می کنه .
بود ریتم هم 4800 هستش .
اینم کدی که نوشتم :
کد:
#include <mega32.h> #include <stdio.h> #include <delay.h> char RECSMS[]={'+','C','M','T','I',':',' ','"','S','M','"',',','1',0X0D}; char data [5]; char ram,i,j; bit flag; void main() { DDRB.3=1; PORTB.3=0; DDRA=0xff; PORTA=0x00; UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0X00; UBRRL=12; //BAUDE RATE 4800 delay_ms(1000); for(i=0;i<6;i++) { PORTB.3=~PORTB.3; delay_ms(800); } PORTA.1=1; //ON MODULE delay_ms(1500); PORTA.1=0; delay_ms(15000); //printf("AT+CGPSPWR=1"); //putchar(0x0d); //delay_ms(500); //printf("AT+CGPSRST=1"); //putchar(0x0d); //delay_ms(15000); //#asm ("sei") ; while(1) { while(1) { getdata: ram=getchar(); if(((ram==0X0D)||(ram==0X0A))&&(i==0)) goto getdata; //declare 2 first byte data[i]=ram; if(ram==0x0D) break; i++; } printf("i=%i",i); i=0; ram=0; //delay_ms(500); //printf("data recived !!!"); //putchar('\r'); while((data[i]!=0x0d)) { if(RECSMS[i]!=data[i]) { //putchar('\r'); // printf("wrong !!!"); flag=1; i=0; goto wrong ; } i++; } wrong: if(flag==1) { printf("AT+CMGDA="); putchar('"'); printf("DEL ALL"); putchar('"'); putchar(0X0D); for(j=0;j<6;j++) { PORTB.3=~PORTB.3; delay_ms(800); } } if(i==13)PORTB.3=1; i=0; flag=0; for(j=0;j<20;j++) { data[j]=0; }
دیدگاه