예제 #1
0
        private void _initDriver()
        {
            float errCode = 0;

            NativeThinkgear thinkgear = new NativeThinkgear();

            /* Print driver version number */
            lb_driverVersion.Text      = NativeThinkgear.TG_GetVersion().ToString();
            lb_driverVersion.ForeColor = Color.DarkGreen;

            /* Get a connection ID handle to ThinkGear */
            connectionID   = NativeThinkgear.TG_GetNewConnectionId();
            lb_connID.Text = connectionID.ToString();


            if (connectionID < 0)
            {
                lb_driverVersion.ForeColor = Color.DarkRed;
                return;
            }
            else
            {
                lb_connID.ForeColor = Color.DarkGreen;
            }

            if (errCode < 0)
            {
                lb_streamLog.Text      = errCode.ToString();
                lb_streamLog.ForeColor = Color.DarkRed;
                return;
            }
            else
            {
                lb_streamLog.ForeColor = Color.DarkGreen;
                lb_streamLog.Text      = "OK";
            }

            /* Set/open data (ThinkGear values) log file for connection */
            if (errCode < 0)
            {
                lb_dataLog.Text        = errCode.ToString();
                lb_streamLog.ForeColor = Color.DarkRed;
                return;
            }
            else
            {
                lb_dataLog.ForeColor = Color.DarkGreen;
                lb_dataLog.Text      = "OK";
            }
        }
예제 #2
0
 //Get a connection ID handle to ThinkGear
 private bool AttemptConnect()
 {
     connectionId = 0;
     connectionId = NativeThinkgear.TG_GetNewConnectionId();
     if (connectionId < 0)
     {
         Debug.Log("Error: TG_GetNewConnectionId() returned Connection ID of: " + connectionId);
         return(false);
     }
     else
     {
         Debug.Log("Connection ID: " + connectionId);
         return(true);
     }
 }
예제 #3
0
 public void GetData_Debug()
 {
     poorSignal     = NativeThinkgear.TG_GetValue(connectionID, 1);
     attention      = NativeThinkgear.TG_GetValue(connectionID, 2);
     meditation     = NativeThinkgear.TG_GetValue(connectionID, 3);
     raw            = NativeThinkgear.TG_GetValue(connectionID, 4);
     delta          = NativeThinkgear.TG_GetValue(connectionID, 5);
     theta          = NativeThinkgear.TG_GetValue(connectionID, 6);
     alpha1         = NativeThinkgear.TG_GetValue(connectionID, 7);
     alpha2         = NativeThinkgear.TG_GetValue(connectionID, 8);
     beta1          = NativeThinkgear.TG_GetValue(connectionID, 9);
     beta2          = NativeThinkgear.TG_GetValue(connectionID, 10);
     gamma1         = NativeThinkgear.TG_GetValue(connectionID, 11);
     gamma2         = NativeThinkgear.TG_GetValue(connectionID, 12);
     dataFilterType = NativeThinkgear.TG_GetValue(connectionID, 49);
 }
예제 #4
0
 public List <float> GetData_All()
 {
     dataList.Clear();
     for (int i = 1; i < 14; i++)
     {
         if (i != 13)
         {
             dataList.Add(NativeThinkgear.TG_GetValue(connectionID, i));
         }
         else
         {
             dataList.Add(NativeThinkgear.TG_GetValue(connectionID, 49));
         }
     }
     return(dataList);
 }
예제 #5
0
    //Gets Value status and value
    private int GetValue(int cID)
    {
        int data_type   = (int)NativeThinkgear.DataType.TG_DATA_RAW;
        int valueStatus = NativeThinkgear.TG_GetValueStatus(connectionId, data_type);

        Debug.Log("TG_GetValueStatus returned: " + valueStatus);
        if (NativeThinkgear.TG_GetValueStatus(cID, data_type) != 0)
        {
            string outMessage = "Raw: " + NativeThinkgear.TG_GetValue(connectionId, data_type);
            Debug.Log("Raw: " + outMessage);
        }
        else
        {
            Debug.Log("Could not get value status");
        }
        return(valueStatus);
    }
