C#(.NET Framework)から Interop.JVDTLabLib を使用しています。 JVGets の宣言は int JVGets(ref object buff, int size, out string filename); です。 SAFEARRAYは SafeArrayAccessData Marshal.Copy SafeArrayUnaccessData SafeArrayDestroy で処理しています。 最初のJGレコードは正常に取得できます。 しかし、JVGetsをループで繰り返し呼び出しても、 JG… JG… JG… と毎回同じJGレコードが返ります。 VC++サンプルと同様に実装しているつもりですが、 次のレコード(RA等)へ進みません。 C#でJVGetsを利用する場合に追加で必要な処理がありますでしょうか。
@lu4fer さん、こんばんは。
JVGetsだからではなく、JV-Linkでのデータ取得の流れの話かと思いますが、JV-Linkインターフェース仕様書のp.30のチャートとかは確認してます? JGが飛んでくるってRACEを取得してるんだと思いますが、これ13種類のデータが飛んできますが、これ、特に何が飛んでくるかは規定されてないので、もしご自分が必要としない場合はJVSkipって説明は理解されてますか?
自分はVC++サンプルとか確認してませんが、ざっくりな話、C#はVB.NETと大差ないです。なのでプログラミング教室とかにあるVB.NETのサンプルで回し方確認して真似すればC#でも行ける筈です。自分のコードって元々はVB.NETで書き始めたのを途中で一気にC#にコンバートして仕上げてます。ググると出てくると思いますが、VB<->C#のサイトがあってVB貼ればC#、C#貼ればVBにしてくれるのでそれ利用して一気にコンバートして、その後に色々と最適化しました。
**SameNoEsaさん、こんばんは。
またまた助けていただいてありがとうございます!
確かにIF仕様書を再確認したらイケました<m(__)m>**