【LANSA Tips】WebアプリケーションでのQRコードの読み取り

World WideのLANSA技術フォーラムに投稿されたトピックと、日本のお客様からのお問い合わせへの回答の中から、皆様にお役に立つLANSAの開発テクニックやトラブルシュートに関する情報をご紹介します。

質問

Visual LANSA WebのアプリケーションでQRコードの読み取りはできますか?

回答

ウィジェットとLANSAのアプリ LANSA Mobileを使用することでQRコードの読み取りが可能です。

1. サンプル

ウィジェット xDeviceBarcodeScannerを使用した、QRコードを読み取るWebページのサンプルです。
xDeviceBarcodeScannerの使用には、LANSA MobileからWebページを実行する必要があります。

Begin_Com Role(*EXTENDS #PRIM_WEB) Theme(#SYS_THEME) Height(480) Width(576) Layoutmanager(#Layout1)

Define_Com Class(#PRIM_VS.Style) Name(#Style1) Foregroundbrush(#Brush1)
Define_Com Class(#PRIM_VS.SolidBrush) Name(#Brush1) Color(Theme500)

Define_Com Class(#PRIM_TBLO) Name(#Layout1)
Define_Com Class(#PRIM_TBLO.Row) Name(#Layout1Row1) Displayposition(1) Parent(#Layout1)
Define_Com Class(#PRIM_TBLO.Column) Name(#Layout1Column1) Displayposition(1) Parent(#Layout1)
Define_Com Class(#PRIM_TBLO.Item) Name(#Layout1Item1) Alignment(TopLeft) Column(#Layout1Column1) Manage(#Icon) Parent(#Layout1) Row(#Layout1Row1) Sizing(None) Flow(Right) Marginleft(5)
Define_Com Class(#PRIM_TBLO.Item) Name(#Layout1Item2) Alignment(TopLeft) Column(#Layout1Column1) Manage(#STD_TEXT) Parent(#Layout1) Row(#Layout1Row1) Sizing(None) Flow(Right) Marginleft(5)

Define_Com Class(#STD_TEXT.Visual) Name(#STD_TEXT) Componentversion(1) Displayposition(1) Height(48) Parent(#COM_OWNER) Tabposition(1) Usepicklist(False) Width(300) Caption('QRコードの値’) Labeltype(Caption) Marginleft(100) Left(5)
Define_Com Class(#PRIM_MD.Icon) Name(#Icon) Displayposition(2) Icon('qr_code_scanner’) Left(310) Parent(#COM_OWNER) Tabposition(2) Top(0) Enabled(False) Iconheight(48)

Define_Com Class(#xDevice03) Name(#BarcodeScanner)

Evtroutine Handling(#BarcodeScanner.Initialize)
Set Com(#Icon) Enabled(True) Style(#Style1)
Set Com(#BarcodeScanner) Cameraposition(BACK) Scanmultiple(False) Allowduplicates(False) Scannerengine(Default)
#BarcodeScanner.AddBarcodeType Type(QRCODE)
Endroutine

Evtroutine Handling(#Icon.Click)
#BarcodeScanner.ActivateScanner()
Endroutine

Evtroutine Handling(#BarcodeScanner.Completed) Status(#lStatus) Barcodecount(#lCount) Message(#lMessage)
Define Field(#vrbcIx) Type(*INT)
If (#lStatus = OK)
Begin_Loop Using(#vrbcIx) From(0) To(#lCount – 1)
#STD_TEXT := #BarcodeScanner.GetScannedValue( #vrbcIx )
End_Loop
Endif
Endroutine

End_Com

(1) 読み取り領域のサイズ

プロパティViewfinderheightとViewfinderwidthを使い、QRコードの読み取り領域のサイズを指定可能です。
端末の高さと幅に対して比率(%)で指定します。下記の場合、端末の30%の読み取り領域が表示されます。

例 Set Com(#BarcodeScanner) Cameraposition(BACK) Scannerengine(System) Viewfinderheight(30) Viewfinderwidth(30)

(2) スキャンエンジン

実行端末のOSが限定されますが、プロパティScannerengineに指定するスキャンエンジンによって、スキャンの精度が向上する可能性があります。

iOS
例 Set Com(#BarcodeScanner) Cameraposition(BACK) Scannerengine(System)

Android
例 Set Com(#BarcodeScanner) Cameraposition(BACK) Scannerengine(Google)

2. ウィジェット

ウィジェットはLANSAのコントロールには無い、JavaScriptの機能を使用するコントロールです。

ウィジェット マニュアル
https://docs.lansa.com/15/ja/lansa017/index.htm#lansa/vlwebeng02_0015.htm

ウィジェット xDeviceBarcodeScanner マニュアル
https://docs.lansa.com/15/ja/lansa017/index.htm#lansa/vlwebeng02_0100.htm

3. LANSA Mobile

(1) ご使用の端末にLANSA Mobileをインストールしてください。

iOS
https://apps.apple.com/jp/app/lansa-mobile/id1031456850

Android
https://play.google.com/store/apps/details?id=com.lansa.mobile.lansa

Windows
https://apps.microsoft.com/detail/9nblggh4wd3c

(2) LANSA Mobileのアプリを起動し、Webページを登録してください(以下はiOSでのオペレーションになります、タップするアイコンや機能名はOSによって異なります)。

① 画面右下の+をタップし、「LANSA ページの追加」を実行してください。

② 下記の値を入力後に完了をタップしてください。

タイトル:メニューの記述
ホスト:Webページを実行するサーバーのIPアドレス
ページ名:Webページの名前
LANSA システム:LANSA システム名(例 dcxpgmlib)
区画:LANSA 区画名
言語:LANSA 区画の言語名(例 JPN)

③ ②で入力したメニューをタップするとWebページが実行されます。

サンプルは「QRコードの値」の右のアイコンをタップすると背面カメラを起動し、QRコードを読み取ると「QRコードの値」にその値を入力します。
サンプルのWebページはブラウザでも実行可能ですが、QRコードの読み取りに使用しているウィジェット xDeviceBarcodeScannerはブラウザでは使用できないため、「QRコードの値」の右のアイコンが有効になりません。

④ 登録したメニュー定義は画面右下の共有のアイコンから、他の端末のLANSA Mobileへエクスポート/インポートが可能です。

LANSA MobileはLANSA Webページ以外のURLも登録可能です。
様々なWebサイトやWebアプリケーションを実行するためのポータルアプリとしてご使用いただけます。

有償の「LANSAテクニカル・ホットライン・サービス」をご契約いただければ、過去データベースの検索から今回ご紹介した以外の技術情報を探すことも出来ます。 「LANSAテクニカル・ホットライン・サービス」のご契約についてはお問い合わせフォーム(https://www.lansa.jp/inquiryform/)よりお問い合わせください。

LANSAコミュニティに登録する

IBMi(AS/400)をご利用の企業様必読!
LANSAを利用したIBM iの活用方法・成功事例をお届け致します。