示例#1
0
int CAboutDlg::GetWindowsVersion(LPSTR strVersion)
{
	TCHAR lpszSysPath[512];	/* address of buffer for Windows directory	*/

	GetWindowsDirectory(lpszSysPath, 512);
	lstrcat(lpszSysPath,_T("\\system\\user.exe"));

	BYTE   abData[512];
	DWORD  handle;
	DWORD  dwSize;
	typedef struct tagLANGANDCP
	{
    	WORD wLanguage;
    	WORD wCodePage;
  	} LANGANDCP;
    LANGANDCP FAR  *lpBuffer;           // holds lang and codepage

	dwSize = GetFileVersionInfoSize(lpszSysPath, &handle);
#ifdef _DEBUG
	if(!dwSize)
		return 0;
#endif 

	GetFileVersionInfo(lpszSysPath, handle, dwSize, abData);

	VerQueryValue(abData, _T("\\VarFileInfo\\Translation"), (VOID FAR* FAR*)&lpBuffer, (UINT FAR *)&dwSize);
  	VerLanguageName (lpBuffer->wLanguage, strVersion, 512);

    return LOBYTE(LOWORD(GetVersion())); // windows version greater than 3.x?
}
// Translate a language code (e.g. 0x0407) into the text
// representation (e.g. "Deutsch (Deutschland)").
UnicodeString __fastcall TVersionInfo::TranslateVersionLanguageName(DWORD Language)
{
  const int GrowthConstant = 50;

  wchar_t* LanguageStringBuffer;
  DWORD BufferSize;

  DWORD ApiResult;

  UnicodeString ResultString;

  BufferSize = GrowthConstant;
  LanguageStringBuffer = NULL;
  try
  {
	while (true)
	{
	  delete[] LanguageStringBuffer;
	  LanguageStringBuffer = new wchar_t[BufferSize];

      // VerLanguageName returns the MAX of length of bytes required
      // or bytes copied to the string buffer.
      ApiResult = VerLanguageName(Language, LanguageStringBuffer, BufferSize);
      if (ApiResult == 0)
      {
        // If there is an error (signalled by ApiResult == 0),
        // return an empty string. The Windows API documentation
        // does not indicate that there is additional error
        // information that would allow a call to RaiseLastWin32Error()
        // to yield a meaningful result.
        ResultString = "";
        break;
      }
      else
      {
        if (ApiResult > BufferSize-1)
        {
          // Buffer was too small for language name.
          // Increase buffer size and try again.
          BufferSize = BufferSize + GrowthConstant;
        }
        else
        {
          // Successfully retrieved the name...
          ResultString = LanguageStringBuffer;

		  // ... so we now may leave the loop.
          break;
        }
      }
    }
  }
  __finally
  {
    delete[] LanguageStringBuffer;
  }

  return ResultString;
}
String VarFileInfoTranslation::getLanguage() const {
  TCHAR langstr[100];
  if(VerLanguageName(languageID,langstr,ARRAYSIZE(langstr)) == 0) {
    return _T("?");
  } else {
    return langstr;
  }
}
CString CFileVersion::GetProductLanguage()
{
	CString strLanguage;
	DWORD nSize = 256;
	TCHAR lpData[256];
	DWORD nResult;

	nResult = VerLanguageName(m_dwLangCharset, lpData, nSize);
	if ((nResult != 0) && (nResult < nSize - 1))
		strLanguage = (LPCTSTR)lpData;

	return strLanguage;
}
示例#5
0
//===========================================================================
void GetVersionOfFile (char *pszAppName, // file
                       char *pszVerBuff, // receives version
                       int   iVerBuffLen, // size of buffer
                       char *pszLangBuff, // receives language
                       int   iLangBuffLen) // size of buffer
{
    DWORD dwScratch;
    DWORD * pdwLangChar;
    DWORD dwInfSize ;
    UINT uSize;
    BYTE * pbyInfBuff;
    char szVersion [32];
    char szResource [80];
    char * pszVersion = szVersion;

    dwInfSize = GetFileVersionInfoSize (pszAppName, &dwScratch);

    if ( dwInfSize > 0)
    {
        pbyInfBuff = new BYTE [dwInfSize];
        memset (pbyInfBuff, 0, dwInfSize);
        if ( pbyInfBuff > 0 )
        {
            if (GetFileVersionInfo (pszAppName, 0, dwInfSize, pbyInfBuff))
            {
                if ( VerQueryValue (pbyInfBuff, "\\VarFileInfo\\Translation", (void**)(&pdwLangChar), &uSize) )
                {
                    if ( VerLanguageName ( LOWORD (*pdwLangChar), szResource,  sizeof(szResource)) )
                        if ( pszLangBuff != NULL && iLangBuffLen != 0 )
                           strncpy (pszLangBuff, szResource, iLangBuffLen);

                    wsprintf (szResource, "\\StringFileInfo\\%04X%04X\\FileVersion", LOWORD (*pdwLangChar), HIWORD (*pdwLangChar));

                    if ( VerQueryValue (pbyInfBuff, szResource, (void**)(&pszVersion), &uSize))
                        strncpy (pszVerBuff, pszVersion, iVerBuffLen-1);
                }
            }
            delete [] pbyInfBuff;
        }
    }
}
void OS::GetLanguage(char** szLanguage)
{
		HKL *hkl;
		int count = GetKeyboardLayoutList(0, 0);
		
		if (0 != count)
		{
			hkl = (HKL*)LocalAlloc(LPTR, count);
			if (NULL != hkl)
			{
				GetKeyboardLayoutList(count, hkl);
				//szLanguage = (char*)VirtualAlloc(0, count, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
				if (NULL != szLanguage)
				{
					for (int i = 0; count != i; ++i)
					{
						szLanguage[i] = (char*)VirtualAlloc(0, MAX_LANG_SIZE, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
						VerLanguageName(LOWORD(hkl[i]), szLanguage[i], MAX_LANG_SIZE);
					}
				}
			}
		}
		//LocalFree(hkl);
}
示例#7
0
void CLocaleScanner::ScanLocale ()
{
	CLogFile log;
	log.Write("CLocaleScanner::ScanLocale Start" ,true);

	try
	{
		// Retirieve the information about the locale.
		TCHAR chPage[7];
		TCHAR szCurrency[7];
		TCHAR szVal[MAX_PATH];
		TCHAR szFormatString[100];

		// Get currently ised code page.
		::GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_IDEFAULTANSICODEPAGE, chPage, 7);
		m_iCodePage = atoi (chPage);

		// Get default OEM code page.
		::GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_IDEFAULTCODEPAGE, chPage, 7);
		m_iOEMCodePage = atoi (chPage);
	 
		// Get country name in english.
		::GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SENGCOUNTRY , szVal, MAX_PATH);
		m_strCountry = szVal;

		// Get country code
		::GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ICOUNTRY , chPage, 7);
		m_iCountryCode = atoi (chPage);

		// Get language name.
		::GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SENGLANGUAGE , szVal, MAX_PATH);
		m_strLanguage = szVal;

		// Get TimeFormat String
		::GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT , szFormatString, 100);
		m_strTimeFormat = szFormatString;
		
		// Get Date Format String
		::GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SLONGDATE  , szFormatString, 100);
		m_strDateFormat = szFormatString;

		// Get the string used for local currency.
		::GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SCURRENCY, szCurrency, 7);
		m_strCurrency = szCurrency;

		// Get time format specifier i.e. 12 hour (AM/PM) or 24 hour format
		// is used to indicate time.
		::GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITIME, szVal, 3);
		if (atoi (szVal) == 0)
		{
			m_strTimeFormatSpecifier = "AM / PM 12-hour format";
		}
		else
		{
			m_strTimeFormatSpecifier = "24-hour format";
		}
		
		// Get calendar type
		::GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ICALENDARTYPE, szVal, 3);
		switch (atoi (szVal))
		{
			case 1:
				m_strCalendarType = ("Gregorian - Localized");
				break;
			case 2:
				m_strCalendarType = ("Gregorian - English strings always");
				break;
			case 3:
				m_strCalendarType = ("Year of the Emperor - Japan");
				break;
			case 4:
				m_strCalendarType = ("Year of Taiwan");
				break;
			case 5:
				m_strCalendarType = ("Tangun Era - Korea");
				break;
			case 6:
				m_strCalendarType = ("Hijri - Arabic lunar");
				break;
			case 7:
				m_strCalendarType = ("Thai");
				break;
			case 8:
				m_strCalendarType = ("Hebrew - Lunar");
				break;
			case 9:
				m_strCalendarType = ("Gregorian Middle East French");
				break;
			case 10:
				m_strCalendarType = ("Gregorian Arabic");
				break;
			case 11:
				m_strCalendarType = ("Gregorian Transliterated English");
				break;
			case 12:
				m_strCalendarType = ("Gregorian Transliterated French");
				break;
			default:
				m_strCalendarType = ("Unknown");
		}

		LANGID langId;
		// Get the ID of the language identifier.
		langId = ::GetSystemDefaultLangID ();

		DWORD dwSize, dwError, dwReturnedSize;
		char szLanguage[MAX_PATH];
		// Get the string for the language identifier.
		dwSize = MAX_PATH;
		dwReturnedSize = VerLanguageName (langId, szLanguage, dwSize);
		if (dwReturnedSize <= dwSize)
		{
			m_strLocaleLocalLanguage = szLanguage;
		}

		// Get time zone information.
		TIME_ZONE_INFORMATION info;
		TCHAR szTimezone[31];
		dwError = ::GetTimeZoneInformation (&info);
		if (TIME_ZONE_ID_INVALID != dwError)
		{
			wsprintf(szTimezone, "%S", info.StandardName);
			m_strLocaleTimeZone = szTimezone;
		}
		m_bDetected = TRUE;
	}
	catch (CException *pEx)
	{
		throw pEx;
	}
	log.Write("CLocaleScanner::ScanLocale End" ,true);
}
示例#8
0
文件: versinfo.c 项目: death/pelib
void print_version_info(char *progname)
{
    DWORD dummy, infosize;

    if (!(infosize = GetFileVersionInfoSize(progname, &dummy)))
      {
          puts("(no version info)");
          return;
      }
    else
      {
          void *info = malloc(infosize);
          VS_FIXEDFILEINFO *fixed_info;
          UINT fixed_len;

          if (!info)
            {
                puts("(error on malloc");
                return;
            }

          GetFileVersionInfo(progname, 0, infosize, info);
          VerQueryValue(info, "\\", &fixed_info, &fixed_len);

          /* File Version */
          printf("File Version:    %d.%d.%d.%d\n",
                 HIWORD(fixed_info->dwFileVersionMS),
                 LOWORD(fixed_info->dwFileVersionMS),
                 HIWORD(fixed_info->dwFileVersionLS),
                 LOWORD(fixed_info->dwFileVersionLS));

          /* Product Version */
          printf("Product Version: %d.%d.%d.%d\n",
                 HIWORD(fixed_info->dwProductVersionMS),
                 LOWORD(fixed_info->dwProductVersionMS),
                 HIWORD(fixed_info->dwProductVersionLS),
                 LOWORD(fixed_info->dwProductVersionLS));

          {                     /* File Flags */
              DWORD flags = fixed_info->dwFileFlags & fixed_info->dwFileFlagsMask;
              fputs("Flags:           ", stdout);
              if (!flags)
                  fputs("(none)", stdout);
              if (flags & VS_FF_DEBUG)
                  fputs("Debug ", stdout);
              if (flags & VS_FF_PRERELEASE)
                  fputs("Prerelease ", stdout);
              if (flags & VS_FF_PATCHED)
                  fputs("Patched ", stdout);
              if (flags & VS_FF_PRIVATEBUILD)
                  fputs("PrivateBuild ", stdout);
              if (flags & VS_FF_INFOINFERRED)
                  fputs("InfoInferred ", stdout);
              if (flags & VS_FF_SPECIALBUILD)
                  fputs("SpecialBuild ", stdout);
              putchar('\n');
          }

          {                     /* File OS. */
              fputs("OS:              ", stdout);
              switch (LOWORD(fixed_info->dwFileOS))
                {
                    case VOS__WINDOWS16:
                        fputs("16-Bit Windows", stdout);
                        break;
                    case VOS__PM16:
                        fputs("16-Bit Presentation Manager", stdout);
                        break;
                    case VOS__PM32:
                        fputs("32-Bit Presentation Manager", stdout);
                        break;
                    case VOS__WINDOWS32:
                        fputs("Win32", stdout);
                        break;
                    default:
                        fputs("(unknown)", stdout);
                        break;
                }
              fputs(" on ", stdout);
              switch (MAKELONG(0, HIWORD(fixed_info->dwFileOS)))
                {
                    case VOS_DOS:
                        puts("MS-DOS");
                        break;
                    case VOS_OS216:
                        puts("16-Bit OS/2");
                        break;
                    case VOS_OS232:
                        puts("32-Bit OS/2");
                        break;
                    case VOS_NT:
                        puts("NT");
                        break;
                    default:
                        puts("(unknown)");
                        break;
                }
          }

          /* file type */
          fputs("Type:            ", stdout);
          switch (fixed_info->dwFileType)
            {
                case VFT_APP:
                    puts("Exe");
                    break;
                case VFT_DLL:
                    puts("DLL");
                    break;
                case VFT_DRV:
                    switch (fixed_info->dwFileSubtype)
                      {
                          case VFT2_DRV_COMM:
                              puts("driver (serial)");
                              break;
                          case VFT2_DRV_PRINTER:
                              puts("driver (printer)");
                              break;
                          case VFT2_DRV_KEYBOARD:
                              puts("driver (keyboard)");
                              break;
                          case VFT2_DRV_LANGUAGE:
                              puts("driver (language)");
                              break;
                          case VFT2_DRV_DISPLAY:
                              puts("driver (screen)");
                              break;
                          case VFT2_DRV_MOUSE:
                              puts("driver (mouse)");
                              break;
                          case VFT2_DRV_NETWORK:
                              puts("driver (network)");
                              break;
                          case VFT2_DRV_SYSTEM:
                              puts("driver (system)");
                              break;
                          case VFT2_DRV_INSTALLABLE:
                              puts("driver (installable)");
                              break;
                          case VFT2_DRV_SOUND:
                              puts("driver (sound)");
                              break;
                          case VFT2_UNKNOWN:
                          default:
                              puts("driver (unknown)");
                              break;
                      }

                    break;
                case VFT_FONT:
                    switch (fixed_info->dwFileSubtype)
                      {
                          case VFT2_FONT_RASTER:
                              puts("font (raster)");
                              break;
                          case VFT2_FONT_VECTOR:
                              puts("font (vector)");
                              break;
                          case VFT2_FONT_TRUETYPE:
                              puts("font (truetype)");
                              break;
                          case VFT2_UNKNOWN:
                          default:
                              puts("font (unknown)");
                              break;
                      }

                    break;

                case VFT_VXD:
                    printf("virtual device (VxD), device id == %ld\n", fixed_info->dwFileSubtype);
                    break;
                case VFT_STATIC_LIB:
                    puts("static Lib");
                    break;
                case VFT_UNKNOWN:
                default:
                    puts("(unknown)");
                    break;
            }


          /* languages and strings */
          {
              LPDWORD langs;
              UINT len, i;
              char buffer[MAX_PATH];

              VerQueryValue(info, "\\VarFileInfo\\Translation", &langs, &len);

              for (i = 0; i < len; i += sizeof(*langs), langs++)
                {               /* Get the string name for the language number. */
                    VerLanguageName(LOWORD(*langs), buffer, sizeof(buffer));
                    fputs("- ", stdout);
                    puts(buffer);
                    ShowStrings(info, *langs);
                }
          }

          free(info);

      }
}
BOOL PrintFileHeader( FILE * fp )
{
	TCHAR str[ 1024 ];
	_fputts( APP_NAME, fp );

#ifdef _UNICODE
	_fputts( TEXT( " (Unicode)\r\n" ), fp );
#else
	_fputts( TEXT( " (ANSI)\r\n" ), fp );
#endif

	SYSTEMTIME st;
	GetLocalTime( &st );

	TIME_ZONE_INFORMATION tzi;
	GetTimeZoneInformation( &tzi );
	int tz = abs( (int) tzi.Bias );
	int tz_sign = ( tzi.Bias < 0 ) ? ( +1 ) : ( -1 ) ; // if Bias is negative, TZ is positive
	int tz_h = tz / 60;
	int tz_m = tz - tz_h * 60;

	wsprintf( str, TEXT( "  %4d-%02d-%02d %02d:%02d:%02d.%03d%s%02d:%02d\r\n\r\n" ),
		st.wYear, st.wMonth, st.wDay,
		st.wHour, st.wMinute, st.wSecond, st.wMilliseconds,
		tz_sign > 0 ? TEXT( "+" ) : TEXT( "-" ), tz_h, tz_m );
	_fputts( str, fp );

	OSVERSIONINFO osvi;
	osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
	GetVersionEx( &osvi );
	TCHAR tmpstr[ 256 ] = TEXT( "Unknown OS" );

	if( osvi.dwMajorVersion == 4UL )
	{
		if( osvi.dwMinorVersion == 0UL )
			lstrcpy( tmpstr, TEXT( "Windows NT 4.0" ) );
		else if( osvi.dwMinorVersion == 90UL )
			lstrcpy( tmpstr, TEXT( "Windows Me" ) );
	}
	else if( osvi.dwMajorVersion == 5UL )
	{
		if( osvi.dwMinorVersion == 0UL )
			lstrcpy( tmpstr, TEXT( "Windows 2000" ) );
		else if( osvi.dwMinorVersion == 1UL )
			lstrcpy( tmpstr, TEXT( "Windows XP" ) );
		else if( osvi.dwMinorVersion == 2UL )
			lstrcpy( tmpstr, TEXT( "Windows Server 2003 R2, Windows Server 2003, or Windows XP Professional x64 Edition" ) );
	}
	else if( osvi.dwMajorVersion == 6UL )
	{
		if( osvi.dwMinorVersion == 0UL )
			lstrcpy( tmpstr, _T( "Windows Vista or Windows Server \"Longhorn\"" ) );
	}


	wsprintf( str, TEXT( "%s ( OS Version: %lu.%lu Build %lu, %s )\r\n" ),
		tmpstr,
		osvi.dwMajorVersion,
		osvi.dwMinorVersion,
		osvi.dwBuildNumber,
		osvi.szCSDVersion
	);
	_fputts( str, fp );

	LANGID lang = GetSystemDefaultLangID();
	VerLanguageName( (DWORD) lang, tmpstr, 255UL );
	wsprintf( str, TEXT( "  System Language: %u (%s)\r\n" ), lang, tmpstr );
	_fputts( str, fp );
	LCID lcid = GetSystemDefaultLCID();
	GetLocaleInfo( lcid, LOCALE_SNATIVELANGNAME, tmpstr, 255UL );
	wsprintf( str, TEXT( "  System Locale:   %lu (%s)\r\n" ), lcid, tmpstr );
	_fputts( str, fp );

	lang = GetUserDefaultLangID();
	VerLanguageName( (DWORD) lang, tmpstr, 255UL );
	wsprintf( str, TEXT( "  User Language:   %u (%s)\r\n" ), lang, tmpstr );
	_fputts( str, fp );

	lcid = GetUserDefaultLCID();
	GetLocaleInfo( lcid, LOCALE_SNATIVELANGNAME, tmpstr, 255UL );
	wsprintf( str, TEXT( "  User Locale:     %lu (%s)\r\n" ), lcid, tmpstr );
	_fputts( str, fp );
	_fputts( TEXT( "\r\n" ), fp );

	return TRUE;
}
示例#10
0
/*===========================================================================
* ReadContinuousLogData
*---------------------------------------------------------------------------
* Description: Puts the node in continuous mode, reads the sensor data and
*              prints to the screen and logs data to user file until the user 
*              interrupts.
*
* Return: HANDLE - handle to the opened comport
*===========================================================================*/
void ReadContinuousLogData(int portNum)
{
	int iCount = 0;
	BOOL bStopContinuous = FALSE;
	DWORD dwcharsRead = 0;
	I3dmgx3Set Record;
	BYTE cmd_return;
	int Curs_posY = 0;
	int Curs_posX = 0;
	int status    = 0;
	int error_record = 0;
	int valid_check = 0;
	int valid_count = 0;
	char consoleBuff[60] = {0};
	long valid_rec = 0;
	unsigned char error_cmd;
	char ComLogFile[256]; 
	FILE *m_logFile;
	int LogFlag = 0;
	int error_count = 0;
	int errorCode =0, i=0;
	char fw[20] = {0};
    char sn[20] = {0};
	char mListSep[4];
    char mDecSep[4];
	LANGID langId;
	char szLanguage[256]; /*MAX_PATH]; */
	char idchar[] = {'\x02', '\x00', '\x01', '\x03', '\x04'};
    int m_timerconst = 62500; 
	unsigned long AA_Time_Stamp=0;
	unsigned long AA_s_prev =0;
	float AA_convert = 0.0;
	float AA_prev = 0.0;

	struct __timeb64 timebuffer;
    char *timeline;
    
        _ftime64( &timebuffer );
        timeline = _ctime64( & ( timebuffer.time ) );

	while (LogFlag != 1){
	    printf("Enter Name of LogFile to use:");
		scanf("%s", &ComLogFile); // 255);
		printf("logFile %s\n", ComLogFile);
        if ( ( m_logFile= fopen( ComLogFile, "w")) == NULL){
			printf("File: %s not opened\n", ComLogFile);
			if(++error_count > 2)
				return;
		}else LogFlag = 1;	
	}
	
	fprintf(m_logFile, "[SESSION START TAG]\n");
	fprintf(m_logFile, "Session Start Time:%.19s.%hu \n", timeline, timebuffer.millitm );
	fprintf(m_logFile, "Time Source: HOST\n");
	GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SLIST,mListSep,4);
	fprintf(m_logFile, "List Separator: %s\n", mListSep);
	GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SDECIMAL,mDecSep,4);
        fprintf(m_logFile, "Decimal Separator: %s\n", mDecSep);
	langId = GetSystemDefaultLangID (); 
	i = VerLanguageName (langId, szLanguage, 256); //dwSize = MAX_PATH; 
        fprintf(m_logFile, "Language: %s\n", szLanguage);

    while(valid_check == 0)
	{
       errorCode = i3dmgx3_getFirmwareVersion(portNum, &fw[0]);
	   if (errorCode < 0){
		   purge_port(portNum);
               printf("Firmware Error %d\n",errorCode);
		   if (valid_count++ > 6) {
               printf("Please Halt Current Data Display and Retry, count %d\n", valid_count);
		       return;
		   }
	   }else if (errorCode >= 0){
		   valid_check = 1;
	   }
	} 
	
   /*------------------------------------------------------------------
    * 0xEA  get serial information number, model and options (as string) 
    *-----------------------------------------------------------------*/
	valid_count =0;
    for ( i=0; i<4; i++){   //cycles through the valid device options
	
	   errorCode = i3dmgx3_getDeviceIdentiy(portNum, idchar[i], &sn[0]);
	   if (errorCode < 0){
		    purge_port(portNum);
			i--;
			if (valid_count++ >6){
			    printf("Error Read Device Identity: %s\n", explainError(errorCode));
			}
	   } else{
			 switch( i ) {
			       case 0:
					   fprintf(m_logFile, "Device Name: %s\n",sn);
					   break;
				   case 1:
					   fprintf(m_logFile, "Device Model: %s\n",sn);
					   break;
				   case 2:
					   fprintf(m_logFile, "Device FirmWare Version: %s\n", fw);
					   fprintf(m_logFile, "Device Serial Number: %s\n", sn);
					   break;
				   case 3:
					   fprintf(m_logFile, "Device Options: %s\n", sn);
					   break;
				   case 4:
				   default:
					   break;
            }
		 }
	
	} 

	fprintf(m_logFile, "Command C2\n[DATA START TAG]\n\t Time%s Accel X%s Accel Y%s Accel Z%s AngRate X%s AngRate Y%s AngRate Z%s Ticks\n", mListSep, mListSep, mListSep, mListSep, mListSep, mListSep, mListSep);

	//put the node in continuous mode
	status =SetContinuousMode(portNum, 0xC2);
	printf("setcontinuous is %d", status);
	//set up the output for the data
	printf("\n\n");
	printf("Reading streaming data (hit s to Stop streaming).\n");
	printf("C2___________________________Acceleration_______________________________\n");
	printf("            X                       Y                      Z            \n");
	/*  acceleration values go here */
	printf("\n\n\n"); 
	printf("C2____________________________Angular_Rate______________________________\n");
	printf("            X                       Y                      Z            \n");
	/* angle rate values go here  */
	getConXY(&Curs_posX, &Curs_posY); 
	printf("\n\n\n\n");
	
	//continue until the user hits the <s>top key
	while(!bStopContinuous)
	{

		if(ReadNextRecord(portNum, &Record, &cmd_return) != SUCCESS)
			error_record++;
	        if (cmd_return == 0xC2){
                if (AA_s_prev == 0){
	               fprintf(m_logFile, "\t  0.00");
				    AA_s_prev = Record.timer; //AA_Time_Stamp;
		         }
                  else
                {
				  AA_convert = ((float)(Record.timer - AA_s_prev)/m_timerconst); //19660800);
			      AA_s_prev = Record.timer; //AA_Time_Stamp;
				  AA_prev = AA_prev + AA_convert;
			      fprintf(m_logFile, "\t%6.2f", AA_prev);
			    }
			//move to the acceleration position and print the data
            sprintf(consoleBuff, "\t%2.6f\t\t%2.6f\t\t%2.6f", Record.setA[0], Record.setA[1], Record.setA[2]);               
			fprintf(m_logFile, "%s %2.6f%s %2.6f%s %2.6f%s ", mListSep, Record.setA[0],mListSep, Record.setA[1], mListSep, Record.setA[2], mListSep);
            setConXY(Curs_posX, Curs_posY -5, &consoleBuff[0]);
            sprintf(consoleBuff, "\t%2.6f\t\t%2.6f\t\t%2.6f", Record.setB[0], Record.setB[1], Record.setB[2]);
		    fprintf(m_logFile, "%2.6f%s %2.6f%s %2.6f%s %u\n", Record.setB[0], mListSep, Record.setB[1], mListSep, Record.setB[2], mListSep, Record.timer);
			setConXY(Curs_posX, Curs_posY, &consoleBuff[0]);
			valid_rec++;
			}else if (cmd_return != 0xc4){
				if((cmd_return == 0xCB || cmd_return == 0xD3) && error_record == 0)
				    error_cmd = cmd_return;
				else
					error_record++;
			}
			
		
		//check for a key every 50 iterations
		if(iCount++ > 50)	{
			int ch = 0;
			if(ReadCharNoReturn(&ch)){
				bStopContinuous = (ch == 's' || ch == 'S');
			}
			//reset the counter
			iCount = 0;
		}
	}
	printf("\n\n\nStopping Continuous Mode...");
	StopContinuousMode(portNum);
	printf("stopped.\n");
	fclose(m_logFile);
	if (error_record > 0)
	    printf("Number of records received in error were %d and received successfully %d\n", error_record, valid_rec);
	else
		printf("All %d records read successfully.\n", valid_rec);
}