08-30-2010 07:43 PM
初めて質問させていただきます。
現在、計測器とPCをLANケーブルでつないで、
計測器からのデータを取り込むプログラムを作成させる。
といったことを考えております。
ひとまず、メーカーさんの指示通りにプログラムを作成して実行してみたのですが、
測定器の問題なのかプログラムの問題なのかは分かっていないのですが、
データを読み込むことができません。
さしあたり、プログラムに問題があれのかどうか、ご教授を 賜りたく、質問させていただいた次第です。
条件としては、
1.横河電機製光パワーメータAQ2201を使用。
2.Visual C++ 2008 expressを使用。
3.NI-VISA 4.62を使用。
4.計測器との通信はLAN socketである。
5.計測器とPCとの間にハブを設けてRJ-45コネクタを使用したストレートケーブルで接続。
6.計測器には付属のソフトフェアはなし。
横河さんに問い合わせをした際、データ取得の流れできるような資料の一部として、参考資料1を頂きました。
もう1つの資料は私が作ったプログラムです。
このプログラムは参考資料どおりに、データを1個ずつ取得するためのプログラムです。
コンパイルして、実行すると
could not read!と表示され、
Read関数の部分でデータを読み込めてないようです。
一応指定されたコマンドで動作するか確認するためにVISAICを使用して、
*IDN\nと入力すると
正しいデータ応答がありました。
しかし、プログラム上ではデータを読み込めていません。
今の所、分かっていることは、
(1)VISAICではできて、
(2) VC++ではできない
ということです。
今のところ、プログラムに問題があると考えています。
質問は、
プログラムに問題があるのか、その原因は?その説明を教えていただければ幸いです。
解決済! 解決策の投稿を見る。
09-02-2010 08:31 AM
masaaki513 様
平素より NI 製品をご利用頂きまして誠にありがとうございます。
日本ナショナルインスツルメンツ技術部の巳波と申します。
プログラムを拝見させて頂きましたところ、コマンドの書き込みのところが
// st2=viWrite(vi,(ViBuf)"*IDN?\n",6,&retCount);
st2=viWrite(vi,(ViBuf)"IDN?NL",6,&retCount);
となっていました。
「*IDN?\n」 の6文字を送る場合ですと、コメントアウトすべきなのは下の方
ではないかと存じますが、いかがでしょうか。
またC言語用の NI-VISA のサンプルが用意されておりますので、そちらも
ご参考にして頂ければと存じます。
TCP/IP 通信用のサンプルですと、以下のパスになります。
Windows XP:
C:\Documents and Settings\All Users\Documents\National Instruments\NI-VISA\Examples\C\TCPIP
Windows 7:
C:\Users\Public\Documents\National Instruments\NI-VISA\Examples\C\TCPIP
宜しくお願い致します。
09-02-2010 08:30 PM
日本ナショナルインスツルメンツ株式会社 技術部
巳波裕介 様
大変お世話になります。
コマンドを変えてみましたが、エラーが出てしまいました。
ただ、サンプルコードを使うと、
viReadの部分でBFFF0015というエラーコードが表示されました。
調べてみたところ、
VI_ERROR_TMOというエラーでタイムアウトしていることが確認されました。
そこで、viSetAttributeでTMOの時間を2秒から60秒にしてみたんですが、
変化はありませんでした。
それで、再度VISAICで確認してみたところ、
自分が見落としていたんですが、
"*IDN?NL"に対して、
viReadの部分で同様のエラー(BFFF0015)が出ていました。
ただし、装置の仕様の応答はありました。
"AQ2201 ・・・・・ \r\n"
それでてっきり、応答があると思っていました。
現在確認できていることはこの程度なのですが、
この原因を解決するために、良い方法はないでしょうか?
09-03-2010 01:51 AM
日本ナショナルインスツルメンツ株式会社 技術部
巳波裕介 様
大変お世話になります。
サンプルコードの使うことでデータ取得することができました。
またVISAICでのエラーは、バッファが計測器から帰ってくる文字数より大きいためにおきたことで、
適切な値に修正すると、VISAICでもエラーが起きませんでした。
たいへんありがとうございました。