예제 #6
0
 private void button1_Click(object sender, EventArgs e)
 {
     if (button1.Text.Equals("Disconnect"))
     {
         if (MessageBox.Show("您將中斷與裝置的連線,確定嗎?", "My Application",
                             MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK)
         {
             NativeThinkgear.TG_Disconnect(ConnectionID);
             NativeThinkgear.TG_FreeConnection(ConnectionID);
             label1.Text  = ("disconnected!");
             button1.Text = ("Connect");
         }
     }
     else if (button1.Text.Equals("Connect"))
     {
         if (MessageBox.Show("您將開始與裝置的連線,確定嗎?", "My Application",
                             MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK)
         {
             String comPortName = "\\\\.\\COM4";
             ConnectionID = NativeThinkgear.TG_GetNewConnectionId();
             int tem1 = NativeThinkgear.TG_SetStreamLog(ConnectionID, "myStreamLog.txt");
             int tem2 = NativeThinkgear.TG_SetDataLog(ConnectionID, "myDataLog.txt");
             Console.WriteLine(tem1);
             Console.WriteLine(tem2);
             errCode = NativeThinkgear.TG_Connect(ConnectionID,
                                                  comPortName,
                                                  NativeThinkgear.Baudrate.TG_BAUD_57600,
                                                  NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
             if (errCode < 0)
             {
                 Console.WriteLine("ERROR: TG_Connect() returned: " + errCode);
                 label1.Text = ("ERROR: TG_Connect() returned: " + errCode);
                 ifConnect   = false;
                 startDraw   = false;
             }
             else if (errCode == 0)
             {
                 label1.Text = ("Connect success!!!");
                 Console.WriteLine(ConnectionID);
                 button1.Text = ("Disconnect");
                 ifConnect    = true;
             }
         }
     }
 }
예제 #7
0
        public void DisconnectDriver(int connectionId)
        {
            NativeThinkgear.TG_SetDataLog(connectionId, "./tmp/tmp.log");

            // 主进程暂停1秒
            Thread.Sleep(2000);

            NativeThinkgear.TG_Disconnect(connectionId);

            /* Clean up */
            NativeThinkgear.TG_FreeConnection(connectionId);

            isOff = true;

            foreach (IDriverConnectListener dc in arr)
            {
                dc.AfterDriverDisconnected();
            }
        }
예제 #8
0
        private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap b              = (Bitmap)eventArgs.Frame.Clone();
            PointF firstLocation  = new PointF(10f, 25f);
            PointF secondLocation = new PointF(10f, 50f);

            using (Graphics graphics = Graphics.FromImage(b))
            {
                using (Font arialFont = new Font("Arial", 24))
                {
                    float value = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_ATTENTION);
                    graphics.DrawString("Stopień skupienia: " + value, arialFont, System.Drawing.Brushes.Blue, firstLocation);

                    float value2 = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_MEDITATION);
                    graphics.DrawString("Stopień relaksu: " + value2, arialFont, System.Drawing.Brushes.Blue, secondLocation);
                }
            }

            if (_recording)
            {
                if (_firstFrameTime != null)
                {
                    _writer.WriteVideoFrame(b, DateTime.Now - _firstFrameTime.Value);
                }
                else
                {
                    _writer.WriteVideoFrame(b);
                    _firstFrameTime = DateTime.Now;
                }
            }
            using (var bitmap = (Bitmap)eventArgs.Frame.Clone())
            {
                Image = b.ToBitmapImage();
            }

            Image.Freeze();
            Dispatcher.BeginInvoke(new ThreadStart(delegate { video.Source = Image; }));

            StopCamera();
            StopRecording();
            StopMindWaveConnection();
        }
예제 #9
0
    //Connect to TG Compatible headset
    private bool ConnectToHeadset(int cID, string cPN)
    {
        int errCode = 0;

        errCode = NativeThinkgear.TG_Connect(cID, cPN, NativeThinkgear.Baudrate.TG_BAUD_57600, NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
        if (errCode < 0)
        {
            Debug.Log("ERROR: TG_Connect() returned: " + errCode);
            //Cycle through some COM ports
            if (errCode == -2)
            {
                Debug.Log("Attempting other COM Ports...");

                int comNum = 0;
                while (comNum <= 20 && errCode == -2)
                {
                    cPN     = "\\\\.\\COM" + comNum;
                    errCode = NativeThinkgear.TG_Connect(cID, cPN, NativeThinkgear.Baudrate.TG_BAUD_57600, NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
                    comNum++;
                    Debug.Log("COM port attempted");
                }
                if (errCode != -2)
                {
                    Debug.Log("Successful COM port: " + comNum);
                    return(true);
                }
                else
                {
                    Debug.Log("Could not Use any COM ports");
                }
            }
            return(false);
        }
        else
        {
            Debug.Log("Successfully connected to a headset on cID: " + cID);
            return(true);
        }
    }
예제 #10
0
        private void StartMindWaveConnection()
        {
            var a = NativeThinkgear.TG_GetVersion();

            connectionID = NativeThinkgear.TG_GetNewConnectionId();

            int errCode;

            for (int i = 1; i < 10; i++)
            {
                errCode = NativeThinkgear.TG_Connect(connectionID,
                                                     "\\\\.\\COM" + i,
                                                     NativeThinkgear.Baudrate.TG_BAUD_57600,
                                                     NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);

                if (errCode == 0)
                {
                    break;
                }
            }

            errCode = NativeThinkgear.TG_ReadPackets(connectionID, 1);
            errCode = NativeThinkgear.TG_EnableAutoRead(connectionID, 1);
        }
예제 #11
0
        private void button2_Click(object sender, EventArgs e)
        {
            startDraw = true;
            if (ifConnect == true && comboBox1.Text != "")
            {
                int packetsRead = 0;
                while (packetsRead < 2000)
                {
                    /* Attempt to read a Packet of data from the connection */
                    errCode = NativeThinkgear.TG_ReadPackets(ConnectionID, 1);
                    Console.WriteLine("TG_ReadPackets returned: " + errCode + "   " + packetsRead);
                    /* 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 (NativeThinkgear.TG_GetValueStatus(ConnectionID, NativeThinkgear.DataType.TG_DATA_RAW) != 0)
                        {
                            float temp = NativeThinkgear.TG_GetValue(ConnectionID, NativeThinkgear.DataType.TG_DATA_RAW);
                            rawList.Add(temp);
                            /* Get and print out the updated attention value */
                            PrintRaw(temp);
                            label1.Text = "New RAW value: : " + (int)temp + DateTime.Now.ToShortDateString() + "/" + DateTime.Now.TimeOfDay;
                            StringList.Add(label1.Text);
                            Thread.Sleep(500);
                        } /* end "If attention value has been updated..." */
                    }     /* end "If a Packet of data was read..." */
                }         /* end "Read 10 Packets of data from connection..." */
                panel1.Invalidate();
            }
            else
            {
                label1.Text = "you have to connect first!";
            }
        }
