NI製品ディスカッション

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

バーコードリーダで読み込んだ値で文字列表示器の値を上書きしたい

解決済み
解決策を見る

QRコードの値を2次元バーコードリーダで読込み、その値を文字列表示器に表示させるviを作成中です。

読み込む度に表示器の値を新しいデータで上書きしたいのですが、その方法がなかなか思いつきません。

どなたかアドバイスを頂けないでしょうか。

 

使用している2次元バーコードリーダは以下です。

unitech MS852Plus(USB接続)

 

よろしくお願いいたします。

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

VISA読み取り関数を用いて、バーコードリーダーからの値を取得されてるでしょうか?

その場合、読み取り関数からの文字列出力をそのまま文字列表示器に接続すれば、新しいデータで上書きされるはずです。

 

そうなっていないようでしたら、該当箇所のVI画像を見せて頂けますか?

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
0 件の賞賛
メッセージ2/11
2,509件の閲覧回数

ご連絡ありがとうございます。

 

※件名や上に書いた「表示器」は誤りで「制御器」が正しいです。失礼しました。

 

バーコードリーダでQRコードを読んだら制御器の文字列に上書きしようという考えで、

文字列制御器にキーフォーカスして文字列を選択しているだけになります。

 

VISA読み取り関数に関する知識はありませんが、それを使うのが一般的なのでしょうか。

よろしくお願いいたします。

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

制御器の値ということでしたら、プロパティノードの「値」や、ローカル変数を使う方法があります。

制御器/表示器、ローカル変数、値プロパティノードの相違点 - NI

 

VISA関数はすみません、忘れてください。

バーコードリーダーによって、LabVIEWからの使い方が異なるので、

既に読み込みができているようでしたら関係ありません。

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
0 件の賞賛
メッセージ4/11
2,488件の閲覧回数

アドバイスありがとうございます。

 

上に画像を添付したVIを実行すると、例えば「4100710518」という10桁の数字を

記録したバーコードを繰り返し読むと、下記のように桁が少なくなることがあります。

 

1回目:4100710518

2回目:0710518

3回目:100710518

4回目:8

5回目:18

 

この原因として何が考えられますでしょうか。

ご助言いただけたら助かります。よろしくお願いいたします。

0 件の賞賛
メッセージ5/11
2,486件の閲覧回数
解決策
トピック作成者ZEMAXが受理

添付頂いた画像では、バーコードリーダーからの情報取得部分や、

文字列処理の詳細が分からないため、なんとも言えないところです。

 

状況から推察するに、以下の2つが考えられると思います。

  • バーコードリーダーからの返りデータがそのようになっている
    デバイス設定や、情報取得部の処理を確認されるとよいと思います
  • 文字列処理が誤っている
    プローブやステップ実行などのデバッグツールを用いて、期待した動作になっているか調査します
    LabVIEWのデバッグツール - National Instruments (ni.com)
Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
メッセージ6/11
2,478件の閲覧回数

何度もご助言いただき、ありがとうございました。

所望の動作を妨げていると思われる二つについて、少し時間をかけて調査してみます。

また質問した際にはアドバイスをお願いいたします。

ありがとうございました。

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

横から失礼します。

バーコードリーダはキーボードエミュレーションモードですね。これは「ユーザが文字を入力したい箇所を指定してから読み取る」用途なので自動プログラムでは使いにくいです。

文字は1文字ずつ入力されるので、フォーカスとセレクションプロパティを繰り返していると、読み取りタイミングと干渉して文字列が欠けます。

 

リーダをUSB仮想COMエミュレーションモードにして、シリアル通信で受信することをお勧めします。

VISAを使ってデータが送られてくるのを待機するプログラムが書けます。1行分受信したら文字列制御器のローカル変数などに書き込みます。例えばプロパティノードで「値(信号)」に書き込めばイベントストラクチャをトリガできます。

メッセージ8/11
2,411件の閲覧回数

アドバイスありがとうございます。

なるほど、そのような理由から文字列の欠けが生じるのですね。

 

ご助言いただいたVISAを使ってデータが送られてくるのを待機するプログラム、

こちらで所望の動作は達成できそうです。

 

でもお恥ずかしながら、VISAやシリアル通信を使用した経験がありませんので、

どう実現するのか見当もつかない状況にあります。

 

参考になるプログラムや情報等ありましたら、お教えしていただけないでしょうか。

よろしくお願いいたします。

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

LabVIEWのサンプルファインダで、ハードウェア入力と出力>>シリアル>>連続シリアル書き込みと読み取り、を開いて、VISAリソース名(COMポート)と終端文字をセットして実行し、バーコードリーダで何か読んでみてください。

終端文字はバーコードリーダのサフィックス設定に合わせます。CR+LFなら0xA、CRなら0xD、ETXなら0x3です。

うまく読めればラッキーですが・・・

メッセージ10/11
2,401件の閲覧回数