This is smsPrint.c in view mode; [Download] [Up]
#include "../sms.h"
#define USAGE "Usage: smsPrint [-t type-format][-i initial-time][-e end-time][-f first-trajectory][-l last-trajectory] <smsFile>"
main (int argc, char *argv[])
{
SMSHeader *pSmsHeader;
char *pData;
SMS_DATA smsData;
int iError, i, j, iFormat = 1, iFirstFrame = 0, iLastFrame = -1,
iFirstTraj = 0, iLastTraj = -1;
float fInitialTime = 0, fEndTime = 0;
for (i=1; i<argc-1; i++)
{
if (*(argv[i]++) == '-')
{
switch (*(argv[i]++))
{
case 't': if (sscanf(argv[i],"%d",
&iFormat) < 1)
quit("Invalid format");
break;
case 'i': if (sscanf(argv[i],"%f",
&fInitialTime) < 0)
quit("Invalid initialTime");
break;
case 'e': if (sscanf(argv[i],"%f",
&fEndTime) < 0)
quit("Invalid EndTime");
break;
case 'f': if (sscanf(argv[i],"%d",
&iFirstTraj) < 0)
quit("Invalid FirstTraj");
break;
case 'l': if (sscanf(argv[i],"%d",
&iLastTraj) < 0)
quit("Invalid LastTraj");
break;
default: quit(USAGE);
}
}
}
if (argc <= 1)
quit(USAGE);
if((iError = readSmsFile(argv[argc-1], &pSmsHeader)) < 0)
{
if(iError == SMS_NOPEN)
quit("cannot open file");
if(iError == SMS_RDERR)
quit("read error");
if(iError == SMS_NSMS)
quit("not an SMS file");
if(iError == SMS_MALLOC)
quit("cannot allocate memory");
quit("error");
}
pData = (char *) pSmsHeader + pSmsHeader->iHeadBSize;
printf("HEADER INFORMATION:\n");
printf("Number of records = %d\n", pSmsHeader->nRecords);
printf("Frame rate = %d\n", pSmsHeader->iFrameRate);
printf("Number of trajectories = %d\n", pSmsHeader->nTrajectories);
printf("Number of stochastic coefficients = %d\n",
pSmsHeader->nStochasticCoeff);
printf("Format = %d\n", pSmsHeader->iFormat);
printf("Stochastic type = %d\n", pSmsHeader->iStochasticType);
printf("Original sampling rate = %.0f\n", pSmsHeader->fOriginalSRate);
if (pSmsHeader->nTextCharacters > 0)
{
printf("\nANALISIS ARGUMENTS:\n");
printf("%s\n", pSmsHeader->pChTextCharacters);
}
iFirstFrame =
MIN (pSmsHeader->nRecords - 1, fInitialTime * pSmsHeader->iFrameRate);
if (fEndTime > 0)
iLastFrame =
MIN (fEndTime * pSmsHeader->iFrameRate, pSmsHeader->nRecords);
else
iLastFrame = pSmsHeader->nRecords;
if (iFirstTraj > 0)
iFirstTraj = MIN (pSmsHeader->nTrajectories, iFirstTraj);
if (iLastTraj >= 0)
iLastTraj = MIN (pSmsHeader->nTrajectories, iLastTraj);
else
iLastTraj = pSmsHeader->nTrajectories;
if (iFormat == 2)
{
printf("\n Fr. sec. ");
for(j = iFirstTraj; j < iLastTraj; j++)
printf("Traj %2d ", j);
printf("\n");
}
pData = pData + iFirstFrame * pSmsHeader->iRecordBSize;
for(i = iFirstFrame; i < iLastFrame; i++)
{
setSmsRecord (pSmsHeader, pData, &smsData);
printf("\n#%3d {%1.3f}: ", i, (float) i / pSmsHeader->iFrameRate);
if (iFormat != 2) printf("\ndet: ");
if (iFormat != 3 &&
(pSmsHeader->iFormat == FORMAT_HARMONIC ||
pSmsHeader->iFormat == FORMAT_INHARMONIC))
for(j = iFirstTraj; j < iLastTraj; j++)
printf("%5.0f[%2.0f] ", smsData.pFFreqTraj[j],
smsData.pFMagTraj[j]);
else
for(j = iFirstTraj; j < iLastTraj; j++)
printf("%.0f[%.0f, %.0f] ", smsData.pFFreqTraj[j],
smsData.pFMagTraj[j], smsData.pFPhaTraj[j]);
if (iFormat != 2 && pSmsHeader->iStochasticType != STOC_NONE)
{
printf("\n");
printf("stocg: %.0f\n", *(smsData.pFStocGain));
printf("stocc: ");
for(j = 0; j < smsData.nCoeff; j++)
printf("%1.3f ", smsData.pFStocCoeff[j]);
}
pData += pSmsHeader->iRecordBSize;
}
exit(0);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.