/// UpdateAlert (command) - Jacob Monger /// <summary> /// if valid updates setting, removes alert from alert list if flagged /// </summary> /// <param name="message"> user input</param> public void UpdateAlert(object message) { if (SelectedAlertsIndex != -1) { if (double.TryParse(message.ToString(), out double newValue)) { if (AlertList[SelectedAlertsIndex].ThresholdToDisplay != null) { AlertViewModelInstance.RemoveAlert(AlertList[SelectedAlertsIndex].AlertName); } String AlertName = AlertList[SelectedAlertsIndex].AlertName; Properties.Settings.Default[AlertName] = newValue; //convert.ToDouble(null); Properties.Settings.Default.Save(); AlertList.Remove(AlertList[SelectedAlertsIndex]); AlertList.Insert(SelectedAlertsIndex, new AlertListItemModel(AlertName)); } } }
/// ConnectToSerialPort (event)- Jacob Monger /// <summary> /// reads in data, logs data, checks if limits excided and update graphs /// </summary> /// <param name="sender"> sellected port </param> private void rx_data_event(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { SerialPort dataIn = sender as SerialPort; //serial port if (dataIn.IsOpen) { string data = "-"; try { data = dataIn.ReadLine(); //try to read in data } catch {} if (data.StartsWith("#")) { double CurrentValue; data = data.Remove(0, 1); // remove # if (1 == (int)Properties.Settings.Default.WriteToDataLog) //is data loging enabled { if (!Directory.Exists(MyDocuments)) //if folder isn't there { Directory.CreateDirectory(MyDocuments); // create } File.AppendAllText(DataLogPath, DateTime.Now + " ---> " + data); // create/ append to file } try { string[] variables = data.Split(','); //split up data CurrentValue = Convert.ToDouble(variables[0]); ECUViewModelInstance.Graph1Value = CurrentValue; AlertViewModelInstance.NewAlert("ECULeftTorqueDemand", CurrentValue); CurrentValue = Convert.ToDouble(variables[1]); ECUViewModelInstance.Graph2Value = CurrentValue; AlertViewModelInstance.NewAlert("ECURightTorqueDemand", CurrentValue); CurrentValue = Convert.ToDouble(variables[2]); ECUViewModelInstance.Graph3Value = CurrentValue; AlertViewModelInstance.NewAlert("ECUAcclerationDemand", CurrentValue); CurrentValue = Convert.ToDouble(variables[3]); ECUViewModelInstance.Graph4Value = CurrentValue; AlertViewModelInstance.NewAlert("ECUFrontBrakeDemand", CurrentValue); CurrentValue = Convert.ToDouble(variables[4]); KistlerViewModelInstance.Graph1Value = CurrentValue; AlertViewModelInstance.NewAlert("KistlerVelX", CurrentValue); if (GaugeTab) //only up date graphs if active tab { DashboardViewModelInstance.KistlerVelX = CurrentValue; } CurrentValue = Convert.ToDouble(variables[5]); KistlerViewModelInstance.Graph2Value = CurrentValue; AlertViewModelInstance.NewAlert("KistlerVelY", CurrentValue); if (GaugeTab) { DashboardViewModelInstance.KistlerVelY = CurrentValue; } CurrentValue = Convert.ToDouble(variables[6]); KistlerViewModelInstance.Graph3Value = CurrentValue; AlertViewModelInstance.NewAlert("KistlerAcclerationX", CurrentValue); CurrentValue = Convert.ToDouble(variables[7]); KistlerViewModelInstance.Graph4Value = CurrentValue; AlertViewModelInstance.NewAlert("KistlerAcclerationX", CurrentValue); CurrentValue = Convert.ToDouble(variables[8]); LeftInverterViewModelInstance.Graph1Value = CurrentValue; AlertViewModelInstance.NewAlert("LeftInverterSpeed", CurrentValue); if (GaugeTab) { DashboardViewModelInstance.LeftInverterSpeed = CurrentValue; } CurrentValue = Convert.ToDouble(variables[9]); LeftInverterViewModelInstance.Graph2Value = CurrentValue; AlertViewModelInstance.NewAlert("LeftInverterMechanicalPower", CurrentValue); if (GaugeTab) { DashboardViewModelInstance.LeftInverterMechanicalPower = CurrentValue; } CurrentValue = Convert.ToDouble(variables[10]); LeftInverterViewModelInstance.Graph3Value = CurrentValue; AlertViewModelInstance.NewAlert("LeftInverterAbsolutePhaseCurrent", CurrentValue); CurrentValue = Convert.ToDouble(variables[11]); LeftInverterViewModelInstance.Graph4Value = CurrentValue; AlertViewModelInstance.NewAlert("LeftInverterLinkVoltageDC", CurrentValue); CurrentValue = Convert.ToDouble(variables[12]); RightInverterViewModelInstance.Graph1Value = CurrentValue; AlertViewModelInstance.NewAlert("RightInverterSpeed", CurrentValue); if (GaugeTab) { DashboardViewModelInstance.RightInverterSpeed = CurrentValue; } CurrentValue = Convert.ToDouble(variables[13]); RightInverterViewModelInstance.Graph2Value = CurrentValue; AlertViewModelInstance.NewAlert("RightInverterMechanicalPower", CurrentValue); if (GaugeTab) { DashboardViewModelInstance.RightInverterMechanicalPower = CurrentValue; } CurrentValue = Convert.ToDouble(variables[14]); RightInverterViewModelInstance.Graph3Value = CurrentValue; AlertViewModelInstance.NewAlert("RightInverterAbsolutePhaseCurrent", CurrentValue); CurrentValue = Convert.ToDouble(variables[15]); RightInverterViewModelInstance.Graph4Value = CurrentValue; AlertViewModelInstance.NewAlert("RightInverterLinkVoltageDC", CurrentValue); CurrentValue = Convert.ToDouble(variables[16]); TemperatureViewModelInstance.Graph1Value = CurrentValue; AlertViewModelInstance.NewAlert("RightPCBTemp", CurrentValue); CurrentValue = Convert.ToDouble(variables[17]); TemperatureViewModelInstance.Graph2Value = CurrentValue; AlertViewModelInstance.NewAlert("LeftPCBTemp", CurrentValue); CurrentValue = Convert.ToDouble(variables[18]); TemperatureViewModelInstance.Graph3Value = CurrentValue; AlertViewModelInstance.NewAlert("TotalAverageBatteryTemp", CurrentValue); CurrentValue = Convert.ToDouble(variables[19]); TemperatureViewModelInstance.Graph4Value = CurrentValue; AlertViewModelInstance.NewAlert("GearBoxTemp", CurrentValue); } catch { } Task.Factory.StartNew(ECUViewModelInstance.AddPoints); //add points to graphs Task.Factory.StartNew(KistlerViewModelInstance.AddPoints); Task.Factory.StartNew(LeftInverterViewModelInstance.AddPoints); Task.Factory.StartNew(RightInverterViewModelInstance.AddPoints); Task.Factory.StartNew(TemperatureViewModelInstance.AddPoints); } try { dataIn.DiscardInBuffer(); //clear graph } catch { } } }