02-16-2016 03:55 AM
TCP通信について質問させてください。
MATLABというソフトウェアからTCP/IP通信で数値データを送り、その信号をLabVIEW側で受け取り制御を行いたいと考えています。
そこで、TCPのサンプルプログラムを少しだけ変更し信号を読み取ることができるかを確認しました。
MATLABからはTCP/IP通信でデータの出力がされていますが、LabVIEWでデータを読み取ることができませんでした。
添付しているファイルがそのファイルです。
ヘルプを見てもTCPの要素の使い方がよく理解できず、どの要素を用いればいいのかよくわかりませんでした。
どなたか、TCP/IP通信でLabVIEW以外からのデータをLabVIEWで読み取る方法を解説していただけないでしょうか。
また、このTCP/IP通信のデータのやり取りはLabVIEWどうしでしか行えないのでしょうか。
ご回答よろしくお願いします。
解決済! 解決策の投稿を見る。
02-18-2016 08:28 AM
raspberry様
先日、VBで作成したアプリとLabVIEWで作成したアプリをTCP/IPで、接続させるということは可能でしたので
MATLABでTCP/IP通信の関数があるのであれば、LabVIEWと通信可能かと思います。
私が作成したものの概要ですが、LabVIEW、VBアプリとも同じPC内で動作させています。
機能としては、
LabVIEW:カメラ制御を行う。VBからのコマンドを受信し、カメラを制御し、制御完了のコマンドをVBに返す(Server)
VB:LabVIEWにコマンドを送り、カメラ画像をファイル保存させ、MATLABで作成した画像処理DLLを叩き、結果を得る(Client)
制御の順序ですが、
①LabVIEWアプリでTCPリスナを作成(サービス名:localhost、ポート番号8000 この数字は適当な数字で)
②LabVIEWアプリでTCPリスナを待機し、VB側からTCP接続が開かれるのを待つ(タイムアウトエラーが発生した場合は、再度待つ)
③VB側から、TCPを開く(サービス名とポート番号は上と合わせる)
④LabVIEW側では、TCPリスナを待機 の関数が正常に完了するので、次に、TCP読取り CRLFモード 読取りバイトはそれなりに大きな値
(タイムアウトが発生したときは、再度読取りで待つ)
⑤VB側で、「送りたい文字列(テキストをUTF8形式に変換) + CRLF」をTCP書込みして、TCP読取り待機
⑥LabVIEW側で文字列を受け取ったら、UTF8→テキストに変換し、テキストの内容により、それぞれの処理を実行。処理が実行したら、完了の文字列を
TCP書込み
⑦VB側で、完了の文字列を読み取ったら、また別の処理を続ける
といった感じです。
以上、参考になれば嬉しいです。
02-19-2016 01:09 AM
ご回答ありがとうございます。
とても参考になる例で私が行いたいことがしっかり入っており素晴らしかったです。
それを参考にVIを構築しなおしてみたのですが、やはりなりませんでした。
TCPリスンやTCP読み取り、TCPを閉じるというようなアプリ?ブロックの配置の仕方がわかりません。
どのような構成でアプリ?ブロックを接続および配置すればよいのでしょうか?
もしよろしければ、サンプルVIや図を用いて説明していただけると助かります。
02-19-2016 04:30 AM
LabVIEWとVBで通信するサンプルを作成してみましたので添付します。
LabVIEWは2014、VBは2010です。
不具合などあるかもしれませんが、とりあえず通信出来ることを確認しています。
参考になればと思います。
02-22-2016 08:57 PM
サンプルファイルありがとうございます。
とても参考になります。
今別件でばたばたしているので、まだ接続は確立しておりません。
なので、落ち着き次第またTCP通信についてチャレンジして行こうと思います。
わかりやすい説明とサンプルファイル本当にありがとうございました。