EXOR#USB Barcode Readerを使ってみよう

今回の記事ではEXORのex707Mを使用し、汎用のUSB Barcode Readerと接続し、QR CodeやBar Codeを読み取り画面を表示します。またデバイスから読み取ったデータをSD CardにExportできるようにします。プロジェクト内にJavascript・Live Tagなどの機能も使用しました。

さ、FAを楽しもう!

今回記事で使用したのはアマゾンで3000円くらいのUSB Barcode Readerです。

>>https://www.amazon.co.jp/gp/product/B09SHT2315?th=1

Implementation

Protocols

JMobileを起動し、Variables Protocolsを追加します。Variable通信ドライバでは、HMI 内部メモリを指すタグになります。注意するのはVariableタグは保持されませんので、プロジェクトが開始されると、タグの開始値は0(文字列タグの場合は””)になります。

Tags

次はVariable Tagを追加します。

  • barcode:String[100]、Barcode の読み取りった結果
  • Tag2:int、Barcode 読み取り成功のCounter
  • Tag3_AlarmTrig、Barcode 読み取りに成功したあとアラームをトリガーし、データを保存するようにします。

Logging Configuration

次はLogging  Configurationを行います。TrendsでLoggingすることもできますが、Trendsドは通常、数値をサンプリングするためのもので、サンプルの最大サイズは8バイトになります。なので、文字列をLoggingしたい場合は、ファイルに情報を書き込むスクリプトを使用するか、アラームを使用し、アラーム説明のライブタグ機能で文字列(アラーム履歴ログに保存される)を読み取るなどの方法になります。今回の記事ではアラーム履歴ログとライブタグ機能の組み合わせで実装します。

Events Bufferをクリックします。

ProjectではDefault上でAlarm Buffer1が作成されます。

Storage Device項目をクリックし、データを保存するMediaを設定します。

今回はSD Cardに保存する設定になります。

Alarm Configuration

次はアラームを設定するため、”Alarms”をクリックしてください。

+ボタンをクリックしアラームを追加してください。

Enable

EnableのCheckBoxを入れ、該当するアラームを有効にします。

Ack

Barcode Readerから読み取ったコードを表示するだけなので、Ackは不要です。

Trigger

Triggerはアラームの発火状態です。今回はBit ONするときアラームをTriggerしたいので、BitmaskAlarm:0に設定します。

Tag

こちらはアラームを発火するTagを設定します。先ほど宣言したTag3_AlarmTrigに設定します。

Description

Descriptionはアラームの説明文字になりますが、実はもう1つ実用的な機能がありまして、それは”Live Tag”機能になります。下図のDescriptionではbarcode Tagに[ ]に囲まれ、それはDescriptionの中にbarcode Tag値を表示しますよの意味になります。

Example

Array Tags(The whole Array)

配列全体を参照(すべての要素が表示されます):

[TagName]

すべての配列要素はカンマ区切りのリストで表示される。

[TagName[-1]]

すべての配列要素がカンマ区切りのリストで表示される。

Array Tags(The Element inside an Array)
[TagName.Index]

[MyARRAY.5]はMyARRAYの6番目の要素を表示します。

[TagName[TagIndex]]

 [MyARRAY[TagIndex]]は、TagIndexが5のとき、MyARRAYの6番目の要素を表示する。

Screen-1

こちらはBarcode Readerの操作画面になります。

BarCode Input Field

こちらはBarCode Readerから読み取った結果を表示するFieldになります。

Data Link

DataLinkは先ほど定義した文字列Tagに設定します。

Keypad

今回記事で使用したバーコードリーダーがキーボードエミュレーションモードで動作するように設定されてたので、HMIに接続すれば準備は完了です。

そして、ページ内にR/Wとして設定された数値フィールドを設置し、そのフィールドを押せば、タッチスクリーンのキーボードを使って値を入力することができるが、バーコードリーダーを使うこともできる。

また、Barcode Readerを動作する度にKeypadが表示されるのはノーセンスなので、Wheelに設定すると、キーパッドは表示されません。

Write Mode

Write ModeはOn change とOn Enterの設定がありますが、今回はOn changeに設定します。つまりBar Codeを読み取って、なおかつ結果が変わったときのみBar code Tagに書き込みます。

次はOnDataUpdate EventのFieldで2つのアクションを設定します。

Action1:JSAction

JSAction 動作を設定します。つまりData Updateされる度にnumeric1_onDataUpdateというJavascriptが動作します。

Action2:StepTag

次はSetpTag アクションを追加します。このアクションがトリガーされる度にTag2が+1されます。

Barcode Read Check Counter

こちらはBar Codeが読み取った数のCounterになります。

DataLink FieldでTag2とつながってください。

Trigger BarCode Read Button

今度はBarCode Readerの読み取り動作をトリガーするボタンを追加します。

Events>OnMouseClickでボタンがクリックされたときのアクションを追加します。

BeginDataEntry Actionを追加し>WidgeでPage1:numeric1を設定しましょう。

Page1:numeric1はBarcode Fieldの”Input Trigger”になります。本来はOperatorがnumeric1をクリック>Keypadが表示され>データ入力する流れを、ボタンをクリックし>numeric1がデータ入力受付可能>Bar Code Readerのデータを受け取る流れに変わります。

Screen Change Button

これはScreen切り替え用のボタンです。

BarCode Read status

こちらはBarcodeのRead状態を確認するLAMPと数字表示です。

Tag3_AlarmTrigはTrueであればBar Code読み取り成功です。

こちらはLamp表示だけです。

Scripts

最後はScreen-1のJavascriptです。Tag3_AlarmTrigを2秒以上ONにすると自動的にリセットします。

var myCounter=0;
var myTimer=page.setInterval(“f_reflesh()”,1000);

function f_reflesh(){
    var almTrigger=project.getTag(“Tag3_AlarmTrig”);
    if (almTrigger){
      var coderesult=project.getTag(“barcode”)
      myCounter=myCounter+1;
      if (myCounter >=2){
            myCounter=0;
          project.setTag(“Tag3_AlarmTrig”,false)
      }
        }
    return false;
           
    }

function numeric1_onDataUpdate(me, eventInfo)
{
    project.setTag(“Tag3_AlarmTrig”,true)  
    return false;
}

Screen-2

次はアラーム履歴の表示画面です。

Alarm history table

ObjectからAlarm history tableを追加しましょう。

Event Bufferに”Alarm Buffer1(つまり先程追加したアラームテーブル)”に設定してください。

Export Data to SD Card

最後はAlarm History TableのデータをSD CardにExportするボタンを作成します。

EventsにOnMouseClick>DumpEventArchive()アクションを追加して下さい。

Folder PathでExportしたいDirectoryや時間設定などをアプリケーションに合わせて設定しましょう。

Result

こちらの動画から動作確認できます。

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする