Hello,
I AM able to receive sms and read also. I can read only message ending with '$'. if message received with out '$' then i am not able to read it and am not able to read next sms with my logic also. Cos i am reading message on index=1, so when ever message come's without '$' it occupies index=1 and i am not able to read my next message.
Please give me your important suggestions. I have to submit this project in college in next 2-3 days.
code:
unsigned cnt, cnt1;
int end_flag=1,i = 0,delete_flag=0, flag = 0;
char index, rxchar ; // Variable for storing the data from UART and array counter
unsigned char output[110]; // array to store the received charaters
unsigned short j;
int k=0;
unsigned char buffer1[13];
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB2_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB2_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
void interrupt()
{
if (PIR1.RCIF)
{ // test the interrupt for uart rx
rxchar = Uart1_Read(); //
output = rxchar;
// ******************************************************
// Only select one of the following statements
if (rxchar == 36) { // select this if looking for a terminating character
flag = 1;
i=0;
}
if (rxchar == 'O') { // select this if looking for 'O'
flag = 2;
}
if (flag ==2 && rxchar=='K') { // select this if looking for a 'K'
flag = 3;
}
if ( rxchar=='S') { // select this if looking for 's'
flag = 4;
}
if (flag ==4 && rxchar=='M') { // select this if looking for 'm'
flag = 5;
i=0;
}
i++;
PIR1.RCIF = 0; // clear RCIF
} // end if (PIR1.RCIF)
}
int sms_read()
{
int l=0,flag1=0,count=0,j=0,k=10,mob=0;
// Lcd_Out(2,1,"SMS");
end_flag=0;
// delay_ms(500) ;
// delay_ms(50);
// UART1_Write_Text("AT+CMGR=1\n\r");
// delay_ms(50);
// UART1_Write_Text(output);
memset(buffer1,'\0',strlen(buffer1));
while(output[l]!='$')
{
//delay_ms(400) ;
// Lcd_Cmd(_LCD_CLEAR); // Clear display
// Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1,output);
//UART1_Write_Text(output);
delay_ms(10);
if(output[l]=='"')
{
count++ ;
}
// UART1_Write(count+48);
// UART1_Write(output);
if( output[l]=='+' && output[l+1]=='9')
{
mob=1;
}
if( mob==1) //mobile number
{
// UART1_Write(output[i+1]);
buffer1[j]=output[l];
delay_ms(10);
j++;
if(j==13)
mob=0;
}
if(count==1 )
{
if(output[l+4]=='R') //check SMS readed or not
{
// UART1_Write(output[i+4]);
Lcd_Out(1,1,"SMS 1Received");
delay_ms(10);
}
}
if(output[l]=='F' && output[l+1]=='1' )
{
// UART1_Write_Text("FanOn");
Lcd_Out(2,1,"F1");
// delay_ms(10);
}
if(output[l]=='F' && output[l+1]=='0')
{
// UART1_Write_Text("FanOff");
Lcd_Out(2,1,"F0");
// delay_ms(10);
}
if(output[l]=='L' && output[l+1]=='0')
{
// UART1_Write_Text("LightOff");
Lcd_Out(2,5,"L0");
//delay_ms(10);
}
if(output[l]=='L' && output[l+1]=='1' )
{
// UART1_Write_Text("LightOn");
Lcd_Out(2,5,"L1");
// delay_ms(10);
}
if(output[l]=='T' && output[l+1]=='0')
{
// UART1_Write_Text("TVOff");
Lcd_Out(2,10,"T0");
// delay_ms(10);
}
if(output[l]=='T' && output[l+1]=='1' )
{
// UART1_Write_Text("TVOn");
Lcd_Out(2,10,"T1");
//delay_ms(10);
}
if(j==13)
{
k=strcmp(buffer1,"+918237319741") ;
Lcd_Out(1,1,buffer1);
//delay_ms(10);
j=0;
}
if(k==0)
{
Lcd_Out(1,1,"Mobile Valid");
// delay_ms(10);
}
// delay_ms(50);
//UART1_Write_Text(output);
//UART1_Write_Text(buffer1);
//
l++ ;
}
//delay_ms(1000);
// delay_ms(1000);
delay_ms(100);
Lcd_Out(1,1,buffer1);
memset(output,'\0',strlen(output));
i=0;
UART1_Write_Text("AT+CMGD=1\n\r");
end_flag=1;
return 0;
}
void main()
{ int temp=0;
lcd_init();
delay_ms(400) ;
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1,"Hello");
UART1_Init(9600);
Delay_ms(500); // Wait for UART module to stabilize
PIE1.RCIE = 1; //enable USART receiver interrupt bit
INTCON.PEIE = 1; //enable peripheral interrupt bit
INTCON.GIE = 1; //enable global interrupt bit
// UART1_Write_Text("AT+CNMI=1,2,0,0,0\n\r");
delay_ms(200) ;
UART1_Write_Text("ATE0\n\r");
delay_ms(200) ;
UART1_Write_Text("AT+CMGF=1\n\r");
delay_ms(200) ;
UART1_Write_Text("AT+CMGD=1\n\r");
delay_ms(500) ;
memset(output,'\0',strlen(output));
while (1)
{
if(flag==3)
{
Lcd_Out(1,8,"OK");
// memset(output,'\0',strlen(output));
// i=0;
//
}
if(flag==5)
{
Lcd_Out(1,1,"SMS Received");
memset(output,'\0',strlen(output));
UART1_Write_Text("AT+CMGR=1\n\r");
}
if (flag ==1 && end_flag==1 )
{
temp=sms_read();
flag=0;
} // end if (flag)
}
}
interfacing SIM800 and read sms
Post your requests and ideas on the future development of mikroC PRO for PIC.
Author
Message
-
- Posts: 18
- Joined: 30 Jan 2017 12:12
- dusan.poluga
- mikroElektronika team
- Posts: 780
- Joined: 02 Feb 2017 14:21
Re: interfacing SIM800 and read sms
#2 Post by dusan.poluga » 05 Apr 2017 19:42
Hi,
Well a stop condition is needed so your micro controller knows when to stop reading the UART.
You are doing it right. Maybe you can add 2 white spaces at the end of your SMS and check in your code for 2 white spaces instead.
Regards,
Well a stop condition is needed so your micro controller knows when to stop reading the UART.
You are doing it right. Maybe you can add 2 white spaces at the end of your SMS and check in your code for 2 white spaces instead.
Regards,
Dusan Poluga.
Return to “mikroC PRO for PIC Wish List”
Jump to
- NECTO Studio
- ↳ IDE
- ↳ IDE General
- ↳ IDE Beta Testing
- ↳ IDE Wish List
- ↳ ARM AI Compilers
- ↳ mikroC AI for ARM
- ↳ mikroC AI for ARM General
- ↳ mikroC AI for ARM Beta Testing
- ↳ mikroC AI for ARM Wish List
- ↳ PIC AI compilers
- ↳ mikroC AI for PIC
- ↳ mikroC AI for PIC General
- ↳ mikroC AI for PIC Beta Testing
- ↳ mikroC AI for PIC Wish List
- ↳ PIC32 AI Compilers
- ↳ mikroC AI for PIC32
- ↳ mikroC AI for PIC32 General
- ↳ mikroC AI for PIC32 Beta Testing
- ↳ mikroC AI for PIC32 Wish List
- ↳ dsPIC AI Compilers
- ↳ mikroC AI for dsPIC
- ↳ mikroC AI for dsPIC General
- ↳ mikroC AI for dsPIC Beta Testing
- ↳ mikroC AI for dsPIC Wish List
- ↳ AVR AI Compilers
- ↳ mikroC AI for AVR
- ↳ mikroC AI for AVR General
- ↳ mikroC AI for AVR Beta Testing
- ↳ mikroC AI for AVR Wish List
- ↳ Additional Software
- ↳ Visual TFT AI
- ↳ Visual TFT AI General
- ↳ Visual TFT AI Beta Testing
- ↳ Visual TFT AI Wish List
- PRO Compilers
- ↳ PIC PRO Compilers
- ↳ PIC Compilers General
- ↳ mikroC PRO for PIC
- ↳ mikroC PRO for PIC General
- ↳ mikroC PRO for PIC Beta Testing
- ↳ mikroC PRO for PIC Wish List
- ↳ mikroBasic PRO compiler for PIC
- ↳ mikroBasic PRO for PIC General
- ↳ mikroBasic PRO for PIC Beta Testing
- ↳ mikroBasic PRO for PIC Wish List
- ↳ mikroPascal PRO for PIC
- ↳ mikroPascal PRO for PIC General
- ↳ mikroPascal PRO for PIC Beta Testing
- ↳ mikroPascal PRO for PIC Wish List
- ↳ dsPIC PRO Compilers
- ↳ dsPIC Compilers General
- ↳ mikroC PRO for dsPIC30/33 and PIC24
- ↳ mikroC PRO for dsPIC30/33 and PIC24 General
- ↳ mikroC PRO for dsPIC30/33 and PIC24 Beta Testing
- ↳ mikroC PRO for dsPIC30/33 and PIC24 Wish List
- ↳ mikroBasic PRO for dsPIC30/33 and PIC24
- ↳ mikroBasic PRO for dsPIC30/33 and PIC24 General
- ↳ mikroBasic PRO for dsPIC30/33 and PIC24 Beta Testing
- ↳ mikroBasic PRO for dsPIC30/33 and PIC24 Wish List
- ↳ mikroPascal PRO for dsPIC30/33 and PIC24
- ↳ mikroPascal PRO for dsPIC30/33 and PIC24 General
- ↳ mikroPascal PRO for dsPIC30/33 and PIC24 Beta Testing
- ↳ mikroPascal PRO for dsPIC30/33 and PIC24 Wish List
- ↳ PIC32 PRO Compilers
- ↳ PIC32 Compilers General
- ↳ mikroC PRO for PIC32
- ↳ mikroC PRO for PIC32 General
- ↳ mikroC PRO for PIC32 Beta Testing
- ↳ mikroC PRO for PIC32 Wish List
- ↳ mikroBasic PRO for PIC32
- ↳ mikroBasic PRO for PIC32 General
- ↳ mikroBasic PRO for PIC32 Beta Testing
- ↳ mikroBasic PRO for PIC32 Wish List
- ↳ mikroPascal PRO for PIC32
- ↳ mikroPascal PRO for PIC32 General
- ↳ mikroPascal PRO for PIC32 Beta Testing
- ↳ mikroPascal PRO for PIC32 Wish List
- ↳ AVR PRO Compilers
- ↳ AVR Compilers General
- ↳ mikroC PRO for AVR
- ↳ mikroC PRO for AVR General
- ↳ mikroC PRO for AVR Beta Testing
- ↳ mikroC PRO for AVR Wish List
- ↳ mikroBasic PRO compiler for AVR
- ↳ mikroBasic PRO for AVR General
- ↳ mikroBasic PRO for AVR Beta Testing
- ↳ mikroBasic PRO for AVR Wish List
- ↳ mikroPascal PRO for AVR
- ↳ mikroPascal PRO for AVR General
- ↳ mikroPascal PRO for AVR Beta Testing
- ↳ mikroPascal PRO for AVR Wish List
- ↳ FT90x PRO Compilers
- ↳ FT90x Compilers General
- ↳ mikroC PRO for FT90x
- ↳ mikroC PRO for FT90x General
- ↳ mikroC PRO for FT90x Beta Testing
- ↳ mikroC PRO for FT90x Wish List
- ↳ mikroBasic PRO compiler for FT90x
- ↳ mikroBasic PRO for FT90x General
- ↳ mikroBasic PRO for FT90x Beta Testing
- ↳ mikroBasic PRO for FT90x Wish List
- ↳ mikroPascal PRO for FT90x
- ↳ mikroPascal PRO for FT90x General
- ↳ mikroPascal PRO for FT90x Beta Testing
- ↳ mikroPascal PRO for FT90x Wish List
- ↳ 8051 PRO Compilers
- ↳ 8051 Compilers General
- ↳ mikroC PRO for 8051
- ↳ mikroC PRO for 8051 General
- ↳ mikroC PRO for 8051 Beta Testing
- ↳ mikroC PRO for 8051 Wish List
- ↳ mikroBasic PRO compiler for 8051
- ↳ mikroBasic PRO for 8051 General
- ↳ mikroBasic PRO for 8051 Beta Testing
- ↳ mikroBasic PRO for 8051 Wish List
- ↳ mikroPascal PRO for 8051
- ↳ mikroPascal PRO for 8051 General
- ↳ mikroPascal PRO for 8051 Beta Testing
- ↳ mikroPascal PRO for 8051 Wish List
- ↳ ARM PRO Compilers
- ↳ ARM Compilers General
- ↳ mikroC PRO for ARM
- ↳ mikroC PRO for ARM General
- ↳ mikroC PRO for ARM Beta Testing
- ↳ mikroC PRO for ARM Wish List
- ↳ mikroBasic PRO for ARM
- ↳ mikroBasic PRO for ARM General
- ↳ mikroBasic PRO for ARM Beta Testing
- ↳ mikroBasic PRO for ARM Wish List
- ↳ mikroPascal PRO for ARM
- ↳ mikroPascal PRO for ARM General
- ↳ mikroPascal PRO for ARM Beta Testing
- ↳ mikroPascal PRO for ARM Wish List
- ↳ Older versions of Compilers
- ↳ Older versions of mikroC Compilers
- ↳ mikroC for PIC
- ↳ mikroC General
- ↳ mikroC Beta Testing
- ↳ mikroC Wish List
- ↳ mikroC for dsPIC30/33 and PIC24
- ↳ mikroC for dsPIC30/33 and PIC24 General
- ↳ mikroC for dsPIC30/33 and PIC24 Beta Testing
- ↳ mikroC for dsPIC30/33 and PIC24 Wish List
- ↳ RSC-4x mikroC
- ↳ RSC-4x mikroC General
- ↳ RSC-4x mikroC Wish List
- ↳ mikroC Beta testing
- ↳ Older versions of mikroBasic Compilers
- ↳ mikroBasic compiler for PIC
- ↳ mikroBasic General
- ↳ mikroBasic Beta Testing
- ↳ mikroBasic Wish List
- ↳ mikroBasic compiler for dsPIC30/33 and PIC24
- ↳ mikroBasic for dsPIC30/33 and PIC24 General
- ↳ mikroBasic for dsPIC30/33 and PIC24 Beta Testing
- ↳ mikroBasic for dsPIC30/33 and PIC24 Wish List
- ↳ mikroBasic for dsPIC30/33 and PIC24 Bug List
- ↳ Obsolete Project: mikroBasic compiler for AVR
- ↳ mikroBasic for AVR General
- ↳ mikroBasic for AVR Wish List
- ↳ mikroBasic Beta testing
- ↳ Older versions of mikroPascal Compilers
- ↳ mikroPascal compiler for PIC
- ↳ mikroPascal FAQ
- ↳ mikroPascal General
- ↳ mikroPascal Beta Testing
- ↳ mikroPascal Wish List
- ↳ mikroPascal Bug List
- ↳ mikroPascal compiler for dsPIC30/33 and PIC24
- ↳ mikroPascal for dsPIC30/33 and PIC24 General
- ↳ mikroPascal for dsPIC30/33 and PIC24 Beta Testing
- ↳ mikroPascal for dsPIC30/33 and PIC24 Wish List
- ↳ mikroPascal for dsPIC30/33 and PIC24 Bug List
- ↳ Obsolete Project: mikroPascal compiler for AVR
- ↳ mikroPascal for AVR General
- ↳ mikroPascal for AVR Wish List
- ↳ mikroPascal Beta testing
- ↳ Library Development Discussion
- ↳ Code Requests
- Additional Software
- ↳ Visual TFT Software
- ↳ Visual TFT General
- ↳ Visual TFT Beta Testing
- ↳ Visual TFT Wish List
- ↳ Visual GLCD Software
- ↳ Visual GLCD General
- ↳ Visual GLCD Beta Testing
- ↳ Visual GLCD Wish List
- ↳ Package Manager Software
- ↳ Package Manager General
- ↳ Package Manager Beta Testing
- ↳ Package Manager Wishlist
- ↳ GLCD Font Creator Software
- ↳ SpeakUp Software
- ↳ Timer Calculator
- ↳ CAN Calculator
- ↳ mikroBootloader
- Hardware
- ↳ Development Boards
- ↳ CODEGRIP programmer and debugger
- ↳ Mikromedia
- ↳ mikroProg™ programmer and debugger
- ↳ Development Boards Wishlist
- ↳ Review
- ↳ Click Boards release
- ↳ Hexiwear
- Website & Forums
- ↳ Libstock Discussion
- ↳ Product Announcements
- ↳ Website & Forums General Discussion
- ↳ Website & Forums Wishlist
- ↳ User Projects