07-11-2010 11:58 PM
Visual BASICのソフトとLabVIEWソフトの両方から参照できるフラグのようなものを設けて。
Visual BASICのソフトからそのフラグを書き換えると、LabVIEWソフトがフラグの状態を読み取って、あるルーチンが実行されるようなシステムを考えています。
このような目的に最適な方法があれば、教えて下さい。
よろしくお願いします。
バージョン
VB6.0
LabVIEW8.6
解決済! 解決策の投稿を見る。
07-12-2010 12:26 AM
単純にステータスを共有するテキストファイルを設けてグローバル変数の様に使用すれば目的は達成できると思いますがどうでしょう?
07-12-2010 12:35 AM
返答ありがとうございます。
「ステータスを共有するテキストファイル」とは、同じテキストファイルを開き合うということでしょうか?
同期の時間ずれは0.1秒以下に抑えたいのですか、この方法で大丈夫でしょうか?
また、チェックにあまりCPUパワーを取られたくないのですが大丈夫でしょうか?
07-12-2010 12:46 AM
そうですね。
お互いが必要なタイミングでR/Wすると言う事です。
0.1秒で行けると思いますが、Windowsがバックグラウンドで動作させているプログラムにより影響されるので実際に試して見て下さい。
CPUへの負荷はあまり考えられませんが、頻度が多い時にはHDDへの負荷が大きくなるかもしれません。
その様な場合は外付けのメモリ(簡単にはUSBメモリ等)でも使用できますね。
07-12-2010 07:48 PM
上田 様
LabVIEWでDLLを作成して、そこにフラグを配置し、そのDLLをVBとLabVIEWの双方から利用すれば良いと思います。
以下の情報を参考にみてください。
DLLとは何ですか?LabVIEWからDLLが生成できるとどのようなメリットがあるのですか?
LabVIEW 6で作成したdllをVisual Basic6.0で呼び出すにはどのようにすればよいですか
Calling and Passing Strings to a LabVIEW 7.0 DLL from Visual Basic
07-13-2010 09:52 PM
ありがとうございます。
リンクを参考にして試してみたいと思います。
07-14-2010 03:06 AM
リンクを参照して、やってみようとしたのですが、LabVIEWのエディションの関係で、LabVIEWからDLLを作成することができないようです。
構成をもう少し詳しく書くとLabVIEWもVisual BASICも独立したアプリケーションで、Visual BASICアプリからDLLに値をセットしておいて、任意の時にLabVIEWアプリからDLLにアクセスして、Visual BASICアプリで設定した値を取ってくることを実現できたらと考えています。
Visual BASICからActiveXDLLを作る方法でやってみたのですが、Visual BASICアプリで設定した値をVisual BASICアプリで読み出すことはできたのですが、LabVIEWアプリからはなぜか読み出せませんでした。
07-14-2010 04:18 AM
上田 様
確かに、LabVIEWでDLLを作るには、開発システム以上のエディションが必要ですね。
VBで作ったDLLをLabVIEWで利用する手順が下記にあります。
ライブラリ関数呼び出しノードを使用してVisual Basicで作成されたDLLを呼ぼうとすると、うまく機能しないのはなぜでしょうか?
参考になれば良いのですが。
07-15-2010 12:44 AM
Visual BASICでDLLを作り、やってみました。
LabViewアプリからDLL内のStatic変数の値を変更し、後に、同じLabViewアプリからこのStatic変数の値を読み出すのはうまく行きました。
Visual BASICアプリで同じことを行うのもうまく行きました。
しかし、Visual BASICアプリからDLL内のStatic変数に書込み、LabViewアプリで読み出す場合は、Visual BASICによる変更が反映されません。
どうも、LabViewアプリとVisual BASICアプリから同じDLLを呼んでいても、メモリ上の別の場所にロードされているように感じます。
LabViewアプリとVisual BASICアプリで同じメモリアドレスを読み書きする方法はありませんでしょうか?
07-15-2010 01:35 AM
上田 様
Visual BASICアプリと、LabViewアプリで、別々のインスタンスが作られるのですね。
Visual BASICにはあまり詳しくないので具体的な方法はわかりませんが、
フラグの情報を格納するのに、複数のインスタンスで共有できる、グローバル変数は使えないでしょうか?