gpt4 book ai didi

c - Arduino:转换 client.read()

转载 作者:太空宇宙 更新时间:2023-11-04 04:54:29 24 4
gpt4 key购买 nike

我正在尝试使用 Arduino+Ethernet Shield 检查未读邮件的数量,发送两个 IMAP 请求。使用 client.read(server_answer),我将它存储到一个字符中。当我使用 Serial.print(server_answer) 将其发送到串行时,我得到以下信息:

* OK IMAP server ready H migmx111 92345
0 OK LOGIN completed
* STATUS INBOX (UNSEEN 1)
0 OK STATUS completed
* STATUS INBOX (MESSAGES 1917)
0 OK STATUS completed
* BYE Server logging out
0 OK LOGOUT completed

现在我的问题是:如何提取这两个数字(邮件总数和未读邮件总数,在示例中为 1 个未读邮件和 1917 个总数)?我怎样才能把它们放在两个不同的字符串中?我想在 LCD 上显示数字和一些文本(“您有 [number] 封新邮件!”)。

如果有帮助,这是我的代码中有趣的部分:

void loop()  
{
updateClient();
checkAvail();
}

void updateClient()
{
if ((millis() - updateTimer) > 10000)
{
Ethernet.begin(mac, ip);
// Serial.println("connecting...");
delay(1000);
if (client.connect())
{
//Serial.println("connected");
client.println("0 login myusername mypasswd");

client.println("0 STATUS INBOX (UNSEEN)");
client.println("0 STATUS INBOX (MESSAGES)");
client.println("0 logout");
clientConnected = true;
}
else
{
Serial.println("connection failed");
}
updateTimer = millis();
}
}

void checkAvail()
{
if (clientConnected)
{
if (client.available())
{

server_answer = client.read();

Serial.print(server_answer);

}
if (!client.connected())
{
Serial.println();
// Serial.println("disconnecting.");
client.stop();
clientConnected = false;
}
}
}

最佳答案

如果不为您编写代码,您需要使用 strtok_r() 将传入的数据分成 block 。查看上面调用 strtok_r() 的代码,使用 '(' 作为分隔符,然后再次使用空格作为分隔符,然后再次使用 ')' 应该可以让您到达第一个数字的开头。从那里 atoi() 会将其转换为整数。重复这个过程也应该让你得到第二个值。

尝试一下,如果您还有其他问题,请发布您的代码。

关于c - Arduino:转换 client.read(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10667665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com