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)

製品詳細はこちら

<< Tipsに関するFAQ一覧へ戻る