Vinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo SliderVinaora Nivo Slider
  • 受託開発のご用命はコチラまで
  • 探し物が見つからない場合のご用命はポジティブワンまで
  • 見積もり依頼、製品問い合せはこちらまで
  • ポジティブワンNFCラボ
  • 技術サポート窓口
  • 特集&ソリューション
  • ダウンロード
  • 旧サイトはこちら
人気製品
  • ボードコンピュータ
  • 組み込み開発ツール
  • OS・ミドルウェア
  • スマートカード
POC-SOM-Arria10-1E アルテラ製Arria10搭載小型システムオンモジュール(72mm x24mmです。PCIe Gen3x8, USB3. Host, Dual...
hit-2
MPX 2041 フリースケール製i.MX6搭載超小型システムオンモジュールです。 i.MX6であるデュアルlite、クアッド(800MHz)を搭載した超小型(20mm x 50...
hit-1
TI製OMAP4460搭載超小型システムオンモジュールです。OMAP4460(ARM Cortex-A9デュアル1.5MHz)を搭載した超小型(20mm x 50...
hit-3
POC-Tiny-i.MX6 Freescale製i.MX6搭載超小型システムオンモジュールです。 38mm x...
hit-4
MPX 2041 フリースケール製 Quad Core QorIQ™...
hit-5
Qualcomm® Snapdragon™ 805コア (APQ8084)搭載超小型(50mm x28.5mm)モジュールです。4K2Kに対応しています。標準モジュールは、RAM 2GB,eMMC...
hit-6
Sentis ToF-M100 PMD社19k-S3搭載、LEDとIOボード搭載の3Dセンサ・テクノロジ、ToF(Time of Flight)...
hit-7
Cosmic C言語 Cosmic独自で開発されたセイフティクリティカル分野で使われる汎用C言語です。 オリジナルのIDEやユーティリティも準備していますが、多くのIDEのオプションC言語として、採...
hit-7
Rlink...
hit-6
Code パフォーマンス最適化されたGNUコンパイラ(GCC)と商用Eclipse IDEです。 パフォーマンス最適化されたGNUコンパイラ(GCC)、GNU...
hit-5
Segger製J-linkPRO SEGGER製J-LinkはIARやKeilをはじめとする多くのARMの多くの統合開発環境及びGBDベースの無償ツールで使えるインサーキットエミュレータです。インサーキッ...
hit-4
Segger製FlasherARM ARMコア用インサーキット·フラッシュプログラミング、デバッグ、およびテストするために設計された非常に柔軟なツールです。主に、製造ラインで利用できるように設計されたモデ...
hit-3
CycloneMAX インサーキット·フラッシュプログラミング、デバッグ、およびテストするために設計された非常に柔軟なツールです。 フリースケール製ColdFire...
hit-1
CyclonePRO インサーキット·フラッシュプログラミング、デバッグ、およびテストするために設計された非常に柔軟なツールです。 フリースケール製HC08、HCS08、HC(S)12(X)、Col...
hit-2
SCIOPTAリアルタイムOS メッセージパッシング方式リアルタイムOSです。メモリー保護、スーパーバイザ機能をサポートしたセイフティクリティカル向けRTOSです。 メッセージパッシング方式ですと、...
hit-sciopta
embOS マイコンのマルチインタフェース、グラフィックなどの機能強化されているなか、多くのドライバやサンプリをサポートしたRTOSです。 GCCやIARなどのマルチ言語にも対応したバイナリーカーネ...
hit-embos
NFCフォーラム冶具 NFCフォーラム・ポーラ&リステナ NFCフォーラム準拠テスト冶具です。NFCフォーラムテスト定められているポーラ&リスナのアンテナです。そのNFCフォーラム準拠したアンテナテ...
nfcforum-poller-listner-anntena
POC-NomadLAB NFCモバイルのSPY検証ツール 非接触型スマートカード(ISO14443 TypeA,およびTypeB, NFC...
poc-nomadlab-nfc-spy
EMV...
hit-emv-visa-mastercard-pvt
プレスリリース・セミナー・展覧会情報

ポジティブワン、グローバルポータルサイト(https://www.positive-one.com/)をオープン

ポジティブワン株式会社は、本日2018年11月1日に、グローバルポータルサイト(https://www.positive-one...

Readmore

Tracealyzer for Amazon FreeRTOSの販売開始

ポジティブワン株式会社(本社:東京都渋谷区)は、Percepio AB(パーセピオ)社Tracealyzer for FreeRT...

Readmore

AIプロセッサRK3399Pro搭載した回路設計から製造、ソフトウエアの一括受託開発開始

2019年1月7日、ポジティブワンは、Rockchip社RK3399Pro搭載した産業用ボードコンピュータおよびソフトウエアの受...

Readmore

注目製品

Time-of-flight-TOP

ToF(Time of Flight)センサ

&ToFソフトウエア受託開発


pickup-automotive

オートモーティブ市場向け
 開発ソリューション


segger-embedded-studio-vs Atollic TureStudio

ARMマイコンIDE,GCC,J-link, 
 Flashプログラマ・ツール

紹介動画

Cannot Connect to Youtube Server


Cannot Connect to Youtube Server

Cannot Connect to Youtube Server

Cannot Connect to Youtube Server

emWin メモリデバイス

 

メモリデバイス

メモリデバイスは様々な状況で利用できますが、主にアイテムをオーバーラップして表示するときに生じるちらつきを防ぐために使用します。メモリデバイスを使用しない場合ディスプレイ上に描画操作が直接行われます。そのため描画操作ごとに逐次ディスプレイは更新されていき、ちらつきとなります。例えばテキストを見やすくさせるために背景を設定する場合、まず背景を描画し、そのつぎにテキストを描画しなければなりません。このときにちらつきが生じてしまいます。

一方で、メモリデバイスを使用した場合、先述の描画操作自体はメモリ上で行われ、表示したい最終結果のみをディスプレイに表示します。これによりちらつきを防ぐことができます。この2つの違いを下に図として示しています。

メモリデバイスのソフトはオプションとなっておりemWin基本パッケージには含まれていません。GUIビルダのサブディレクトリであるMemdevにあります。

 

メモリデバイス有無の比較

下の表はおなじ描画操作をメモリデバイスあり・なしで行った場合、実際の表示結果にはどのような差異が生じるのかを図示したものです。ポリゴンとそのポリゴンの回転角を表示するというもので、これを0度から10度に変化させるという描画をします。メモリデバイスなしの場合ではディスプレイクリア・回転させたポリゴン描画・テキストを描画という各ステップごとがディスプレイに表示されていきますが、メモリデバイス有りでは一連の描画をメモリー上で行い最後にディスプレイを更新します。

API メモリデバイスなし メモリデバイスあり
Step 0: 初期状態

Step 1: GUI_Clear

Step 2: GUI_DrawPolygon
Step 3: GUI_DispString

Step 4: GUI_MEMDEV_CopyToLCD (メモリーデバイスの場合)

 

メモリデバイスの利用

基本手順

  • メモリデバイスの作成(GUI_MEMDEV_CreateというAPI)
  • メモリデバイスを有効にする(GUI_MEMDEV_selectというAPI)
  • 描画操作
  • 描画結果をディスプレイにコピー(GUI_MEMDEV_CopyToLCDというAPI)
  • メモリデバイスを削除(メモリーデバイスが不要になった場合)

 

バンディングメモリデバイス

通常ディスプレイ全体をカバーするのに十分なメモリサイズがないです。バンディングメモリデバイスでは描画領域をいくつかのバンドに分割して1つずつ更新していきます。

 

オートデバイスオブジェクト

オートデバイスオブジェクトはごく小さな表示領域を更新していく、移動ポインターのようなアプリケーションに適します。デバイスは更新が必要になるディスプレイ部分を認識し、最小限の領域をバンディングメモリデバイスで更新していきます。オートデバイスオブジェクトを利用することで全画面領域の更新をせずにすみ、計算処理時間を短縮することができます。

 

メモリデバイスとウィンドウマネージャー

ウィンドウマネージャーとメモリデバイスはシームレスに動作します。メモリデバイスが有効になっている場合、ウィンドウマネージャーはそれぞれメモリデバイスに認識してもらうためのフラグを持ちます。ウィンドウマネージャーのフラグが有効になっている場合、そのウィンドウマネージャーは描画するときに自動的にメモリデバイスを使用するようになります。ウィンドウの描画時にメモリデバイスが作成され、描画が終了するとメモリデバイスを削除します。

利用可能なメモリサイズが十分な場合はウィンドウに対してメモリデバイスが作成し利用します。しかし、利用可能なメモリサイズが十分でない場合はウィンドウマネージャーはバンディングメモリデバイスを作成し利用します。メモリは描画操作時だけ利用されます。バンディングメモリデバイスを利用するのに十分な利用可能なメモリサイズがない場合はメモリデバイスを使用せずディスプレイに直接描画します。

 

パフォーマンス

メモリデバイスを利用することでパフォーマンスに大きな影響を与えることは基本的にありません。またメモリデバイスを使用することでドライバーの動作は簡単になります。遅いドライバを利用している場合、メモリデバイスによりパフォーマンスは向上します。一方、高速なドライバを利用している場合、守りデバイスによりパフォーマンスは少し低下します。バンディングメモリデバイスが利用されると、分割したバンドの数だけ計算時間が増えます。利用可能なメモリサイズが大きければ大きいほどメモリデバイスのパフォーマンスは良くなります。

 

 API

API説明
GUI_MEMDEV_CopyToLCDAA() メモリデバイスの状態をアンチエイリアシングしてLCDに表示
GUI_MEMDEV_CopyToLCDAt() メモリデバイスの状態をLCDの指定した座標に表示
GUI_MEMDEV_Create() メモリデバイスの作成
GUI_MEMDEV_CreateEx() クリエイションフラグ付きのメモリデバイスの作成
GUI_MEMDEV_CreateFixed() 指定した色深度のメモリデバイスを作成
GUI_MEMDEV_Delete() メモリデバイスで使用していたメモリの解放
GUI_MEMDEV_DrawPerspectiveX() 選択されているデバイスに透過エフェクトを書けて指定されたメモリデバイスを描画します
GUI_MEMDEV_GetDataPtr() 直接操作のためのデータエリアのポインターを返します
GUI_MEMDEV_GetXSize() メモリデバイスの幅を返す
GUI_MEMDEV_GetYSize() メモリデバイスの高さを返す
GUI_MEMDEV_MarkDirty() 描画されるエリアをマークします
GUI_MEMDEV_ReduceYSize() メモリデバイスの高さを減らす
GUI_MEMDEV_Rotate() メモリデバイスの回転とその結果の書き込みを近似値を利用して行います
GUI_MEMDEV_RotateHQ() メモリデバイスの回転とその結果の書き込みを高精度で行います
GUI_MEMDEV_Select() 描画対象としてメモリデバイスを選択します
GUI_MEMDEV_SetOrg() LCD上の減点を変更します
UI_MEMDEV_Write() メモリデバイスの内容をメモリデバイスに書き込みます
GUI_MEMDEV_WriteAlpha() メモリデバイスの内容をメモリデバイスにアルファブレンディングを利用して書き込みます
GUI_MEMDEV_WriteAlphaAt() メモリデバイスの内容をメモリデバイスの指定された座標にアルファブレンディングを利用して書き込みます
GUI_MEMDEV_WriteAt() メモリデバイスの内容をメモリデバイスの指定された座標に書き込みます
GUI_MEMEDV_WriteEx() アルファブレンディングとスケーリングを使用してメモリデバイスの内容を合成します
GUI_MEMDEV_WriteExAt() アルファブレンでイングとスケーリングを利用してメモリデバイスの内容を指定した座標に合成します。
GUI_SelectLCD() 描画するLCDの選択
バンディングメモリデバイス
GUI_MEMDEV_Draw() メモリデバイスを利用して描画
オートデバイスオブジェクト
GUI_MEMDEV_CreateAuto オートデバイスオブジェクトの作成
GUI_MEMDEV_DeleteAuto オートデバイスオブジェクトの削除
GUI_MEMDEV_DrawAuto オートデバイスオブジェクトを利用して描画
計測デバイス
GUI_MEASDEV_ClearRect() 計測領域を削除
GUI_MEASDEV_Create() 計測デバイスを作成
GUI_MEASDEV_Delete() 計測デバイスを削除
GUI_MEASDEV_GetRect() 計測結果を返します
GUI_MEASDEV_Select() 描画対象として計測デバイスを選択します

emWinホームに戻る 


SEGGER
RTOS&Middleware