QREの概要

はじめに

QREライブラリはアプリケーションにQRコードのエンコード機能を提供するライブラリです。
QREライブラリはQRコードのバージョン40までエンコード可能です。
また、イメージを指定してデザインQRを生成することも可能です。
通常のAPIは、一度画像を渡されたら、成功・失敗にかかわらず、処理が完了するまで、APIのコール側に制御が戻りませんので注意してください。

QRエンコードライブラリの基本仕様

本バージョンが対応しているQRコードの仕様は次の通りです。

QRコード仕様

QRコードバージョンバージョン1~40。
モデルモデル2のみ
モード*数字モード:0~9(ASCIIコードの0x30~0x39)
英数字モード:0~9(ASCIIコードの0x30~0x39)、A~Z(ASCIIコードの0x41~0x5A)、半角スペース、$、%、*、+、-、.、/、:の記号(ASCIIコードの0x20,0x24,0x25,0x2A,0x2B,0x2D~0x2F,0x3A)
漢字モード:JIS X 0208に基づくShift-JIS漢字。
8ビットバイトモード:、JIS X 0201(ASCIIコード0x00~0xFF)に基づくデータ。英小文字a~z(ASCII値0x61~0x7A)はこのモードに含まれる。
混在モード:上記の4つを組み合わせたデータ。
連結モード:複数のQRコードにデータを分割。
FNC1モード及びECIモードには対応していません。
誤り訂正能力L,M,H,Q(推奨値は通常のQRコードの場合M、デザインQRコードの場合はH)

  * 本ライブラリでは、データの種類に合わせて最適なモードを選択し、エンコードを行います。

企画時の注意

本ライブラリを使用する際は、下記の点に注意してください。

3DS シリーズの画面に表示させる場合 1 セル当たり 2 ドット以上を推奨(3DS シリーズのカメラで読み込む場合)
1 セル当たり 3 ドット以上を推奨(GamePad のカメラで読み込む場合)
エンコード結果を印刷して使用する場合 3DS シリーズのカメラで読み込む場合は、印刷サイズを 0.45mm/セル 以上にしてください。
WiiU の GamePad のカメラで読み込む場合は、印刷サイズを 0.50mm/セル 以上にしてください。
いずれのカメラで読み込む場合も、バージョンの最大値は下記に従ってください。
  • 誤り訂正レベル L :15
  • 誤り訂正レベル M :17
  • 誤り訂正レベル Q :21
  • 誤り訂正レベル H :25

ライブラリの使用方法

QRエンコードの手順は、一般的には以下のようになります。

1. GetEncodeBufferSize()にエンコード対象のデータを渡して、エンコードに必要なバッファサイズを取得します。
2. アプリケーション側でQREncoderクラスを生成し、取得したサイズの作業用バッファを確保し、そのアドレスをInitMemory()に渡して、エンコード処理の準備を行います。
3. Encode()または EncodeWithImage()にてエンコード処理を行います。
4. 処理の結果得られたエンコード結果(GetDivCount()GetQRSize()GetQRData())の内容に従って適切な表示を行います。
5. QREncoderクラスのインスタンスを解放し、2で確保した作業用バッファを解放します。

QRコードは最大16個に分割してデータを格納することができます。QREライブラリでもこの連結QRコードに対応しています。
対象としているQRコードが連結QRコードの場合、GetDivCount()で分割数を取得し、GetQRData()で分割数分QRコードイメージを取得します。

QRコードの分割方法は、元の全体のデータを論理的に適当に分割してQRコードのデータとして格納されます。このとき、全角文字(漢字やひらがな)が含まれている場合、漢字は2バイト単位で分割されます。 つまり、2バイト文字の途中では分割されません。

元の全体のQRデータをQRコードにした場合。「abcdefg日本」が格納されています。
これを4つのQRコードに分割した場合
ab cde fg 日本


詳しくは、サンプルデモを参考にしてください。

デザインQRコードの生成に関して

本ライブラリでは、生成したQRコードの中央に、任意のイメージを配置することが可能です。
デザインQRコードを生成する場合は、配置したい画像をEncodeWithImage()に渡して、エンコードを実行してください。
その他は、通常のQRコードを生成時と同じ処理を行います。

その他

本ライブラリはスレッドセーフではありませんので、各APIを割り込みハンドラや異なるスレッドから呼び出した場合、正常に動作しない可能性があります。

履歴

2015/03/25
企画時の注意を追加
2010/06/24
誤記修正
2010/05/31
初版