From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

Visual BASICとLabVIEWの同期

解決済み
解決策を見る

Visual BASICのソフトとLabVIEWソフトの両方から参照できるフラグのようなものを設けて。

Visual BASICのソフトからそのフラグを書き換えると、LabVIEWソフトがフラグの状態を読み取って、あるルーチンが実行されるようなシステムを考えています。

このような目的に最適な方法があれば、教えて下さい。

 

よろしくお願いします。

 

バージョン

VB6.0

LabVIEW8.6

0 件の賞賛
メッセージ1/20
4,618件の閲覧回数

単純にステータスを共有するテキストファイルを設けてグローバル変数の様に使用すれば目的は達成できると思いますがどうでしょう?

0 件の賞賛
メッセージ2/20
4,611件の閲覧回数

返答ありがとうございます。

 

「ステータスを共有するテキストファイル」とは、同じテキストファイルを開き合うということでしょうか?

 

同期の時間ずれは0.1秒以下に抑えたいのですか、この方法で大丈夫でしょうか?

また、チェックにあまりCPUパワーを取られたくないのですが大丈夫でしょうか?

0 件の賞賛
メッセージ3/20
4,606件の閲覧回数

そうですね。

お互いが必要なタイミングでR/Wすると言う事です。

0.1秒で行けると思いますが、Windowsがバックグラウンドで動作させているプログラムにより影響されるので実際に試して見て下さい。

CPUへの負荷はあまり考えられませんが、頻度が多い時にはHDDへの負荷が大きくなるかもしれません。

その様な場合は外付けのメモリ(簡単にはUSBメモリ等)でも使用できますね。

0 件の賞賛
メッセージ4/20
4,602件の閲覧回数

上田 様

 

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

 

メッセージ5/20
4,576件の閲覧回数

ありがとうございます。

 

リンクを参考にして試してみたいと思います。

0 件の賞賛
メッセージ6/20
4,542件の閲覧回数

リンクを参照して、やってみようとしたのですが、LabVIEWのエディションの関係で、LabVIEWからDLLを作成することができないようです。

 

構成をもう少し詳しく書くとLabVIEWもVisual BASICも独立したアプリケーションで、Visual BASICアプリからDLLに値をセットしておいて、任意の時にLabVIEWアプリからDLLにアクセスして、Visual BASICアプリで設定した値を取ってくることを実現できたらと考えています。

 

Visual BASICからActiveXDLLを作る方法でやってみたのですが、Visual BASICアプリで設定した値をVisual BASICアプリで読み出すことはできたのですが、LabVIEWアプリからはなぜか読み出せませんでした。

 

 

 

 

0 件の賞賛
メッセージ7/20
4,525件の閲覧回数

上田 様

 

確かに、LabVIEWでDLLを作るには、開発システム以上のエディションが必要ですね。

VBで作ったDLLをLabVIEWで利用する手順が下記にあります。

 

ライブラリ関数呼び出しノードを使用してVisual Basicで作成されたDLLを呼ぼうとすると、うまく機能しないのはなぜでしょうか?

 

参考になれば良いのですが。

 

 

0 件の賞賛
メッセージ8/20
4,518件の閲覧回数

Visual BASICでDLLを作り、やってみました。

LabViewアプリからDLL内のStatic変数の値を変更し、後に、同じLabViewアプリからこのStatic変数の値を読み出すのはうまく行きました。

Visual BASICアプリで同じことを行うのもうまく行きました。

しかし、Visual BASICアプリからDLL内のStatic変数に書込み、LabViewアプリで読み出す場合は、Visual BASICによる変更が反映されません。

どうも、LabViewアプリとVisual BASICアプリから同じDLLを呼んでいても、メモリ上の別の場所にロードされているように感じます。

LabViewアプリとVisual BASICアプリで同じメモリアドレスを読み書きする方法はありませんでしょうか?

 

0 件の賞賛
メッセージ9/20
4,484件の閲覧回数

上田 様

 

Visual BASICアプリと、LabViewアプリで、別々のインスタンスが作られるのですね。

Visual BASICにはあまり詳しくないので具体的な方法はわかりませんが、

フラグの情報を格納するのに、複数のインスタンスで共有できる、グローバル変数は使えないでしょうか?

 

 

0 件の賞賛
メッセージ10/20
4,478件の閲覧回数