Ejemplo n.º 1
0
static int ReadConfigFile( int item)
{
	FILE    *hFile; 		 char pathName[MAX_PATHNAME_LEN]; char dirName[MAX_PATHNAME_LEN];	 char buffer[300]; 	
	
	ResetTextBox (configHandle, CONFIG_BOX, ""); 
	GetProjectDir (dirName); 
	switch(item)
	{
		case MENUBAR_CONFIG_CONFIGIP:
			MakePathname (dirName, "bbuip.txt", pathName);
			break;
		case BBUCOMMON_CONFIGCMD:
			MakePathname (dirName, "command.txt", pathName); 
			break;
	}
	if (hFile = fopen(pathName, "r"))
    {
        while (fgets(buffer, (int)sizeof(buffer), hFile))
        {
			SetCtrlVal (configHandle, CONFIG_BOX, buffer); 
        }
	}
	else
	{
	  return 0;
	}
	if(hFile)
	{
	    fclose(hFile);  
	}
	return 1;
	

}  
Ejemplo n.º 2
0
static int WriteOupputBox(int flag) 
{
	FILE    *hFile;  char pathName[MAX_PATHNAME_LEN]; char dirName[MAX_PATHNAME_LEN]; char buffer[300];

	
	ResetTextBox (outputHandle, OUTPUTVIEW_OUTPUTBOX, ""); 
	GetProjectDir (dirName); 
	if (0 == flag)    // mean write output.txt to box
	{
    	MakePathname (dirName, "output.txt", pathName);
	}
	if (1 == flag)     // mean write help.txt to box
	{
	   MakePathname (dirName, "help.txt", pathName); 
	}
	if (hFile = fopen(pathName, "r"))
    {
        while (fgets(buffer, (int)sizeof(buffer), hFile))
        {
			SetCtrlVal (outputHandle, OUTPUTVIEW_OUTPUTBOX, buffer); 
        }
	}
	else
	{
	  return 0;
	}
	if(hFile)
	{
	    fclose(hFile);  
	}		
	return 1;
}
Ejemplo n.º 3
0
void WriteLog(void)
{
	 char *buffer=""; char pathName[MAX_PATHNAME_LEN];		char dirName[MAX_PATHNAME_LEN];  int fHandle=-1,linenumber=0,i=0,size=0;	int file_size=0,file_status=0;
	 
	GetProjectDir (dirName); 
    MakePathname (dirName, "log.txt", pathName);
	file_status = GetFileSize (pathName, &file_size);
	
	
	if(-1==file_status)
	{
		fHandle = OpenFile (pathName, VAL_WRITE_ONLY, VAL_TRUNCATE, VAL_ASCII);
		WriteLogDateTime(fHandle);
		
	}
	if(0==file_status)
	{
		fHandle = OpenFile (pathName, VAL_WRITE_ONLY, VAL_APPEND, VAL_ASCII);
		WriteLogDateTime(fHandle);
	}
  	 buffer=(char*)malloc(1000); 
	 GetNumTextBoxLines (panelHandle, PANEL_TEXTBOX, &linenumber);
	 for(i=0;i<linenumber;i++)
	 {
		memset(buffer,0,1000);  
		GetTextBoxLine (panelHandle, PANEL_TEXTBOX, i, buffer);
		strcat(buffer,"\n");
		size=strlen(buffer);
		WriteFile (fHandle, buffer, size);
	 }
	 free(buffer); 

	CloseFile(fHandle);														 

}
/* 辅助函数-Log信息台-右键菜单-回调函数 */
void CVICALLBACK logBoxRightClickMenuCallback(int menuBarHandle, int menuItemID, 
			void *callbackData, int panelHandle){
	switch(menuItemID){
		case 3:
			SYSTEMTIME localTime;
			char dirName[MAX_PATHNAME_LEN];
			char filePath[MAX_PATHNAME_LEN]; 
			char fileName[200]; fileName[0]='\0';
			GetProjectDir(dirName);
			strcat(dirName, "\\Logs");
			GetLocalTime(&localTime);
			sprintf(fileName, "Log,%04d-%d-%d,%d_%02d_%02d.txt", 
					localTime.wYear, localTime.wMonth, localTime.wDay,
					localTime.wHour, localTime.wMinute, localTime.wSecond);
			MakePathname(dirName, fileName, filePath);
			FILE *fp = fopen(filePath, "w");
			int len=0;
			GetCtrlAttribute(panelHdl, MainPanel_MainLogBox, ATTR_STRING_TEXT_LENGTH, &len);
			char tempLog[10000];
			GetCtrlVal(panelHdl, MainPanel_MainLogBox, tempLog);
			fwrite(tempLog, sizeof(char), len, fp);
			fclose(fp);
			ResetTextBox(panelHdl, MainPanel_MainLogBox, "Logs have been saved!");
			break;
		case 4:
			ResetTextBox(panelHdl, MainPanel_MainLogBox, "");
			break;
	}
}
Ejemplo n.º 5
0
void acquire_DataFileMakePath (void)
{
   	char name[300], ext[10];

	Fmt (ext, "%s<%f[p3]", (double)dataFile.ext/1000);
    CopyBytes (ext, 0, ext, 1, 5);
	
    Fmt(name, "%s<%s%s", dataFile.name, ext);
    MakePathname(dataFile.dir, name, dataFile.path);
}
Ejemplo n.º 6
0
char *readfoldername(void)
{
	char pathName[MAX_PATHNAME_LEN]; char dirName[MAX_PATHNAME_LEN];  char *buffer="";
	
	GetProjectDir (dirName); 
	MakePathname (dirName, "config.ini", pathName);
	inihandle = Ini_New (0); 
	Ini_ReadFromFile (inihandle, pathName); 
	buffer=(char*)malloc(100);
	memset(buffer,0,100);

	Ini_GetStringIntoBuffer (inihandle, "system", "download_folder_name", buffer, 100);

	Ini_Dispose (inihandle);
	return buffer;
}
Ejemplo n.º 7
0
int CVICALLBACK CheckUptime (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			 char buffer[20000]; char pathName[MAX_PATHNAME_LEN];		char dirName[MAX_PATHNAME_LEN];   FILE    *hFile;	  char *p = ""; int i=0; int lenth=0; char temp[20]; //char value[50];
			 int flag =0;		 int row = 0; int column = 0; int insertcolumn = 0;  int confirmresult = 0;	 
	 
			 typedef struct
				{ 
					int x;
					int y; 
				} Point;

			 confirmresult = ConfirmPopup ("Check uptime","Do you want to check uptime now?");
		 
			 if ((outputHandle = LoadPanel (0, "Remotely.uir", OUTPUTVIEW)) < 0)
				 {
				 SetCtrlVal (panelHandle, PANEL_TEXTBOX,  "Load check uptime panel error,please try again!\r\n"); 
			 	 return -1;
				 }
			 SetPanelAttribute (outputHandle, ATTR_TITLE, "CheckUptimeRecord");
			 SetCtrlAttribute (outputHandle, OUTPUTVIEW_OUTPUTBOX, ATTR_VISIBLE, 0);
			 SetCtrlAttribute (outputHandle, OUTPUTVIEW_TABLE, ATTR_VISIBLE, 1);    
			 GetProjectDir (dirName); 
			 MakePathname (dirName, "uptime.csv", pathName);
			 WriteLog();
		   	 ResetTextBox (panelHandle, PANEL_TEXTBOX, ""); 
		 
			 if (hFile = fopen(pathName, "r"))
			{
		    	while (fgets(buffer, (int)sizeof(buffer), hFile))
		    	{
					row++;
					InsertTableRows (outputHandle, OUTPUTVIEW_TABLE, -1, 1, VAL_CELL_STRING);
			
					column = 0;
					p = buffer;
					flag = 0;
					do
					{
						column++;
						if (insertcolumn == 0)
						{
							InsertTableColumns (outputHandle, OUTPUTVIEW_TABLE, -1, 1, VAL_CELL_STRING);
						}
						lenth = FindPattern (p, 0, -1, ",", 0, 0);   // strip  ","
						if (lenth >=0)
						{
							memset(temp,0,20);
							for (i=0;i<lenth;i++)
							{
								temp[i] = *p;
								p++;
							}
							p++;
							SetTableCellVal (outputHandle, OUTPUTVIEW_TABLE, MakePoint(column, row), temp);
						}
						else
						{

							lenth = FindPattern (p, 0, -1, "\n", 0, 0);	  // strip  "\n"
							if (lenth >=0)								 // if find "\n"  write last string to last column
							{
							    memset(temp,0,20);
								for (i=0;i<lenth;i++)
								{
									temp[i] = *p;
									p++;
								}
								SetTableCellVal (outputHandle, OUTPUTVIEW_TABLE, MakePoint(column, row), temp);
								flag = -1;
								insertcolumn = 1;
							}
							else		// if not find "\n", write all to last column
							{
								SetTableCellVal (outputHandle, OUTPUTVIEW_TABLE, MakePoint(column, row), p);
								flag = -1;
								insertcolumn = 1;
							}
		
						}
				
					}while( flag != -1);
					SetTableColumnAttribute (outputHandle, OUTPUTVIEW_TABLE, -1, ATTR_COLUMN_WIDTH, 80);
					memset(buffer,0,20000);
												 
		    	}
		    	fclose(hFile);
			} 
			if (confirmresult)    // if user select yes to check uptime  install popup
			 {
				InstallPopup(outputHandle);
			 }
			else				 // if user select no, discard panel due to load it at beginning of this function
			{
				if (outputHandle)
				    {
		               DiscardPanel (outputHandle);
			        }
			}
			break;
	}
	return 0;
}
Ejemplo n.º 8
0
static int Initial(int item, int flag)
{
	char pathName[MAX_PATHNAME_LEN]; char dirName[MAX_PATHNAME_LEN];  char *buffer=""; int value=0;  int status=0;  
	
	GetProjectDir (dirName); 
	MakePathname (dirName, "config.ini", pathName);
	inihandle = Ini_New (0);
	status = Ini_ReadFromFile (inihandle, pathName);
	buffer=(char*)malloc(300);
	memset(buffer,0,300);
	
	if ((status)<0)
	{
		return status;
	}
	if (0 == item)  // system operation
	{
	
		if(1 == flag)   //write
		{
			 GetCtrlVal (customizingHandle, CUSTOM_UPDATENAME, buffer);
			 Ini_PutString (inihandle, "system", "update_vendor_name", buffer);

			 Ini_WriteToFile (inihandle, pathName);   
		}
		if(0 == flag)	  // read
		{
			Ini_GetStringIntoBuffer (inihandle, "system", "update_vendor_name", buffer, 100);
			SetCtrlVal (customizingHandle, CUSTOM_UPDATENAME, buffer);     
		}

		
	}
	if (1 == item)	   //  item operation
	{
		if(1 == flag)	   // write
		{
			status = GetCtrlVal (itemHandle, FILE_ITEM_VENDOR, &value);
			 if ((status)<0) 
				{
				return status;
				}
			 status = Ini_PutInt (inihandle, "item", "vendor", value);
			 if ((status)<0) 
				{
				return status;
				}
		 
			 status = GetCtrlVal (itemHandle, FILE_ITEM_SCFC, &value);
			 if ((status)<0) 
				{
				return status;
				}
			 status = Ini_PutInt (inihandle, "item", "scfc", value);
			 if ((status)<0) 
				{
				return status;
				}
		 
			 status = GetCtrlVal (itemHandle, FILE_ITEM_CONFIG, &value);
			 if ((status)<0) 
				{
				return status;
				}
			 status = Ini_PutInt (inihandle, "item", "config", value);
			 if ((status)<0) 
				{
				return status;
				}
		 
			 status = GetCtrlVal (itemHandle, FILE_ITEM_SWCONFIG, &value);
			 if ((status)<0) 
				{
				return status;
				}
			 status = Ini_PutInt (inihandle, "item", "swconfig", value);
			 if ((status)<0) 
				{
				return status;
				}
		 
			 status = GetCtrlVal (itemHandle, FILE_ITEM_HWF, &value);
			 if ((status)<0) 
				{
				return status;
				}
			 status = Ini_PutInt (inihandle, "item", "hwf", value);
			 if ((status)<0) 
				{
				return status;
				}
		 
			 status = GetCtrlVal (itemHandle, FILE_ITEM_SYSINFO, &value);
			 if ((status)<0) 
				{
				return status;
				}
			 status = Ini_PutInt (inihandle, "item", "sysinfo", value);
			 if ((status)<0) 
				{
				return status;
				}
			 
			 status = GetCtrlVal (itemHandle, FILE_ITEM_SELFDEFI, &value);
			 if ((status)<0) 
				{
				return status;
				}
			 status = Ini_PutInt (inihandle, "item", "selfdefi", value);
			 if ((status)<0) 
				{
				return status;
				}
			 
			 status = GetCtrlVal (itemHandle, FILE_ITEM_SELFDEFIPATH, buffer);
			if ((status)<0) 
			{
				return status;
			}
			status = Ini_PutString (inihandle, "item", "selfpath", buffer);
			if ((status)<0) 
			{
				return status;
			}
			
			status = GetCtrlVal (itemHandle, FILE_ITEM_SELFDEFIFILE, buffer);
			if ((status)<0) 
			{
				return status;
			}
			status = Ini_PutString (inihandle, "item", "selffile", buffer);
			if ((status)<0) 
			{
				return status;
			}
			 
			 
		 
			 status = Ini_WriteToFile (inihandle, pathName);
			 if ((status)<0) 
				{
				return status;
				}
		}
		if(0 == flag)		//	   read
		{
			status = Ini_GetInt (inihandle, "item", "vendor", &value);
			if ((status)<0) 
				{
				return status;
				}
			status = SetCtrlVal (itemHandle, FILE_ITEM_VENDOR, value); 
			if ((status)<0) 
				{
				return status;
				}
		
			status = Ini_GetInt (inihandle, "item", "scfc", &value);
			if ((status)<0) 
				{
				return status;
				}
			status = SetCtrlVal (itemHandle, FILE_ITEM_SCFC, value); 
			if ((status)<0) 
				{
				return status;
				}
		
			status = Ini_GetInt (inihandle, "item", "config", &value);
			if ((status)<0) 
				{
				return status;
				}
			status = SetCtrlVal (itemHandle, FILE_ITEM_CONFIG, value); 
			if ((status)<0) 
				{
				return status;
				}
		
			status = Ini_GetInt (inihandle, "item", "swconfig", &value);
			if ((status)<0) 
				{
				return status;
				}
			status = SetCtrlVal (itemHandle, FILE_ITEM_SWCONFIG, value); 
			if ((status)<0) 
				{
				return status;
				}
		
			status = Ini_GetInt (inihandle, "item", "hwf", &value);
			if ((status)<0) 
				{
				return status;
				}
			status = SetCtrlVal (itemHandle, FILE_ITEM_HWF, value); 
			if ((status)<0) 
				{
				return status;
				}
			
			status = Ini_GetInt (inihandle, "item", "sysinfo", &value);
			if ((status)<0) 
				{
				return status;
				}
			status = SetCtrlVal (itemHandle, FILE_ITEM_SYSINFO, value); 
			if ((status)<0) 
				{
				return status;
				}
			
			status = Ini_GetInt (inihandle, "item", "selfdefi", &value);
			if ((status)<0) 
				{
				return status;
				}
			status = SetCtrlVal (itemHandle, FILE_ITEM_SELFDEFI, value); 
			if ((status)<0) 
				{
				return status;
				}
			
			status = Ini_GetStringIntoBuffer (inihandle, "item", "selfpath", buffer, 300);
			if ((status)<0) 
			{
				return status;
			}
			status = SetCtrlVal (itemHandle, FILE_ITEM_SELFDEFIPATH, buffer); 
			if ((status)<0) 
			{
				return status;
			}
			
			status = Ini_GetStringIntoBuffer (inihandle, "item", "selffile", buffer, 300);
			if ((status)<0) 
			{
				return status;
			}
			status = SetCtrlVal (itemHandle, FILE_ITEM_SELFDEFIFILE, buffer); 
			if ((status)<0) 
			{
				return status;
			}
			
		}
	}
	if (2 == item)	   // filter operation
	{
	
		if(1==flag)
		{
			status = GetCtrlVal (itemHandle, FILE_ITEM_TECHLOGS, &value);
		    if ((status)<0) 
			{
				return status;
			}
		    status = Ini_PutInt (inihandle, "filter", "techlogs", value);
			if ((status)<0) 
			{
				return status;
			}
			status = GetCtrlVal (itemHandle, FILE_ITEM_FILTER, buffer);
			if ((status)<0) 
			{
				return status;
			}
			status = Ini_PutString (inihandle, "filter", "filter", buffer);
			if ((status)<0) 
			{
				return status;
			}
			status = Ini_WriteToFile (inihandle, pathName);
			if ((status)<0) 
			{
				return status;
			} 
		}
		if(0==flag)
		{
			status = Ini_GetInt (inihandle, "filter", "techlogs", &value);
			if ((status)<0) 
			{
				return status;
			}
			status = SetCtrlVal (itemHandle, FILE_ITEM_TECHLOGS, value); 
			if ((status)<0) 
			{
				return status;
			}
			status = Ini_GetStringIntoBuffer (inihandle, "filter", "filter", buffer, 300);
			if ((status)<0) 
			{
				return status;
			}
			status = SetCtrlVal (itemHandle, FILE_ITEM_FILTER, buffer); 
			if ((status)<0) 
			{
				return status;
			}
	
		}
	
	}
	if (3 == item)	   // search operation
	{
	
		if(1==flag)
		{
			status = GetCtrlVal (itemHandle, FILE_ITEM_SEARCH, &value);
		    if ((status)<0) 
			{
				return status;
			}
		    status = Ini_PutInt (inihandle, "search", "search", value);
			if ((status)<0) 
			{
				return status;
			}
			memset(buffer,0,100); 
			status = GetCtrlVal (itemHandle, FILE_ITEM_S_FILENAME, buffer);
			if ((status)<0) 
			{
				return status;
			}
			status = Ini_PutString (inihandle, "search", "file_name", buffer);
			if ((status)<0) 
			{
				return status;
			}
			memset(buffer,0,100); 
			status = GetCtrlVal (itemHandle, FILE_ITEM_S_FILEPATH, buffer);
			if ((status)<0) 
			{
				return status;
			}
			status = Ini_PutString (inihandle, "search", "file_path", buffer);
			if ((status)<0) 
			{
				return status;
			}
			status = Ini_WriteToFile (inihandle, pathName);
			if ((status)<0) 
			{
				return status;
			} 
		}
		if(0==flag)
		{
			status = Ini_GetInt (inihandle, "search", "search", &value);
			if ((status)<0) 
			{
				return status;
			}
			status = SetCtrlVal (itemHandle, FILE_ITEM_SEARCH, value); 
			if ((status)<0) 
			{
				return status;
			}
			memset(buffer,0,100); 
			status = Ini_GetStringIntoBuffer (inihandle, "search", "file_name", buffer, 300);
			if ((status)<0) 
			{
				return status;
			}
			status = SetCtrlVal (itemHandle, FILE_ITEM_S_FILENAME, buffer); 
			if ((status)<0) 
			{
				return status;
			}
			memset(buffer,0,100); 
			status = Ini_GetStringIntoBuffer (inihandle, "search", "file_path", buffer, 300);
			if ((status)<0) 
			{
				return status;
			}
			status = SetCtrlVal (itemHandle, FILE_ITEM_S_FILEPATH, buffer); 
			if ((status)<0) 
			{
				return status;
			}
		}
	}
	free(buffer); 
	Ini_Dispose (inihandle); 
	return 1;
}
Ejemplo n.º 9
0
static int WriteConfig(int flag)
{
	  int fHandle=-1,linenumber=0,i=0,size=0,findflag=0; char *buffer=""; char pathName[MAX_PATHNAME_LEN];		char dirName[MAX_PATHNAME_LEN];   
	  
	  	GetProjectDir (dirName); 
		if(MENUBAR_CONFIG_CONFIGIP == flag)
		{
    		 MakePathname (dirName, "bbuip.txt", pathName);
	  
			 fHandle = OpenFile (pathName, VAL_WRITE_ONLY, VAL_TRUNCATE, VAL_ASCII);
			 if(fHandle<0)
			 {
	   		   SetCtrlVal (panelHandle, PANEL_TEXTBOX,  "Open bbuip.txt file error,please check by yourself!\r\n"); 
			   return -1;
			 }
			 buffer=(char*)malloc(1000); 
			 GetNumTextBoxLines (configHandle, CONFIG_BOX, &linenumber);
			 for(i=0;i<linenumber;i++)
			 {
				memset(buffer,0,1000);  
				GetTextBoxLine (configHandle, CONFIG_BOX, i, buffer);
				strcat(buffer,"\n");
				size=strlen(buffer);
				if (size > 7)
					{
					WriteFile (fHandle, buffer, size);
					}
			 }
			 free(buffer);
			 if(( CloseFile(fHandle))<0)
			 {
	   		   SetCtrlVal (panelHandle, PANEL_TEXTBOX,  "Close bbuip.txt file error,please try again!\r\n"); 
			   return -1;
			 
			 }
			 GetFileSize (pathName, &size); 
			 if(size==0)
			 {
	   		   SetCtrlVal (panelHandle, PANEL_TEXTBOX,  "bbuip.txt size is zero,please check and try again!\r\n"); 
			   return -1;
			 }
		
		}
		if(BBUCOMMON_CONFIGCMD == flag)
		{
			MakePathname (dirName, "command.txt", pathName);
	  
			 fHandle = OpenFile (pathName, VAL_WRITE_ONLY, VAL_TRUNCATE, VAL_ASCII);
			 if(fHandle<0)
			 {
	   		   SetCtrlVal (panelHandle, PANEL_TEXTBOX,  "Open command.txt file error,please check by yourself!\r\n"); 
			   return -1;
			 }
			 buffer=(char*)malloc(1000); 
			 GetNumTextBoxLines (configHandle, CONFIG_BOX, &linenumber); 
			 for(i=0;i<linenumber;i++)
			 {
				memset(buffer,0,1000);  
				GetTextBoxLine (configHandle, CONFIG_BOX, i, buffer);
				strcat(buffer,"\n");
				size=strlen(buffer);
				WriteFile (fHandle, buffer, size);
			 }
			 free(buffer);
			 if(( CloseFile(fHandle))<0)
			 {
	   		   SetCtrlVal (panelHandle, PANEL_TEXTBOX,  "Close command.txt file error,please try again!\r\n"); 
			   return -1;
			 
			 }
			 GetFileSize (pathName, &size); 
			 if(size==0)
			 {
	   		   SetCtrlVal (panelHandle, PANEL_TEXTBOX,  "command.txt size is zero,please check and try again!\r\n"); 
			 }
		}
		
	return 1;
}
Ejemplo n.º 10
0
int CVICALLBACK DataThread (void *functionData)
{
  char fileNameA[32];
  char fileNameB[32];
  char filePathA[MAX_PATHNAME_LEN]; // for data from channel A
  char filePathB[MAX_PATHNAME_LEN]; // for data from channel B
  U16 *data;
  FILE *outA, *outB;
  unsigned int numberOfElements = 0;
  
  // wait for tread lock
  CmtGetLock (dataThreadLock);
  // release the lock
  CmtReleaseLock (dataThreadLock);
  
  status = 3; // DataThread() is started
  SetCtrlVal (panelHandle, PANEL_STATUS, status);
  SetCtrlVal (panelHandle, PANEL_ERRORMSG,
    "Nice! DataThread() has been started!\n");
  
  // get the total number of elements to write
  numberOfElements = rawBscanSize * rawAlineSize;
  
  // init the values
  dataLoop = 0;
  
  // run until button STOP pressed
  while (stop == 0)
  {
    // wait for event from AlazarAcquire()
    WaitForSingleObject (eventData, INFINITE);
    
    // remove buffer from FIFO buffer and free memory space
    while (FIFOBuff->f_head != FIFOBuff->f_tail)
    {
      data = FIFO_Remove (FIFOBuff); // remove buffer from FIFO queue
      // update counters
      SetCtrlAttribute (panelHandle, PANEL_TIMEVALUE, ATTR_CTRL_VAL,
        timerValue * 1000.0);
      
      // draw plot
      DeleteGraphPlot (panelHandle, PANEL_ALINEGRAPH, -1, VAL_DELAYED_DRAW);
      PlotY (panelHandle, PANEL_ALINEGRAPH,
        data + numberOfElements * channel + rawAlineSize * aLineIndex,
        rawAlineSize, VAL_UNSIGNED_SHORT_INTEGER, VAL_FAT_LINE,
        VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_CYAN);
      
      // record files only if we have directory name in pathName variable
      if ((save == 2) || (dataLoop < alazarLoop))
      {
        // set number of buffers which were saved
        SetCtrlAttribute (panelHandle, PANEL_DATALOOPS, ATTR_CTRL_VAL,
          dataLoop++);
        SetCtrlAttribute (panelHandle, PANEL_ALAZARLOOPS, ATTR_CTRL_VAL,
          alazarLoop);
        // set the name of output files and notify
        sprintf (fileNameA, "%09lli.mzi.raw.dat", dataLoop);
        sprintf (fileNameB, "%09lli.sample.raw.dat", dataLoop);
        MakePathname (pathName, fileNameA, filePathA);
        MakePathname (pathName, fileNameB, filePathB);
        SetCtrlAttribute (panelHandle, PANEL_DIRPATH, ATTR_CTRL_VAL, filePathB);
        // open output files for recording
        outA = fopen (filePathA, "wb");
        outB = fopen (filePathB, "wb");
        // error handling
        if ((outA == NULL) || (outB == NULL))
        {
          SetCtrlVal (panelHandle, PANEL_ERRORMSG,
            "Ooops! We could not open files for recording!\n");
          save = 0;
          SetCtrlVal (panelHandle, PANEL_SAVESWITCH, save);
          break;
        }
        // record buffer from channel A
        if (numberOfElements != fwrite (data, bytesPerSample, numberOfElements,
          outA))
        {
          SetCtrlVal (panelHandle, PANEL_ERRORMSG,
            "Ooops! We could not write the file!\n");
          save = 0;
          SetCtrlVal (panelHandle, PANEL_SAVESWITCH, save);
          fclose (outA);
          break;
        }
        // record buffer from channel B
        if (numberOfElements != fwrite (data + numberOfElements, bytesPerSample,
          numberOfElements, outB))
        {
          SetCtrlVal (panelHandle, PANEL_ERRORMSG,
            "Ooops! We could not write the file!\n");
          save = 0;
          SetCtrlVal (panelHandle, PANEL_SAVESWITCH, save);
          fclose (outB);
          break;
        }
        // close output files
        fclose (outA);
        fclose (outB);
      }  
      
      free (data); // free buffer obtained from FIFO queue
    }
    
  }
  
  SetCtrlVal (panelHandle, PANEL_ERRORMSG,
    "Nice! DataThread() has been stopped!\n");
  
  return 0;
}
/* In another thread, receives data and writes them into TSQ */
int CVICALLBACK receiveDataWriteToTSQ(void *functionData){
	int storeFileFlag = 0;
	GetCtrlVal(panelHdl, MainPanel_StoreTheData_Switch, &storeFileFlag);
	if(0 == dataSrc){ //read data from [device port]
		if(OpenComConfig(comPort, "", baudRate, parity, 
						 dataBits, stopBits, inQueueSize, outQueueSize) <0)
			showError("Failed to open RS232 port!");
		if(storeFileFlag > 0){
			if( writeFPP >0){
				writeFP = fopen(writeFilePath, "a");
				if(writeFP == NULL) 
					showError("Open WriteFile Failed");
				fseek(writeFP, writeFPP, SEEK_SET);
			}else{	
				SYSTEMTIME localTime;
				char dirName[MAX_PATHNAME_LEN];
				char fileName[200];
				GetProjectDir(dirName);
				strcat(dirName, "\\DataStorage");
				GetLocalTime(&localTime);
				sprintf(fileName, "%04d-%d-%d,%d_%02d_%02d.dat", 
						localTime.wYear, localTime.wMonth, localTime.wDay,
						localTime.wHour, localTime.wMinute, localTime.wSecond);
				MakePathname(dirName, fileName, writeFilePath);
				writeFP = fopen(writeFilePath, "a");
				if(writeFP == NULL) showError("Open WriteFile Failed");
			}
		}//if(storeFileFlag)
	}else if(1 == dataSrc){ //read data from [file]
		loadFP = fopen(loadFilePath, "r");
		if(loadFP == NULL){ 
			showError("Load File Failed");
			return -1;
		}
		fseek(loadFP, loadFPP, SEEK_SET);
	}else{ //[simulating data]
	}
	GetCtrlVal(panelHdl, MainPanel_StoreTheData_Switch, &storeFileFlag);
	while(receiveFlag){
		writeTSQEndFlag = 1;
		switch(dataSrc){
			case 0:
				bytesRead = ComRd(comPort, readData, READ_LENGTH);
				if(storeFileFlag > 0)
					fwrite(readData, sizeof(char), READ_LENGTH, writeFP);
				break;
			case 1:
				Delay(fileLoadSpeed);
				if(!feof(loadFP)){
					bytesRead = fread(readData, sizeof(char), READ_LENGTH, loadFP);
				}else{
					receiveFlag = 0;
					MessagePopup("Reach The End", "All data in this file has been read !");
				}
				break;
			case 2:
				for(int i=0; i<READ_LENGTH; i++)
					readData[i] = 0x80;
				Delay(0.1);
				break;
		}//switch()
		CmtWriteTSQData(tsqHdl, &readData, READ_LENGTH, TSQ_INFINITE_TIMEOUT, NULL);
		writeTSQEndFlag = 0;
	}//while()
	switch(dataSrc){
		case 0:
			//CloseCom(comPort);
			if(storeFileFlag >0){
				if(!feof(writeFP))
					writeFPP = ftell(writeFP);
				fclose(writeFP);
				writeFP = NULL;
			}
			break;
		case 1:
			if(!feof(loadFP))
				loadFPP = ftell(loadFP);
			fclose(loadFP);
			loadFP = NULL;
			break;
	}//switch()
	addLog("End-Acq", 0, panelHdl);
	return 0;
}