在C(Arduino IDE)中将API链接消息解析为服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C(Arduino IDE)中将API链接消息解析为服务器相关的知识,希望对你有一定的参考价值。
我正在使用Arduino IDE来编程我的微控制器,它有一个内置的Wi-Fi芯片(ESP8266 NodeMCU),它连接到我的互联网路由器,然后有一个特定的IP(就像192.168.1.5
)。
所以我想通过添加到链接的消息发送命令(和数据),然后链接变为:192.168.1.5/?A=data1&B=data2
。
当从LAN中的设备启动上面的链接时,我可以在String变量中获取消息,这里我现在有一条包含"?A=data1&B=data2"
的消息。
所以问题是:如何在单独的变量中获取A
和B
内容?
第二个更简单的问题:如何将内容转换为布尔值,int
或float
变量?
答案
算法看起来像这样。此示例仅打印令牌,但您应该能够修改它以处理键,值和异常情况。
#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
", tok);
break;
case '=':
printf("val=%s
", tok);
break;
default:
break;
}
tok = strtok(NULL, MESSAGE_TOKENS);
}
free(msg_dup);
}
对于数据类型,您可以使用ctype.h
头文件(link)的方法。例如,您可以通过迭代字符串的所有字符并验证所有字符都是数字来验证字符串是否为数字(isnumber()
方法)。
以上是关于在C(Arduino IDE)中将API链接消息解析为服务器的主要内容,如果未能解决你的问题,请参考以下文章
迄今为止最好的arduino开发平台:vscode+platformio,秒杀arduino ide。及vscode+pio对比arduino ide对比Stduino