private void UpdateScreen(CPolygonIni m_PolygonPara) { // User Enable Para GridConfigure[1, 2].Text = string.Format("{0:f}", m_PolygonPara.InScanResolution * 1000000); GridConfigure[2, 2].Text = string.Format("{0:f}", m_PolygonPara.CrossScanResolution * 1000000); GridConfigure[3, 2].Text = string.Format("{0:f}", m_PolygonPara.InScanOffset * 1000000); GridConfigure[4, 2].Text = Convert.ToString(m_PolygonPara.StopMotorBetweenJobs); GridConfigure[5, 2].Text = Convert.ToString(m_PolygonPara.PixInvert); GridConfigure[6, 2].Text = Convert.ToString(m_PolygonPara.JobStartBufferTime); GridConfigure[7, 2].Text = Convert.ToString(m_PolygonPara.PrecedingBlankLines); GridConfigure[8, 2].Text = string.Format("{0:f}", m_PolygonPara.SeedClockFrequency / 1000); GridConfigure[9, 2].Text = string.Format("{0:f}", m_PolygonPara.RepetitionRate / 1000); GridConfigure[10, 2].Text = string.Format("{0:f}", m_PolygonPara.CrossScanEncoderResol * 1000000); GridConfigure[11, 2].Text = Convert.ToString(m_PolygonPara.CrossScanMaxAccel); GridConfigure[12, 2].Text = Convert.ToString(m_PolygonPara.EnCarSig); GridConfigure[13, 2].Text = Convert.ToString(m_PolygonPara.SwapCarSig); GridConfigure[14, 2].Text = Convert.ToString(m_PolygonPara.InterleaveRatio); GridConfigure[15, 2].Text = string.Format("{0:f}", m_PolygonPara.FacetFineDelayOffset0 * 1000000); GridConfigure[16, 2].Text = string.Format("{0:f}", m_PolygonPara.FacetFineDelayOffset1 * 1000000); GridConfigure[17, 2].Text = string.Format("{0:f}", m_PolygonPara.FacetFineDelayOffset2 * 1000000); GridConfigure[18, 2].Text = string.Format("{0:f}", m_PolygonPara.FacetFineDelayOffset3 * 1000000); GridConfigure[19, 2].Text = string.Format("{0:f}", m_PolygonPara.FacetFineDelayOffset4 * 1000000); GridConfigure[20, 2].Text = string.Format("{0:f}", m_PolygonPara.FacetFineDelayOffset5 * 1000000); GridConfigure[21, 2].Text = string.Format("{0:f}", m_PolygonPara.FacetFineDelayOffset6 * 1000000); GridConfigure[22, 2].Text = string.Format("{0:f}", m_PolygonPara.FacetFineDelayOffset7 * 1000000); GridConfigure[23, 2].Text = Convert.ToString(m_PolygonPara.StartFacet); GridConfigure[24, 2].Text = Convert.ToString(m_PolygonPara.AutoIncrementStartFacet); GridConfigure[25, 2].Text = Convert.ToString(m_PolygonPara.MotorStableTime); }
void CreatePolygonScanner(CObjectInfo objInfo, CPolygonIni PolygonIni, int objIndex, ISerialPort m_ComPort) { m_DataManager.SystemData_Scanner.Scanner[objIndex] = PolygonIni; m_DataManager.SystemData_Scanner.Scanner[objIndex].strIP = "192.168.1.161"; m_DataManager.SystemData_Scanner.Scanner[objIndex].strPort = "70"; m_Scanner[objIndex] = new MPolygonScanner(objInfo, m_DataManager.SystemData_Scanner.Scanner[objIndex], objIndex, m_ComPort); }
public MPolygonScanner(CObjectInfo objInfo, CPolygonIni PolygonPara, int scannerIndex, ISerialPort SerialPort) : base(objInfo) { m_DBInfo = new CDBInfo(); LoadPolygonPara(scannerIndex, PolygonPara); m_PolygonData[scannerIndex] = PolygonPara; m_COM = SerialPort; SetScannerIP(scannerIndex, m_PolygonData[scannerIndex].strIP); SetScannerPort(scannerIndex, m_PolygonData[scannerIndex].strPort); PicWafer = new PictureBox(); InitializeTFTP(); }
public int Initialize(CMainFrame form1 = null) { TestFunction_BeforeInit(); //////////////////////////////////////////////////////////////////////// // 0. Common Class //////////////////////////////////////////////////////////////////////// // init data file name CDBInfo dbInfo; InitDataFileNames(out dbInfo); CObjectInfo.DBInfo = dbInfo; MLog.DBInfo = dbInfo; CObjectInfo objInfo; m_SystemInfo = new MSystemInfo(); // self set MLWDicer m_SystemInfo.GetObjectInfo(0, out objInfo); this.ObjInfo = objInfo; // DataManager m_SystemInfo.GetObjectInfo(1, out objInfo); m_DataManager = new MDataManager(objInfo, dbInfo); //////////////////////////////////////////////////////////////////////// // 1. Hardware Layer //////////////////////////////////////////////////////////////////////// // Motion m_SystemInfo.GetObjectInfo(2, out objInfo); CreateYMCBoard(objInfo); // MultiAxes CreateMultiAxes_YMC(); m_AxUpperHandler.UpdateAxisStatus(); // IO m_SystemInfo.GetObjectInfo(6, out objInfo); m_IO = new MIO_YMC(objInfo); m_IO.OutputOn(oUHandler_Self_Vac_On); // Cylinder // UHandlerUDCyl CCylinderData cylData = new CCylinderData(); cylData.CylinderType = ECylinderType.UP_DOWN; cylData.SolenoidType = ESolenoidType.DOUBLE_SOLENOID; cylData.UpSensor[0] = iUHandler_Up1; cylData.DownSensor[0] = iUHandler_Down1; cylData.Solenoid[0] = oUHandler_Up1; cylData.Solenoid[1] = oUHandler_Down1; m_SystemInfo.GetObjectInfo(100, out objInfo); CreateCylinder(objInfo, cylData, (int)EObjectCylinder.UHANDLER_UD, out m_UHandlerUDCyl); // UHandlerUDCyl2 cylData = new CCylinderData(); cylData.CylinderType = ECylinderType.UP_DOWN; cylData.SolenoidType = ESolenoidType.DOUBLE_SOLENOID; cylData.UpSensor[0] = iUHandler_Up1; cylData.DownSensor[0] = iUHandler_Down2; cylData.Solenoid[0] = oUHandler_Up1; cylData.Solenoid[1] = oUHandler_Down2; m_SystemInfo.GetObjectInfo(101, out objInfo); CreateCylinder(objInfo, cylData, (int)EObjectCylinder.UHANDLER_UD2, out m_UHandlerUDCyl2); // Vacuum // Stage1 Vacuum CVacuumData vacData = new CVacuumData(); vacData.VacuumType = EVacuumType.SINGLE_VACUUM_WBLOW; vacData.Sensor[0] = iStage1_Vac_On; vacData.Solenoid[0] = oStage1_Vac_On; vacData.Solenoid[1] = oStage1_Vac_Off; m_SystemInfo.GetObjectInfo(150, out objInfo); CreateVacuum(objInfo, vacData, (int)EObjectVacuum.STAGE1, out m_Stage1Vac); // UHandler Self Vacuum vacData = new CVacuumData(); vacData.VacuumType = EVacuumType.SINGLE_VACUUM_WBLOW; vacData.Sensor[0] = iUHandler_Self_Vac_On; vacData.Solenoid[0] = oUHandler_Self_Vac_On; vacData.Solenoid[1] = oUHandler_Self_Vac_Off; m_SystemInfo.GetObjectInfo(151, out objInfo); CreateVacuum(objInfo, vacData, (int)EObjectVacuum.UHANDLER_SELF, out m_UHandlerSelfVac); // Polygon Scanner Serial Com Port m_SystemInfo.GetObjectInfo(30, out objInfo); CreatePolygonSerialPort(objInfo, out m_PolygonComPort); CPolygonIni PolygonIni = new CPolygonIni(); m_SystemInfo.GetObjectInfo(200, out objInfo); CreatePolygonScanner(objInfo, PolygonIni, (int)EObjectScanner.SCANNER1, m_PolygonComPort); // Vision System m_SystemInfo.GetObjectInfo(40, out objInfo); CreateVisionSystem(objInfo); // Vision Camera m_SystemInfo.GetObjectInfo(42, out objInfo); CreateVisionCamera(objInfo); // Vision Display m_SystemInfo.GetObjectInfo(46, out objInfo); MVisionView(objInfo); //////////////////////////////////////////////////////////////////////// // 2. Mechanical Layer //////////////////////////////////////////////////////////////////////// // Cassette Loader m_SystemInfo.GetObjectInfo(310, out objInfo); CreateMeElevator(objInfo); // Handler m_SystemInfo.GetObjectInfo(318, out objInfo); CreateMeUpperHandler(objInfo); m_SystemInfo.GetObjectInfo(319, out objInfo); CreateMeLowerHandler(objInfo); // Stage m_SystemInfo.GetObjectInfo(325, out objInfo); CreateMeStage(objInfo); // Vision m_SystemInfo.GetObjectInfo(340, out objInfo); CreateVision(objInfo); //////////////////////////////////////////////////////////////////////// // 3. Control Layer //////////////////////////////////////////////////////////////////////// m_SystemInfo.GetObjectInfo(351, out objInfo); CreateCtrlLoader(objInfo); m_SystemInfo.GetObjectInfo(352, out objInfo); CreateCtrlPushPull(objInfo); m_SystemInfo.GetObjectInfo(353, out objInfo); CreateCtrlStage1(objInfo); m_SystemInfo.GetObjectInfo(354, out objInfo); CreateCtrlHandler(objInfo); //////////////////////////////////////////////////////////////////////// // 4. Process Layer //////////////////////////////////////////////////////////////////////// m_SystemInfo.GetObjectInfo(401, out objInfo); CreateTrsLoader(objInfo); m_SystemInfo.GetObjectInfo(402, out objInfo); CreateTrsPushPull(objInfo); m_SystemInfo.GetObjectInfo(403, out objInfo); CreateTrsStage1(objInfo); m_SystemInfo.GetObjectInfo(400, out objInfo); CreateTrsAutoManager(objInfo); // temporary set windows m_trsLoader.SetWindows_Form1(form1); m_trsPushPull.SetWindows_Form1(form1); m_trsStage1.SetWindows_Form1(form1); m_trsAutoManager.SetWindows_Form1(form1); //////////////////////////////////////////////////////////////////////// // 5. Set Data //////////////////////////////////////////////////////////////////////// SetSystemDataToComponent(); SetModelDataToComponent(); SetPositionDataToComponent(); //////////////////////////////////////////////////////////////////////// // 6. Start Thread & System //////////////////////////////////////////////////////////////////////// m_YMC.ThreadStart(); SetThreadChannel(); StartThreads(); TestFunction_AfterInit(); return(SUCCESS); }
private CPolygonIni GetPolygonPara(int objIndex) { return(m_Polygon = CMainFrame.LWDicer.m_Scanner[objIndex].GetPolygonPara(objIndex)); }
public bool LoadPolygonPara(int scannerIndex, CPolygonIni PolygonPara) { string section = ""; string key = ""; string value = ""; string filepath = ""; filepath = string.Format("{0:s}config.ini", m_DBInfo.ScannerLogDir); if (!File.Exists(filepath)) { return(false); } m_PolygonData[scannerIndex] = PolygonPara; section = "Job Settings"; key = "InScanResolution"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].InScanResolution = Convert.ToDouble(value); key = "CrossScanResolution"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].CrossScanResolution = Convert.ToDouble(value); key = "InScanOffset"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].InScanOffset = Convert.ToDouble(value); key = "StopMotorBetweenJobs"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].StopMotorBetweenJobs = Convert.ToInt16(value); key = "PixInvert"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].PixInvert = Convert.ToInt16(value); key = "JobStartBufferTime"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].JobStartBufferTime = Convert.ToInt16(value); key = "PrecedingBlankLines"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].PrecedingBlankLines = Convert.ToInt16(value); section = "Laser Configuration"; key = "LaserOperationMode"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].LaserOperationMode = Convert.ToInt16(value); key = "SeedClockFrequency"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].SeedClockFrequency = Convert.ToDouble(value); key = "RepetitionRate"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].RepetitionRate = Convert.ToDouble(value); key = "PulsePickWidth"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].PulsePickWidth = Convert.ToInt16(value); key = "PixelWidth"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].PixelWidth = Convert.ToInt16(value); key = "PulsePickAlgor"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].PulsePickAlgor = Convert.ToInt16(value); key = "UseCoaxIf"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].UseCoaxIf = Convert.ToInt16(value); section = "CrossScan Configuration"; key = "CrossScanEncoderResol"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].CrossScanEncoderResol = Convert.ToDouble(value); key = "CrossScanMaxAccel"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].CrossScanMaxAccel = Convert.ToDouble(value); key = "EnCarSig"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].EnCarSig = Convert.ToInt16(value); key = "SwapCarSig"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].SwapCarSig = Convert.ToInt16(value); section = "Head Configuration"; key = "SerialNumber"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].SerialNumber = Convert.ToDouble(value); key = "FThetaConstant"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FThetaConstant = Convert.ToDouble(value); key = "ExposeLineLength"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].ExposeLineLength = Convert.ToDouble(value); key = "EncoderIndexDelay"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].EncoderIndexDelay = Convert.ToInt16(value); key = "FacetFineDelay0"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelay0 = Convert.ToDouble(value); key = "FacetFineDelay1"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelay1 = Convert.ToDouble(value); key = "FacetFineDelay2"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelay2 = Convert.ToDouble(value); key = "FacetFineDelay3"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelay3 = Convert.ToDouble(value); key = "FacetFineDelay4"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelay4 = Convert.ToDouble(value); key = "FacetFineDelay5"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelay5 = Convert.ToDouble(value); key = "FacetFineDelay6"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelay6 = Convert.ToDouble(value); key = "FacetFineDelay7"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelay7 = Convert.ToDouble(value); key = "InterleaveRatio"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].InterleaveRatio = Convert.ToInt16(value); key = "FacetFineDelayOffset0"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelayOffset0 = Convert.ToDouble(value); key = "FacetFineDelayOffset1"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelayOffset1 = Convert.ToDouble(value); key = "FacetFineDelayOffset2"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelayOffset2 = Convert.ToDouble(value); key = "FacetFineDelayOffset3"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelayOffset3 = Convert.ToDouble(value); key = "FacetFineDelayOffset4"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelayOffset4 = Convert.ToDouble(value); key = "FacetFineDelayOffset5"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelayOffset5 = Convert.ToDouble(value); key = "FacetFineDelayOffset6"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelayOffset6 = Convert.ToDouble(value); key = "FacetFineDelayOffset7"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetFineDelayOffset7 = Convert.ToDouble(value); key = "StartFacet"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].StartFacet = Convert.ToInt16(value); key = "AutoIncrementStartFacet"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].AutoIncrementStartFacet = Convert.ToInt16(value); section = "Polygon motor Configuration"; key = "InternalMotorDriverClk"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].InternalMotorDriverClk = Convert.ToInt16(value); key = "MotorDriverType"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].MotorDriverType = Convert.ToInt16(value); key = "MotorSpeed"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].MotorSpeed = Convert.ToInt16(value); key = "SimEncSel"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].SimEncSel = Convert.ToInt16(value); key = "MinMotorSpeed"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].MinMotorSpeed = Convert.ToDouble(value); key = "MaxMotorSpeed"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].MaxMotorSpeed = Convert.ToDouble(value); key = "MotorEffectivePoles"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].MotorEffectivePoles = Convert.ToInt16(value); key = "SyncWaitTime"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].SyncWaitTime = Convert.ToInt16(value); key = "MotorStableTime"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].MotorStableTime = Convert.ToInt16(value); section = "Other Settings"; key = "InterruptFreq"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].InterruptFreq = Convert.ToInt16(value); key = "HWDebugSelection"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].HWDebugSelection = Convert.ToInt16(value); key = "AutoRepeat"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].AutoRepeat = Convert.ToInt16(value); key = "PixAlwaysOn"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].PixAlwaysOn = Convert.ToInt16(value); key = "ExtCamTrig"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].ExtCamTrig = Convert.ToInt16(value); key = "EncoderExpo"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].EncoderExpo = Convert.ToInt16(value); key = "FacetTest"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].FacetTest = Convert.ToInt16(value); key = "SWTest"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].SWTest = Convert.ToInt16(value); key = "JobstartAutorepeat"; value = GetValue(section, key, filepath); m_PolygonData[scannerIndex].JobstartAutorepeat = Convert.ToInt16(value); return(true); }
public bool SavePolygonPara(CPolygonIni m_PolygonData, string strFile) { string section = ""; string key = ""; string value = ""; string filepath = ""; bool bRet = false; filepath = string.Format("{0:s}{1:s}.ini", m_DBInfo.ScannerLogDir, strFile); if (!File.Exists(filepath)) { return(false); } FileInfo fileinfo = new FileInfo(filepath); section = "Job Settings"; key = "InScanResolution"; value = string.Format("{0:F6}", m_PolygonData.InScanResolution); bRet = SetValue(section, key, value, filepath); key = "CrossScanResolution"; value = string.Format("{0:F6}", m_PolygonData.CrossScanResolution); bRet = SetValue(section, key, value, filepath); key = "InScanOffset"; value = Convert.ToString(m_PolygonData.InScanOffset); bRet = SetValue(section, key, value, filepath); key = "StopMotorBetweenJobs"; value = Convert.ToString(m_PolygonData.StopMotorBetweenJobs); bRet = SetValue(section, key, value, filepath); key = "PixInvert"; value = Convert.ToString(m_PolygonData.PixInvert); bRet = SetValue(section, key, value, filepath); key = "JobStartBufferTime"; value = Convert.ToString(m_PolygonData.JobStartBufferTime); bRet = SetValue(section, key, value, filepath); key = "PrecedingBlankLines"; value = Convert.ToString(m_PolygonData.PrecedingBlankLines); bRet = SetValue(section, key, value, filepath); section = "Laser Configuration"; key = "LaserOperationMode"; value = Convert.ToString(m_PolygonData.LaserOperationMode); bRet = SetValue(section, key, value, filepath); key = "SeedClockFrequency"; value = Convert.ToString(m_PolygonData.SeedClockFrequency); bRet = SetValue(section, key, value, filepath); key = "RepetitionRate"; value = Convert.ToString(m_PolygonData.RepetitionRate); bRet = SetValue(section, key, value, filepath); key = "PulsePickWidth"; value = Convert.ToString(m_PolygonData.PulsePickWidth); bRet = SetValue(section, key, value, filepath); key = "PixelWidth"; value = Convert.ToString(m_PolygonData.PixelWidth); bRet = SetValue(section, key, value, filepath); section = "CrossScan Configuration"; key = "CrossScanEncoderResol"; value = string.Format("{0:F7}", m_PolygonData.CrossScanEncoderResol); bRet = SetValue(section, key, value, filepath); key = "EnCarSig"; value = Convert.ToString(m_PolygonData.EnCarSig); bRet = SetValue(section, key, value, filepath); key = "SwapCarSig"; value = Convert.ToString(m_PolygonData.SwapCarSig); bRet = SetValue(section, key, value, filepath); section = "Head Configuration"; key = "InterleaveRatio"; value = Convert.ToString(m_PolygonData.InterleaveRatio); bRet = SetValue(section, key, value, filepath); key = "FacetFineDelayOffset0"; value = string.Format("{0:F6}", m_PolygonData.FacetFineDelayOffset0); bRet = SetValue(section, key, value, filepath); key = "FacetFineDelayOffset1"; value = string.Format("{0:F6}", m_PolygonData.FacetFineDelayOffset1); bRet = SetValue(section, key, value, filepath); key = "FacetFineDelayOffset2"; value = string.Format("{0:F6}", m_PolygonData.FacetFineDelayOffset2); bRet = SetValue(section, key, value, filepath); key = "FacetFineDelayOffset3"; value = string.Format("{0:F6}", m_PolygonData.FacetFineDelayOffset3); bRet = SetValue(section, key, value, filepath); key = "FacetFineDelayOffset4"; value = string.Format("{0:F6}", m_PolygonData.FacetFineDelayOffset4); bRet = SetValue(section, key, value, filepath); key = "FacetFineDelayOffset5"; value = string.Format("{0:F6}", m_PolygonData.FacetFineDelayOffset5); bRet = SetValue(section, key, value, filepath); key = "FacetFineDelayOffset6"; value = string.Format("{0:F6}", m_PolygonData.FacetFineDelayOffset6); bRet = SetValue(section, key, value, filepath); key = "FacetFineDelayOffset7"; value = string.Format("{0:F6}", m_PolygonData.FacetFineDelayOffset7); bRet = SetValue(section, key, value, filepath); key = "StartFacet"; value = Convert.ToString(m_PolygonData.StartFacet); bRet = SetValue(section, key, value, filepath); key = "AutoIncrementStartFacet"; value = Convert.ToString(m_PolygonData.AutoIncrementStartFacet); bRet = SetValue(section, key, value, filepath); section = "Polygon motor Configuration"; key = "MotorStableTime"; value = Convert.ToString(m_PolygonData.MotorStableTime); bRet = SetValue(section, key, value, filepath); return(true); }