Changes between Version 10 and Version 11 of FAQ
- Timestamp:
- Mar 22, 2015, 11:03:08 PM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
FAQ
v10 v11 3 3 4 4 == アプリケーションの開発方法に関する質問 == 5 ==== Q:周期的な処理を するために、EV3_CRE_CYC を使って周期ハンドラを作成しようとしています。どうすれば良いでしょうか? ====6 A: app.cfg ファイルに、EV3_CRE_CYCを使って周期ハンドラを作成します。以下の例に従ってcfgファイルに記述してください。5 ==== Q:周期的な処理を追加するためには、どうすれば良いでしょうか? ==== 6 A:(1) app.cfg ファイルに、EV3_CRE_CYCを使って周期ハンドラを作成します。以下の例に従って、cfgファイルに追記してください。 7 7 8 8 {{{ 9 9 DOMAIN(TDOM_APP) { 10 11 ... 12 13 EV3_CRE_CYC(TEST_EV3_CYC1, { TA_STA, 0, test_ev3_cychdr, 500, 0 }); 14 15 ... 16 10 ... 11 EV3_CRE_CYC(TEST_EV3_CYC1, { TA_STA, 0, test_ev3_cychdr, 500, 0 }); ← この行を追加 12 ... 17 13 } 18 19 14 ATT_MOD(app.o) 20 15 }}} 21 TEST_EV3_CYC1:オブジェクトの名称 16 EV3_CRE_CYCの各パラメータの意味は、以下の通りです。 22 17 23 TA_STA:属性。TA_STAを指定すると、アプリケーションの起動時に周期処理も開始する。TA_NULLを指定すると、アプリケーションでEV3_sta_cyc(TEST_EV3_CYC1)を呼び出すまで動作しない。 18 * TEST_EV3_CYC1:周期ハンドラの名称(実際にはID番号だが、コンフィギュレータによって、ここで指定した名称のマクロが自動的に定義されます) 19 * TA_STA:周期ハンドラの属性。 20 * TA_STAを指定すると、アプリケーションの起動時に周期処理も開始します。 21 * TA_NULLを指定すると、アプリケーションでEV3_sta_cyc(TEST_EV3_CYC1)を呼び出すまで動作しない。 22 * 0:周期ハンドラに渡される値(拡張情報) 23 * test_ev3_cychdr:周期ハンドラ(周期的に実行される関数)の名前。Cファイルに同名の関数を定義してください((2)を参照のこと)。 24 * 500:起動周期(EV3RTの場合、単位はマイクロ秒で指定) 25 * 0:起動位相。周期ハンドラの動作開始を指定してから、最初に周期ハンドラが呼ばれるまでの相対時間。 26 * 属性にTA_STAを指定して、起動位相に0を指定するとシステムが起動して最初のタイムティックが発生した時に動作する。 24 27 25 0:周期ハンドラに渡される値(拡張情報)26 28 27 test_ev3_cychdr:周期ハンドラ(周期的に実行される関数)の名前(app.c に同名の関数を定義してください)28 29 500:起動周期(EV3RTの場合、単位はマイクロ秒で指定)30 31 0:起動位相(周期ハンドラの動作開始を指定してから、最初に周期ハンドラが呼ばれるまでの相対時間。属性にTA_STAを指定して、起動位相に0を指定するとシステムが起動して最初のタイムティックが発生した時に動作する)32 29 33 30 詳細は、TOPPERS次世代カーネル統合仕様書のCRE_CYCの説明を参照してください。 34 31 35 == '''ダイナミックローディング/アプリケーションローダ(apploader)に関する質問''' == 32 (2) アプリケーションのCファイルに周期ハンドラの関数を追加します。例えば、app.h と app.c に以下を追加します。 33 34 * app.h 35 36 37 38 {{{ 39 extern void test_ev3_cychdr(intptr_t exinf); 40 }}} 41 * app.c 42 43 44 45 {{{ 46 static int count; 47 48 void test_ev3_cychdr(intptr_t idx) { 49 char buf[100]; 50 sprintf(buf, "EV3CYC %d count %d", idx, ++count); 51 ev3_lcd_draw_string(buf, 0, 0); // EV3のLCDに文字列 buf を表示 52 } 53 }}} 54 '''ダイナミックローディング/アプリケーションローダ(apploader)に関する質問''' 55 36 56 ==== Q:ダイナミックローディングによりアプリケーションを実行しようとしています。app loader で「Load app from SD card」を選択すると、「Open application folder '/ev3rt/apps' failed.」というエラーが出ます。何が原因でしょうか? ==== 37 57 A:いくつか原因が考えられます。以下を確認してください。 … … 42 62 43 63 ==== Q:ダイナミックローディングでアプリケーションを実行するために、 workspace ディレクトリの下に app ファイルを作成しました。複数のアプリケーションを実行する場合、ファイル名が同じになってしまうのですがどうすれば良いでしょうか? app ファイルの名称を変更しても良いでしょうか? ==== 44 A:はい、変更して構いません。複数のアプリケーションを試す場合には、それぞれのapp ファイルの名称を変更し、SDカードの 64 A:はい、変更して構いません。複数のアプリケーションを試す場合には、それぞれのapp ファイルの名称を変更し、SDカードの /ev3rt/apps/ の下に保存してください。apploader で、アプリケーションのファイル名を選択すれば、再起動することなしに、アプリケーションを切り替えることができます。 45 65 46 66 == Bluetooth 接続に関する質問 ==