我正在尝试使用atmel MCU从调制解调器读取网络状态,然后根据某些状态回复进行调试/重启。我使用以下代码(这可以工作):
scanf("%s", state);
printf_P(PSTR("%s\n%d\n"),state,tempstate);
if (*state=='4'|| *state=='7' || *state == '9' || *state == '11' || *state == '12' || *state == '13' ||*state == '19' || *state == '30' || *state == '31')
{
count++;
if(count == 5)
{
send_string("ATZ\r");
_delay_ms(10000);
count = 0;
}
else{}
}
但是,当尝试在引脚更改中断(用于门开关)时执行类似操作时,我可以读取调制解调器回复“确定”,但在尝试使用if语句确认回复时,答复无法识别。见下文。
send_string("AT\r\n");
scanf("%s", reply);
printf_P(PSTR("\n%s"),reply);
if (*reply == 'OK')
{
printf_P(PSTR("\nWill text contact now."));
send_string("AT*SMSM2M=\"15555555TESTING\"\r");
scanf("%s", reply);
}
我无法让我的代码在' OK'之后输入if语句。收到了。任何帮助表示赞赏。
答案 0 :(得分:1)
请参阅http://en.cppreference.com/w/c/string/byte/strcmp
用于比较字符串"OK"
(注意与代码中的引号不同)
使用<{1}}指向的内容,使用
char* reply
请注意,此标识返回0
因此,strcmp(reply, "OK")
类似于您似乎尝试的内容
if
正如dbush在评论中提到的:
请注意,您还需要对数字比较执行此操作,因为您的字符串包含数字而不是实际数字
其中一些(与单个字符相比)误导性地工作,因为您不小心将回复字符串的第一个字符与单字符字符文字进行比较。
(通常用于“字符串”读取“if(!strcmp(reply, "OK"))
s的空终止序列。”