Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 private CPolygonIni GetPolygonPara(int objIndex)
 {
     return(m_Polygon = CMainFrame.LWDicer.m_Scanner[objIndex].GetPolygonPara(objIndex));
 }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }