void Mindwave::updateMeditation()
{
	_Mtemp = 0; 
	//_MpacketsRead = 0; 
	while(_MpacketsRead < 1000)
	{
		/* Attempt to read a Packet of data from the connection */
		errCode = TG_ReadPackets( _MconnectionId, 1 );
		/* If TG_ReadPackets() was able to read a complete Packet of data... */
		if( errCode != -1 && errCode != -2  ) 
		{
			/* If attention value has been updated by TG_ReadPackets()... */
			if( TG_GetValueStatus(_MconnectionId, TG_DATA_MEDITATION) != 0 ) 
			{
				/* Get and print out the updated attention value */
				_Mtemp = (int)TG_GetValue(_MconnectionId, TG_DATA_MEDITATION);


				if (_Mtemp > 0) {_MMeditation = _Mtemp;
				//printf("%d", _MAttention);
				break;
				}

			}
			/* end "If attention value has been updated..." */
		}
	}
}
int MindwaveModule::getAttention(int connectionID){

    int packetsRead = 0;

    do{
        packetsRead = TG_ReadPackets( connectionID, 1 );
         /* If TG_ReadPackets() was able to read a Packet of data... */
        if( packetsRead == 1 ) {

            /* If the Packet contained a new attention wave value... */

            if( TG_GetValueStatus(connectionID, TG_DATA_ATTENTION) != 0 ) {

                cout << "Attention: " << (int)TG_GetValue(connectionID, TG_DATA_ATTENTION) << endl;
                /* Get and return the new attention value */
                return (int)TG_GetValue(connectionID, TG_DATA_ATTENTION);
            }
        }

        else{
            cout << "No packets to read\n";
        }

    }while( packetsRead > 0 );

    return 0;
}
Beispiel #3
0
int readdata()
{
	/* Attempt to read a Packet of data from the connection */
        errCode = TG_ReadPackets( connectionId, 1 );

		/* If TG_ReadPackets() was able to read a complete Packet of data... */
        if( errCode == 1 ) 
		{
            /* If attention value has been updated by TG_ReadPackets()... */
            if( TG_GetValueStatus(connectionId, TG_DATA_ATTENTION) != 0 ) 
			{
				/* Get and print out the updated attention value */
                att = (int)TG_GetValue(connectionId, TG_DATA_ATTENTION);
				printf( "New ATT value: %d\n", att );
				fprintf( dataFile, "ATT Value: %d\n", att);
                fflush( dataFile );

            } /* end "If attention value has been updated..." */

			/* If blink value has been updated by TG_ReadPackets()... */
            if( TG_GetValueStatus(connectionId, TG_DATA_BLINK_STRENGTH) != 0 ) 
			{
				/* Get and print out the updated attention value */
                blink = (int)TG_GetValue(connectionId, TG_DATA_BLINK_STRENGTH);
				printf( "New BLINK value: %d\n", blink );
				fprintf( dataFile, "BLINK Value: %d\n\n\n", blink);
                fflush( dataFile );

            } /* end "If blink value has been updated..." */


        } /* end "If a Packet of data was read..." */

		//wait();
		return;
}
void Mindwave::updateBlink()
{
	_Mtemp = 0; 
	//_MpacketsRead = 0; 
	while(_MpacketsRead < 1000)
	{
		/* Attempt to read a Packet of data from the connection */
		errCode = TG_ReadPackets( _MconnectionId, 1 );
		/* If TG_ReadPackets() was able to read a complete Packet of data... */
		if( errCode !=-2 && errCode !=-1 ) 
		{
			/* If attention value has been updated by TG_ReadPackets()... */
			if( TG_GetValueStatus(_MconnectionId, TG_DATA_BLINK_STRENGTH) != 0 ) 
			{
				/* Get and print out the updated attention value */
				_Mtemp = (int)TG_GetValue(_MconnectionId, TG_DATA_BLINK_STRENGTH);


				if (_Mtemp > 0) {_MBlink = _Mtemp;
				//printf("%d", _MAttention);
				break;
				}

			}
		}
		else if (errCode == -1)
		{
			// no connection
		}
		else if(errCode == -2)
		{
			//use previous data
			if (_Mtemp > 0) {_MBlink = _Mtemp;
			//printf("%d", _MAttention);
			break;
			}


			/* end "If attention value has been updated..." */
		}
	}
}
/**
 * Program which prints ThinkGear EEG_POWERS values to stdout.
 */
