• 締切済み

スペクトルアナライザへのibwrt関数を用いたコマンド送信について

私の最終目標は、Agilent社の型番E4403Bのスペクトルアナライザを、National Instruments NI-488.2というソフトウェアをベースに、C言語で制御したいと思っています。 私が困っているところは、ibwrt関数を用いてプリセットや中心周波数などを指定したいのですが、スペクトルアナライザにUndefind headerなどの警告文が発生し、コマンドを受け取ってくれません。ibwrtまたは、ほかの関数を用いたスペクトルアナライザへのコマンド受け渡し方法について教えてください。 私が行った解決策としましては、デバイスをオープンとクリアーをして、コマンドを受け渡せる環境を設定しました。また、スペクトルアナライザの説明書により、制御コマンドとして、プリセット(IP;)や、センタ周波数の指定(CF 300MHZ;)があることが解りました。 National Instruments社にメールで回答を求めましたが、返事がなかなか返信されません。 以下にソースコードを示します。間違いやアドバイスがございましたら是非ご教授お願いします。 main(){ int Spa; //デバイスのオープン //ibdevの引数は左から順に //デバイス用アクセスボードの指標 //デバイスの1次GPIBアドレス //デバイスの2次GPIBアドレス //入出力タイムアウト値 //デバイスのEOIモード //EOS文字とモード Spa=ibdev(0,18,0,10,1,0); //デバイスのクリア ibclr(Spa); //以下のソースコードでプリセットコマンドを受け取ってくれない(スペアナにUndefind headerという警告文が発生) //ibwrtの引数は左から順に //ボードまたはデバイスのデスクリプタ //書き込むバイトが格納されているバッファのアドレス //書き込むバイト数 ibwrt(Spa,"IP",3); //以下のソースコードで周波数設定コマンドを受け取ってくれない(スペアナにUndefind headerという警告文が発生) ibwrt(Spa,"CF 100KHZ",10); return 0; }

みんなの回答

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

文字数に対して「書き込むバイト数」が1バイトずつ多くないでしょうか。 例えば   ibwrt(Spa,"IP",3); は   ibwrt(Spa,"IP",2); となるところかと。

関連するQ&A