02-14-2007 09:29 PM
02-19-2007 01:20 AM - 編集済み 02-19-2007 01:20 AM
平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部の幾田と申します。
CANについてはプログラミングの概要はDAQmxのタスクの概念に非常に良く似ており、通信の設定をconfigで行い、それらの情報をopenから”オブジェクトハンドル”として渡し、最後にクローズします。
もしプログラム中でopenからcloseに引数のobjectを渡していない場合、通信が止まらず継続してしまう可能性があります。
次に、上記の通りオブジェクトハンドルをopenするかcloseするかの設定になるので、連続的な通信を行う際ループの設定位置なのですがwriteのみを囲い、open、closeはそのループ前後一回ずつ設定して下さい。
この概念や関数の詳細につきましては"NI-CAN Hardware and Software Manual"のChapter9をご参照いただければと思います。
最後に、上記内容を踏まえたCANのIn/Outのサンプルが以下ディレクトリにありますので、一度こちらをご参照いただきプログラムのご参考にしていただければと思います。
C:\Program Files\National Instruments\NI-CAN\MS Visual Basic\Frame API examples\Obj2Obj
宜しくお願いいたします。
このメッセージは 02-19-2007 01:22 AMに N.Ikuta が編集しています。
02-19-2007 05:30 AM
日本ナショナルインスツルメンツ技術部 幾田様
御回答ありがとうございます。
closeの件ですが、オブジェクトハンドルは渡しております。
定期送信はタイマーを使用しており、Openしてからタイマーを起動させ、
Closeする前にタイマー停止させております。(Closeする前にタイマー処理が実行されていないことを確認しております。)
現状確認として報告致します。
以上、宜しくお願い致します。
02-20-2007 02:30 AM
平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部の幾田と申します。
表記の内容にて、プログラム内の関数では問題ないということで、サンプルなどではどういった挙動になりますでしょうか。
また、今回使用されているサンプルでは具体的にどのような信号をフレームAPIで送受信していますでしょうか。
例えば、送信するデータ自体が大きなサイズの配列であり、その送受信に対してCANの転送が間に合わずデータがコミットしてしまっているということはありませんでしょうか。
一度受信側のデータでキャプチャしながら結果を確認いただければと思います。
また、はやり問題が改善されなかった場合、一度サンプルを現在ご利用のプログラミングに合わせてカスタマイズしていただき、経過をご欄いただけますでしょうか。
お手数かと思われますが、宜しくお願いいたします。