int
main( void ) {

    char *comPortName = NULL;
    int   dllVersion = 0;
    int   connectionId = 0;
    int   packetsRead = 0;
    int   errCode = 0;

    /* Print driver version number */
    dllVersion = TG_GetDriverVersion();
    printf( "ThinkGear DLL version: %d\n", dllVersion );

    /* Get a connection ID handle to ThinkGear */
    connectionId = TG_GetNewConnectionId();
    if( connectionId < 0 ) {
        fprintf( stderr, "ERROR: TG_GetNewConnectionId() returned %d.\n", 
                 connectionId );
        wait();
        exit( EXIT_FAILURE );
    }

    /* Set/open stream (raw bytes) log file for connection */
    errCode = TG_SetStreamLog( connectionId, "streamLog.txt" );
    if( errCode < 0 ) {
        fprintf( stderr, "ERROR: TG_SetStreamLog() returned %d.\n", errCode );
        wait();
        exit( EXIT_FAILURE );
    }

    /* Set/open data (ThinkGear values) log file for connection */
    errCode = TG_SetDataLog( connectionId, "dataLog.txt" );
    if( errCode < 0 ) {
        fprintf( stderr, "ERROR: TG_SetDataLog() returned %d.\n", errCode );
        wait();
        exit( EXIT_FAILURE );
    }

    /* Attempt to connect the connection ID handle to serial port "COM5" */
    comPortName = "\\\\.\\COM3";
    errCode = TG_Connect( connectionId, 
                          comPortName, 
                          TG_BAUD_57600, 
                          TG_STREAM_PACKETS );
    if( errCode < 0 ) {
        fprintf( stderr, "ERROR: TG_Connect() returned %d.\n", errCode );
        wait();
        exit( EXIT_FAILURE );
    }

		//To get eyeblinks, you will need to first call the following function:
		TG_EnableBlinkDetection(connectionId, 1 );

    /* Read 10 ThinkGear Packets from the connection, 1 Packet at a time */
    packetsRead = 0;
    while( 1 ) {

        /* Attempt to read a Packet of data from the connection */
        errCode = TG_ReadPackets( connectionId, 1 );

        /* If TG_ReadPackets() was able to read a complete Packet of data... */
        if( errCode == 1 ) {
            packetsRead++;

            /* If attention value has been updated by TG_ReadPackets()... */
            if( TG_GetValueStatus(connectionId, TG_DATA_ATTENTION) != 0 ) {

                /* Get and print out the updated attention value */
                fprintf( stdout, "New attention value: %d\n",
                         (int)TG_GetValue(connectionId, TG_DATA_ATTENTION) );
                fflush( stdout );

            } /* end "If attention value has been updated..." */

            /* If attention value has been updated by TG_ReadPackets()... */
            if( TG_GetValueStatus(connectionId, TG_DATA_MEDITATION) != 0 ) {

                /* Get and print out the updated attention value */
                fprintf( stdout, "New meditation value: %d\n",
                         (int)TG_GetValue(connectionId, TG_DATA_MEDITATION) );
                fflush( stdout );
                fprintf( stdout, "New blink value: %f\n",
                         TG_GetValue(connectionId, TG_DATA_BLINK_STRENGTH) );
                fflush( stdout );

            } /* end "If attention value has been updated..." */

        } /* end "If a Packet of data was read..." */

    } /* end "Read 10 Packets of data from connection..." */

    /* Clean up */
    TG_FreeConnection( connectionId );

    /* End program */
    wait();
    return( EXIT_SUCCESS );
}
void ThinkgearCommsDriver::update() {
    
    // need to handle connection/reconnection issues
    if(!isReady) {        
        return;
    }
    
    // read each packet individually- use the callback
    int packetsRead = 0;
    while(TG_ReadPackets(connectionId, 1) > 0) {
        packetsRead++;
        if(TG_GetValueStatus(connectionId, TG_DATA_RAW) != 0) {
            float raw = TG_GetValue(connectionId, TG_DATA_RAW);
            callback(TG_DATA_RAW,raw);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_POOR_SIGNAL) != 0) {
            float signal = TG_GetValue(connectionId, TG_DATA_POOR_SIGNAL);
            callback(TG_DATA_POOR_SIGNAL,signal);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_BATTERY) != 0) {
            float battery = TG_GetValue(connectionId, TG_DATA_BATTERY);
            callback(TG_DATA_BATTERY,battery);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_ATTENTION) != 0) {
            float attention = TG_GetValue(connectionId, TG_DATA_ATTENTION);
            callback(TG_DATA_ATTENTION,attention);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_MEDITATION) != 0) {
            float meditation = TG_GetValue(connectionId, TG_DATA_MEDITATION);
            callback(TG_DATA_MEDITATION,meditation);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_DELTA) != 0) {
            float delta = TG_GetValue(connectionId, TG_DATA_DELTA);
            callback(TG_DATA_DELTA,delta);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_THETA) != 0) {
            float theta = TG_GetValue(connectionId, TG_DATA_THETA);
            callback(TG_DATA_THETA,theta);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_ALPHA1) != 0) {
            float alpha1 = TG_GetValue(connectionId, TG_DATA_ALPHA1);
            callback(TG_DATA_ALPHA1,alpha1);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_ALPHA2) != 0) {
            float alpha2 = TG_GetValue(connectionId, TG_DATA_ALPHA2);
            callback(TG_DATA_ALPHA2,alpha2);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_BETA1) != 0) {
            float beta1 = TG_GetValue(connectionId, TG_DATA_BETA1);
            callback(TG_DATA_BETA1,beta1);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_BETA2) != 0) {
            float beta2 = TG_GetValue(connectionId, TG_DATA_BETA2);
            callback(TG_DATA_BETA2,beta2);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_GAMMA1) != 0) {
            float gamma1 = TG_GetValue(connectionId, TG_DATA_GAMMA1);
            callback(TG_DATA_GAMMA1,gamma1);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_GAMMA2) != 0) {
            float gamma2 = TG_GetValue(connectionId, TG_DATA_GAMMA2);
            callback(TG_DATA_GAMMA2,gamma2);
        }
        if(TG_GetValueStatus(connectionId, TG_DATA_BLINK_STRENGTH) != 0) {
            float blinkStrength = TG_GetValue(connectionId, TG_DATA_BLINK_STRENGTH);
            callback(TG_DATA_BLINK_STRENGTH,blinkStrength);
        }

    }

    // no data received.... reconnect
    if(packetsRead == 0) {
        unavailableCount++;
        if(unavailableCount >  noDataRestartCount) {
            ofLogVerbose() << "*** no data available - attempt to reconnect";
            unavailableCount = 0;
            isReady = false;
            
            //connect();
        }
    } else {
        unavailableCount = 0;
    }
}
Beispiel #7
0
void TGManager::TGDataToRefResh()
{
	if( TG_GetValueStatus(m_connectionId, TG_DATA_BATTERY) != 0 ) 
	{
		m_bufData.TG_Battery = TG_GetValue(m_connectionId, TG_DATA_BATTERY);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_POOR_SIGNAL) != 0 ) 
	{
		m_bufData.TG_PoorSignal = TG_GetValue(m_connectionId, TG_DATA_POOR_SIGNAL);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_ATTENTION) != 0 ) 
	{
		m_bufData.TG_Attention = TG_GetValue(m_connectionId, TG_DATA_ATTENTION);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_MEDITATION) != 0 ) 
	{
		m_bufData.TG_Meditation = TG_GetValue(m_connectionId, TG_DATA_MEDITATION);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_RAW) != 0 ) 
	{
		m_bufData.TG_Raw = TG_GetValue(m_connectionId, TG_DATA_RAW);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_DELTA) != 0 ) 
	{
		m_bufData.TG_Delta = TG_GetValue(m_connectionId, TG_DATA_DELTA);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_THETA) != 0 ) 
	{
		m_bufData.TG_Theta = TG_GetValue(m_connectionId, TG_DATA_THETA);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_ALPHA1) != 0 ) 
	{
		m_bufData.TG_Alpha1 = TG_GetValue(m_connectionId, TG_DATA_ALPHA1);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_ALPHA2) != 0 ) 
	{
		m_bufData.TG_Alpha2 = TG_GetValue(m_connectionId, TG_DATA_ALPHA2);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_BETA1) != 0 ) 
	{
		m_bufData.TG_Beta1 = TG_GetValue(m_connectionId, TG_DATA_BETA1);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_BETA2) != 0 ) 
	{
		m_bufData.TG_Beta2 = TG_GetValue(m_connectionId, TG_DATA_BETA2);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_GAMMA1) != 0 ) 
	{
		m_bufData.TG_Gamma1 = TG_GetValue(m_connectionId, TG_DATA_GAMMA1);
	} 

	if( TG_GetValueStatus(m_connectionId, TG_DATA_GAMMA2) != 0 ) 
	{
		m_bufData.TG_Gamma2 = TG_GetValue(m_connectionId, TG_DATA_GAMMA2);
	} 

}
/**
* Program which prints ThinkGear EEG_POWERS values to stdout.
*/
int
	main( void ) {

		// http://andre.stechert.org/urwhatu/2006/01/error_c2143_syn.html
		// It's no surprise that Microsoft's compiler wants the variables at the beginnig of the function: Standard C wants them there.
		// At least, this is what C89 defines. C99 allows variable declarations also in the middle of a function.
		char *comPortName = NULL;
		char *portNumber = (char*)malloc(sizeof(char) * (2 + 1));
		char *comPortBase = NULL;
		int   dllVersion = 0;
		int   connectionId = 0;
		int   packetsRead = 0;
		int   errCode = 0;
		int comPortFound = 0;
		const int MAX_PORT = 16;
		size_t length = 0;
		int i = 0;
		int j = 0;
		int x = 0;
		int y = 0;
		INPUT input;
		POINT cursorPos;

		/* Print driver version number */
		dllVersion = TG_GetDriverVersion();
		printf( "ThinkGear DLL version: %d\n", dllVersion );

		/* Get a connection ID handle to ThinkGear */
		connectionId = TG_GetNewConnectionId();
		if( connectionId < 0 ) {
			fprintf( stderr, "ERROR: TG_GetNewConnectionId() returned %d.\n", 
				connectionId );
			wait();
			exit( EXIT_FAILURE );
		}
		fprintf( stderr, "ThinkGear Connection ID is: %d.\n\n", connectionId );

		/* Set/open stream (raw bytes) log file for connection */
		errCode = TG_SetStreamLog( connectionId, "streamLog.txt" );
		if( errCode < 0 ) {
			fprintf( stderr, "ERROR: TG_SetStreamLog() returned %d.\n", errCode );
			wait();
			exit( EXIT_FAILURE );
		}

		/* Set/open data (ThinkGear values) log file for connection */
		errCode = TG_SetDataLog( connectionId, "dataLog.txt" );
		if( errCode < 0 ) {
			fprintf( stderr, "ERROR: TG_SetDataLog() returned %d.\n", errCode );
			wait();
			exit( EXIT_FAILURE );
		}

		/* Attempt to connect the connection ID handle to serial ports between COM0 and "COM MAX_PORT" */
		fprintf(stdout, "Scanning COM ports 0 to %d...\n", MAX_PORT);
		comPortBase = "\\\\.\\COM";
		length = strlen(comPortBase);
		comPortName = (char *)realloc (comPortName, (length + 5)*sizeof(char)); 

		for(i=0; i <= MAX_PORT && comPortFound == 0; i++)
		{

			// Generating the serial port number			
			portNumber = itoa(i, portNumber, 10);
			fprintf( stderr, portNumber);
			strcpy(comPortName,comPortBase);

			for(j=0; j<strlen(portNumber); j++)
			{
				comPortName[length+j] = portNumber[j];
			}

			comPortName[length+strlen(portNumber)] = '\0';
			// Maybe I could have used something like strcat(comPortBase, portNumber);

			fprintf( stdout, "ok");
			fprintf( stdout, comPortName);

			//comPortName = "\\\\.\\COM11";

			// Trying to connect on the generated serial port number
			fprintf( stdout, "trying to connect on");
			fprintf( stdout, comPortName);
			fprintf( stdout, "\n");
			errCode = TG_Connect( connectionId, 
				comPortName, 
				TG_BAUD_9600, 
				TG_STREAM_PACKETS );
			if( errCode < 0 ) {
				fprintf( stderr, "ERROR: TG_Connect() returned %d.\n", errCode );
				if(errCode == -1) printf("FAILED connection (-1 connectionId does not refer to a valid ThinkGear Connection ID handle.)\n");
				if(errCode == -2) printf("FAILED connection (-2 serialPortName could not be opened as a serial communication port for any reason.)\n");
				if(errCode == -3) printf("FAILED connection (-3 serialBaudrate is not a valid TG_BAUD_* value.)\n");
				if(errCode == -4) printf("FAILED connection (-4 serialDataFormat is not a valid TG_STREAM_* type.)\n");
			} 
			else
			{

				// Trying to read one packet to check the connection.
				printf("Connection available...\n");
				Sleep(10000); // sometimes we need to wait a little...
				errCode = TG_ReadPackets(connectionId, 1);
				if(errCode >= 0)
				{	
					printf("OK\n");
					comPortFound = 1;
				}
				else
				{
					if(errCode == -1) printf("FAILED reading (Invalid connection ID)\n");
					if(errCode == -2) printf("FAILED reading (0 bytes on the stream)\n");
					if(errCode == -3) printf("FAILED reading (I/O error occured)\n");
				}


			}
		} 	/* end: "Attempt to connect the connection ID handle to serial ports between COM0 and "COM16"" */


		// Hopefully the connection should have been established now.
		// Otherwise we stop here.
		if (comPortFound == 1) {
			printf( "connection established");
		} else {
			printf( "connection could not be established");
			wait();
			exit( EXIT_FAILURE ); 
		}

		//To get eyeblinks, you will need to first call the following function:
		TG_EnableBlinkDetection(connectionId, 1 );

		/* Read 10 ThinkGear Packets from the connection, 1 Packet at a time */
		packetsRead = 0;
		while (1){
			//while( packetsRead < 10000 ) {

			/* Attempt to read a Packet of data from the connection */
			errCode = TG_ReadPackets( connectionId, 1 );


			/* If TG_ReadPackets() was able to read a complete Packet of data... */
			if( errCode == 1 ) {
				packetsRead++;
				printf( ".");

				/* If attention value has been updated by TG_ReadPackets()... */
				if( TG_GetValueStatus(connectionId, TG_DATA_ATTENTION) != 0 ) {

					/* Get and print out the updated attention value */
					fprintf( stdout, "New attention value: %f\n",
						TG_GetValue(connectionId, TG_DATA_ATTENTION) );
					fflush( stdout );

				} /* end "If attention value has been updated..." */


				/* If eye blinking value has been updated by TG_ReadPackets()... */
				if( TG_GetValueStatus(connectionId, TG_DATA_BLINK_STRENGTH) != 0 ) {

					/* Get and print out the updated eye blinking value */
					fprintf( stdout, "New eye blinking value: %f\n",
						TG_GetValue(connectionId, TG_DATA_BLINK_STRENGTH) );
					fflush( stdout );

					// Get mouse position: 
					// * http://msdn.microsoft.com/en-us/library/ms648380(v=vs.85).aspx#_win32_Using_the_Keyboard_to_Move_the_Cursor 
					// * http://msdn.microsoft.com/en-us/library/ms648390%28VS.85%29.aspx
					// * http://stackoverflow.com/questions/2396576/how-to-get-the-cursor-position

					GetCursorPos(&cursorPos);
					x = (int) cursorPos.x;
					y = (int) cursorPos.y;
					//x = 10;
					//y = 20;

					// http://stackoverflow.com/questions/4540282/using-mouse-with-sendinput-in-c
					input.type = INPUT_MOUSE;
					input.mi.mouseData=0;
					input.mi.dx = x*(65536.0f/GetSystemMetrics(SM_CXSCREEN));//x being coord in pixels
					input.mi.dy = y*(65536.0f/GetSystemMetrics(SM_CYSCREEN));//y being coord in pixels
					input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP;
					SendInput(1,&input,sizeof(input));

				} /* end "If eye blinking value has been updated..." */



			} /* end "If a Packet of data was read..." */

			// Posted by Friedemann Wolpert on July 04, 2012 @ 11:45 PM
			// Regarding your 100% CPU Problem
			// http://support.neurosky.com/discussions/mindwave/916-can-the-neurosky-mindwave-be-used-to-emulate-mouse-clicks-for-somebody-using-computers-all-day-long#comment_17102761
			if( errCode == 0 ) {
				printf( "z");
				Sleep(200);   // use #include Windows.h  
			}


		} /* end "Read 10 Packets of data from connection..." */

		/* Clean up */
		TG_FreeConnection( connectionId );

		/* End program */
		wait();
		return( EXIT_SUCCESS );
}
/**
 * Program which prints ThinkGear Raw Wave Values to stdout.
 */