예제 #12
0
        private void AutoGetValue()
        {
            Console.Write("讀取開始");
            int autoGet = NativeThinkgear.TG_EnableAutoRead(ConnectionID, 1);

            NativeThinkgear.MWM15_setFilterType(ConnectionID, NativeThinkgear.FilterType.MWM15_FILTER_TYPE_60HZ);
            int packetsRead = 0;

            Task t = Task.Run(() => {
                while (packetsRead < 20000) // it use as time
                {
                    /* If raw value has been updated ... */
                    if (NativeThinkgear.TG_GetValueStatus(ConnectionID, NativeThinkgear.DataType.TG_DATA_RAW) != 0)
                    {
                        if (NativeThinkgear.TG_GetValueStatus(ConnectionID, NativeThinkgear.DataType.MWM15_DATA_FILTER_TYPE) != 0)
                        {
                            Console.WriteLine(" Find Filter Type:  " + NativeThinkgear.TG_GetValue(ConnectionID, NativeThinkgear.DataType.MWM15_DATA_FILTER_TYPE) + " index: " + packetsRead);
                            break;
                        }
                        float TEMP = NativeThinkgear.TG_GetValue(ConnectionID, NativeThinkgear.DataType.TG_DATA_RAW);
                        /* Get and print out the updated raw value */
                        rawList.Add(TEMP);
                        PrintRaw(TEMP);
                        packetsRead++;
                        panel1.Invalidate();
                        if (packetsRead == 800 || packetsRead == 1600)  // call twice interval than 1s (512)
                        {
                            errCode = NativeThinkgear.MWM15_getFilterType(ConnectionID);
                            Console.WriteLine(" MWM15_getFilterType called: " + errCode);
                        }
                    }
                }
            });

            t.Wait();
        }
        private void connect()
        {
            // Disconnect any existing connection
            if (connectionState == CONNECTED)
            {
                NativeThinkgear.TG_Disconnect(connectionId);
                this.connectionState = AWAITING_CONNECTION;
            }

            //// Obtain new connection ID
            //this.connectionId = NativeThinkgear.TG_GetNewConnectionId();

            // Com port may change if device is reconnected to windows
            this.comPort = "";
            //this.deviceId = "";

            // Search for the device ID of the mindwave mobile
            // If device is not found, continue to search in the background
            updateConnectionInfo("Locating device ID...");
            while (string.IsNullOrEmpty(deviceId))
            {
                this.deviceId = getDeviceId();

                // pause thread inbetween to save processing
                if (String.IsNullOrEmpty(deviceId))
                {
                    Thread.Sleep(500);
                }
            }

            // Search available com ports for device
            // if device is not found, continue to search in the background
            updateConnectionInfo("Locating serial port...");
            while (string.IsNullOrEmpty(comPort))
            {
                comPort = locateComPortOnOperatingSystem();

                // pause thread inbetween attempts to save processing
                if (string.IsNullOrEmpty(comPort))
                {
                    Thread.Sleep(500);
                }
            }

            // Error code 0 indicates a successful connection
            updateConnectionInfo("Attempting connection...");
            TG_ErrorCode = NativeThinkgear.TG_Connect(connectionId,
                                                      comPort,
                                                      NativeThinkgear.Baudrate.TG_BAUD_57600,
                                                      NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
            if (TG_ErrorCode < 0)
            {
                connectionState = AWAITING_CONNECTION;
                updateConnectionInfo("Connection failed");
            }
            else
            {
                connectionState = CONNECTED;
                updateConnectionInfo("Connected");
            }

            OnConnectionStatusChanged();
            OnConnectionFinished();
        }
예제 #14
0
 public float GetData_Specific(int index)
 {
     return(NativeThinkgear.TG_GetValue(connectionID, index));
 }
예제 #15
0
        public static void CollectData(string userId, int numTrials, int trialStatus, string savePath, int sampleRate, bool toFile)
        {
            #region INITIALIZE

            Console.WriteLine("[INFO] Finding trial offset...");
            int trialOffset = GetTrialOffset(savePath, userId, trialStatus);
            Console.WriteLine("[INFO] Trial offset = " + trialOffset.ToString());
            StreamWriter rawWriter = new StreamWriter(savePath, true);
            DateTime     previousTime;
            double       seconds       = 0.0f;
            int          currentTrial  = 0;
            int          packetsRead   = 0;
            int          currentPacket = 0;
            string       comPortName   = "COM3";

            Console.WriteLine("[INFO] Starting data collection in 3 seconds...");
            Thread.Sleep(3000);

            Console.WriteLine("[INFO] Initializing headset...");
            NativeThinkgear thinkgear = new NativeThinkgear();
            Console.WriteLine("[INFO] Version: " + NativeThinkgear.TG_GetVersion());
            /* Get a connection ID handle to ThinkGear */
            int connectionID = NativeThinkgear.TG_GetNewConnectionId();
            Console.WriteLine("[INFO] Connection ID: " + connectionID);
            if (connectionID < 0)
            {
                Console.WriteLine("[ERROR] TG_GetNewConnectionId() returned: " + connectionID);
                return;
            }
            int errCode = 0;
            /* Set/open stream (raw bytes) log file for connection */
            errCode = NativeThinkgear.TG_SetStreamLog(connectionID, "streamLog.txt");
            Console.WriteLine("[INFO] errCode for TG_SetStreamLog : " + errCode);
            if (errCode < 0)
            {
                Console.WriteLine("[ERROR] TG_SetStreamLog() returned: " + errCode);
                return;
            }
            /* Set/open data (ThinkGear values) log file for connection */
            errCode = NativeThinkgear.TG_SetDataLog(connectionID, "dataLog.txt");
            Console.WriteLine("[INFO] errCode for TG_SetDataLog : " + errCode);
            if (errCode < 0)
            {
                Console.WriteLine("[ERROR] TG_SetDataLog() returned: " + errCode);
                return;
            }
            /* Attempt to connect the connection ID handle to serial port "COM5" */
            errCode = NativeThinkgear.TG_Connect(connectionID,
                                                 comPortName,
                                                 NativeThinkgear.Baudrate.TG_BAUD_57600,
                                                 NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
            if (errCode < 0)
            {
                Console.WriteLine("[ERROR] TG_Connect() returned: " + errCode);
                return;
            }
            Console.WriteLine("[INFO] Initializing headset finsihed.");
            #endregion

            #region PROCESS
            List <Trial> trialList = new List <Trial>();
            while (currentTrial < numTrials)
            {
                /* Attempt to read a Packet of data from the connection */
                errCode = NativeThinkgear.TG_ReadPackets(connectionID, 1);
                /* If TG_ReadPackets() was able to read a complete Packet of data... */
                if (errCode == 1)
                {
                    /* The raw data was updated since the last call */
                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_RAW) != 0)
                    {
                        /* Skip the first 2 seconds to avoid bad data */
                        if (packetsRead < sampleRate * 2)
                        {
                            Console.Write("\r[INFO] Skipping Packet (" + currentPacket + "/" + sampleRate * 2 + ")");
                            packetsRead++;
                            currentPacket++;
                            continue;
                        }
                        if (currentPacket % sampleRate == 0)
                        {
                            currentPacket = 0;
                            currentTrial++;
                            previousTime = DateTime.Now;
                            seconds      = (DateTime.Now - previousTime).TotalSeconds;
                            if (toFile && trialList.Count > 0)
                            {
                                InsertTrialData(trialList, rawWriter);
                            }
                            trialList.Clear();
                        }
                        //! Set up data for Trial
                        float    _raw          = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_RAW);
                        DateTime _time         = DateTime.Now;
                        Trial    _currentTrial = new Trial(userId, trialStatus, currentTrial + trialOffset, _raw, currentPacket, _time);
                        trialList.Add(_currentTrial);
                        if (toFile && (currentPacket % sampleRate == 0 || currentPacket % sampleRate == 511))
                        {
                            Console.WriteLine("[TRIAL] Trial=" + currentTrial + " Packet=" + currentPacket + " UserID=" + userId + " Status=" + trialStatus + " Total_Trial=" + (currentTrial + trialOffset));
                        }
                        //! Update trackers
                        packetsRead++;
                        currentPacket++;
                    }
                } /* end "If a Packet of data was read..." */
            }     /* end "Read 10 Packets of data from connection..." */

            #endregion

            #region DISCONNECT
            Console.WriteLine("[INFO] Disconnecting...");
            NativeThinkgear.TG_Disconnect(connectionID); // disconnect test
            /* Clean up */
            NativeThinkgear.TG_FreeConnection(connectionID);
            /* End program */
            Console.ReadLine();
            rawWriter.Close();
            #endregion
        }
