Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con una API
Forum - C/C++ - Problema con una API

Avatar
valentino86 (Normal User)
Newbie


Messaggi: 8
Iscritto: 07/04/2009

Segnala al moderatore
Postato alle 17:30
Martedì, 07/04/2009
Ciao a tutti sono nuovissimo del forum e non molto pratico del c++.
Dovrei acquisire dei valori da un accelerometro della Phidget, e lavorare su quei dati in real time, quindi mentre acquisisce dati devo elaborarli contemporaneamente. Il problema è che la API della phidget mi fa entrare in un loop dove il programma aspetta sempre un'accelerazione da rilevare e non fa nient'altro, e quindi non posso lavorare subito sulle variabili ma gli devo dire di non acquisire più accelerazioni. Come si può fare??

Posto il programma dove ho inserito anche la libreria time.h per avere anche un riferimento di tempo, e un file pdf con le API

Codice sorgente - presumibilmente C#

  1. #include "stdafx.h"
  2. #include "phidget21.h"
  3. #include <time.h>
  4.  
  5. //callback that will run if the acceleration changes by more than the Acceleration trigger.
  6. //Index - Index of the axis that is generating the event, Value - the value read by the accelerometer axis
  7. int __stdcall accel_AccelChangeHandler(CPhidgetAccelerometerHandle WGT, void *userptr, int Index, double Value)
  8. {
  9.         clock_t clock();
  10.         printf("Time: %i Axis: %i Accel: %6f\n",clock()/CLOCKS_PER_SEC, Index, Value);
  11.    
  12.         return 0;
  13. }
  14.  
  15. //main entry point to the program
  16. int _tmain(int argc, _TCHAR* argv[])
  17. {
  18.         int result;
  19.         const char *err;
  20.  
  21.         //Declare an accelerometer handle
  22.         CPhidgetAccelerometerHandle accel = 0;
  23.    
  24.         //create the accelerometer object
  25.         CPhidgetAccelerometer_create(&accel);
  26.  
  27.         //Impostando -1 apre il primo dispositivo disponibile
  28.         CPhidget_open((CPhidgetHandle)accel, -1);
  29.  
  30.         //get the program to wait for an accelerometer device to be attached
  31.         printf("Waiting for accelerometer to be attached.... \n\n");
  32.  
  33.         //Aspetta 10 secondi che venga connesso il dispositivo
  34.         if((result = CPhidget_waitForAttachment((CPhidgetHandle)accel, 10000)))
  35.                 {       CPhidget_getErrorDescription(result, &err);
  36.                         printf("Problem waiting for attachment: %s\n", err);
  37.                         //Interruzione, spingere invio per continuare
  38.                         getchar();
  39.                         return 0;}
  40.  
  41.         //Imposta la sensibilità
  42.         CPhidgetAccelerometer_setAccelerationChangeTrigger(accel, 0, 0.500);
  43.         CPhidgetAccelerometer_setAccelerationChangeTrigger(accel, 1, 0.500);
  44.         CPhidgetAccelerometer_setAccelerationChangeTrigger(accel, 2, 0.500);
  45.  
  46.         //Registra un evento se l'accelerazione cambia oltre una certa soglia.
  47.         CPhidgetAccelerometer_set_OnAccelerationChange_Handler(accel, accel_AccelChangeHandler, NULL);
  48.  
  49.         //Interruzione
  50.         getchar();
  51.  
  52.         //Chiude il dispositivo e l'oggetto
  53.         printf("Closing...\n");
  54.         CPhidget_close((CPhidgetHandle)accel);
  55.         CPhidget_delete((CPhidgetHandle)accel);
  56.  
  57.         //Interruzione
  58.         getchar();
  59.  
  60.         return 0;
  61. }


PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 19:08
Martedì, 07/04/2009
Testo quotato

Postato originariamente da valentino86:

Ciao a tutti sono nuovissimo del forum e non molto pratico del c++.
Dovrei acquisire dei valori da un accelerometro della Phidget, e lavorare su quei dati in real time, quindi mentre acquisisce dati devo elaborarli contemporaneamente. Il problema è che la API della phidget mi fa entrare in un loop dove il programma aspetta sempre un'accelerazione da rilevare e non fa nient'altro, e quindi non posso lavorare subito sulle variabili ma gli devo dire di non acquisire più accelerazioni. Come si può fare??

Posto il programma dove ho inserito anche la libreria time.h per avere anche un riferimento di tempo, e un file pdf con le API



probabilmente l'applicazione deve essere multithread, in modo da avere un thread di controllo sempre attivo che termina il programma se si vuole terminare l'acquisizione dei dati...

poi non saprei, c'è da leggere approfonditamente la documentazione di quelle api

PM Quote
Avatar
valentino86 (Normal User)
Newbie


Messaggi: 8
Iscritto: 07/04/2009

Segnala al moderatore
Postato alle 20:12
Martedì, 07/04/2009
qui si trova la API ma non la trovo cosi esaustiva. Praticamente non dice nulla.


PM Quote