シミュレータ
TouchGFX UIの作成では、UIの仕様に合致させるために、多くのグラフィック詳細部の微調整が必要になることがよくあります。
開発プロセスをスピードアップするためには、アプリケーションのテストとデバッグのターンアラウンド・タイムを短縮することが重要です。 ボードのプログラムの書き換えには長い時間がかかることが多いので、アプリケーションへのわずかな変更のたびにこれを行うと、開発速度が確実に低下します。 これを緩和するために、TouchGFX PCシミュレータはお使いの開発ツールへの優れた追加機能です。
ユーザは使用するPC向けに単純にアプリケーションをコンパイルし、そこでアプリケーションを実行します。 ボードではなくPC用に作成された評価ボードの立ち上げコードおよび抽象化レイヤを除いて、実行されるコードはターゲット・ハードウェア上とまったく同じです。 つまり、ウィジェットの配置、インタラクション、アニメーション、ステート・マシンなどを、ターゲット・ハードウェア上とまったく同じくらい正確にテストできるのです。 必要な場合は、Visual StudioなどのIDEを使用してコードをデバッグすることもできます。 当然ながら、パフォーマンス解析や実際のバックエンド・システムとのインタラクションなどは、ユーザのボード上で実行する必要があります。
シミュレータの例
実行方法
TouchGFX Designerの使用
TouchGFX Designerからシミュレータを起動するには、単純に右上隅の"Run Simulator"ボタンを押すか、キーボード上の F5
キーを押します。
TouchGFX環境の使用
TouchGFX環境を使用してシミュレータを起動するには、次の手順を実行します。
- TouchGFX環境を開く。
- TouchGFXアプリケーションの場所に移動。
make -f simulator/gcc/Makefile -j6
コマンドを実行して、シミュレータをコンパイル。./build/bin/simulator.exe
コマンドを実行して、シミュレータを起動。
手順の3と4は、TouchGFXアプリケーションを変更したら必ず実行します。
シミュレータの機能
マウス入力のキャプチャの他にも、TouchGFXシミュレータには以下に示すような便利な機能が含まれています。
ショートカット | 機能 |
---|---|
F1 | ポインタ座標とその座標のピクセルのRGBカラーの表示(16進数)を有効化 / 無効化します。 |
F2 | 無効化領域のハイライトを有効化 / 無効化します。 |
F3 | スクリーンショットを撮り、screenshots フォルダにその画像を置きます。 |
Ctrl + F3 | 次の50フレームのスクリーンショットを撮り、screenshots フォルダにその画像を置きます。 |
Shift + F3 | スクリーンショットを撮り、クリップボードにその画像を置きます。 |
F4 | シミュレータ・スキンが使用されている場合、そのシミュレータ・スキンを有効化 / 無効化します。 シミュレータ・スキンが使用されていない場合は、ウィンドウ境界を有効化 / 無効化します。 |
F9 | ティックがアプリケーションに送信されないようにすることで、シミュレータを一時停止します。 F9キーをもう一度押すと、通常の実行が再開されます。 |
F10 | シミュレータの一時停止中(F9キーの押下後)、F10キーを押すことでアプリケーションに1ティックだけ送信し、それによってアプリケーションを"1ステップ"進めることができます。 |
ESC | シミュレータを閉じます。 |
シミュレータのみのユーザ・コード
TouchGFXシミュレータの使用時にのみ実行する必要があるコードがある場合は、C++コード内で#IFDEF Simulator
を次のように使用します。
#IFDEF Simulator
// Your simulator specific user code here
#ENDIF
デバッグ・テキストをコンソールに出力する必要がある場合は、touchgfx_printf
関数を使用できます。 これはprintfと似た関数で、シミュレータ・コードの作成時に含まれるだけなので、ターゲット・ハードウェアの実行時に干渉することはありません。 したがって、この場合は#IFDEF Simulator
を使用する必要はありません。
int i = 0;
touchgfx_printf("Application is running through simulator! \n");
touchgfx_printf("Print our value for integer i = %i \n", i);
フレームバッファのロックとロック解除
フレームバッファを直接操作するコードを作成する場合には、フレームバッファ・メモリにピクセルを書き込む前にフレームバッファをロックすることが重要です。さらに、フレームバッファへの書込み完了後にフレームバッファのロックを解除することを忘れないでください。
フレームバッファのロック
フレームバッファをロックするには、次のコード・スニペットを使用します。
uint16_t* RESTRICT buf = HAL::getInstance()->lockFrameBuffer();
一般的に、フレームバッファへの戻り値は16ビットのポインタになります。 このポインタを適切なポインタ・タイプにキャストして、フレームバッファにアクセスしやすくします。
フレームバッファのロック解除
使用後にフレームバッファをロック解除するには、次のコードを使用します。
HAL::getInstance()->unlockFrameBuffer();
フレームバッファのロック解除を忘れた場合
フレームバッファのロック解除を忘れると、ハードウェアがフリーズし、フレームバッファが使用可能になるまで永遠に待ち続けます。 この状況を検出できるようにするため、フ、フレームバッファがTouchGFXフレームワークによってロックされている間にロックされるように要求された場合、警告の通知が表示されます。 Microsoft Visual Studioから表示されるエラーは次のようになります。
コンソール・プログラムの場合、エラーは次のようになります。