예제 #16
0
 //Buttons
 public void Disconnect()
 {
     //NativeThinkgear.TG_Disconnect(connectionId);
     NativeThinkgear.TG_FreeConnection(connectionId);
     Debug.Log("Disconnected from Connection ID: " + connectionId);
 }
예제 #17
0
        static void Main(string[] args)
        {
            NativeThinkgear thinkgear = new NativeThinkgear();

            /* Print driver version number */
            Console.WriteLine("Version: " + NativeThinkgear.TG_GetVersion());

            /* Get a connection ID handle to ThinkGear */
            int connectionID = NativeThinkgear.TG_GetNewConnectionId();

            Console.WriteLine("Connection ID: " + connectionID);

            if (connectionID < 0)
            {
                Console.WriteLine("ERROR: TG_GetNewConnectionId() returned: " + connectionID);
                return;
            }

            int errCode = 0;

            /* Set/open stream (raw bytes) log file for connection */
            errCode = NativeThinkgear.TG_SetStreamLog(connectionID, "streamLog.txt");
            Console.WriteLine("errCode for TG_SetStreamLog : " + errCode);
            if (errCode < 0)
            {
                Console.WriteLine("ERROR: TG_SetStreamLog() returned: " + errCode);
                return;
            }

            /* Set/open data (ThinkGear values) log file for connection */
            errCode = NativeThinkgear.TG_SetDataLog(connectionID, "dataLog.txt");
            Console.WriteLine("errCode for TG_SetDataLog : " + errCode);
            if (errCode < 0)
            {
                Console.WriteLine("ERROR: TG_SetDataLog() returned: " + errCode);
                return;
            }

            /* Attempt to connect the connection ID handle to serial port "COM5" */
            string comPortName = "\\\\.\\COM40";

            errCode = NativeThinkgear.TG_Connect(connectionID,
                                                 comPortName,
                                                 NativeThinkgear.Baudrate.TG_BAUD_57600,
                                                 NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
            if (errCode < 0)
            {
                Console.WriteLine("ERROR: TG_Connect() returned: " + errCode);
                return;
            }

            /* Read 10 ThinkGear Packets from the connection, 1 Packet at a time */
            int packetsRead = 0;

            while (packetsRead < 10)
            {
                /* Attempt to read a Packet of data from the connection */
                errCode = NativeThinkgear.TG_ReadPackets(connectionID, 1);
                Console.WriteLine("TG_ReadPackets returned: " + errCode);
                /* 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 (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_RAW) != 0)
                    {
                        /* Get and print out the updated attention value */
                        Console.WriteLine("New RAW value: : " + (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_RAW));
                    } /* end "If attention value has been updated..." */
                }     /* end "If a Packet of data was read..." */
            }         /* end "Read 10 Packets of data from connection..." */

            Console.WriteLine("auto read test begin:");

            errCode = NativeThinkgear.TG_EnableAutoRead(connectionID, 1);
            if (errCode == 0)
            {
                packetsRead = 0;
                NativeThinkgear.MWM15_setFilterType(connectionID, NativeThinkgear.FilterType.MWM15_FILTER_TYPE_50HZ);
                while (packetsRead < 2000)
                {
                    /* If raw value has been updated ... */
                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_RAW) != 0)
                    {
                        /* Get and print out the updated raw value */
                        if (packetsRead % 20 == 0)
                        {
                            Console.WriteLine("New RAW value: : " + (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_RAW));
                        }
                        else
                        {
                            NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_RAW);
                        }
                        packetsRead++;

                        if (packetsRead == 800 || packetsRead == 1600)
                        {
                            NativeThinkgear.MWM15_getFilterType(connectionID);
                            Console.WriteLine(" MWM15_getFilterType called");
                        }
                    }

                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.MWM15_DATA_FILTER_TYPE) != 0)
                    {
                        Console.WriteLine(" Find Filter Type:  " + NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.MWM15_DATA_FILTER_TYPE));
                        break;
                    }
                }

                errCode = NativeThinkgear.TG_EnableAutoRead(connectionID, 0); //stop
                Console.WriteLine("auto read test stoped: " + errCode);
            }
            else
            {
                Console.WriteLine("auto read test failed: " + errCode);
            }

            NativeThinkgear.TG_Disconnect(connectionID); // disconnect test

            /* Clean up */
            NativeThinkgear.TG_FreeConnection(connectionID);

            /* End program */
            Console.ReadLine();
        }
