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); }
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(); }
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); } }