01-29-2017 10:51 PM - 編集済み 01-29-2017 10:52 PM
常日頃よりお世話になっております。
一昨年、こちらのフォーラムにてお世話になりました。
その節はどうもありがとうございました。
今回、新たにお伺いしたい事項が生じましたので、こちらにてご検討をお願いいたします。
Visual Basic10 Express(VB.NET 4.0)を用いて、USBバスから複数の外部機器の制御を検討しております。
・GPIB機器→GPIB-USB-HSを用いて制御、サンプルコード"SimpleReadandWrite.sln"を基に作製
(参照ファイルとして
・信号(5V)のOn/Off→USB6501を用いて制御、サンプルコード"WriteDegChan.sln"を基に作製
それぞれ別々なプロジェクトにしている場合には問題無く動くようになっているのですが、
これを合わせようとしてWriteDegiChan.slnのコードに少しずつSimpleReadandWrite.slnのコードを
移してみると、名前空間に起因するものと思われるエラーが生じます。
①WriteDigChanに元々含まれている命令DigitalSingleChannelWriterなどついて、以下のエラーメッセージが表示されます。
エラー 4 実装されたインターフェイス 'NationalInstruments.ISynchronizeCallbacks' を含むアセンブリ 'NationalInstruments.Common, Version=9.1.40.163, Culture=neutral, PublicKeyToken=dc6ad606294fc298' への参照が必要です。参照をプロジェクトに追加してください。 C:\Users\Public\Documents\National Instruments\NI-DAQ\Examples\DotNET4.0\Digital\Generate Values\WriteDigChan\VB\MainForm.vb 552 33 WriteDigChan.2010
②参照設定のファイル"NationalInstruments.Common"のバージョンを13.0.35.190から13.0.40.190へ変更すると①のエラーは消えます。
③しかし、今度はSimpleReadandWriteから移してきたクラスDeviceにエラーが示されます。メッセージは①と殆ど同じ(主に違う箇所としては"Version=13.0.35.188")ものです。
したがって、"NationalInstruments.Common"について、.NET 4.0向けに入っているファイル(2つ)ではどちらにも対応できない状況になっております。名前空間の競合が生じているのではないか、ということまでは思い至ったのですが、こちらのページを見ても解決策が分かりません。
どなたか、こうした問題を体験された方や、解決策をご存じの方がおられましたら、是非内容をご教示いただきますよう、
どうかよろしくお願いいたします。
01-30-2017 06:15 PM
sunkichi様
問題を体験された方や、解決策をご存じ方じゃないですがのレスします。
内容及びpdfを見ると64bitPCで開発されており、.NETアセンブリのDAQmxは32bit/NI-488.2は64bitのように見受けられます。
①各々サンプルの.NETアセンブリの格納フォルダを確認してみる(DAQmxはC:\Program Files(x86)下でNI-488.2はC:\Program Files下?)
②上記がそうであれば、64bit/32bitの各アセンブリ(・・・Assemblies\Current)フォルダの内容を確認してみる。
32bitはDAQmxのみで/64bitはNI-488.2のみ?
後、各々ドライババージョンをUpした方が情報は得られると思います。
はずしてたらすいません。
02-09-2017 01:19 AM
su-sann5073様
ご回答いただきまいして、誠にありがとうございます。
お返事が大変遅くなりまして申し訳ございません。
結果から申し上げると、解決いたしました。
他の方のプログラムを調べているときに見かけた内容を参考にして、
(Importし、かつcommonファイルも入れているのですが)以下のように書き足しました。
(前)GpibDevice1 = New Device(CInt(0), CByte(3))
(後)GpibDevice1 = New NationalInstruments.NI4882.Device(CInt(0), CByte(3))
目についたものは全て同様な形にしました。
そうするとエラー表示が消え、ビルドもできるようになりました。
ただ、SimpleReadWriteにWriteDigiChanのコードを移すと出来て、その逆はできなかったりと
まだよく分からないことは残っております。ご指摘のあった32/64bitの違いについては、
もし是正できるならしたいのですが、手法が分かりません。
インストールをやり直すことになるのでしょうか。
ドライババージョンの公開については気づいておりませんでした。申し訳ございません。
今回は一旦、解決したということで考えておりますが、ご回答①にあった格納フォルダが
分からないのでもう少しお伺いしたいのですが、具体的なファイル名としてはどのような
ものを検索すればよろしいでしょうか?
先述した32/64bitの差の是正の仕方含めまして、ご確認いただければ幸いです。
02-09-2017 05:16 PM
sunkichi様
よくわかりませんね^^;
>ご回答①にあった格納フォルダが分からないのでもう少しお伺いしたいのですが
通常アプリケーションは、64bitは→C:\Program Files
32bitは→ C:\Program Files(x86) にインストールされるはずなので
VS2010 NI .NETアセンブリは、
64bitは→C:\Program Files\National Instruments\MeasurementStudioVS2010\DotNET\Assemblies\Current
32bitは→C:\Program Files(x86)\National Instruments\MeasurementStudioVS2010\DotNET\Assemblies\Current
にあると思います。
>具体的なファイル名としてはどのような
ファイル名は、元々Exampleが参照しているもの
NI-488.2とNI-DAQのExampleが参照しているNI .NETアセンブリは、どこのフォルダを参照しているか(同じ?/異なる?)