private bool NativeGetData(NativeThinkgear.DataType dataType, ref Dictionary <NativeThinkgear.DataType, float> values)
 {
     if (ThinkgearConnectionId < 0)
     {
         return(false);
     }
     if (NativeThinkgear.TG_GetValueStatus(ThinkgearConnectionId, dataType) != 0)
     {
         values.Add(dataType, NativeThinkgear.TG_GetValue(ThinkgearConnectionId, dataType));
         return(true);
     }
     return(false);
 }
Example #2
0
        private void NativeConnect()
        {
            try
            {
                int ResultCode = -1;
                this.LogClear();
                this.Thinkgear = new NativeThinkgear();

                // Print driver version number
                LogAdd($"TG_GetVersion: {NativeThinkgear.TG_GetVersion()}");

                // Get a connection ID handle to ThinkGear
                ThinkgearConnectionId = NativeThinkgear.TG_GetNewConnectionId();
                LogAdd($"TG_GetNewConnectionId: {ThinkgearConnectionId}");
                if (ThinkgearConnectionId < 0)
                {
                    return;
                }

                // Set/open stream (raw bytes) log file for connection
                //ResultCode = NativeThinkgear.TG_SetStreamLog(ThinkgearConnectionId, "streamLog.txt");
                //LogAdd($"TG_SetStreamLog ResultCode: {ResultCode}");
                //if (ResultCode < 0) return;

                // Set/open data (ThinkGear values) log file for connection
                //ResultCode = NativeThinkgear.TG_SetDataLog(ThinkgearConnectionId, "dataLog.txt");
                //LogAdd($"TG_SetDataLog ResultCode: {ResultCode}");
                //if (ResultCode < 0) return;

                /* Attempt to connect the connection ID handle to serial port "COM3" */
                ResultCode = NativeThinkgear.TG_Connect(
                    ThinkgearConnectionId,
                    $"\\\\.\\{this.ComboBoxPortName.Text}",
                    (NativeThinkgear.Baudrate)Convert.ToInt32(this.ComboBoxBaudRate.Text),
                    NativeThinkgear.SerialDataFormat.TG_STREAM_PACKETS);
                LogAdd($"TG_Connect ResultCode: {ResultCode}");
                if (ResultCode < 0)
                {
                    return;
                }
            }
            catch (Exception ex)
            {
                this.LogAdd("Exception: ButtonConnect_Click");
                this.LogAdd(ex.Message);
            }

            // Start Data Reader
            this.NativeProcessesDoWork();
        }
Example #3
0
        private void NativeProcessesDoWork()
        {
            try
            {
                while (ThinkgearConnectionId != -1 && this.Thinkgear != null)
                {
                    this.DoEvent();

                    int ResultCode = NativeThinkgear.TG_ReadPackets(ThinkgearConnectionId, -1);
                    if (ResultCode != 1)
                    {
                        continue;
                    }

                    bool hasValue = false;
                    var  Values   = new Dictionary <NativeThinkgear.DataType, float>();
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_POOR_SIGNAL, ref Values);
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_ATTENTION, ref Values);
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_MEDITATION, ref Values);
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_ALPHA1, ref Values);
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_ALPHA2, ref Values);
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_BETA1, ref Values);
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_BETA2, ref Values);
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_DELTA, ref Values);
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_THETA, ref Values);
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_GAMMA1, ref Values);
                    hasValue |= NativeGetData(NativeThinkgear.DataType.TG_DATA_GAMMA2, ref Values);


                    if (hasValue)
                    {
                        this.LogClear();
                        this.LogAdd($"{DateTime.Now:yyyy/MM/dd hh:mm:ss}");
                        foreach (NativeThinkgear.DataType dataType in Enum.GetValues(typeof(NativeThinkgear.DataType)))
                        {
                            if (Values.ContainsKey(dataType))
                            {
                                this.LogAdd($"{dataType.ToString()}: {Values[dataType]}");
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                this.LogAdd("Exception: ProcessesDoWork");
                this.LogAdd(ex.Message);
            }
        }