public void TestSmallValue() { double[] x = new[] { 1.0, 2.0, 3.0 }; double[] y = new[] { 1.0, 2.0, 3.0 }; double[][] values = new[] { new[] { 1.0, 2.0, 3.0 }, new[] { 2.0, 3.0, 4.0 }, new[] { 3.0, 4.0, 5.0 } }; CharacteristicMap map = new CharacteristicMap(x, y, values); try { double value1 = map.Interpolate(0.5, 1.5); } catch (ArgumentOutOfRangeException ex) { try { double value2 = map.Interpolate(0.5, 0.5); } catch (ArgumentOutOfRangeException ex2) { double value3 = map.Interpolate(1.5, 0.5); //here should the 3rd exception be thrown } } }
public void TestTwiceValues() { double[] x = new[] { 1.0, 2.0, 3.0 }; double[] y = new[] { 1.0, 1.0, 3.0 }; double[][] values = new[] { new[] { 1.0, 2.0, 3.0 }, new[] { 2.0, 3.0, 4.0 }, new[] { 3.0, 4.0, 5.0 } }; CharacteristicMap map = new CharacteristicMap(x, y, values); }
public void TestUnsortedValues() { double[] x = new[] { 3.0, 1.0, 2.0 }; double[] y = new[] { 2.0, 3.0, 1.0 }; double[][] values = new[] { new[] { 4.0, 5.0, 3.0 }, new[] { 2.0, 3.0, 1.0 }, new[] { 3.0, 4.0, 2.0 } }; CharacteristicMap map = new CharacteristicMap(x, y, values); double value1 = map.Interpolate(1.5, 1.5); //should be 2.0 Assert.AreEqual(value1, 2.0); }
public void TestWriteReadXml() { string path = Path.GetTempFileName(); double[] x = new[] { 1.0, 2.0, 3.0 }; double[] y = new[] { 1.0, 2.0, 3.0 }; double[][] values = new[] { new[] { 1.0, 2.0, 3.0 }, new[] { 2.0, 3.0, 4.0 }, new[] { 3.0, 4.0, 5.0 } }; CharacteristicMap map = new CharacteristicMap(x, y, values); Xml.WriteXml(path, map); CharacteristicMap map2 = Xml.ReadXml <CharacteristicMap>(path); Assert.AreEqual(2.0, map2.Interpolate(1.5, 1.5)); }
private void A2LSymbolsWrite(ref System.IO.StreamWriter fileA2L) { Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet_Parameters; Excel.Worksheet xlWorkSheet_Signals; Excel.Worksheet xlWorkSheet_Defines; Excel.Worksheet xlWorkSheet_States; string Line; int LineNum; int RetVal = 0; int index; bool ConvExists = false; bool GroupExists = false; XLSECTParameter XLSECTParameter1 = new XLSECTParameter(); XLSECTSignal XLSECTSignal1 = new XLSECTSignal(); Measurement Measurement1 = new Measurement(); CharacteristicValue CharacteristicValue1 = new CharacteristicValue(); Axis_Pts Axis_Pts1 = new Axis_Pts(); CharacteristicCurve CharacteristicCurve1 = new CharacteristicCurve(); CharacteristicMap CharacteristicMap1 = new CharacteristicMap(); // CONV Conversion ConversionNew = new Conversion(); // GROUP A2LGroup GroupNew = new A2LGroup(); A2LGroup GPCurrent = null; A2LGroupList = new List <A2LGroup>(); ConversionList = new List <Conversion>(); object misValue = System.Reflection.Missing.Value; try { xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Open(filePath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet_Parameters = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet_Signals = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2); xlWorkSheet_Defines = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(3); xlWorkSheet_States = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(4); // Generate the signals and write them in the new XML file Line = "2"; LineNum = 2; // While there are symbols in the Excel sheet while (-2 != RetVal) { // Elaborate the signals sheet RetVal = XLSECTSignal1.upload(ref xlWorkSheet_Signals, Line); #if zorro // Build the Scaling IDs list // Create the new COMPU_METHOD ConversionNew.upload(ref XLSECTSignal1); ConvExists = false; // Check if it exists already if (CScalingList != null) { foreach (CalibrationScaling CS in CScalingList) { if (CS.ID == ConversionNew.ID) { ConvExists = true; } } } // If it doesn't exist, add it to the list if (ConvExists == false) { ConversionList.Add(ConversionNew); ConversionNew = new Conversion(); } #endif // Build the Group IDs list // Create the new group GroupNew.upload(ref XLSECTSignal1); GroupExists = false; // Check if it exists already foreach (A2LGroup GP in A2LGroupList) { if (GP.ID == GroupNew.ID) { GroupExists = true; GPCurrent = GP; break; } } // If it doesn't exist, add it to the list if (GroupExists == false) { // GroupNew.Add(ref XLSECTSignal1); A2LGroupList.Add(GroupNew); GPCurrent = GroupNew; /* Create the new group for next group */ GroupNew = new A2LGroup(); } // If it is a Signal (MEASUREMENT in A2L nomenclature) if ((RetVal == 0) || (RetVal == 123456789)) { Measurement1.upload(ref XLSECTSignal1, false, 0, ref Containr); Measurement1.AppendToFile(ref fileA2L); GPCurrent.Add(ref XLSECTSignal1); // SignalValue1.Show(); } else { if (RetVal > 1) { if (RetVal > 123456789) { RetVal -= 123456789; } for (index = 0; index < RetVal; index++) { Measurement1.upload(ref XLSECTSignal1, true, index, ref Containr); Measurement1.AppendToFile(ref fileA2L); GPCurrent.Add(ref XLSECTSignal1, index); } } } LineNum++; Line = Convert.ToString(LineNum); } // Generate the calibrations and write them in the new XML file Line = "2"; LineNum = 2; RetVal = 0; while (-2 != RetVal) { // Elaborate the parameters sheet RetVal = XLSECTParameter1.upload(ref xlWorkSheet_Parameters, Line); #if NOT_NECESSARY CScalingNew.upload(ref XLSECTParameter1); ScalingExists = false; foreach (CalibrationScaling CS in CScalingList) { if (CS.ID == CScalingNew.ID) { ScalingExists = true; } } if (ScalingExists == false) { CScalingList.Add(CScalingNew); CScalingNew = new CalibrationScaling(); } #endif // Create the new group GroupNew.upload(ref XLSECTParameter1); GroupExists = false; // Check if it exists already foreach (A2LGroup GP in A2LGroupList) { if (GP.ID == GroupNew.ID) { GroupExists = true; GPCurrent = GP; break; } } // If it doesn't exist, add it to the list if (GroupExists == false) { // GroupNew.Add(ref XLSECTParameter1); A2LGroupList.Add(GroupNew); GPCurrent = GroupNew; /* Create the new group for next group */ GroupNew = new A2LGroup(); } // If it is a CalibrationValue if (RetVal == 0) { CharacteristicValue1.upload(ref XLSECTParameter1, ref Containr); CharacteristicValue1.AppendToFile(ref fileA2L); GPCurrent.Add(ref XLSECTParameter1); // CalibrationValue1.Show(); } // If it is a CalibrationSharedAxis if (RetVal == 1) { Axis_Pts1.upload(ref XLSECTParameter1, ref Containr); Axis_Pts1.AppendToFile(ref fileA2L); GPCurrent.Add(ref XLSECTParameter1, true); // CalibrationSharedAxis1.Show(); } // If it is a CalibrationCurve if (RetVal == 2) { CharacteristicCurve1.upload(ref XLSECTParameter1, ref Containr); CharacteristicCurve1.AppendToFile(ref fileA2L); GPCurrent.Add(ref XLSECTParameter1, true); // CalibrationCurve1.Show(); } // If it is a CalibrationMap if (RetVal == 3) { CharacteristicMap1.upload(ref XLSECTParameter1, ref Containr); CharacteristicMap1.AppendToFile(ref fileA2L); GPCurrent.Add(ref XLSECTParameter1, true); // CalibrationMap1.Show(); } // Copy record layouts LineNum++; Line = Convert.ToString(LineNum); } if (A2LGroupList != null) { fileA2L.WriteLine(" /begin GROUP Calibration \"All the calibration parameters and table\""); fileA2L.WriteLine(" ROOT"); fileA2L.WriteLine(" /begin SUB_GROUP"); foreach (A2LGroup GP in A2LGroupList) { fileA2L.WriteLine(" " + GP.ID); } fileA2L.WriteLine(" /end SUB_GROUP"); fileA2L.WriteLine(" /end GROUP"); foreach (A2LGroup GP in A2LGroupList) { GP.AppendToFile(ref fileA2L); } } #if NOT_NECESSARY foreach (CalibrationScaling CS in CScalingList) { CS.AppendToFile(ref fileXML); } fileXML.WriteLine("</LIE00V12PARTIAL>"); fileXML.Close(); #endif xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorkSheet_Parameters); releaseObject(xlWorkSheet_Signals); releaseObject(xlWorkSheet_Defines); releaseObject(xlWorkSheet_States); releaseObject(xlWorkBook); releaseObject(xlApp); } catch { MessageBox.Show("File " + filePath + " doesn't exist"); } }