发送短信使用atmega32和sim300停止泵

时间:2014-06-10 17:33:30

标签: microcontroller gsm

我正在开发一个项目,该项目必须在向微控制器发送短信时关闭泵。下面的代码必须能够读取和下载消息,以便它可以关闭泵,但它不起作用。有人可以检查代码,让我知道问题。使用的微控制器是atmega32,编程的软件是atmel studio 6.1。     而(1)     {         // check_sensor();         / * uint8_t x = 0;

    while(GSMWaitForMsg(&id)!=GSM_OK)
    {
        if(x)
        {
            LCDWriteStringXY(10,3,"%3");    //LOVE SYMBOL TILL MSG COMES CHECK MYUTILS.H
            x=0;
        }
        else
        {
            LCDWriteStringXY(10,3,"%4");    //ARROW TO SHOW MESSAGE DOWNLOAD
            x=1;
        }
    }

    LCDWriteStringXY(10,3,"%2");

    _delay_ms(1000);

    //function to read message
    char msg[300];

    int8_t r=GSMReadMsg(id,msg);          //ID=NUMBER MSg=MESSAGE OA=THE REPLY

    if(r==GSM_OK)
    {
        if(strcasecmp(msg,"STOP")==0)       // checking if message read is stop
        {
            PORTC|=(1<<PC7);
            LCDClear();
            LCDWriteStringXY(0,1,"PUMP TURNED OFF");     // displaying on the lcd screen
            RelayOff();                                 // turning the relay off
            _delay_ms(2000);

            goto comehomeboy;       // going back to home

        }
    }
}

1 个答案:

答案 0 :(得分:0)

GSM模块收到的消息(在控制器的UART上)只是ASCII字符。大多数数据都没有附加NULL(\ 0)。 对于strcasecmp()函数,您需要将NULL终止的字符串作为输入。 请确保&#39; msg&#39;数组以NULL结束。