Matlab Code to Read Eyeblink using Mindwave Mobile

Overall rating
Eye Blink Strength

ThinkGear™ is the technology inside every NeuroSky product or partner product that enables a device to interface with the wearers’ brainwaves.The ThinkGear Connector (TGC) runs as a background process on your computer and is responsible for directing headset data from the serial port to an open network socket. It includes the thinkgear module and eeg  sensor that touches the forehead (fp1 of the electrode postion recommended by 10/20 electrode system),  and the reference points located on the ear clip. Thinkgear module(TGAM1)  contains the onboard chip that processes all of the data and provides this data to software and applications in digital form.It is available on both Windows and Macintosh, any language or framework that contains a socket library should be able to communicate with it. Both the raw brainwaves and the eSense Meters (Attention and Meditation) and eyeblink  are calculated on the ThinkGear chip.

This unsigned one byte value reports the intensity of the user's most recent eye blink. Its value ranges from 1 to 255 and it is reported whenever an eye blink is detected. The value indicates the relative intensity of the blink, and has no units.


  Matlab code to read Eyeblink using Mindwave mobile



    %Clear Screen


    %Clear Variables

    clear all;

    %Close figures

    close all;



    %Preallocate buffer

    data_blink = zeros(1,256);   


    %Comport Selection

    portnum1 = 7; 

    %COM Port #

    comPortName1 = sprintf('\\\\.\\COM%d', portnum1);



    % Baud rate for use with TG_Connect() and TG_SetBaudrate().

    TG_BAUD_115200  =   115200;


    % Data format for use with TG_Connect() and TG_SetDataFormat().

    TG_STREAM_PACKETS =     0;

    % Data type that can be requested from TG_GetValue().




    %load thinkgear dll



    %To display in Command Window

    fprintf('Thinkgear.dll loaded\n');



    %get dll version

    dllVersion = calllib('Thinkgear', 'TG_GetDriverVersion');


    %To display in command window

    fprintf('ThinkGear DLL version: %d\n', dllVersion );


    % Get a connection ID handle to ThinkGear

    connectionId1 = calllib('Thinkgear', 'TG_GetNewConnectionId');

    if ( connectionId1 < 0 )

        error( sprintf( 'ERROR: TG_GetNewConnectionId() returned %d.\n', connectionId1 ) );




    % Attempt to connect the connection ID handle to serial port "COM3"

    errCode = calllib('Thinkgear', 'TG_Connect',  connectionId1,comPortName1,TG_BAUD_115200,TG_STREAM_PACKETS );

    if ( errCode < 0 )

        error( sprintf( 'ERROR: TG_Connect() returned %d.\n', errCode ) );



    fprintf( 'Connected.  Reading Packets...\n' );









    %To display in Command Window


    disp('Reading Brainwaves');



    while i < 20

        if (calllib('Thinkgear','TG_ReadPackets',connectionId1,1) == 1)   %if a packet was read...

            if (calllib('Thinkgear','TG_GetValueStatus',connectionId1,TG_DATA_BLINK_STRENGTH) ~= 0)

                j = j + 1;

                i = i + 1;

                %Read attention Valus from thinkgear packets

                data_blink(j) = calllib('Thinkgear','TG_GetValue',connectionId1,TG_DATA_BLINK_STRENGTH );

                %To display in Command Window


                %Plot Graph



                title('Blink Strength');

                %Delay to display graph


                close all;





    %To display in Command Window

    disp('Loop Completed')

    %Release the comm port

    calllib('Thinkgear', 'TG_FreeConnection', connectionId1 );


Join the World's Largest Technical Community

we respect your privacy.