int
main( void ) {

    char *comPortName  = NULL;
    int   dllVersion   = 0;
    int   connectionId = 0;
    int   packetsRead  = 0;
    int   errCode      = 0;

    double secondsToRun = 0;
    time_t startTime    = 0;
    time_t currTime     = 0;
    char  *currTimeStr  = NULL;

    /* Print driver version number */
    dllVersion = TG_GetDriverVersion();
    printf( "ThinkGear DLL version: %d\n", dllVersion );

    /* Get a connection ID handle to ThinkGear */
    connectionId = TG_GetNewConnectionId();
    if( connectionId < 0 ) {
        fprintf( stderr, "ERROR: TG_GetNewConnectionId() returned %d.\n", 
                 connectionId );
        wait();
        exit( EXIT_FAILURE );
    }

    /* Set/open stream (raw bytes) log file for connection */
    errCode = TG_SetStreamLog( connectionId, "streamLog.txt" );
    if( errCode < 0 ) {
        fprintf( stderr, "ERROR: TG_SetStreamLog() returned %d.\n", errCode );
        wait();
        exit( EXIT_FAILURE );
    }

    /* Set/open data (ThinkGear values) log file for connection */
    errCode = TG_SetDataLog( connectionId, "dataLog.txt" );
    if( errCode < 0 ) {
        fprintf( stderr, "ERROR: TG_SetDataLog() returned %d.\n", errCode );
        wait();
        exit( EXIT_FAILURE );
    }

    /* Attempt to connect the connection ID handle to serial port "COM5" */
    /* NOTE: On Windows, COM10 and higher must be preceded by \\.\, as in
     *       "\\\\.\\COM12" (must escape backslashes in strings).  COM9
     *       and lower do not require the \\.\, but are allowed to include
     *       them.  On Mac OS X, COM ports are named like 
     *       "/dev/tty.MindSet-DevB-1".
     */
    comPortName = "\\\\.\\COM5";
    errCode = TG_Connect( connectionId, 
                          comPortName, 
                          TG_BAUD_57600, 
                          TG_STREAM_PACKETS );
    if( errCode < 0 ) {
        fprintf( stderr, "ERROR: TG_Connect() returned %d.\n", errCode );
        wait();
        exit( EXIT_FAILURE );
    }

    /* Keep reading ThinkGear Packets from the connection for 5 seconds... */
    secondsToRun = 5;
    startTime = time( NULL );
    while( difftime(time(NULL), startTime) < secondsToRun ) {

        /* Read all currently available Packets, one at a time... */
        do {

            /* Read a single Packet from the connection */
            packetsRead = TG_ReadPackets( connectionId, 1 );

            /* If TG_ReadPackets() was able to read a Packet of data... */
            if( packetsRead == 1 ) {

                /* If the Packet containted a new raw wave value... */
                if( TG_GetValueStatus(connectionId, TG_DATA_RAW) != 0 ) {

                    /* Get the current time as a string */
                    currTime = time( NULL );
        			currTimeStr = ctime( &currTime );

                    /* Get and print out the new raw value */
                    fprintf( stdout, "%s: raw: %d\n", currTimeStr,
                             (int)TG_GetValue(connectionId, TG_DATA_RAW) );
                    fflush( stdout );

                } /* end "If Packet contained a raw wave value..." */

            } /* end "If TG_ReadPackets() was able to read a Packet..." */

        } while( packetsRead > 0 ); /* Keep looping until all Packets read */

    } /* end "Keep reading ThinkGear Packets for 5 seconds..." */

    /* Clean up */
    TG_FreeConnection( connectionId );

    /* End program */
    wait();
    return( EXIT_SUCCESS );
}
Beispiel #10
0
/**
 * Program which prints ThinkGear Raw Wave Values to stdout.
 */