예제 #18
0
        private async Task _readRawData()
        {
            int errCode = 0;

            file.WriteLine(MindRecord.getCSVHeader());

            iLiveFlag = 0;

            while (active)
            {
                /* Attempt to read a Packet of data from the connection */
                errCode = NativeThinkgear.TG_ReadPackets(connectionID, 1);

                /* If TG_ReadPackets() was able to read a complete Packet of data... */
                if (errCode == 1)
                {
                    if (iLiveFlag > iMaxFlag)
                    {
                        iMaxFlag = iLiveFlag;
                    }
                    iLiveFlag = 0;

                    /* Check if connectio quality is OK */
                    errCode = NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_POOR_SIGNAL);
                    if (errCode != 0)
                    {
                        signal = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_POOR_SIGNAL);

                        /*
                         * ak sa data=0 spojenie je OK
                         */
                        /* Get and print out the updated attention value */
                        if (signal == 0)
                        {
                            pb_working.Invoke(new Action(() => { pb_working.Image = Properties.Resources.connected_v1; }));

                            MindRecord mindRecord = new MindRecord();
                            packetsRead++;

                            mindRecord.time = DateTime.Now;

                            errCode = NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_ATTENTION);
                            if (errCode != 0)
                            {
                                mindRecord.iAttention = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_ATTENTION);
                            }
                            /**/
                            errCode = NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_MEDITATION);
                            if (errCode != 0)
                            {
                                mindRecord.iMeditation = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_MEDITATION);
                            }
                            /**/
                            errCode = NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_THETA);
                            if (errCode != 0)
                            {
                                mindRecord.iTheta = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_THETA);
                            }
                            /**/
                            errCode = NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_ALPHA1);
                            if (errCode != 0)
                            {
                                mindRecord.iAlpha1 = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_ALPHA1);
                            }
                            /**/
                            errCode = NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_ALPHA2);
                            if (errCode != 0)
                            {
                                mindRecord.iAlpha2 = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_ALPHA2);
                            }
                            /**/
                            errCode = NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_BETA1);
                            if (errCode != 0)
                            {
                                mindRecord.iBeta1 = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_BETA1);
                            }
                            /**/
                            errCode = NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_BETA2);
                            if (errCode != 0)
                            {
                                mindRecord.iBeta2 = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_BETA2);
                            }
                            /**/
                            errCode = NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_GAMMA1);
                            if (errCode != 0)
                            {
                                mindRecord.iGamma1 = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_GAMMA1);
                            }
                            /**/
                            errCode = NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_GAMMA2);
                            if (errCode != 0)
                            {
                                mindRecord.iGamma2 = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_GAMMA2);
                            }

                            attention.Add(mindRecord.iAttention);
                            meditation.Add(mindRecord.iMeditation);
                            file.WriteLine(mindRecord.getCSVRecord());
                            file.Flush();
                            await Task.Delay(1000);
                        }
                        else
                        {
                            if (signal == 200)
                            {
                                pb_working.Invoke(new Action(() => { pb_working.Image = Properties.Resources.connecting1_v1; }));
                            }
                            else
                            {
                                if (signal < 100)
                                {
                                    pb_working.Invoke(new Action(() => { pb_working.Image = Properties.Resources.connecting2_v1; }));
                                }
                                else
                                {
                                    pb_working.Invoke(new Action(() => { pb_working.Image = Properties.Resources.connecting3_v1; }));
                                }
                            }
                        }
                    }
                }
                else
                {
                    //NEžIJE
                    iLiveFlag++;

                    if (iLiveFlag > iMaxFlag * 10)
                    {
                        pb_working.Invoke(new Action(() => { pb_working.Image = Properties.Resources.nosignal_v1; }));
                        reconnect();
                        iLiveFlag = 0;
                        iMaxFlag  = 1000;
                    }
                }

                lb_liveflag.Invoke(new Action(() => { lb_liveflag.Text = "MAX: " + iMaxFlag.ToString() + " ACTUAL: " + iLiveFlag.ToString() + ""; }));

                if (errCode < 0)
                {
                    //prázdny buffer
                }
            } /* end "Read 10 Packets of data from connection..." */
              //
        }
