我试着用Arduino+以太网屏蔽检查未读邮件的数量,发送两个IMAP请求。
使用client.read(服务器端应答),我将其存储到一个char中。
当我用serial.print(服务器端应答)将其发送到serial时,得到以下结果:
* 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总数中)?
我怎样才能把它们分成两条不同的线呢?
我想用一些文字来显示号码(“你有[号码]封新邮件!”)在液晶显示器上。
如果有帮助,我的代码中有一个有趣的部分:
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()将传入的数据分成块。看看上面的代码,使用“(”作为分隔符,然后再次使用空格作为分隔符,然后再次使用“)”调用strtok_r(),应该可以找到第一个数字的开头。从那里atoi()将把它转换成一个整数。重复这个过程也会得到第二个值。
如果你还有什么问题的话,试试看,然后把你的代码贴出来。
关于c - Arduino:转换client.read(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10667665/