FAMOS

ファイル関係に関するFAQ

Q波形の切り出しを絶対時間で行いたい。

A

直接求める関数は用意されていないため、下記の様なシーケンスで求めて下さい。 TxSplit()関数はimc FAMOS Ver 7.2以降が必要です。

例)
Data = Car_Speed ; 切り出し元データ
T1 = "2018/09/14 09:03:00" ; 切り出し開始絶対時間。書式「年/月/日 時:分:秒」
T2 = "2018/09/14 15:33:30" ; 切り出し終了絶対時間。書式「年/月/日 時:分:秒」

; 切り出し時間のテキストを数値に変換
_T1spl = TxSplit(T1, "/; ;:") ; 要素毎に分解
_T1num = TimeJoin(TtoSv(_T1spl[3],"f"), TtoSv(_T1spl[2],"f"), TtoSv(_T1spl[1],"f"), TtoSv(_T1spl[4],"f"), TtoSv(_T1spl[5],"f"),
TtoSv(_T1spl[6],"f"))
_T2spl = TxSplit(T2, "/; ;:")
_T2num = TimeJoin(TtoSv(_T2spl[3],"f"), TtoSv(_T2spl[2],"f"), TtoSv(_T2spl[1],"f"), TtoSv(_T2spl[4],"f"), TtoSvpl[5],"f"),
TtoSv(_T2spl[6],"f"))

; 切り出し元データの絶対時間
_dataT1 = TimeAdd(Time?(Data), XOff?(Data))
_dataT2 = TimeAdd(_dataT1, XDel?(Data) * (Leng?(Data) - 1))
if _T1num < _dataT1 or _dataT2 < _T2num
  BoxMessage("エラー", "切り出し時間が波形に含まれていません", "!1")
  ExitSequence 1
end

; 絶対時間で指定した範囲を切り出し
CutData = Cut(Data, TimeDiff(_T1num, Time?(Data)), TimeDiff(_T2num, Time?(Data)))

; カーブウィンドウで表示
CwNewWindow("Cv1", "show")
CwSelectWindow("Cv1")
CwAction("reset")
CwPosition(0,0,640,480)
CwDisplaySet("title", "")
CwNewChannel("append last axis", CutData)
CwNewChannel("append last axis", Data)
CwSelectByIndex("x-axis", 1)
CwAxisSet("scale", 4)
del _*

製品詳細はこちら

回答を閉じる

QシーケンスでCSVファイルへ保存したい。

A

ASCII Export Template機能によりCSV等のテキストファイルへ保存できます。 テキストファイルの書式は[エクストラ]>[オプション]>[ファイル 保存/エクスポート]>[ASCII]で定義できます。
FAMOS_CSVエクスポート方法(ASCII Export Template).pdf」を参照して下さい。 シーケンスでの使用例は下記の通りです。

例)
_id = FileOpenASCII2("C:imcDatTemptemp1.csv", "CsvSample", 1) ; ファイルを開く
_err = FileObjWrite(_id, sintest1) ; 変数を書き込む
_err = FileObjWrite(_id, sintest2)
FileClose(_id) ; ファイルを閉じる

製品詳細はこちら

回答を閉じる

Qスマートフォンなどで撮影した動画に含まれる音をFFTしたい

A

フリーウェアなどで音声部を.wavファイルとして取り出してからFAMOSへ読み込んで下さい。

製品詳細はこちら

回答を閉じる

Q読込済み変数のファイルのパスを取得したい。

A

FileName?()関数を使用して下さい。

製品詳細はこちら

回答を閉じる

Qファイルパスを分解したい。

A

TxSplit()関数を使用して下さい。FAMOS 7.2以降が必要です。
Ver. 7.1まではシーケンスで切り出して下さい。

例)
; Ver. 7.1まで
_path = "C:imcDatSINTEST1.DAT"
_delimiter = "\"
_temp = _path
GrPath = GrNew()
GrPath:Path = _path
for _iii = 1 to 100 step 1
  _name = "_" + TForm( _iii, "" )
  _pos = TxWhere(_temp, _delimiter)
  if 0 _pos
    _leng = TLeng(_temp)
    _part = TPart(_temp, 1, _pos-1)
    _temp = TPart(_temp, _pos+1, _leng)
    GrPath: = _part
  else
    GrPath: = _temp
    break
  end
end

製品詳細はこちら

回答を閉じる

QAscii Importで作成したインポートフィルターをシーケンスで使用したい。

