FAMOS
ファイル関係に関するFAQ
QCSVファイルに時間軸を「年月日時分秒.ミリ秒」の形式で保存したい。
ASCII Export Templateの[スケーリング]タブで、[時間]に[ms]を選択し、[日付]にチェックを入れてください。
ASCII Export Templateについては下記URL内の「FAMOS_CSVエクスポート方法(ASCII Export Template).pdf」をご参照ください。
Q波形の切り出しを絶対時間で行いたい。
直接求める関数は用意されていないため、下記の様なシーケンスで求めて下さい。 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ファイルへ保存したい。
ASCII Export Template機能によりCSV等のテキストファイルへ保存できます。 テキストファイルの書式は[エクストラ]>[オプション]>[ファイル 保存/エクスポート]>[ASCII]で定義できます。
「FAMOS_CSVエクスポート方法(ASCII Export Template).pdf」を参照して下さい。 シーケンスでの使用例は下記の通りです。
例)
_id = FileOpenASCII2("C:¥imc¥DatTemptemp1.csv", "CsvSample", 1) ; ファイルを開く
_err = FileObjWrite(_id, sintest1) ; 変数を書き込む
_err = FileObjWrite(_id, sintest2)
FileClose(_id) ; ファイルを閉じる
Qスマートフォンなどで撮影した動画に含まれる音をFFTしたい
Q読込済み変数のファイルのパスを取得したい。
Qファイルパスを分解したい。
TxSplit()関数を使用して下さい。FAMOS 7.2以降が必要です。
Ver. 7.1まではシーケンスで切り出して下さい。
例)
; Ver. 7.1まで
_path = "C:¥imc¥DatSINTEST1.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で作成したインポートフィルターをシーケンスで使用したい。
QインポートDLLをシーケンスから利用する方法
QCSVファイルを読み込むには?
ASCII Importer機能により様々な書式のCSVファイルを読み込めます。ASCII Importer機能の使い方の例については下記の手順書を参照して下さい。
Q関数”DlgFileName”に複数の拡張子を指定できますか?
Qインポートフィルターを使ったファイルの読み込み方法
FAQ ID:s028
インポートフィルターファイルを使ってファイルを読み込むサンプルを示します。
;ダイアログを使ってファイルを選択します
_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
以下のように関数"DlgFileName"などを使ってファイルパスを取得して、このデータを"Load"コマンドで読み込もうとしましたがエラーになる場合とならない場合があります。
どのように対応すればよいでしょうか?
FilePath = DlgFileName( "", "", "", 0)
Load <FilePath>
エラーになる場合に、パスにスペースや括弧などが含まれていませんか?
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 _*