emWinのQRコード機能の使用 – KBA231613 - Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
Community Translated by NoTa_4591161 Version: **
Translation - English: Using emWin's QR-Code functions – KBA231613
SEGGER emWinライブラリをPSoC®デバイスで使用して、ディスプレイにGUI要素を作成できます。 バージョン5.34では、ユーザーがGUIディスプレイでQRコードを簡単に作成できる機能が追加されました。
それらは4つの関数へのAPI呼び出しを単純化しました:
- GUI_QR_Create() -コードのRAMベースの構造体を作成します。注:QRコードを読み取るための最良のコントラストを提供するには、明るい(白)背景色を使用します。
- GUI_QR_Delete() -コードのRAMベースの構造体を削除します。
- GUI_QR_Draw() - ディスプレイにQRコードのRAMベースの構造体を描画します。
- GUI_QR_GetInfo() -コードに関する物理情報を取得します。
詳細については、emWinユーザーガイドおよびリファレンスマニュアルを参照してください。
GUIのプールメモリへのRAM割り当て:
QRコードの生成には、かなりのRAMリソースが必要になる場合があります。より多くのRAMを必要とする要因は次のとおりです。
- エンコードするコンテンツが大きいほど、より多くのRAMが必要になります。つまり、短いテキスト文字列はより少ないRAMを使用します。テキスト文字列が長いほど、より多くのRAMが必要になります。
- QR「モジュール」で使用されるピクセル数。「モジュール」は、正方形の論理エンコーディング要素です。
- ECCレベル。エラー訂正レベルが高いほど、より大きなQRビットマップが必要になります。
- 「バージョン」が高いほど、間接的により多くのRAMが必要になる可能性があります。通常、Version = 0を使用して、コンテンツに基づいて必要なバージョンを自動検出します。
十分なGUIRAMメモリを使用できるようにするには、GUIConf.hで#defineGUI_NUMBYTESを設定します。Seggerは、この値を少なくとも0x10000に設定することをお勧めします。これにより、ライブラリ全体にGUIプールRAMメモリが割り当てられ、QRコードや必要に応じて他のGUI機能に使用されます。
このRAMの量がアプリケーションに必要な量を超える場合は、提供できる最大量を割り当てます。次のステップとして、開発フェーズで、できるだけ多くのさまざまなユースケースを表示してアプリケーションを実行します。GUI_ALLOC_GetMaxUsedBytes()関数を含めて、アプリケーションで使用されているGUIRAMの実行時ピークカウントを取得します。GUI_NUMBYTESの値は、この最大値(プラス予防措置として10%)で修正することができます。
注: 通常、emWinライブラリに十分なRAMが割り当てられていない場合、SysLibフォルトでクラッシュする可能性があります。
コード例:
#include "GUI.h"
/* この例は、ディスプレイの右下隅に配置する単純なQRコード生成です。
「モジュール」は、最小の論理要素のQR定義です。「モジュール」のサイズは、使用されたピクセル数(1次元)です。このサイズは、「X」と「Y」の両方の大きさに使用されます。
*/
GUI_HMEM qrCode = GUI_QR_Create(
“This is a text string. It could be a URL address”,
// QRコードに使用されるUTF-8テキスト
2, //「モジュール」サイズの1次元ピクセルサイズを定義します。
GUI_QR_ECLEVEL_H, // ECCレベル。レベルが高いほど、エラー訂正が向上します。
0 ); // QRの「バージョン」エンコーディングスタイル。値0は、必要なものを自動検出します。
/* QRCodeが仮想的に作成されたので、その大きさの情報を取得します。GUI_QR_GetInfo()を使用します。*/
GUI_QR_INFO pInfo;
GUI_QR_GetInfo(
qrCode, // 描画するQRコードのハンドル。
&pInfo); // QR情報構造のメモリへのポインタ。
/* QR情報を使用して、1次元のQRCodeのサイズ(pInfo.Size)を決定します。右下隅に配置するには、ディスプレイのXサイズとYサイズから差し引きます */
UI_QR_Draw(
qrCode, //描画するQRコードのハンドル。
LCD_GetXSize()-pInfo.Size, //ディスプレイのXサイズからビットマップの1次元サイズを減算します。
LCD_GetYSize()-pInfo.Size); //ディスプレイのYサイズからビットマップの1次元サイズを減算します。
GUI_QR_Delete(qrCode); //描画するQRコードの処理。これはもう必要ありません。割り当てられたGUIRAMを解放します。
/* 使用しているディスプレイ(EINKなど)によっては、更新機能が必要になる場合があります。その他は自動的に更新される場合があります。*/
/* ディスプレイバッファデータをディスプレイに送信します */
UpdateDisplay(CY_EINK_FULL_4STAGE, true); //表示を更新します。
SeggerのWikiページの例を参照してください:https://wiki.segger.com/QR_Code_(Sample)
添付のPSoCCreator™ およびModusToolbox® プロジェクトは、さまざまなGUI_QR_Create()パラメータの設定の表示効果を示しています。