2012-05-19 3 views
1

두 개의 IMAP 요청을 보내어 Arduino + Ethernet Shield가있는 읽지 않은 메일 수를 확인하려고합니다. 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()는 interger로 변환합니다. 프로세스를 반복하면 두 번째 가치를 얻을 수 있습니다.

더 많은 문제가있을 경우 여기를 열어 코드를 게시하십시오.

관련 문제