NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

読み取ったデータをデータ別に出力するプログラム

RFIDタグを利用した研究をしており、読み取ったタグをの情報をタグ別に振り分けるプログラムの作り方がわかりません。

読み取るまでができるプログラムを添付します。

ご協力お願いします。

0 件の賞賛
メッセージ1/9
2,298件の閲覧回数

平素よりNI製品をご愛顧頂きありがとうございます。
日本ナショナルインスツルメンツ技術部の上野です。

 

タグ別に振り分けるというのは、各ループで受信した文字列ごとに分けるということでしょうか?それでしたら、VISA読み取り関数の読み取りバッファ出力をForループの右枠に配線して、ループの外に出力するようにすることで配列化できます。

 

下図では、ループの枠にあるループトンネル(正方形の部分)を右クリックして、トンネルモードを条件に設定して、読み取る際に1バイト以上を受信した場合にのみ配列へ入れるようにしています。

 

SS5.png

 

 

そのほかの相違点は、以下のとおりです。

  • エラー配線を追加しました。
    Forループの枠を右クリックして条件端子を選択し、停止条件(赤丸を含む正方形のシンボル)を設定できるようにします。この部分にエラー配線をつなぐことでエラーが発生すれば、即時ループが停止します。
    (これをしておかないと、エラーが発生する際にループが停止するまで何度もエラーが発生する場合があります。)
  • VISAを開く関数やVISAシリアルポート構成VI、VISAを閉じる関数は一度実行されれば良いため、ループの外に配置しています。
0 件の賞賛
メッセージ2/9
2,161件の閲覧回数

返信遅くなり、申し訳ございません。

読み取った文字列ごとに分けるということで合っています。言葉足らずですいません。

上野様が送って下さった通りにしたのですが、うまくいきませんでした。

添付します。何か間違いのある点ありますか?

 

 

0 件の賞賛
メッセージ3/9
2,129件の閲覧回数

うまくいかないというのは、文字列配列に何もデータが入らないのでしょうか?

最初にいただいたコードでは、読み取れるとのことでしたので、トンネルモードを条件ではなく、指標だけに設定して、各ループで読み取ったすべてのデータを保存できるかをお試しください。

0 件の賞賛
メッセージ4/9
2,120件の閲覧回数

はい、文字配列は空白のままです。

このようになっています。

0 件の賞賛
メッセージ5/9
2,117件の閲覧回数

添付ファイルは、ForループからWhileループに変更して、フロントパネルに配置した停止ボタンでプログラムを停止できるようにしております。このVIでお試しいただけますか?

0 件の賞賛
メッセージ6/9
2,112件の閲覧回数

こちらのVIで成功しました。

ありがとうございます!

とても助かりました。

0 件の賞賛
メッセージ7/9
2,107件の閲覧回数

先ほどのコードで動作して、Forループで動作しなかった理由は、実行の中断ボタンで強制終了したからだと思います。このWhileループの方法でフロントパネルにある停止ボタンを押したプログラムによる停止処理をおこなえば、文字列表示器の配列にもデータが保存されます。

0 件の賞賛
メッセージ8/9
2,104件の閲覧回数

理解できました。

LabVIEWを利用し始めてまだ、一ヶ月ほどなのでわからないことが多かったのでこちらで質問させていただいて良かったです。

親身なご対応ありがとうございます。

0 件の賞賛
メッセージ9/9
2,102件の閲覧回数