2017年6月27日

  • C
  • EV3技術情報
  • ソフトウェア

音や画像のファイルを扱うプログラム

EV3のC言語プログラム(Toppers)で、音や画像のファイルを扱う方法を紹介します。
※ここで紹介する内容は、EV3RTパッケージ β7環境にて動作を確認したものです。
※サンプルプログラムの中で使用するファイルは、ダウンロードしたEV3RTパッケージを解凍した中にある「/sdcard/ev3rt/res」内の「test.bmp」と「test.wav」です。

以下は、左側が画像ファイルをLCDに表示するプログラム、右側が音のファイルを再生するプログラムです。(各ファイルはSDカード直下に保存してあることとします。)

test.bmpをLCDに表示する test.wavを再生する
…(省略)…

memfile_t memfile;
ev3_memfile_load("/test.bmp", &memfile);
  ……①

image_t image;
ev3_image_load(&memfile, &image);
ev3_lcd_draw_image(&image, 0, 0);
  ……②

…(省略)…
…(省略)…

memfile_t memfile;
ev3_memfile_load("/sound.wav", &memfile);
  ……①

ev3_speaker_set_volume(10);
ev3_speaker_play_file(&memfile, SOUND_MANUAL_STOP);
  ……③

…(省略)…

画像ファイルを表示する場合も音のファイルを再生する場合も、まずはそのファイルを以下のようにしてロードします。(上図①/画像・音共通)
  memfile_t memfile;
  ev3_memfile_load(ファイル名, &memfile);
※ファイル名は絶対パスで指定します。(「/」はSDカード直下を示します。)
※ev3_memfile_loadやmemfile_t構造体について、詳しくはリファレンスをご覧ください。

画像ファイルを表示する場合は、ロードしたファイルを以下のようにして画面に表示します。(上図②)
  image_t image;
  ev3_image_load(&memfile, &image);
  ev3_lcd_draw_image(&image, x, y);
※ev3_image_loadは、①でロードしたメモリファイルから画像をロードし、画像のオブジェクトを生成します。
※画像ファイルはBMP形式のモノクロ画像をサポートしています。
※ev3_lcd_draw_imageは、x・yで指定した座標に画像を表示します。
※詳しくはリファレンスをご覧ください。

音のファイルを再生する場合は、ロードしたファイルを以下のようにして再生します。(上図③)
  ev3_speaker_set_volume(10);
  ev3_speaker_play_file(&memfile, duration);
※ev3_speaker_play_fileは、①でロードしたWAVファイルを再生します。
※引数「duration」は再生時間をミリ秒単位で指定します。「SOUND_MANUAL_STOP」を指定した場合は、手動で停止しない限り最後まで再生します。
※音のファイルは、WAVファイル(8-bit 8kHz mono)をサポートしています。
※詳しくはリファレンスをご覧ください。

このように、画像や音のファイルをSDカードに用意し、それをロードすることで、プログラムの中で扱うことができます。

※音や画像のファイルを扱うプログラムの一例として紹介しています。
※プログラムは動作確認済みですが、誤り等が含まれていた場合はご了承ください。

(2017/06/23現在)

SPIKE