int
main( void ) {
    
    char *comPortName  = NULL;
    int   dllVersion   = 0;
    int   connectionId = 0;
    int   packetsRead  = 0;
    int   errCode      = 0;
    
    double secondsToRun = 0;
    time_t startTime    = 0;
    time_t currTime     = 0;
    char  *currTimeStr  = NULL;

	FILE* attention;
	FILE* bufferState=fopen("state.txt","w+");
	FILE* raw;
	FILE* alpha1;
	FILE* alpha2;
	FILE* beta1;
	FILE* beta2;
	FILE* delta;
	FILE* theta;
	FILE* gamma1;
	FILE* gamma2;
    
    /* Print driver version number */
    dllVersion = TG_GetDriverVersion();
    printf( "ThinkGear DLL version: %d\n", dllVersion );
	fwrite("1",sizeof(char),1,bufferState);
	fclose(bufferState);
    /* Get a connection ID handle to ThinkGear */
    connectionId = TG_GetNewConnectionId();
    if( connectionId < 0 ) {
        fprintf( stderr, "ERROR: TG_GetNewConnectionId() returned %d.\n",
                connectionId );
        wait2();
        exit( EXIT_FAILURE );
    }
    
    /* Set/open stream (raw bytes) log file for connection */
    errCode = TG_SetStreamLog( connectionId, "streamLog.txt" );
    if( errCode < 0 ) {
        fprintf( stderr, "ERROR: TG_SetStreamLog() returned %d.\n", errCode );
       wait2();
        exit( EXIT_FAILURE );
    }
    
    /* Set/open data (ThinkGear values) log file for connection */
    errCode = TG_SetDataLog( connectionId, "dataLog.txt" );
    if( errCode < 0 ) {
        fprintf( stderr, "ERROR: TG_SetDataLog() returned %d.\n", errCode );
        wait2();
        exit( EXIT_FAILURE );
    }
    
    /* Attempt to connect the connection ID handle to serial port "COM5" */
    /* NOTE: On Windows, COM10 and higher must be preceded by \\.\, as in
     *       "\\\\.\\COM12" (must escape backslashes in strings).  COM9
     *       and lower do not require the \\.\, but are allowed to include
     *       them.  On Mac OS X, COM ports are named like
     *       "/dev/tty.MindSet-DevB-1".
     */
    comPortName = "\\\\.\\COM3";
    errCode = TG_Connect( connectionId,
                         comPortName,
                         TG_BAUD_57600,
                         TG_STREAM_PACKETS );
    if( errCode < 0 ) {
        fprintf( stderr, "ERROR: TG_Connect() returned %d.\n", errCode );
        wait2();
        exit( EXIT_FAILURE );
    }
   

    /* Keep reading ThinkGear Packets from the connection for 5 seconds... */
    secondsToRun = 5;
    startTime = time( NULL );
	while(1){
		int i=0;
		attention=fopen("attention.txt","w+");
		raw=fopen("raw.txt","w+");
        alpha1=fopen("alpha1.txt","w+");
		alpha2=fopen("alpha2.txt","w+");
		beta1=fopen("beta1.txt","w+");
		beta2=fopen("beta2.txt","w+");
		delta=fopen("delta.txt","w+");
		theta=fopen("theta.txt","w+");
		gamma1=fopen("gamma1.txt","w+");
		gamma2=fopen("gamma2.txt","w+");
		
    while(i<50){// difftime(time(NULL), startTime) < secondsToRun ) {
		
        /* Read all currently available Packets, one at a time... */ 
        do {
            //printf("%d\n",i);
            /* Read a single Packet from the connection */
            packetsRead = TG_ReadPackets( connectionId, 1 );
            
            /* If TG_ReadPackets() was able to read a Packet of data... */
            if( packetsRead == 1 ) {
                
                /* If the Packet containted a new raw wave value... */
                if( TG_GetValueStatus(connectionId, TG_DATA_RAW) != 0 ) {
                    
                    /* Get the current time as a string */
                    currTime = time( NULL );
        			currTimeStr = ctime( &currTime );
					//int check;
					//check= (int)TG_GetValue(connectionId,TG_DATA_POOR_SIGNAL);
					if(TG_GetValue(connectionId,TG_DATA_POOR_SIGNAL)> 90)
					{
						printf("%d\n",(int)TG_GetValue(connectionId,TG_DATA_POOR_SIGNAL));
						fprintf(raw,FORMAT,0);
						fprintf(alpha1,FORMAT,0);
						fprintf(alpha2,FORMAT,0);
						fprintf(beta1,FORMAT,0);
						fprintf(beta2,FORMAT,0);
						fprintf(delta,FORMAT,0);
						fprintf(gamma1,FORMAT,0);
						fprintf(gamma2,FORMAT,0);
						fprintf(theta,FORMAT,0);
						fprintf(attention,FORMAT,0);
					}
					else
					{
						fprintf(raw,FORMAT,TG_GetValue(connectionId,TG_DATA_RAW));
						fprintf(alpha1,FORMAT,(int)TG_GetValue(connectionId,TG_DATA_ALPHA1));
						fprintf(alpha2,FORMAT,(int)TG_GetValue(connectionId,TG_DATA_ALPHA2));
						fprintf(beta1,FORMAT,(int)TG_GetValue(connectionId,TG_DATA_BETA1));
						fprintf(beta2,FORMAT,(int)TG_GetValue(connectionId,TG_DATA_BETA2));
						fprintf(delta,FORMAT,(int)TG_GetValue(connectionId,TG_DATA_DELTA));
						fprintf(gamma1,FORMAT,(int)TG_GetValue(connectionId,TG_DATA_GAMMA1));
						fprintf(gamma2,FORMAT,(int)TG_GetValue(connectionId,TG_DATA_GAMMA2));
						fprintf(theta,FORMAT,(int)TG_GetValue(connectionId,TG_DATA_THETA));
						fprintf(attention,FORMAT,(int)TG_GetValue(connectionId,TG_DATA_ATTENTION));
					}
					//printf(stdout,FORMAT,TG_GetValue(connectionId,TG_DATA_THETA));
                    /* Get and print out the new raw value */
                    //fprintf( stdout, "%s: raw: %d\n", currTimeStr,
                          //  (int)TG_GetValue(connectionId, TG_DATA_RAW) );
                    //fflush( stdout );
                      i++;
                } /* end "If Packet contained a raw wave value..." */
                
            } /* end "If TG_ReadPackets() was able to read a Packet..." */
          
        } while( packetsRead > 0 ); /* Keep looping until all Packets read */
    } /* end "Keep reading ThinkGear Packets for 5 seconds..." */
	fclose(raw);
	fclose(alpha1);
	fclose(alpha2);
	fclose(beta1);
	fclose(beta2);
	fclose(delta);
	fclose(theta);
	fclose(gamma1);
	fclose(gamma2);
	fclose(attention);
	bufferState=fopen("state.txt","w");
	fwrite("0",sizeof(char),1,bufferState);
	fclose(bufferState);
	wait();
	//printf("check\n");
	//fflush(stdout);
	/*bufferState=fopen("state.txt","w+");
	fprintf(bufferState,"%c","0");
	fclose(bufferState);*/
	}
    /* Clean up */
    TG_FreeConnection( connectionId );
    
    /* End program */
    //wait();
    return( EXIT_SUCCESS );
}