[eRun 스크립트 팁] 실시간으로 CSV 파일 만들기
제이피플㈜
2023.05.24 10:49
136
0
본문
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// 함수명: PROC_SAVE_DATA()
// 리턴형: 없음
// 파라메터: 없음
// 호출자: AUTO_CSV_SAVE() 함수
// 함수설명: 설정된 경로의 CSV 파일에 현재 데이터를 문자열(_FormaString)로 만들고 _LogToFileEx 내부함수를 이용하여 Write를 한다.
// 해당경로의 파일이 존재하지 않으면 파일을 새로 생성하고 헤더를 출력한다.
// 파일에 데이터를 한번씩 Write를 한 후에는 개행문자도 Write한다.
// 파일의 다중접근을 보호하기 위해서 _Lock 내부함수를 이용.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void PROC_SAVE_DATA()
{
string strLogPath, strHeader, strLog;
int nRet;
_Lock(10);
strLogPath = @CSV.저장경로;
if(strLogPath == "")
return;
nRet = _FileAccess(strLogPath, 0);
// 파일이 없으면 생성하면서 헤더 출력
// _LogToFileEx 사용방법은 아래와 같이 2가지가 있습니다.
if(nRet == -1)
{
// 방법 1
strHeader = "TIME, DIGITAL_STATUS, ANALOG_DATA_INT, ANALOG__FLAOT_FLOAT, STRING_DATA";
_LogToFileEx(strLogPath, "%s%c",strHeader, 0x0d);
// 방법 2
//_LogToFileEx(strLogPath, "TIME, DIGITAL_STATUS, ANALOG_DATA_INT, ANALOG__FLAOT_FLOAT, STRING_DATA%c", 0x0d);
}
strLog = _FormatString("[%d-%02d-%02d %02d:%02d:%02d], %s, %d, %.3f, %s",
@SYSTEM.N_YEAR, @SYSTEM.N_MONTH, @SYSTEM.N_DAY, @SYSTEM.N_HOUR, @SYSTEM.N_MIN, @SYSTEM.N_SEC,
GET_DI_STATUS(), @CSV.DATA1_ANALOG_INT, @CSV.DATA1_ANALOG_FLOAT, @CSV.DATA3_STRING);
_LogToFileEx(strLogPath, "%s%c",strLog, 0x0d);
_Unlock(10);
}
댓글목록 0