Ecco il codice con cui prendo i campioni dall'oscilloscopio:
CActiveDSO dso;
RECT dummyRect;
dso.Create(_T("LeCroy.ActiveDSOCtrl.1"
, _T("ActiveDSOTest"
, 0, dummyRect, this, 0);
// connect to the DSO
dso.MakeConnection(_T("IP: 172.25.1.2"
);
dso.SetRemoteLocal(1);
// retrieve a binary waveform from the DSO (retrieves an array of single-precision floating point values.)
COleVariant waveform;
waveform.Attach(dso.GetScaledWaveform(_T("F1"
, MAX_POINTS, 0));
// transfer each point into the array 'waveData'
long index = 0;
long lowerBounds = 0;
long upperBounds = 0;
float data;
SafeArrayGetLBound(waveform.parray, 1, &lowerBounds);
SafeArrayGetUBound(waveform.parray, 1, &upperBounds);
for(index = lowerBounds; index <= upperBounds; ++index)
{
SafeArrayGetElement(waveform.parray, &index, &data);
// store each element in a global array
waveData[index] = data;
}
InvalidateRect(NULL, 1);
// show any error that may have occurred
if(dso.GetErrorFlag())
AfxMessageBox(dso.GetErrorString());
Il problema è che così leggo solo i campioni visualizzati sullo schermo dell'oscilloscopio in quel momento. Ho settato un timer di 5 secondi così da richiamare questa funzione periodicamente, ma mi è stato chiesto di essere sicuro di non perdere nessun campione.
Totem mi spieghi cosa sono i file wave? Dal nome sebra prorpio il tipo di file che serve a me, me non ne ho mai sentito parlare.
Grazie a tutti della disponibilità.