예제 #19
0
        public int ConnectDriver(string com)
        {
            // 创建连接
            connectionId = NativeThinkgear.TG_GetNewConnectionId();

            Console.WriteLine("Connection ID: " + connectionId);
            if (connectionId < 0)
            {
                // 创建连接失败
                Console.WriteLine("ERROR: TG_GetNewConnectionId() returned: " + connectionId);
                foreach (IDriverConnectListener dc in arr)
                {
                    dc.AfterDriverConnectedFailed();
                }
                return(-1);
            }

            int errCode = 0;

            /* 设置流 */
            errCode = NativeThinkgear.TG_SetStreamLog(connectionId, "streamLog.txt");

            Console.WriteLine("errCode for TG_SetStreamLog : " + errCode);
            if (errCode < 0)
            {
                // 设置流失败
                Console.WriteLine("ERROR: TG_SetStreamLog() returned: " + errCode);
                foreach (IDriverConnectListener dc in arr)
                {
                    dc.AfterDriverConnectedFailed();
                }
                return(-2);
            }
            errCode = NativeThinkgear.TG_SetDataLog(connectionId, "./tmp/dataLog.log");
            if (errCode < 0)
            {
                // 设置数据流失败
                Console.WriteLine("ERROR: TG_SetDataLog() returned: " + errCode);
                foreach (IDriverConnectListener dc in arr)
                {
                    dc.AfterDriverConnectedFailed();
                }
                return(-3);
            }

            string comPortName = "\\\\.\\COM";

            comPortName += com;

            errCode = NativeThinkgear.TG_Connect(connectionId,
                                                 comPortName,
                                                 NativeThinkgear.Baudrate.TG_BAUD_57600,
                                                 NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
            if (errCode < 0)
            {
                // 连接设备失败
                Console.WriteLine("ERROR: TG_Connect() returned: " + errCode);
                foreach (IDriverConnectListener dc in arr)
                {
                    dc.AfterDriverConnectedFailed();
                }
                return(-4);
            }
            else
            {
                Console.WriteLine("Connect successful。");
            }
            isOff = false;
            foreach (IDriverConnectListener dc in arr)
            {
                dc.AfterDriverConnectedSuc();
            }
            return(connectionId);
        }
예제 #20
0
 private void StopMindWaveConnection()
 {
     NativeThinkgear.TG_Disconnect(connectionID);
     NativeThinkgear.TG_FreeConnection(connectionID);
 }
        public void startExperiment()
        {
            NativeThinkgear thinkgear = new NativeThinkgear();

            /* Print driver version number */
            Console.WriteLine("Version: " + NativeThinkgear.TG_GetVersion());

            /* Get a connection ID handle to ThinkGear */
            int connectionID = NativeThinkgear.TG_GetNewConnectionId();

            Console.WriteLine("Connection ID: " + connectionID);

            if (connectionID < 0)
            {
                Console.WriteLine("ERROR: TG_GetNewConnectionId() returned: " + connectionID);
                return;
            }

            int errCode = 0;


            /* Attempt to connect the connection ID handle to serial port "COM5" */
            //string comPortName = "\\\\.\\COM5";
            string comPortName = "\\\\.\\COM6";

            errCode = NativeThinkgear.TG_Connect(connectionID,
                                                 comPortName,
                                                 NativeThinkgear.Baudrate.TG_BAUD_57600,
                                                 NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
            if (errCode < 0)
            {
                Console.WriteLine("ERROR: TG_Connect() returned: " + errCode);
                return;
            }

            ///* Read 10 ThinkGear Packets from the connection, 1 Packet at a time */
            int packetsRead = 0;

            Console.WriteLine("auto read test begin:");

            errCode = NativeThinkgear.TG_EnableAutoRead(connectionID, 1);
            if (errCode == 0)
            {
                packetsRead = 0;
                Thread sound_th = new Thread(new ThreadStart(soundLoop));
                sound_th.Start();
                while (isExperimentFinished == false)
                {
                    /* If raw value has been updated ... */
                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_RAW) != 0)
                    {
                        float raw_val = NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_RAW);
                        wave_writer.WriteLine(getDateStrForLog() + "," + getUnixtimeInMillisec().ToString() + "," + raw_val.ToString());
                        packetsRead++;
                    }
                }
                errCode = NativeThinkgear.TG_EnableAutoRead(connectionID, 0); //stop
                Console.WriteLine("auto read test stoped: " + errCode);
            }
            else
            {
                Console.WriteLine("auto read test failed: " + errCode);
            }

            NativeThinkgear.TG_Disconnect(connectionID); // disconnect test

            /* Clean up */
            NativeThinkgear.TG_FreeConnection(connectionID);

            /* End program */
            Console.WriteLine("please type Enter key to finish this program.");
            Console.ReadLine();
        }
