求助:如何将8266获取的ip转换成字符串格式?-Arduino中文社区 - Powered by Discuz! Archiver

bandit16799 发表于 2021-3-17 16:27

求助:如何将8266获取的ip转换成字符串格式?

通过WiFi.localIP()获取了8266的ip地址,但是要传送到app里显示时,需要是字符串格式,请问怎么转换?代码如下,到“Text1.print(IP_Ad);”这步时,无法将addr_4, addr_3, addr_2, addr_1套进去,没学过C语言,不会弄了:'(
#define BLINKER_WIFI
#include <Blinker.h>

char auth[] = "XXXXXX";
char ssid[] = "XXXXXX";
char pswd[] = "XXXXXX";

#define TEXTE_1 "TextKey"

BlinkerText Text1(TEXTE_1);

void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
Blinker.vibrate();
uint32 IP_Ad = WiFi.localIP();
Serial.printf("转换前IP:%d", IP_Ad);

/* 提取IP:位移操作 */
int addr_1 = IP_Ad >> 24;      // 提取第一部分IP地址
IP_Ad = IP_Ad << 8;
int addr_2 = IP_Ad >> 24;      // 提取第二部分IP地址
IP_Ad= IP_Ad << 8;
int addr_3 = IP_Ad >> 24;      // 提取第三部分IP地址
IP_Ad= IP_Ad<< 8;
int addr_4 = IP_Ad>> 24;       // 提取第四部分IP地址

/* 提取IP:求余取整
    addr_1 = IP_Ad % 256;       // 提取第一部分IP地址
    IP_Ad= IP_Ad / 256;
    addr_2 = IP_Ad % 256;      // 提取第一部分IP地址
    IP_Ad= IP_Ad / 256;
    addr_3 = IP_Ad % 256;      // 提取第一部分IP地址
    IP_Ad= IP_Ad / 256;
    addr_4 = IP_Ad % 256;       // 提取第一部分IP地址
*/
/* 打印IP地址:结果为"192.168.31.102" */
Serial.printf("IP地址为:%d.%d.%d.%d", addr_4, addr_3, addr_2, addr_1);
Text1.print(IP_Ad);
}

void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
}

void loop()
{
Blinker.run();
}
输出结果为:转换前IP:1744939200IP地址为:192.168.1.104 但是不能讲这个转换好的地址上传

bandit16799 发表于 2021-3-17 16:49

非常感谢!!!
但是platformio里的blinker库太老了

a2302004040 发表于 2021-3-17 16:39

Serial.println(WiFi.localIP().toString())
或者Serial.printf("%s\n", WiFi.localIP().toString().c_str());

ps.赶快换platformio吧,Arduino ide太垃圾了

Trepverter 发表于 2022-4-19 18:29

请问WiFi.localIP()这样出来的就直接是IP地址啊,为什么到Blinker上输出就是另外一串数字了呢?求解答!

carlbeven 发表于 2022-4-20 22:25

String IPADDRESS =WiFi.localIP().toString();
页: [1]
查看完整版本: 求助:如何将8266获取的ip转换成字符串格式?