NI製品ディスカッション

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

USRPで取得した波形をTCP/IPで別のパソコンに送るときに発生するエラーについて

解決済み
解決策を見る

以前に以下の質問をさせていただいたものです。

https://forums.ni.com/t5/NI%E8%A3%BD%E5%93%81%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AB%E3%83%83%E3%82%B7%...

 

添付の二つのプログラムを用いて実行しましたが、以下のようなエラーが出てしまいます

TFIRE_0-1634877260586.png

バッファなどをどこでいじれるかがわからず、解決の道筋が立ちません。

どなたか、エラーの解消方法のご提案、あるいは現プログラムの問題点などを
教えていただけないでしょうか。

すべてをダウンロード
0 件の賞賛
メッセージ1/9
1,437件の閲覧回数

niUSRP Write Tx Data (CDB).vi で書き込むデータが不足してバッファが空になった というエラーですね。

 

「受信データ」表示器の内容は「元の複素数データ」と同じになっていますか?

このエラーが出るのは何回かデータを送受信しているうちにですか?それともいきなりですか?

 

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

以前の質問にもご回答いただいた上に今回もありがとうございます。

 

いえ、それぞれのプログラムで違うデータになってしまっています。

 

また、こちらはRXを起動したのちにTXを起動するとその直後に発生します。

なので、最初の段階で止まる状態です。

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

TCP接続をlocalhostで開いているので、同一PC内で2つのVIを実行していると思います。

受信データの配列は空ですか?

 空でなければデータポイント数は合っていますか?

  ポイント数が合っていて値が違いますか?

「TCP読み取り」でタイムアウトなどのエラーが起こっていませんか?

 

USRPからのデータ読み込みと、USRPへのデータ書き込みを同一ループ内に入れて実行したとき(TCPでの送受信は省いて直結してください)、ループはどれくらいの時間で回りますか?

 

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

データ配列は空ではありません。

 

データポイントが何かわからず申し訳ないのですが、

小数点の位置も値も異なっています。(以下画像の通り)

TFIRE_0-1635120643717.png

 

タイムアウトエラーは発生しておりません。

 

直結した場合のループ時間は100ms前後です。

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

データポイント数は、データ配列の長さです。

 

試しに、TX、RXとも待機関数をなくして、それぞれのWhileループの回る回数(i 端子の値)をモニタしてみてください。そのうえでRXとTXの実行開始の遅れをできるだけ短くしてください。

ループ回数は両方とも同じにならないとおかしいと考えられます。

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

データポイントに関して教えていただきありがとうございます。

データポイント数については新たに表示器を出すことで
確認できるものでしょうか?

 

ループ内にあった待機時間(100ms)を消去して実行したところ、
止まることなく送受信が行われました。

また、途中TCP_RX側を停止させて確認したところ、
ループ回数についても同じ値となりました。

ただ、元データと受信データの値が同じループ値でも一致しません。

0 件の賞賛
メッセージ7/9
1,357件の閲覧回数
解決策
トピック作成者TFIREが受理

配列の長さは「配列サイズ」関数で取得できます。

 

データが一致しないのはおそらく、RX側が実行開始後TX側の接続の有無を無視してどんどんデータを送信してしまい、受信側で少し前のデータを受け取っているせいだと思います。

RXに、TXが接続されるまで待機する仕組みを入れるか、サーバとクライアントを入れ替える(TXを先に実行してRXが接続されてデータが送られてきたら読み取る)ことを検討してください。

 

サンプルの検索メニューで「ネットワークストリーム」を検索するとより気の利いたプロトコルの参考になると思います。

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

配列サイズの取得方法について教えていただきありがとうございます。

確認したところ、配列サイズは同じ値でした。

そのため、Watsonさんのおっしゃる通り、
接続有無によるデータ転送ズレの問題なのだと思います。

 

教えていただいた方針とサンプルをもとに、改良していきたいと思います。

 

以前の質問に引き続き、ご丁寧に教えてくださりありがとうございました。

 

また、自己解決できない問題が発生しましたら、コミュニティに投稿させて
いただくこともあるかと思いますが、その際お時間あればまたご回答いただければ
ありがたく思います。

 

改めまして、ありがとうございました。

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