예제 #22
0
        private void getMindData()
        {
            NativeThinkgear thinkgear = new NativeThinkgear();

            Console.WriteLine("Version: " + NativeThinkgear.TG_GetVersion());

            int connectionID = NativeThinkgear.TG_GetNewConnectionId();

            Console.WriteLine("Connection ID: " + connectionID);

            if (connectionID < 0)
            {
                Console.WriteLine("ERROR: TG_GetNewConnectionId() returned: " + connectionID);
                return;
            }

            errCode = NativeThinkgear.TG_SetStreamLog(connectionID, "streamLog.txt");
            Console.WriteLine("errCode for TG_SetStreamLog : " + errCode);
            if (errCode < 0)
            {
                Console.WriteLine("ERROR: TG_SetStreamLog() returned: " + errCode);
                return;
            }

            errCode = NativeThinkgear.TG_SetDataLog(connectionID, "dataLog.txt");
            Console.WriteLine("errCode for TG_SetDataLog : " + errCode);
            if (errCode < 0)
            {
                Console.WriteLine("ERROR: TG_SetDataLog() returned: " + errCode);
                return;
            }

            string comPortName = "\\\\.\\COM4";

            errCode = NativeThinkgear.TG_Connect(connectionID,
                                                 comPortName,
                                                 NativeThinkgear.Baudrate.TG_BAUD_57600,
                                                 NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
            if (errCode < 0)
            {
                Console.WriteLine("ERROR: TG_Connect() returned: " + errCode);
                return;
            }

            int packetsRead = 0;

            while (packetsRead < 10)
            {
                errCode = NativeThinkgear.TG_ReadPackets(connectionID, 1);
                Console.WriteLine("TG_ReadPackets returned: " + errCode);
                if (errCode == 1)
                {
                    packetsRead++;
                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_ATTENTION) != 0)
                    {
                        /* Get and print out the updated attention value */
                        Console.WriteLine("New ATT value: : " + (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_ATTENTION));
                    }
                }
            }

            Console.WriteLine("Preparation is complete");
            errCode     = NativeThinkgear.TG_EnableAutoRead(connectionID, 1);
            packetsRead = 0;
            if (errCode == 0)
            {
                Date = DateTime.Now;
                NativeThinkgear.MWM15_setFilterType(connectionID, NativeThinkgear.FilterType.MWM15_FILTER_TYPE_50HZ);
                while (Run)
                {
                    if (!controllType)
                    {
                        newData = false;
                        for (int i = 0; i < Signals.Count; i++)
                        {
                            if (NativeThinkgear.TG_GetValueStatus(connectionID, Signals[i].Type) != 0)
                            {
                                Console.WriteLine("New Signal(" + Signals[i].Name + "): " + (int)NativeThinkgear.TG_GetValue(connectionID, Signals[i].Type));
                                Double value = (Double)NativeThinkgear.TG_GetValue(connectionID, Signals[i].Type);
                                Signals[i].Add(value);
                                newData = true;
                            }
                        }
                        if (Chart.IsHandleCreated && newData)
                        {
                            this.Invoke((MethodInvoker) delegate { UpdateChart(); });
                        }
                    }
                    else
                    {
                        if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_ATTENTION) != 0)
                        {
                            bufAtt = (Double)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_ATTENTION);
                            Console.WriteLine("New ATT value#" + Ca + ": " + (int)bufAtt);
                            if (bufAtt != 0)
                            {
                                A = true;
                                Ca++;
                            }
                            else
                            {
                                A = false;
                            }
                        }
                        else
                        {
                            A = false;
                        }

                        if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_MEDITATION) != 0)
                        {
                            bufMed = (Double)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_MEDITATION);
                            Console.WriteLine("New MED value#" + Cm + ":  " + (int)bufMed);
                            if (bufMed != 0)
                            {
                                M = true;
                                Cm++;
                            }
                            else
                            {
                                M = false;
                            }
                        }
                        else
                        {
                            M = false;
                        }

                        if (A || M)
                        {
                            dataAtt[readyFor] = bufAtt;
                            dataMed[readyFor] = bufMed;
                            Graph[(int)bufAtt][(int)bufMed] = true;
                            readyFor++;
                            if (Clust)
                            {
                                addPoint((int)bufAtt, (int)bufMed);
                            }
                            if (readyFor == sizeFor)
                            {
                                Clusterisation(); Clust = true;
                            }
                            if (Chart.IsHandleCreated)
                            {
                                this.Invoke((MethodInvoker) delegate { UpdateChart(); });
                            }
                        }
                    }
                    packetsRead++;
                }
                NativeThinkgear.TG_Disconnect(connectionID);

                NativeThinkgear.TG_FreeConnection(connectionID);
            }
            else
            {
                Console.WriteLine("Disable to read");
                return;
            }
            ListSign.Enabled = true;
        }
