jpegで何かできないかな
NDSでjpegの表示プログラムを作ってみたので、何かできないかなと思ってちょっと試してみた。
jpeg画像をネットからもらってくることを考えた。そこで、ピアプロの「注目の作品」のサムネイルをNDSに取得して表示させてみた。
プログラム手順としては、
- NDSからwifiのアクセスポイント接続
- wifi経由でピアプロのサイトに接続
- ピアプロのサイトから「注目の作品」のjpegファイル名を取得
- ピアプロのサイトからjpegファイルを取得
- jpegファイルをNDSに表示
こんな感じである。
wifiの接続
//Wifiの初期化(falseで初期化するのみ) Wifi_InitDefault(false); if( WFCAutoConnect()==-1 ){ ShinoPrintCenter( SubScreenA, 128, 5*12, (u8 *)"Wifiアクセスポイントに接続できませんでした", RGB(31,0,0), RGB( 31,31,31 ), 1 ); while(1); }
これであっさり繋がるので、後はhttpの取得部分を作るだけ。と思ったら、WFCAutoConnect()は自作だった・・・。
//************************************************** // DSのWifiアクセスポイントに自動接続に行きます // 0:無事繋がった。-1:接続できなかった //************************************************** int WFCAutoConnect( void ) { int ret = 0; int i; //自動接続する Wifi_AutoConnect(); int status = ASSOCSTATUS_DISCONNECTED; //最大10秒待って、結果を返す for( i=0; i<600; i++ ){ if( status==ASSOCSTATUS_ASSOCIATED ){ ret = 0; break; } else if( status==ASSOCSTATUS_CANNOTCONNECT ){ ret = -1; break; } status = Wifi_AssocStatus(); swiWaitForVBlank(); } return( ret ); }
http取得
httpサーバからデータをもらうときには、GETコマンドを送ればいい。このプログラムをDevkitProのexampleを参考に作成。HTTP1.0と1.1対応と言っても同じだけれど・・・。ソースはいずれ・・・。
ピアプロサイト解釈
ピアプロのindex.htmlを解釈して、jpeg画像ファイル名を取得する。これは超単純にcontentsImageArray()のimgext:'jpg'になっているものの thumb:のアドレスを抽出しただけ。
後は、jpegファイルをGETして、先日の表示プログラムで表示させるだけ。
こんな感じです。やっぱり、先日のjpegデコーダは不具合があるみたいで、完全にデコードできないものが結構あるみたい。jpegはいずれ考えるとして、折角ネットに繋がるのだから、何か作って見たいですね。思いつかないけれど・・・。
そうそう、個人的には、MakeしたNDSプログラムをNDSに転送するのにhttpGetを使っています。こういうのって、使いたい人っているかな?マイクロSDメモリの端子が擦り減ら無いので重宝していますが。
本当にやりたいことリスト
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム