Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Visual C++
Forum - C# / VB.NET - Visual C++

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
strovinati (Normal User)
Newbie


Messaggi: 4
Iscritto: 04/11/2009

Segnala al moderatore
Postato alle 17:01
Mercoledì, 04/11/2009
Salve ragazzi. Premetto che non sono un mostro in programmazionee mi scuso anticipatamente per la mia ignoranza.
Il problema è il seguente:
Devo sviluppare un tool in visual c++ che data una funzione selezionata sull'oscilloscopio mi acquisisca e memorizzi i campioni della forma d'onda. Vorrei sapere gentilmente se esiste qualche funzione che mi permetta di far ciò.
Grazie anticipatamente
  

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:31
Mercoledì, 04/11/2009
Non credo che i programmatori del framework siano stati così lungimiranti da inserire una classe per questo scopo. Non conosco librerie al riguardo. E non so cosa usi per collegare l'oscilloscopio al computer.
Qualche dettaglio in più, magari...


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 18:21
Mercoledì, 04/11/2009
tanto per intenderci.....per Visual C++ intendi C++/CLI oppure C++ standard?
perché se è come penso(cioè ti colleghi all'oscilloscopio con la seriale) usando il .NET è moooolto più facile


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
strovinati (Normal User)
Newbie


Messaggi: 4
Iscritto: 04/11/2009

Segnala al moderatore
Postato alle 10:40
Venerdì, 06/11/2009
Inizio col ringraziarvi per la considerazione.
Io uso il C++ di visual studio, e mi collego all'oscilloscopio lecroy. Sono riuscito ad acquisire campioni mediante la funzione GetScaledWaveform che mi ritorna un array di campioni.
La domanda è la seguente: come faccio a memorizzarli senza esser sicuro di non perderne nessuno?
Grazie Grazie

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1816
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 15:39
Venerdì, 06/11/2009
scusa la domanda strovinati.

Che lib usi?
l'array di ritorno di che tipo è?

magari potresti mostrarci qualche porzione del codice?
senza uno straccio di informazione e impossibile aiutarti.


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 20:45
Venerdì, 06/11/2009
Basta scriverli in un file wave. Ho scritto una classe apposita per gestire i wave, che supporta un metodo per aggiungere direttamente campioni all'onda:
http://www.pierotofy.it/pages/sorgenti/browse/18027/
Il metodo accetta un array di array di interi, dato che ci possono essere più canali.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
strovinati (Normal User)
Newbie


Messaggi: 4
Iscritto: 04/11/2009

Segnala al moderatore
Postato alle 16:39
Sabato, 07/11/2009
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à. ;)

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:40
Domenica, 08/11/2009
Mi pare strano che tu non abbia mai sentito (gioco di parole) dei file wave, dato che sono il formato base e più immediato per memorizzare i suoni. Per di più hai a che fare con le onde, quindi mi pare ancora più strano. Comunque:
http://it.wikipedia.org/wiki/WAV

Mai sei sicuro di star usando Visual C++ .NET? Perchè in caso contrario non potresti usare la mia libreria, e avresti anche sbagliato sezione.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
strovinati (Normal User)
Newbie


Messaggi: 4
Iscritto: 04/11/2009

Segnala al moderatore
Postato alle 18:00
Domenica, 08/11/2009
Si in effetti li conosco ma non avevo pensato ai file audio che si usano di solito.

Comunque si sto usando c++, il tuo link invece mi manda a tutti listati di codice in visual basic.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo