FAQ
FAMOS
シーケンス / 関数top
└Tips
ID.s025
Q. 連続したフォルダー内のデータをループで結合する方法
A.
;分割した保存したデータを結合する方法 ;例えば停電などで途中までのデータが消失してしまわないように ;1時間の測定に対して10分毎に保存したと考えます。 ; ;ディレクトリー構造は以下と仮定します。 ;(FAMOSのサンプルデータと同じです。) ; ; C:\imc\dat\Experim\ ; | ; |__ 0001\ ; | Channel1.DAT ; | Channel3.DAT ; |__ 0002\ ; | Channel1.DAT ; | Channel3.DAT ; |__ 0003\ ; | Channel1.DAT ; | Channel3.DAT ; |__ 0004\ ; | Channel1.DAT ; | Channel3.DAT ; |__ 0005\ ; | Channel1.DAT ; | Channel3.DAT ; |__ 0006\ ; Channel1.DAT ; Channel3.DAT ; ;以下にFAMOSシーケンスを示します。Example
Example
;;;;ダミーデータの作成 Channel1 = Leng(0,0) Channel3 = Leng(0,0) ;;;;Main Loop FAMOS i=1 While i<=6 ;;;;ファイル名の作成 dir = "C:\imc\dat\Experim\000" + TForm(i, "F00") temp1 = dir + "\Channel1.DAT" temp2 = dir + "\Channel3.DAT" ;;;;データの読み込み Load <temp1> data1 Load <temp2> data2 ;;;;データの結合 Channel1 = Join( Channel1, data1) Channel3 = Join( Channel3, data2) i=i+1 End
■日付フォルダー内のデータをループで結合する方法
フォルダー名が日付になっていると”その1”の方法ではエラーが表示されてしまいます。
どのように対応すればよいですか?
; C:\imc\dat\Experim\ ; | ; |__ 2003-01-23 10-31-22 (1)\ ; | Channel1.DAT ; | Channel3.DAT ; |__ 2003-01-23 10-31-32 (2)\ ; | Channel1.DAT ; | Channel3.DAT ; |__ 2003-01-23 10-31-42 (3)\ ; | Channel1.DAT ; | Channel3.DAT
上記のようにフォルダー名にスペースや括弧が含まれている場合、関数"LOAD"はパスを認識できません。
このような場合、ファイル関数を使用してください。
Example
;;;;ダミーデータの作成 Channel1 = Leng(0,0) Channel3 = Leng(0,0) ;;;;Main Loop FID = FsFileListNew("c:\imc", "*.*", 1, 0, 0) i=1 While i<=FsFileListGetCount(FID) ;;;;ファイル名の作成 dir = FsFileListGetName(FID,i) Name1 = dir + "\Channel01.DAT" Name2 = dir + "\Channel03.DAT" ;;;;データの読み込み DID = FileOpenDSF(Name1,0) data1 = FileObjRead(DID,1) Err = FileClose(DID) DID = FileOpenDSF(Name2,0) data2 = FileObjRead(DID,1) Err = FileClose(DID) ;;;;データの結合 Channel1 = Join( Channel1, data1) Channel3 = Join( Channel3, data2) i=i+1 End FsFileListClose(FID)