Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Mbed ATCmdParser::recv使用scanf类型参数生成不正确的字符串结果_C++_Scanf_At Command_Mbed - Fatal编程技术网

C++ Mbed ATCmdParser::recv使用scanf类型参数生成不正确的字符串结果

C++ Mbed ATCmdParser::recv使用scanf类型参数生成不正确的字符串结果,c++,scanf,at-command,mbed,C++,Scanf,At Command,Mbed,使用mbed微控制器平台使用AT命令查询GSM模块。 以下代码不起作用,它导致超时请求失败: UARTSerial bus(PB_10, PB_11, 115200); bus.set_flow_control(Serial::RTSCTS, PB_14, PB_13); ATCmdParser parser(&bus, AT_DELIMINATOR); char buffer[10]; parser.send("AT+CPIN?"); if (parser.recv("+CPIN:

使用mbed微控制器平台使用AT命令查询GSM模块。
以下代码不起作用,它导致超时请求失败:

UARTSerial bus(PB_10, PB_11, 115200);
bus.set_flow_control(Serial::RTSCTS, PB_14, PB_13);
ATCmdParser parser(&bus, AT_DELIMINATOR);

char buffer[10];
parser.send("AT+CPIN?");
if (parser.recv("+CPIN: %2s", buffer))
{
    log->info("[AT+CPIN?] Returned result %s", buffer);
} else {
    log->info("[AT+CPIN?] Request failed");
}
问题 问题是对
parser.recv(“+CPIN:%2s”,buffer)”的调用中的%2s参数。

  • 如果删除%2s,调用将成功,但显然我没有读取任何参数

    parser.recv(“+CPIN:”)

  • 或者,我可以将%2s更改为%s,但只读取第一个字符

    parser.recv(“+CPIN:%s”,buffer)
    产生buffer=
    s
    实际上GSM模块正在发送
    SIM PIN

  • 我还尝试在场景2中使用%c而不是%s,但得到了相同的结果

  • 使用scanf()而不是recv()时,场景2和3也会失败

    parser.scanf(“+CPIN:%s\r”,缓冲区)

  • 问题: 如何在测线除雾器之前读取整个字符串?
    如果你能告诉我如何读一个有空格的字符串,你就可以得到额外的分数

    预期结果 应将下列值之一复制到
    缓冲区中

    • 准备好了吗
    • SIM PIN码
    • 辛朴
    • PH-SIM PIN码
    • PH-FSIM引脚
    • PH-FSIM PUK
    • SIM PIN2
    • SIM PUK2
    • PH-NET引脚
    • PH-NET PUK
    • PH-NETSUB引脚
    • PH-netsubpuk
    • PH-SP引脚
    • PH-SP PUK
    • PH公司PIN码
    • 普克公司
    • PH-MCL引脚

    实际上,选项4对我来说很好。在这种情况下你会记录什么?@Cubo78只有第一个字符……对不起。这对我来说毫无意义。我能提供帮助的唯一方法是注意到缓冲区不能包含您列出的所有字符串。例如,“PH-NETSUB-PUK”需要13+1个字符。实际上,选项4对我来说很好。在这种情况下你会记录什么?@Cubo78只有第一个字符……对不起。这对我来说毫无意义。我能提供帮助的唯一方法是注意到缓冲区不能包含您列出的所有字符串。例如,“PH-NETSUB PUK”需要13+1个字符。