예제 #23
0
        static void Main(string[] args)
        {
            NativeThinkgear thinkgear = new NativeThinkgear();

            /* Print driver version number */
            Console.WriteLine("Version: " + NativeThinkgear.TG_GetVersion());

            /* Get a connection ID handle to ThinkGear */
            int connectionID = NativeThinkgear.TG_GetNewConnectionId();

            Console.WriteLine("Connection ID: " + connectionID);

            if (connectionID < 0)
            {
                Console.WriteLine("ERROR: TG_GetNewConnectionId() returned: " + connectionID);
                return;
            }

            int errCode = 0;

            /* Set/open stream (raw bytes) log file for connection */
            errCode = NativeThinkgear.TG_SetStreamLog(connectionID, "streamLog.txt");
            Console.WriteLine("errCode for TG_SetStreamLog : " + errCode);
            if (errCode < 0)
            {
                Console.WriteLine("ERROR: TG_SetStreamLog() returned: " + errCode);
                return;
            }

            /* Set/open data (ThinkGear values) log file for connection */
            errCode = NativeThinkgear.TG_SetDataLog(connectionID, "dataLog.txt");
            Console.WriteLine("errCode for TG_SetDataLog : " + errCode);
            if (errCode < 0)
            {
                Console.WriteLine("ERROR: TG_SetDataLog() returned: " + errCode);
                return;
            }

            /* Attempt to connect the connection ID handle to serial port "COM5" */
            string comPortName = "\\\\.\\COM40";

            errCode = NativeThinkgear.TG_Connect(connectionID,
                                                 comPortName,
                                                 NativeThinkgear.Baudrate.TG_BAUD_57600,
                                                 NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
            if (errCode < 0)
            {
                Console.WriteLine("ERROR: TG_Connect() returned: " + errCode);
                return;
            }

            /* Read 10 ThinkGear Packets from the connection, 1 Packet at a time */
            int packetsRead = 0;

            while (packetsRead < 10)
            {
                /* Attempt to read a Packet of data from the connection */
                errCode = NativeThinkgear.TG_ReadPackets(connectionID, 1);
                Console.WriteLine("TG_ReadPackets returned: " + errCode);
                /* 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 (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.TG_DATA_RAW) != 0)
                    {
                        /* Get and print out the updated attention value */
                        Console.WriteLine("New RAW value: : " + (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.TG_DATA_RAW));
                    } /* end "If attention value has been updated..." */
                }     /* end "If a Packet of data was read..." */
            }         /* end "Read 10 Packets of data from connection..." */

            Console.WriteLine("auto read test begin:");

            errCode = NativeThinkgear.TG_EnableAutoRead(connectionID, 1);

            int reset_data_count = 0;
            int conOut3          = 0;
            int conOut4          = 0;

            if (errCode == 0)
            {
                packetsRead = 0;
                //NativeThinkgear.MWM15_setFilterType(connectionID, NativeThinkgear.FilterType.MWM15_FILTER_TYPE_50HZ);
                while (packetsRead < 15000)
                {
                    /* If raw value has been updated ... */
                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_DATA_RAW) != 0)
                    {
                        /* Get and print out the updated raw value */
                        if (packetsRead % 200 == 0)
                        {
                            Console.WriteLine("New RAW value: : " + (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_RAW));
                        }
                        else
                        {
                            NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_RAW);
                        }
                        packetsRead++;

                        /*
                         * if (packetsRead == 800 || packetsRead == 1600)
                         * {
                         *  NativeThinkgear.MWM15_getFilterType(connectionID);
                         *  Console.WriteLine(" MWM15_getFilterType called");
                         * }*/
                    }



                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_DATA_POOR_QUALITY) != 0)
                    {
                        Console.WriteLine("BMD200_DATA_POOR_QUALITY: : " + (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_POOR_QUALITY));
                    }
                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_DATA_HEART_RATE) != 0)
                    {
                        Console.WriteLine("BMD200_DATA_HEART_RATE: : " + (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_HEART_RATE));
                    }
                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_DATA_SQS_LAST) != 0)
                    {
                        Console.WriteLine("BMD200_DATA_SQS_LAST: : " + (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_SQS_LAST));
                    }
                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_DATA_SQS_OVERALL) != 0)
                    {
                        Console.WriteLine("BMD200_DATA_SQS_OVERALL: : " + NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_SQS_OVERALL));
                    }

                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_DATA_RR_INTERVAL) != 0)
                    {
                        Console.WriteLine("BMD200_DATA_RR_INTERVAL: : " + (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_RR_INTERVAL));
                    }
                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_1_RAW_FLAG) != 0)
                    {
                        Console.WriteLine("BMD200_1_RAW_FLAG: : ");
                        NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_1_RAW_FLAG);
                    }

                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_DATA_ConOut4) != 0)
                    {
                        conOut4 = (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_ConOut4);
                        Console.WriteLine("BMD200_DATA_ConOut4: : " + conOut4);
                    }

                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_DATA_ConOut3) != 0)
                    {
                        conOut3 = (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_ConOut3);
                        Console.WriteLine("BMD200_DATA_ConOut3:  " + conOut3 + " BMD200_DATA_ConOut4:  " + conOut4);
                        reset_data_count++;
                        if (reset_data_count == 2)
                        {
                            Console.WriteLine("BMD200_set8PacketMode: : ");
                            NativeThinkgear.BMD200_set8PacketMode(connectionID, conOut4, conOut3);
                        }
                        else if (reset_data_count == 15)
                        {
                            NativeThinkgear.BMD200_set1PacketMode(connectionID, conOut4, conOut3);
                            Console.WriteLine("BMD200_set1PacketMode: : ");
                        }
                    }

                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_DATA_RAW_8B_1) != 0)
                    {
                        if (packetsRead % 100 == 0)
                        {
                            Console.WriteLine("BMD200_DATA_RAW_8B_1: : " + (int)NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_RAW_8B_1));
                        }
                        else
                        {
                            NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_DATA_RAW_8B_1);
                        }
                        packetsRead += 8;
                    }


                    if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.BMD200_8_RAW_FLAG) != 0)
                    {
                        Console.WriteLine("BMD200_8_RAW_FLAG: : ");
                        NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.BMD200_8_RAW_FLAG);
                    }



                    /*
                     * if (NativeThinkgear.TG_GetValueStatus(connectionID, NativeThinkgear.DataType.MWM15_DATA_FILTER_TYPE) != 0)
                     * {
                     *  Console.WriteLine(" Find Filter Type:  " + NativeThinkgear.TG_GetValue(connectionID, NativeThinkgear.DataType.MWM15_DATA_FILTER_TYPE));
                     *  break;
                     * }*/
                }

                errCode = NativeThinkgear.TG_EnableAutoRead(connectionID, 0); //stop
                Console.WriteLine("auto read test stoped: " + errCode);
            }
            else
            {
                Console.WriteLine("auto read test failed: " + errCode);
            }

            NativeThinkgear.TG_Disconnect(connectionID); // disconnect test

            /* Clean up */
            NativeThinkgear.TG_FreeConnection(connectionID);

            /* End program */
            Console.ReadLine();
        }
 public NeuroskyConnection()
 {
     connectionId = NativeThinkgear.TG_GetNewConnectionId();
 }