LabWindows/CVI 에서 가변 인자를 사용한 출력 예제

LabWindows/CVI 에서 로그 윈도우에 출력하기 위해 가변 인자를 사용하여 서식화된 문자열을 입력할 수 있습니다. 이를 통해 아래와 같이 Tree 윈도우에 출력이 가능합니다.



void LogExample(char* szFormat, ...)
{
		
	static unsigned int nIndex = 1;
	char szTemp[100] = "";

	sprintf(szTemp,"%d",nIndex++);

	int index = InsertListItem(tab_MAIN_WDM,TAB_WDMLOG_LOG,-1,szTemp,0);

	// Get Current Clock
	char szCurrentTime[100] = "";

	time_t t = time(NULL);
	struct tm now = *localtime(&t);

	sprintf(szCurrentTime,"%04d-%02d-%02d %02d:%02d:%02d",now.tm_year+1900, now.tm_mon+1, now.tm_mday,now.tm_hour,now.tm_min,now.tm_sec);

	// Insert Tree Cell '1'
	SetTreeCellAttribute(tab_MAIN_WDM, TAB_WDMLOG_LOG, index, 1, ATTR_LABEL_TEXT, szCurrentTime);


	// Print-out data
	char szBuf[1024] = {0, };

	va_list lpStart;
	va_start(lpStart, szFormat);

	vsprintf(szBuf, szFormat, lpStart);


	// Insert Tree Cell '2'
	SetTreeCellAttribute(tab_MAIN_WDM, TAB_WDMLOG_LOG, index, 2, ATTR_LABEL_TEXT, szBuf);


	va_end(lpStart);

	////////////////////////////////////////////////////////////////////////////////////////////
	// DB QUERY (WDMALMLOG) WDM ALM 로그
	{
		
		//if ( (nIndex % 10) == 0  )
		{
			char szSQLQuery[8192] = "";

			sprintf(szSQLQuery,"INSERT INTO WDMALMLOG VALUES('%s','%s','%s')",szTemp,szCurrentTime,szBuf);
			acsExeSQL_UTF8(szSQLQuery);
		}
	}
	////////////////////////////////////////////////////////////////////////////////////////////


	// Auto Scroll
	MakeTreeItemVisible(tab_MAIN_WDM, TAB_WDMLOG_LOG, index);

	if (index > 0 )
	{
		// FONT COLOR (CHAR)
		SetTreeItemAttribute(tab_MAIN_WDM, TAB_WDMLOG_LOG, index, ATTR_LABEL_COLOR, VAL_BLACK);


		///////////////////////////////////////////////////////////////////////////////////////
		// 1000 개 까지만 보관한다.
		if ( index > 1000 )
			DeleteListItem (tab_MAIN_WDM,TAB_WDMLOG_LOG,0,1);
		///////////////////////////////////////////////////////////////////////////////////////
	}


}