A

下記の例のようにして下さい。(インポートフィルターをCSV_1とします)

例)
_id = FileOpenFAS("C:imcDatex1.csv", "#ImportAscii1|CSV_1", 0)
; ... 読み込み処理
FileClose(_id)

製品詳細はこちら

回答を閉じる

QインポートDLLをシーケンスから利用する方法

FAQ ID:s074

A

以下のように関数を設定してください。

fid = FileOpenFAS("C:\test.dat", "#mdf.dll",0 )

以下のようにファイルの種類を指定しなければならない場合もあります。

fid = FileOpenFAS("C:\test.dat", "#mdf.dll|VECTOR MDF 3",0 )

製品詳細はこちら

回答を閉じる

QCSVファイルを読み込むには?

A

ASCII Importer機能により様々な書式のCSVファイルを読み込めます。ASCII Importer機能の使い方の例については下記の手順書を参照して下さい。

FAMOS:ASCIIインポートフィルタ使用手順.pdf

製品詳細はこちら

回答を閉じる

Q関数”DlgFileName”に複数の拡張子を指定できますか?

FAQ ID:s040

Q

関数”DlgFileName”では第2パラメータにファイル拡張子を指定できるようになっています。ファイル拡張子として複数の拡張子を設定できますか?

A

関数”DlgFileName”では1つしかファイル拡張子を指定できません。
しかし、ファイルキット関数”FsDlgSelectFiles”を使用すれば、複数のファイル拡張子を指定することができます。

FileListID = FsDlgSelectFiles("","z:\", "*.doc;*.pdf" ,0)

製品詳細はこちら

回答を閉じる

Qインポートフィルターを使ったファイルの読み込み方法

FAQ ID:s028

A

インポートフィルターファイルを使ってファイルを読み込むサンプルを示します。

;ダイアログを使ってファイルを選択します
_filename=DlgFileName
("c:\", "wav","WAVファイルを選択してください",0)

If TLeng(_filename)>0
  ;ファイルIDの取得
  ;ファイルへはこのIDを使ってアクセスします。
_fid = FileOpenFAS( _filename, "OROS_WAV.FAS", 0)

;ファイル内の全てのデータを取得します。
_max = FileObjNum?(_fid)
  _i=1
  While _i<=_max
    _chname = FileObjName?(_fid, _i)
  <_chname> = FileObjRead(_fid, _i)
    Show <_chname>
    _i=_i+1
  End
  _err = FileClose(_fid)
End
Delete _*

製品詳細はこちら

回答を閉じる

QLOADコマンドで読み込むとエラーになる

FAQ ID:s018

Q

以下のように関数"DlgFileName"などを使ってファイルパスを取得して、このデータを"Load"コマンドで読み込もうとしましたがエラーになる場合とならない場合があります。
どのように対応すればよいでしょうか?

FilePath = DlgFileName( "", "", "", 0)
Load <FilePath>

A

エラーになる場合に、パスにスペースや括弧などが含まれていませんか?

C:\My Doduments\data.dat
C:\Program Files\Common Files\Imc\Com\Experiments\Demo554\2001-12-04 13-50-21 (1)\Acc1 (01).RAW

関数"Load"はこれらのパスを受け付けません。

対策1

パス名をダブルコーテーションで囲ってください。

(NGの例題) : Load C:\test\data1.dat
(OKの例題) : Load "C:\test\data1.dat"

対策2

このようなパスを選択する可能性がある場合、関数グループ13の"ファイル関数"を使用してください。
以下にサンプルを示します。

;_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
;_/
;_/ ファイルパスにスペースや括弧が
;_/ 含まれたデータを読み込むことができません。
;_/
;_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

;ダイアログからデータファイルを選択します。

_FName = DlgFileName( "","","",0)

;------------------------------------------
;パスにスペースなどが存在する場合、
;Loadコマンドでは読み込めません。
;以下のコマンドはエラーになります。
;
;Load <FName>
;------------------------------------------


;------------------------------------------
;このような場合、以下のようにグループ13の
;ファイル関数を使用してください。

;------------------------------------------
_ID     = FileOpenDSF( _FName, 0)
_Num = FileObjNum?( _ID)
_i=1
While _i<=_Num
    _Name    = FileObjName?( _ID, _i)
    <_Name> = FileObjRead( _ID, _i)
    _i=_i+1
End
_err = FileClose( _ID)

Delete _*

製品詳細はこちら

回答を閉じる