--- trunk/Embedded/main.c 2007/12/04 19:07:00 150 +++ trunk/Embedded/main.c 2007/12/05 09:53:16 155 @@ -24,11 +24,18 @@ unsigned int global_emergency_counter = 600, global_time_interval = 3600; unsigned char global_temp = 0; +unsigned char global_message_buffer[BUFFER]; +unsigned char global_message_buffer_length; + +unsigned char global_lcd_buf[16]; + unsigned short global_imei_tversum; unsigned char cell_nr[15] = ""; // = "21681784"; bit global_modem_init = 0; +unsigned char global_sms_recieve_number[3]; + __EEPROM_DATA( 60, 0, 1, 8, '2', '1', '6', '8'); __EEPROM_DATA( '1', '7', '8', '4',0,0,0,0); @@ -39,12 +46,18 @@ void timer1_interrupt(void); void on_recieve(void); void on_initial_recieve(void); +void sms_recieved(void); void reset_recieve_buffer(void) { - global_recieve_done = 0; + global_recieve_done = 0; + global_serial_byte_counter=0; + global_serial_recieve_buffer[0] = 0; + + global_message_buffer_length = 0; + global_message_buffer[0] = 0; } @@ -185,6 +198,9 @@ if (data_byte == '\n') return; + + if (global_serial_byte_counter == 0 && data_byte == '\r') + return; global_serial_recieve_buffer[global_serial_byte_counter] = data_byte; @@ -192,7 +208,10 @@ { global_recieve_done = 1; //global_serial_byte_counter = 0; - global_serial_recieve_buffer[global_serial_byte_counter+1] = 0; //zero terminate + global_serial_recieve_buffer[global_serial_byte_counter] = 0; //zero terminate + + strcpy(global_message_buffer, global_serial_recieve_buffer); + global_message_buffer_length = global_serial_byte_counter; } else { @@ -214,7 +233,9 @@ { lcd_clear(); lcd_goto(0x00); - lcd_puts(global_temp); + + sprintf(global_lcd_buf, "%d", global_temp); + lcd_puts(global_lcd_buf); } @@ -299,30 +320,46 @@ reset_recieve_buffer(); } - - } void on_recieve(void) { char tmp[17]; - if (global_recieve_done == 0) - return; + char* ptr; + tmp[0]=0; - lcd_clear(); - lcd_goto(0x00); - tmp[0] = 0; - strncat(tmp,global_serial_recieve_buffer,16); - lcd_puts(tmp); - if (strncmp(global_serial_recieve_buffer,"+WIND: 11", 3) == 0) + if (global_recieve_done == 0 || global_message_buffer_length == 0) + return; + + + if (strstr(global_serial_recieve_buffer,"CMTI") != 0) { - global_modem_init = 1; + ptr = strstr(global_serial_recieve_buffer,","); + strcat(tmp,ptr+1); + sprintf(global_sms_recieve_number,"%s", tmp); + lcd_clear(); + lcd_puts(global_sms_recieve_number); + sms_recieved(); + } + else if (strstr(global_message_buffer,"CMTI") != 0) + { + ptr = strstr(global_message_buffer,","); + strcat(tmp,ptr+1); + lcd_clear(); + lcd_puts(tmp); } + reset_recieve_buffer(); } +void sms_recieved(void) +{ + sprintf(global_serial_send, "AT+CMGR=%s\r", global_sms_recieve_number); + serial_send(); +} + void main() { //////////////////// @@ -341,6 +378,8 @@ /////////////// // Main loop // + DelayMs(50); + reset_recieve_buffer(); while(1) { @@ -372,15 +411,10 @@ global_Pot_Hi = ADRESH; global_Pot_Lo = ADRESL; convertTemp(); - update_lcd(); + //update_lcd(); GODONE = 1; } - - //if (global_recieve_done) - //{ - on_recieve(); - // global_recieve_done = 0; - // global_serial_byte_counter = 0; - //} + // Handels the recieve sms'es. + on_recieve(); } }