2014年1月23日木曜日

ArduinoをWindowsにつないでGmailの未読メールの数を表示する (1)


Arduino Yún (http://arduino.cc/en/Main/ArduinoBoardYun)という,Wifi対応のLinuxを搭載したArduinoがある.そして,このArduino Yúnを使った作例に「Gmailに届くメールの数を表示」がある.この作例を普通のAruidnoを使って再現した.


なにをしたか
 以前書いた,
を組み合わせて,Gmailの未読メール数をSPI LED Moduleに表示した.どこに新しい(自分にとっての)技術勉強の要素があったかというと,C言語からGmailの未読メール数を取得することだった.実現にはlibcurlを使っている.

 ためしに,https://mail.google.com/mail/feed/atom にブラウザからアクセスすると,未読メールの一覧が表示される.このページをC言語で読み込み,文字列処理をすることによって未読メール数を取得する.といっても処理自体はかんたんで,未読メール数は<fullcount> </fullcount>というタグに囲まれているので,その部分を抜き出してやればよかった.


VisualStudio C++ 2012 でlibcurlを使う
この通りにやればいい.簡単に説明すると,
  1. http://curl.haxx.se/latest.cgi?curl=win32-ssl-devel-msvc からZipファイルをダウンロードし,好きなところに解凍する
  2. VisualStudioでプロジェクトを開き,解凍したlibcurlのIncludeディレクトリ,Libraryディレクトリを設定する.
  3. リンカー > 入力 > 追加の依存ファイルにcurllib.libを追記
  4. curllib.dll, libeay32.dll, openldap.dll, and ssleay32.dllをプロジェクトの適切なディレクトリに入れる

HTMLを取得して表示するプログラムは以下のようになる.

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
    CURL *curl;
    CURLcode res;
    
    curl = curl_easy_init();
    if(curl)
    {
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.co.jp/");
        res = curl_easy_perform(curl);
        /* Check for errors */ 
        if(res != CURLE_OK)
        fprintf(stderr, "curl_easy_perform() failed: %s\n",
               curl_easy_strerror(res));
        /* always cleanup */ 
        curl_easy_cleanup(curl);
    }
 system("PAUSE");
    return 0;
}

このようにcurl_easy_performを使うと,printf等を使わなくても標準出力に表示されるが,結果を利用してなにかしたいときには,char型配列に保存しなければいけない.その部分は,
を参考にさせていただきました.結果,無事char型配列に保存することが出来ました.

今日はここまで.
次回は文字列処理をして未読メール数を取得するところまでを書きます.

0 件のコメント:

コメントを投稿