2012-05-19 230 views
1

我试图用Arduino +以太网盾检查未读邮件的数量,发送两个IMAP请求。 使用client.read(server_answer),我将它存储到char中。 当我把它发送到串行与Serial.print(server_answer),我得到如下:Arduino:转换client.read()

* 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上显示带有一些文字的数字(“您有[新]邮件!”)。

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

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; 
    } 
} 
} 

回答

0

无需编写代码对你来说,你需要使用strtok_r向上突破进来的数据分割成块()。查看上面的代码,以'('作为分隔符,然后再以空格作为分隔符,然后再以')'调用strtok_r()应该让你开始第一个数字的开头。从那里atoi()将它转换为一个整数。重复这个过程也会让你获得第二个值。

如果您有任何问题,请仔细阅读并发布您的代码。

相关问题