将 API link 消息解析为 C 中的服务器 (Arduino IDE)

parse an API link message as a server in C (Arduino IDE)

我正在使用 Arduino IDE 对我的微控制器进行编程,它有一个内置的 Wi-Fi 芯片 (ESP8266 NodeMCU),它连接到我的互联网路由器,然后有一个特定的 IP(就像192.168.1.5).

所以我想通过添加到 link 的消息发送命令(和数据),然后 link 变为:192.168.1.5/?A=data1&B=data2.

当从 LAN 内的设备启动上面的 link 时,我可以在字符串变量中获取消息,这里我现在有一条包含 "?A=data1&B=data2".

的消息

所以问题是:如何在单独的变量中获取 AB 内容?

第二个简单的问题:如何将内容转换为布尔值、intfloat 变量?

算法看起来像这样。此示例仅打印标记,但您应该能够修改它以处理键、值和异常情况。

#include <stdio.h>
#include <malloc.h>
#include <string.h>

#define MESSAGE_TOKENS ("=&?")

int main()
{
    char *msg = "?A=data1&B=data2";
    char *msg_dup = strdup(msg);
    char *tok = strtok(msg_dup, MESSAGE_TOKENS);

    while (tok != NULL)
    {
        char delim = msg[tok - msg_dup - 1];

        switch(delim)
        {
            case '?':
            case '&':
                printf("key=%s\n", tok);
                break;
            case '=':
                printf("val=%s\n", tok);
                break;
            default:
                break;
        }

        tok = strtok(NULL, MESSAGE_TOKENS);
    }

    free(msg_dup);
}

关于数据类型,可以使用ctype.h头文件(link)的方法。例如,您可以通过遍历字符串的所有字符并验证所有字符都是数字(isnumber() 方法)来验证字符串是否为数字。