- リンクを取得
- ×
- メール
- 他のアプリ
- リンクを取得
- ×
- メール
- 他のアプリ
今回はNI-USRPドライバを使用して、USRPからデータを送信する場合に一時送信を停止する方法を解説します。
NI-USRPドライバを使用してUSRPの送受信を行います。
受信の場合
受信の場合は以下のように、
- Initiate関数で受信を開始し
- Fetch関数でデータを取得し
- Abort関数で受信を終了します。
送信の場合
送信の場合は、受信と違いInitiate関数とAbort関数は無く明示的に開始停止はありません。
Write Tx Data関数を呼んだタイミングで送信が開始されます(もしくはトリガのタイミング。サンプルの"niUSRP EX Tx with GPS.vi"等を参照)。
送信を停止する場合は、
- 停止する直前の送信時に
- Write Tx Data関数の "end of data?"にtrueを付加して送信する。
これで送信が停止されます。
この "end of data? = true"にしないと、次にWrite Tx Data関数を呼んだ場合に、"Tx buffer underflow~"のエラーが発生します。
よって一時停止する場合には、必ず "end of data? = true"で停止します。
または以下のように0のデータを"end of data?"にtrueでも停止可能です。
送信再開までに50msの時間がかかるので注意
Write Tx Data関数で"end of data? = true"で送信は停止することが出来ます。
そしてもう一度Write Tx Data関数を呼ぶと("end of data? = false"で)再度送信することが出来ます。しかし再度送信する場合は即座に送信されるわけではなく50msかかります。
Write Tx Data関数を呼んでから送信されるまで50ms掛かってしまいます。
50msの待ち時間なく送信を一時停止する方法
50msも待てない場合は、仕方ないので"end of data? = true"を使って送信を一時停止しません。
その代わりに、以下のように0データを送信するようにします。
(送信する0データ長は、IQ Rateに合わせた長さを用意して下さい。IQ Rate 1Mの場合で、1ms送信停止する場合は、IQ 1000サンプルの0データを送信します。)
以上、ドルフィンシステム福島でした。
コメント
コメントを投稿