سلام
من یه برد آموزشی sim900 از فروشگاه eca خریدم و خواستم برنامه ای رو بنویسم که مثلا با دریافت sms ی که متنش rel1 هست, رله شماره یک رو فعال کنه
برای شروع هم از برنامه های آماده که توی پکیج sim900 بود استفاده کردم ----- برنامه SMS Reciever
ممکنه راهنمایی کنید که چطور باید این کار رو انجام بدم
با سپاس
این کدی هست که من تغییر دادم
من یه برد آموزشی sim900 از فروشگاه eca خریدم و خواستم برنامه ای رو بنویسم که مثلا با دریافت sms ی که متنش rel1 هست, رله شماره یک رو فعال کنه
برای شروع هم از برنامه های آماده که توی پکیج sim900 بود استفاده کردم ----- برنامه SMS Reciever
ممکنه راهنمایی کنید که چطور باید این کار رو انجام بدم
با سپاس
این کدی هست که من تغییر دادم
کد:
/***************************************************** Project : SMS Reciever Version : 1.0 Date : 1392/07/20 Author : Ali Imanifar Company : ECA Comments: This is a sample program for SIM900 Learning board produce by ECA Chip type : ATmega32 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 512 *****************************************************/ #include <mega32.h> #include <stdlib.h> #include <delay.h> #include <keypad.h> #include <SIM900.h> // Alphanumeric LCD functions #include <alcd.h> // Declare your global variables here char key=16; char str[50],sms[200],phone[30],s1[3]="X1",s2[3]="55"; int i=0; // External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { // Place your code here char str2[5]; getstr(str); str2[0] = str[12]; str2[1] = 0; i = atoi(str2); PORTD.6 = 1; delay_ms(700); PORTD.6 = 0; lcd_clear(); lcd_gotoxy(0,0); lcd_puts("New Message"); lcd_gotoxy(0,1); lcd_puts("Read:1 Skip:2"); key = keyscan(); while((key != 1) & (key != 2)) { key = keyscan(); } if(key == 1) { SMS_Recieve(sms,phone,i); lcd_clear(); // lcd_show(phone,0); // lcd_show(sms,1); if(strcmp(sms,s1)) { lcd_puts("Re:S1 "); } if(strcmp(sms,s2)) { lcd_puts("Re:S25 "); } while(keyscan() != 10); lcd_clear(); } else { lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Skipped"); delay_ms(500); lcd_clear(); } lcd_gotoxy(0,0); lcd_puts("Read:1 "); lcd_gotoxy(0,1); lcd_puts("Delete:2 "); } // Standard Input/Output functions #include <stdio.h> void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out // State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0 PORTC=0x00; DDRC=0x0F; // Port D initialization // Func7=In Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=0 State5=0 State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x60; // External Interrupt(s) initialization // INT0: On // INT0 Mode: Falling Edge // INT1: Off // INT2: Off GICR|=0x40; MCUCR=0x02; MCUCSR=0x00; GIFR=0x40; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; // Alphanumeric LCD initialization // Connections are specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTA Bit 0 // RD - PORTA Bit 1 // EN - PORTA Bit 2 // D4 - PORTA Bit 4 // D5 - PORTA Bit 5 // D6 - PORTA Bit 6 // D7 - PORTA Bit 7 // Characters/line: 16 lcd_init(16); // Global enable interrupts #asm("sei") lcd_clear(); delay_ms(200); lcd_gotoxy(0,0); lcd_puts("Only GOD"); lcd_gotoxy(0,1); lcd_puts("www.ECA.ir"); delay_ms(3000); lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Power ON The"); lcd_gotoxy(0,1); lcd_puts("SIM900? Y:1 N:2"); i = 17; do i = keyscan(); while ((i != 1) & (i != 2)); if(i == 1) { lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Powering ON ..."); SIM900_PWR_ON(); lcd_gotoxy(0,1); lcd_puts("Powered ON"); } else { lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Note:"); lcd_show("You choose to powering on the SIM900 by yuor self so if the module is off please use the power button on the module to power it on",1); while(SIM900_Is_ON() == 0) { delay_ms(300); lcd_gotoxy(0,1); lcd_puts("Power ON SIM900 "); } delay_ms(2000); } delay_ms(1000); i = SIM900_Init(); lcd_clear(); if(i==1) { lcd_gotoxy(0,0); lcd_puts("Sim900 Init"); } else { lcd_gotoxy(0,0); lcd_puts("Not Init"); } i = Net_Is_Register(); if(i==1) { lcd_gotoxy(0,1); lcd_puts("Register Network"); } else { lcd_gotoxy(0,1); lcd_puts("Not Register"); } lcd_gotoxy(0,0); lcd_puts("Read:1 "); lcd_gotoxy(0,1); lcd_puts("Delete:2 "); while (1) { // Place your code here key = keyscan(); if(key == 1) { delay_ms(200); lcd_clear(); lcd_gotoxy(0,0); lcd_puts("SMS Number :"); if(number_keyscan(str) == 1) { i = atoi(str); if(SMS_Recieve(sms,phone,i) == 1) { lcd_clear(); lcd_show(phone,0); lcd_show(sms,1); while(keyscan() != 10); lcd_clear(); } else { lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Not Found !"); delay_ms(1500); } } else { lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Canceled!"); delay_ms(1500); } lcd_gotoxy(0,0); lcd_puts("Read:1 "); lcd_gotoxy(0,1); lcd_puts("Delete:2 "); } if(key == 2) { sms_del: delay_ms(200); lcd_clear(); lcd_gotoxy(0,0); lcd_puts("All:1 Inbox:2"); lcd_gotoxy(0,1); lcd_puts("UnRead:3 Read:4"); delay_ms(2000); lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Press 1..4"); if(number_keyscan(str) == 1) { i = atoi(str); switch(i) { case 1 : lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Deleting ..."); if(SMS_Delete("ALL") == 1) { lcd_gotoxy(0,1); lcd_puts("ALL SMS Deleted"); delay_ms(1500); } else { lcd_gotoxy(0,1); lcd_puts("Deleting Failed!"); delay_ms(1500); } break; case 2 : lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Deleting ..."); if(SMS_Delete("INBOX") == 1) { lcd_gotoxy(0,1); lcd_puts("INBOX SMS Deleted"); delay_ms(1500); } else { lcd_gotoxy(0,1); lcd_puts("Deleting Failed!"); delay_ms(1500); } break; case 3 : lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Deleting ..."); if(SMS_Delete("UNREAD")) { lcd_gotoxy(0,1); lcd_puts("UnRead SMS Deleted"); delay_ms(1500); } else { lcd_gotoxy(0,1); lcd_puts("Deleting Failed!"); delay_ms(1500); } break; case 4 : lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Deleting ..."); if(SMS_Delete("READ") == 1) { lcd_gotoxy(0,1); lcd_puts("Read SMS Deleted"); delay_ms(1500); } else { lcd_gotoxy(0,1); lcd_puts("Deleting Failed!"); delay_ms(1500); } break; default: lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Wrong Choice!"); delay_ms(1500); goto sms_del; } } else { lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Canceled!"); delay_ms(1500); } lcd_gotoxy(0,0); lcd_puts("Read:1 "); lcd_gotoxy(0,1); lcd_puts("Delete:2 "); } } }