private void HandleSOCTag(MyTag tag) { tag.SetSOCVersion(SOCVersion); int[] SOCValues = tag.GetSOCData(); // store current value if (SOCValues.Length > 0) SOCValue = SOCValues[0]; // add all the new values to the graph. for (int i = 0; i < SOCValues.Length; i++) { SOCFilteredValue = SOCFilteredValue * SOCFilterAlpha + SOCValues[i] * (1 - SOCFilterAlpha); } SOCTemperature = Math.Round(SOCFilteredValue * SOCSlope + SOCIntercept, 3); double valToPlot; if (socPlotTemp) valToPlot = SOCTemperature; else valToPlot = SOCFilteredValue; lock (SOCData) { // add new point to the graph. SOCData.Add(new PointPair(SOCReportNumber++, valToPlot)); // keep graph data from getting too big, or performance degrades. if (SOCData.Count > 1000) SOCData.RemoveAt(0); } tag.socFilteredValue = SOCFilteredValue; // for logging, etc. tag.socFilteredTemperature = SOCTemperature; }
private string WriteSensorData(MyTag tag) { string temp = ""; switch (tag.GetTagType()) { case TagType.WISP_ACCELEROMETER: temp = temp + ""; temp = temp + tag.GetAccel("x"); temp = temp + "\t"; temp = temp + tag.GetAccel("y"); temp = temp + "\t"; temp = temp + tag.GetAccel("z"); break; case TagType.WISP_TEMPERATURE: temp = temp + "Temp= "; temp = temp + tag.GetTemperature(); break; case TagType.WISP_SOC: if (tag.GetAccessResultData().Length > 0) { int[] data = tag.GetSOCData(); for (int i = 0; i < data.Length; i++) { temp = temp + "ADC,"; temp = temp + data[i] + ","; temp = temp + "temp,"; temp = temp + tag.socFilteredTemperature + ","; } } break; default: // no action for now... // this could be commercial tags, etc. break; } return temp; }