Let me know where to drop zipped file. In the interim;
GetChroData
long GetChroData(long nChroType1, long nChroOperator, long nChroType2,
LPCTSTR szFilter, LPCTSTR szMassRanges1, LPCTSTR szMassRanges2, double
dDelay, double FAR* pdStartTime, double FAR* pdEndTime, long
nSmoothingType, long nSmoothingValue, VARIANT FAR* pvarChroData,
VARIANT FAR* pvarPeakFlags, long FAR* pnArraySize);
Return Value
1 if successful; otherwise, see Error Codes.
Parameters
nChroType1 A long variable containing the first chromatogram trace
type of interest.
nChroOperator A long variable containing the chromatogram trace
operator.
nChroType2 A long variable containing the second chromatogram trace
type of interest.
szFilter A string containing the formatted scan filter.
szMassRanges1 A string containing the formatted mass ranges for the
first chromatogram trace type.
szMassRanges2 A string containing the formatted mass ranges for the
second chromatogram trace type.
dDelay A double precision variable containing the chromatogram delay
in minutes.
pdStartTime A pointer to a double precision variable containing the
start time of the chromatogram time range to return.
pdEndTime A pointer to a double precision variable containing the end
time of the chromatogram time range to return.
nSmoothingType A long variable containing the type of chromatogram
smoothing to be performed.
nSmoothingValue A long variable containing the chromatogram smoothing
value.
pvarChroData A valid pointer to a VARIANT variable to receive the
chromatogram data.
pvarPeakFlags A valid pointer to a VARIANT variable to receive the
peak flag data.
pnArraySize A valid pointer to a long variable to receive the number
of data peaks returned in the chromatogram array.
pnArraySize A pointer to a long variable to receive the size of the
returned chromatogram array.
Remarks
Returns the requested chromatogram data as an array of double
precision time intensity pairs in pvarChroData. The number of time
intensity pairs is returned in pnArraySize.
The chromatogram trace types and operator values of nChroType1,
nChroOperator, and nChroType2 are dependent on the current controller.
See Chromatogram Type and Chromatogram Operator in the Enumerated
Types section for a list of the valid values for the different
controller types.
The scan filter field is only valid for MS controllers. If no scan
filter is to be provided, the value of szFilter may be NULL or an
empty string. Scan filters must match the Xcalibur scan filter format.
See the topic scan filters format, definition in the Xcalibur online
help for information on how to construct a scan filter.
The dDelay value contains the retention time offset to add to the
returned chromatogram times. The value may be set to 0.0 if no offset
is desired. This value must be 0.0 for MS controllers. It must be
greater than or equal to 0.0 for all other controller types.
The mass ranges are only valid for MS or PDA controllers. For all
other controller types, these fields must be NULL or empty strings.
For MS controllers, the mass ranges must be correctly formatted mass
ranges and are only valid for Mass Range and Base Peak chromatogram
trace types. For PDA controllers, the mass ranges must be correctly
formatted wavelength ranges and are only valid for Wavelength Range
and Spectrum Maximum chromatogram trace types. These values may be
left empty for Base Peak or Spectrum Maximum trace types but must be
specified for Mass Range or Wavelength Range trace types. See the
topic Mass1 (m/z) text box in the Xcalibur online help for information
on how to format mass ranges.
The start and end times, pdStartTime and pdEndTime, may be used to
return a portion of the chromatogram. The start time and end time must
be within the acquisition time range of the current controller which
may be obtained by calling GetStartTime and GetEndTime, respectively.
Alternatively, if the entire chromatogram is to be returned,
pdStartTime and pdEndTime may be set to zero. On return, pdStartTime
and pdEndTime will contain the actual time range of the returned
chromatographic data.
The nSmoothingType variable contains the type of smoothing to perform
on the returned chromatographic data. See Smoothing Type in the
Enumerated Types section for a list of the valid values for
nSmoothingType. The value of nSmoothingValue must be an odd number in
the range of 3 15 if smoothing is desired.
The chromatogram list contents will be returned in a SafeArray
attached to the pvarChroData VARIANT variable. When passed in, the
pvarChroData variable must exist and be initialized to VARIANT type
VT_EMPTY. If the function returns successfully, pvarChroData will be
set to type VT_ARRAY | VT_R8. The format of the chromatogram list
returned will be an array of double precision values in time intensity
pairs in ascending time order (e.g. time 1, intensity 1, time 2,
intensity 2, time 3, intensity 3, etc.)
The pvarPeakFlags variable is currently not used. This variable is
reserved to future use to return flag information, such as saturation,
about each time intensity pair.
On successful return, pnArraySize will contain the number of time
intensity pairs stored in the pvarChroData array.
Example
// example for GetChroData to return the MS TIC trace
typedef struct _datapeak
{
double dTime;
double dIntensity;
} ChroDataPeak;
XRawfileCtrl.SetCurrentController ( 0, 1 ); // first MS controller
VARIANT varChroData;
VariantInit(&varChroData);
VARIANT varPeakFlags;
VariantInit(&varPeakFlags);
long nArraySize = 0;
double dStartTime = 0.0;
double dEndTime = 0.0;
long nRet = XRawfileCtrl.GetChroData ( 1, // TIC trace
0,
0,
NULL,
NULL,
NULL,
0.0,
&dStartTime,
&dEndTime,
0,
0,
&varChroData,
&varPeakFlags,
&nArraySize );
if( nRet != 1 )
{
::MessageBox( NULL, _T(“Error getting chro data.”), _T(“Error”),
MB_OK );
…
}
if( nArraySize )
{
// Get a pointer to the SafeArray
SAFEARRAY FAR* psa = varChroData.parray;
ChroDataPeak* pDataPeaks = NULL;
SafeArrayAccessData( psa, (void**)(&pDataPeaks) );
for( long j=0; j<nArraySize; j++ )
{
double dTime = pDataPeaks[j].dTime;
double dIntensity = pDataPeaks[j].dIntensity;
// Do something with time intensity values
…
}
// Release the data handle
SafeArrayUnaccessData( psa );
}
if(varChroData.vt != VT_EMPTY )
{
SAFEARRAY FAR* psa = varChroData.parray;
varChroData.parray = NULL;
// Delete the SafeArray
SafeArrayDestroy( psa );
}
if(varPeakFlags.vt != VT_EMPTY )
{
SAFEARRAY FAR* psa = varPeakFlags.parray;
varPeakFlags.parray = NULL;
// Delete the SafeArray
SafeArrayDestroy( psa );
> > this stuff covered but it may help end users to have access to it.- Hide quoted text -