なぜVIを実行形式にするとファイルのRead/Writeができないのでしょうか



使用ソフトウェア:
使用ソフトウェア・バージョン: N/A
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A
ハードウェア: FieldPoint>>Controllers/Network Modules

問題:
FieldPointを使用しています。実行ターゲットとしてFieldPointを選んだときは、ファイルのReadとWriteは行えました。しかし、VIを実行形式にビルドし、EXEをFieldPointコントローラに移動(例えば、スタートアップEXEとして設定)した場合は、ファイルのReadもWriteも行えません。何が悪いのでしょうか?

解決策:
実行形式(EXE形式)で適切に機能しない原因として一般的なものは、ファイルパスが正しくないという問題があります。
例えば、プログラムが存在するフォルダパスを得るための”Current VI’s Path(現在のVIのパス)”関数の後に”Strip Path(パスをストリップ)”関数を使用しているのであれば、VIとEXE形式では異なる動作をします。
今、myApp.viがC:/temp/myApp.viに存在するとします。”Current VI’s Path(現在のVIのパス)”関数の結果は、期待する結果と同じようにC:/temp/myApp.viです。しかし、VIをmyEXE.exeとして実行形式にビルドした後に、”Current VI’s Path(現在のVIのパス)”関数を使用すると、C:/temp/myEXE.exe/myApp.viを返します。EXEが存在するフォルダのパスを得るためには、”Strip Path”を2度使用する必要があります。

したがって、FieldPointコントローラで実行形式のプログラムを使用した場合、ファイルのRead/Writeを行うためのファイルパスの指定には、以下の2つの方法が挙げられます。
1)ファイルのフルパスを定数として記載する。(つまり、”Current VI’s Path(現在のVIのパス)”関数を使用しない)
2)EXEが存在するフォルダパスを得るために”Strip Path”を2回使う。


関連リンク:
KnowledgeBase 2REH3DP6: FAQs on File I/O with the FP-20xx Modules
KnowledgeBase 2QMEG8KT: Memory Definitions for FP-20xx: Nonvolatile, CompactFlash, DRAM, User Accessible

添付:


strip_path_j.GIF


報告日時: 03/18/2005
最終更新日: 09/09/2005
ドキュメントID: 3JHBALPH