2012-05-19 231 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()將它轉換爲一個整數。重複這個過程也會讓你獲得第二個值。

如果您有任何問題,請仔細閱讀併發布您的代碼。

相關問題