1

未読メールの数を Arduino+Ethernet Shield でチェックしようとしていて、2 つの IMAP リクエストを送信しています。client.read(server_answer) で、char に格納します。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

ここで私の質問: 2 つの数字 (メールと未読メールの合計数、例では未読 1 件と合計 1917 件) を抽出するにはどうすればよいですか? それらを2つの異なる文字列で取得するにはどうすればよいですか? 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;  
   }  
 }  
}
4

1 に答える 1

0

コードを記述せずに、受信データを strtok_r() を使用してチャンクに分割する必要があります。strtok_r() を区切り文字として '(' を使用して呼び出し、次に区切り文字としてスペースを使用して、さらに ')' を使用して呼び出す上記のコードを見ると、最初の番号の先頭に到達するはずです。そこから atoi() は整数に変換します。このプロセスを繰り返すと、2 番目の値も得られるはずです。

これに亀裂を入れて、さらに問題がある場合はコードを投稿してください。

于 2012-05-21T05:28:55.060 に答える