バーコード
1
画面内にカメラ映像を表示してバーコードを読み取りたい
1
Biz/Browser HT ver1.2.4より、Biz/Browserの画面内にカメラの映像を表示し、バーコードや二次元コードを読み取るためのCodeScannerViewクラスが追加されました。
バーコードの読取にあたり、ShowCameraメソッドでカメラの映像を表示し、StartCodeScannerメソッドで読取用のUIを表示します。 バーコードが読み取られるとCodeScannedイベントが発生し、コードの種別や読取結果を取得できます。
【 呼出形式 】
codeScannerView.StartCodeScanner( [format [, extraParams [, rtm ]]] )
format
読取対象のバーコード/二次元コード種別を組み合わせて指定します。デフォルトではRuntime.CODE_FORMAT_ALL(全てのフォーマット)が指定されます。
extraParams
読取時の詳細な設定を指定します。Array型引数のキーに設定名、値に設定値を格納します。
下記のサンプルコードでは、読取モード(単発読取・連続読取)、最大読取数、水平線・垂直線の表示を設定しています。
その他設定についてはオンラインマニュアルをご参照ください。
rtm
extraParamsで"SCAN_SOUND_ID"や"DUPLICATED_SOUND_ID"を指定した場合に、音声を再生するRuntimeオブジェクトを指定します。
【 formatで設定可能なバーコード/二次元コードの種別 】
値
種別
1
CODE128
2
CODE39
8
CodaBar(NW-7)
16
DataMatrix
32
EAN-13 (JAN-13)
64
EAN-8 (JAN-8)
128
ITF (Interleaved Two of Five)
256
QRコード
512
UPC-A
1024
UPC-E
2048
PDF417
4096
Aztec
65535
読み取り可能な全てのフォーマット ※
※他の定数と組み合わせず、単体で指定してください。
[ サンプルコード ]
Form BcdHt_001 { Width = 408; Height = 766; CodeScannerView CodeScannerView1 { X = 13; Y = 386; Width = 383; Height = 214; Border = $TRUE; /* バーコードをスキャンした際に発生するイベント */ Function onCodeScanned(e) { var scan_format = e.Format; var scan_data = e.Data; /* EditBoxにスキャンした結果を表示 */ ^.EditBox1.Value = "Format:" + str(scan_format) + "、Data:" + scan_data + "\r\n" +^.EditBox1.Value; ^.Button2.Active = true; } } Label Label2 { X = 14; Y = 77; Width = 100; Height = 20; HorizontalAlign = $LEFT; VerticalAlign = $CENTER; Value = " バーコード種別"; FontFace = $BOLD; FontSize = 10; FgColor = $WHITE; BgColor = $339933; } CheckBox CheckBox1 { X = 14; Y = 100; Width = 330; Height = 142; BgColor = $WHITE; FontFace = $BOLD; TabIndex = 10; Number ItemWidth = 110; Number ItemHeight = 28; CheckItem:Number item1[13] { Layout = $BLANK; Width =^.ItemWidth; Height = 28; } item1[0] {X = ^.ItemWidth * 0; Y = ^.ItemHeight * 0; title = "ALL"; value = Runtime.CODE_FORMAT_ALL; } item1[1] {X = ^.ItemWidth * 1; Y = ^.ItemHeight * 0; title = "CODE128"; value = Runtime.CODE_FORMAT_CODE128; } item1[2] {X = ^.ItemWidth * 2; Y = ^.ItemHeight * 0; title = "CODE39"; value = Runtime.CODE_FORMAT_CODE39; } item1[3] {X = ^.ItemWidth * 0; Y = ^.ItemHeight * 1; title = "EAN13"; value = Runtime.CODE_FORMAT_EAN13; } item1[4] {X = ^.ItemWidth * 1; Y = ^.ItemHeight * 1; title = "EAN8"; value = Runtime.CODE_FORMAT_EAN8; } item1[5] {X = ^.ItemWidth * 2; Y = ^.ItemHeight * 1; title = "ITF"; value = Runtime.CODE_FORMAT_ITF; } item1[6] {X = ^.ItemWidth * 0; Y = ^.ItemHeight * 2; title = "QR_CODE"; value = Runtime.CODE_FORMAT_QR_CODE; } item1[7] {X = ^.ItemWidth * 1; Y = ^.ItemHeight * 2; title = "UPC-A"; value = Runtime.CODE_FORMAT_UPCA; } item1[8] {X = ^.ItemWidth * 2; Y = ^.ItemHeight * 2; title = "UPC-E"; value = Runtime.CODE_FORMAT_UPCE; } item1[9] {X = ^.ItemWidth * 0; Y = ^.ItemHeight * 3; title = "Codabar(NW-7)"; value = Runtime.CODE_FORMAT_CODABAR; } item1[10] {X = ^.ItemWidth * 1; Y = ^.ItemHeight * 3; title = "DataMatrix"; value = Runtime.CODE_FORMAT_DATA_MATRIX; } item1[11] {X = ^.ItemWidth * 2; Y = ^.ItemHeight * 3; title = "PDF417"; value = Runtime.CODE_FORMAT_PDF417; } item1[12] {X = ^.ItemWidth * 0; Y = ^.ItemHeight * 4; title = "Aztec"; value = Runtime.CODE_FORMAT_AZTEC; } Value = 0; /* フォーマット形式を取得 */ Function getFormat() { if(item1[0].Selected) { return item1[0].Value; } else { var format1 = 0; var i; for(i=1; i < item1.length; ++i) { if(item1[i].Selected) { format1 += item1[i].Value; } } return format1; } } Function onTouch(e) { /* ALLが選択された場合、他を解除 */ if(e.from.index == 0) { var isActiveOtherItem = !e.from.selected; var i; for(i=1; i < item1.length; ++i) { item1[i].Active = isActiveOtherItem; item1[i].Selected = false; } } } } Label Label3 { X = 13; Y = 12; Width = 100; Height = 20; HorizontalAlign = $LEFT; VerticalAlign = $CENTER; Value = " バーコード読取"; FontFace = $BOLD; FontSize = 10; FgColor = $WHITE; BgColor = $339933; } Label Label4 { X = 13; Y = 37; Width = 51; Height = 24; HorizontalAlign = $LEFT; VerticalAlign = $CENTER; Transparent = $TRUE; Value = "モード"; FontFace = $BOLD; } OptionButton OptionButton1 { X = 68; Y = 37; Width = 158; Height = 33; BgColor = $WHITE; UseChange = $TRUE; OptionItem item1[2] { Layout = $OPTIMAL; Width = 90; Height = 30; } value = 0; item1[0].value = $FALSE; item1[0].title = "単発読取"; item1[1].value = $TRUE; item1[1].title = "連続読取"; Function OnChange( e ) { var bl; switch( e.from.value ) { case 0: bl = $FALSE; break; case 1: bl = $TRUE; break; default: bl = $FALSE; break; } ^.NumberEdit1.Active = bl; } } Label Label5 { X = 232; Y = 39; Width = 72; Height = 24; HorizontalAlign = $CENTER; VerticalAlign = $CENTER; Transparent = $TRUE; Value = "最大読取数"; FontFace = $BOLD; } NumberEdit NumberEdit1 { X = 310; Y = 39; Width = 37; Height = 24; Value = 3; } Label Label6 { X = 14; Y = 247; Width = 200; Height = 20; HorizontalAlign = $LEFT; VerticalAlign = $CENTER; Value = " 検出方法"; FontFace = $BOLD; FontSize = 10; FgColor = $WHITE; BgColor = $339933; } CheckBox CheckBox2 { X = 14; Y = 270; Width = 147; Height = 56; BgColor = $WHITE; Scroll = $NONE; CheckItem item1[2] { Width = 131; Height = 27; item1[0].Title = "水平線表示"; item1[1].Title = "垂直線表示"; } } Label Label9 { X = 170; Y = 270; Width = 108; Height = 24; HorizontalAlign = $LEFT; VerticalAlign = $CENTER; Value = "ライン位置(水平)"; Transparent = $TRUE; FontFace = $BOLD; } NumberEdit NumberEdit4 { X = 278; Y = 270; Width = 42; Height = 24; value = 0.5; Function onTouch(e) { if(value < 0){ value = 0; }else if(value > 1){ value = 1; } } } Label Label10 { X = 170; Y = 298; Width = 108; Height = 24; HorizontalAlign = $LEFT; VerticalAlign = $CENTER; Value = "ライン位置(垂直)"; Transparent = $TRUE; FontFace = $BOLD; } NumberEdit NumberEdit5{ X = 278; Y = 298; Width = 42; Height = 24; value = 0.5; Function onTouch(e) { if(value < 0){ value = 0; }else if(value > 1){ value = 1; } } } Button Button1 { X = 15; Y = 336; Width = 91; Height = 40; Title = "カメラ開始"; TabIndex = 1; Function OnTouch( e ) { try { /* カメラを起動 */ ^.CodeScannerView1.ShowCamera(Runtime.SourceTypeRearCamera); ^.Button2.Active = true; ^.Button3.Active = true; ^.Button4.Active = true; this.Active = false; } catch (e) { //.MessageBox(e.Message); } } } Button Button2 { X = 111; Y = 336; Width = 91; Height = 40; Title = "スキャン開始"; Active = false; Function OnTouch( e ) { ^.EditBox1.Value = "スキャンを開始しました。\n" +^.EditBox1.Value; /* フォーマット形式の設定値 */ var format1 = ^.CheckBox1.getFormat(); /* 設定値格納用配列 */ var extraParams = new Array; /* 各設定値を配列に設定 */ /* 読取モード */ extraParams["CONTINUOUS_MODE"] = ^.OptionButton1.item1[^.OptionButton1.Value].Value; /* 最大読取数 */ extraParams["MAX_SCAN_COUNT"] = ^.NumberEdit1.Value; /* 検出方法 */ if( ^.CheckBox2.item1[0].Selected ){ /* 横線 */ extraParams["SCAN_AREA_LINE_HORIZONTAL"] = ^.NumberEdit4.Value; } if( ^.CheckBox2.item1[1].Selected ){ /* 縦線 */ extraParams["SCAN_AREA_LINE_VERTICAL"] = ^.NumberEdit5.Value; } try { /* スキャン開始 */ ^.CodeScannerView1.StartCodeScanner(format1, extraParams); ^.Button3.Active = true; this.Active = false; } catch (e) { //.MessageBox(e.Message); } } } Button Button3{ X = 207; Y = 336; Width = 91; Height = 40; Title = "スキャン停止"; Active = false; Function OnTouch( e ) { try { /* スキャンを停止 */ ^.CodeScannerView1.StopCodeScanner(); ^.EditBox1.Value = "スキャンを停止しました。\n" + ^.EditBox1.Value; ^.Button2.Active = true; } catch (e) { if(e.code == "46"){ ^.EditBox1.Value = "スキャンが開始されていません。\n"+^.EditBox1.Value; }else{ //.MessageBox(e.Message); } } } } Button Button4 { X = 304; Y = 336; Width = 91; Height = 40; Title = "カメラ停止"; Active = false; TabIndex = 2; Function OnTouch( e ) { try { /* カメラを停止 */ ^.CodeScannerView1.HideCamera(); //.MessageBox("カメラを停止しました。"); ^.Button1.Active = true; ^.Button2.Active = false; ^.Button3.Active = false; this.Active = false; } catch (e) { //.MessageBox(e.Message); } } } EditBox EditBox1 { X = 13; Y = 610; Width = 386; Height = 116; } Button Button5 { X = 270; Y = 731; Width = 119; Height = 26; Title = "クリア"; Function OnTouch( e ) { ^.EditBox1.Clear(); } } Function OnGetFocus( e ) { try { var obj = e.from.name; if(obj == "PulldownList1" || obj == "item1" || obj == "NumberEdit1" || obj == "NumberEdit2" || obj == "NumberEdit4" || obj == "NumberEdit5"){ /* 設定項目にフォーカスが当たったらカメラを停止 */ CodeScannerView1.HideCamera(); Button1.Active = true; Button2.Active = false; Button3.Active = false; Button4.Active = false; } }catch(e){ if(e.code != "46"){ //.MessageBox(e.Message); } } } }
管理番号:BcdHt_001
Biz-Collections Bizの宝箱 トップへ
Biz/Browser HT・Biz/Browser SmartDevice・Biz/Browser AI TIPS集 トップへ