From f5120e92b525474f6b4e50130797946986c28eed Mon Sep 17 00:00:00 2001 From: BOOK-IQ4TD9B9LB\DIT-930 <g> Date: 월, 15 5월 2023 17:16:00 +0900 Subject: [PATCH] Version 001.000.000 --- SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_Content.g.i.cs | 13 SA_LTT/Program_back232023/Resources/Robot_Body.png | 0 SA_LTT/Program_back230220/SA_LTT_UI.exe | 0 SA_LTT/Program_Usb/SA_LTT_UI.exe.config | 6 SA_LTT/Program_back232023/Resources/Robot_Arm1.png | 0 SA_LTT/Program_back232023/Cor_1to1_old.ct5 | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMain.resources | 0 SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.cs | 106 SA_LTT/Info/Wafer/Port1_24.xml | 7 SA_LTT_UI/SA_LTT/Dll/RTC5DAT.dat | 0 SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.resx | 120 SA_LTT/Program_230508/pp.vshost.exe.manifest | 11 SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.dll | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.pdb | 0 SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CopyComplete | 0 SA_LTT/Program_back232023/pp.vshost.exe.manifest | 11 SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipeManager.cs | 121 SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.resx | 126 SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.Designer.cs | 1610 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.i.cs | 464 SA_LTT/Program_230508/Cor_1to1.ct5 | 0 SA_LTT/Program_back232023/Resources/Robot_Arm.png | 0 SA_LTT_UI/SA_LTT_UI/Resources/DIT_Logo.png | 0 SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.manifest | 11 SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.resx | 129 SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.Designer.cs | 1493 SA_LTT_UI/SA_LTT/Module/E5CC.cs | 222 SA_LTT/Info/Wafer/B21.xml | 10 SA_LTT/Program/SA_LTT.pdb | 0 SA_LTT/Info/Wafer/Port1_16.xml | 7 SA_LTT_UI/가공 설명 Program/TestRec.pdb | 0 SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.config | 6 SA_LTT/Info/Wafer/A9.xml | 9 SA_LTT/Info/Wafer/A24.xml | 9 SA_LTT/Program/SA_LTT.dll | 0 SA_LTT/Program_230508/Resources/Robot_Arm2.png | 0 SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipe.cs | 53 SA_LTT/Info/User/DIT.xml | 6 SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache | 0 SA_LTT/Program_back230330/SA_LTT_UI.exe.config | 6 SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.resx | 132 SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.resx | 126 SA_LTT/Info/Wafer/A2.xml | 9 SA_LTT_UI/SA_LTT/Module/RTC5/RTC5Wrap.cs | 6286 ++ SA_LTT/Program_back230330/Resources/Robot_Arm.png | 0 SA_LTT/Program_Usb/SA_LTT_UI.exe | 0 SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.manifest | 11 SA_LTT/Info/Wafer/Port2_18.xml | 7 SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.cs | 2035 SA_LTT/Program_Usb/Resources/Robot_Arm.png | 0 SA_LTT_UI/SA_LTT_UI/App.config | 6 SA_LTT_UI/SA_LTT/Dll/RTC5RBF.rbf | 0 SA_LTT_UI/SA_LTT/Dll/log4net.dll | 0 SA_LTT/Program_Usb/RTC5DLLx64.dll | 0 SA_LTT/Info/Wafer/Port1_6.xml | 7 SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.cs | 321 SA_LTT/Info/Wafer/B14.xml | 10 SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.cs | 120 SA_LTT_UI/SA_LTT_UI/MainFrame.Designer.cs | 731 SA_LTT/Config/Parameter/SettingParameter.xml | 27 SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.Designer.cs | 157 SA_LTT/Info/Wafer/Port2_9.xml | 7 SA_LTT_UI/SA_LTT/Parameter/ModeParameterManager.cs | 58 SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.Designer.cs | 991 SA_LTT_UI/SA_LTT_UI/bin/Debug/EasyModbus.dll | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.Designer.cs | 1510 SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.cs | 83 SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm.png | 0 SA_LTT/Info/Wafer/Port2_2.xml | 7 SA_LTT/Info/Wafer/Chamber.xml | 10 SA_LTT_UI/SA_LTT/Dll/EasyModbus.dll | 0 SA_LTT/Info/Wafer/A16.xml | 9 SA_LTT/Info/Wafer/B7.xml | 10 SA_LTT_UI/.vs/SA_LTT_UI/v14/.suo | 0 SA_LTT/Program_back232023/SA_LTT_UI.pdb | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.baml | 0 SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.resx | 120 SA_LTT/Config/Parameter/InterlockParameter.xml | 0 SA_LTT/Program_back230330/Resources/Robot_Arm2.png | 0 SA_LTT/Info/Recipe/TE.xml | 4887 ++ SA_LTT_UI/SA_LTT/MessageBox.cs | 37 SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.dll | 0 SA_LTT/Program_Back230214/Resources/Robot_Arm1.png | 0 SA_LTT/Program_back230220/Resources/Robot_Arm.png | 0 SA_LTT/Program_back230330/SA_LTT_UI.pdb | 0 SA_LTT/Program_back232023/RTC5OUT.out | 0 SA_LTT_UI/SA_LTT/Module/ModuleBase.cs | 488 SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj.user | 6 SA_LTT/Info/Wafer/B6.xml | 10 SA_LTT/Program_Back230214/Resources/Robot_Body.png | 0 SA_LTT_UI/SA_LTT/Module/PiLaser.cs | 3640 + SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PreAlignViwer.resources | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5OUT.out | 0 SA_LTT/Program_Usb/Resources/RecipeImage.PNG | 0 SA_LTT/Program_Back230214/Cor1746.ct5 | 0 SA_LTT/Info/Wafer/A10.xml | 9 SA_LTT_UI/SA_LTT/Info/UserInfo/User.cs | 80 SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.cs | 26 SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe | 0 SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.pdb | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.Designer.cs | 1879 SA_LTT/Program/EasyModbus.dll | 0 SA_LTT/Info/Wafer/Port1_15.xml | 7 SA_LTT/Info/Wafer/PreAligner.xml | 10 SA_LTT/Program_Back1213/Resources/Aligner.png | 0 SA_LTT_UI/SA_LTT/Module/Scanner.cs | 1281 SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DAT.dat | 0 SA_LTT/Program/SA_LTT_UI.exe | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.Designer.cs | 844 SA_LTT_UI/SA_LTT/Equipment.cs | 1382 SA_LTT/Info/Wafer/B22.xml | 10 SA_LTT/Info/Wafer/A25.xml | 9 SA_LTT/Program_230508/Resources/Robot_Arm1.png | 0 SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.cs | 542 SA_LTT/Info/Wafer/A1.xml | 9 SA_LTT_UI/SA_LTT/Info/RecipeInfo/RecipeManager.cs | 121 SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfoManager.cs | 243 SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.resx | 120 SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.Designer.cs | 114 SA_LTT/Config/MotorData/MotorData.xml | 159 SA_LTT_UI/SA_LTT/Alarm/Alarm.cs | 176 SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 SA_LTT/Program_Back230214/SA_LTT.dll | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenParameter.resources | 0 SA_LTT/Info/Wafer/B1.xml | 10 SA_LTT/Program/RTC5DLL.dll | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.cs | 145 SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.resx | 120 SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.cs | 154 SA_LTT_UI/SA_LTT/Log/LogCreater.cs | 64 SA_LTT/Program_Back230214/SA_LTT.pdb | 0 SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.cs | 188 SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.resx | 120 SA_LTT/Program_back232023/Resources/Aligner.png | 0 SA_LTT/Program_Back1213/Resources/Robot_Arm.png | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.Designer.cs | 115 SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.manifest | 11 SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.manifest | 11 SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.Designer.cs | 103 SA_LTT/Program_Usb/Cor_1to1_old.ct5 | 0 SA_LTT_UI/SA_LTT_UI/Program.cs | 60 SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/RecipeImage.PNG | 0 SA_LTT/Info/Recipe/TEST.xml | 10298 ++++ SA_LTT/Program_Usb/RTC5DLL.dll | 0 SA_LTT/Info/User/Operator.xml | 6 SA_LTT/Program_back230330/Resources/Robot_Arm1.png | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.cs | 908 SA_LTT/Info/Wafer/Port2_3.xml | 7 SA_LTT/Program_back232023/Resources/Chamber.png | 0 SA_LTT/Program_230508/Resources/RecipeImage.PNG | 0 SA_LTT/Info/Wafer/Port2_17.xml | 7 SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.cs | 542 SA_LTT/Program_back230330/RTC5OUT.out | 0 SA_LTT/Program_Back1213/Resources/Chamber.png | 0 SA_LTT_UI/SA_LTT_UI/Properties/Settings.Designer.cs | 30 SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Body.png | 0 SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.Designer.cs | 824 SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe.config | 6 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenAlarmSetting.resources | 0 SA_LTT/Program_back232023/RTC5DAT.dat | 0 SA_LTT_UI/SA_LTT/Dll/RTC5OUT.out | 0 SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.config | 6 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Properties.Resources.resources | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ScannerViewer.resources | 0 SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.cs | 50 SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.resx | 120 SA_LTT/Program/Resources/Robot_Arm2.png | 0 SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-wal | 0 SA_LTT/Info/Wafer/A15.xml | 9 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.WaferInfoViewer.resources | 0 SA_LTT_UI/SA_LTT/Info/EquipmentInfo/EquipmentInfo.cs | 63 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMaintenance.resources | 0 SA_LTT/Info/Wafer/Port1_22.xml | 7 SA_LTT/Info/Wafer/B5.xml | 10 SA_LTT/Program_230508/RTC5OUT.out | 0 SA_LTT_UI/SA_LTT/Properties/AssemblyInfo.cs | 36 SA_LTT/Program_back230330/RTC5DAT.dat | 0 SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-shm | 0 SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe | 0 SA_LTT/Info/Wafer/A18.xml | 9 SA_LTT_UI/SA_LTT_UI/bin/Debug/padDLLBW.dll | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.IoBar.resources | 0 SA_LTT_UI/SA_LTT/bin/Debug/log4net.dll | 0 SA_LTT/Info/Wafer/B23.xml | 10 SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.resx | 120 SA_LTT/Program_230508/log4net.dll | 0 SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml.cs | 388 SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.cs | 161 SA_LTT_UI/가공 설명 Program/TestRec.exe | 0 SA_LTT/Info/Wafer/A7.xml | 9 SA_LTT/Info/Wafer/B19.xml | 10 SA_LTT/Info/Wafer/Port2_8.xml | 7 SA_LTT/Program_back230220/RTC5RBF.rbf | 0 SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.manifest | 11 SA_LTT/Program_Back1213/RTC5OUT.out | 0 SA_LTT/Info/Wafer/Port2_12.xml | 7 SA_LTT/Program_back230220/Resources/Robot_Arm1.png | 0 SA_LTT/Program_230508/RTC5DLL.dll | 0 SA_LTT/Program_back230330/log4net.dll | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 SA_LTT/Program_230508/RTC5DAT.dat | 0 SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.resx | 120 SA_LTT_UI/가공 설명 Program/TestRec.vshost.exe | 0 SA_LTT/Info/Wafer/Port2_24.xml | 7 SA_LTT/Program_230508/padDLLBW.dll | 0 SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.resx | 120 SA_LTT/Program_Back1213/RTC5DAT.dat | 0 SA_LTT/Program_back230330/RTC5RBF.rbf | 0 SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.cs | 38 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.cs | 13 SA_LTT/Program_Back230214/Cor_1to1_old.ct5 | 0 SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml | 113 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.baml | 0 SA_LTT/Program_back230220/Resources/Robot_Body.png | 0 SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalData.cs | 68 SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.resx | 120 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.i.cs | 13 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.cs | 134 SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml.cs | 242 SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.cs | 620 SA_LTT/Program_Back230214/RTC5DLLx64.dll | 0 SA_LTT_UI/SA_LTT_UI/Resources/BuzzerOff.png | 0 SA_LTT/Program/Resources/Robot_Arm.png | 0 SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.cs | 90 SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.cs | 550 SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/db.lock | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.lref | 7 SA_LTT/Program_Back230214/Resources/RecipeImage.PNG | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorViewer.resources | 0 SA_LTT/Info/Wafer/B2.xml | 10 SA_LTT/Info/AttenuatorCal.csv | 23 SA_LTT/Info/Wafer/Port1_10.xml | 7 SA_LTT/Program_back230330/RTC5DLL.dll | 0 SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.Designer.cs | 1278 SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.cs | 297 SA_LTT/Info/Wafer/A22.xml | 9 SA_LTT_UI/SA_LTT_UI/Properties/Settings.settings | 7 SA_LTT/Program_back230220/log4net.dll | 0 SA_LTT/Program/pp.vshost.exe.manifest | 11 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.pdb | 0 SA_LTT/Info/Wafer/Port1_25.xml | 7 SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.cs | 211 SA_LTT/Program_back232023/SA_LTT.dll | 0 SA_LTT/Program/SA_LTT_UI.vshost.exe | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csprojAssemblyReference.cache | 0 SA_LTT_UI/SA_LTT/Module/VisionControl.cs | 736 SA_LTT/Program_back230330/EasyModbus.dll | 0 SA_LTT/Program_Back1213/Cor1746.ct5 | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChamberViewer.resources | 0 SA_LTT/Config/Parameter/UserParameter.xml | 0 SA_LTT/Program_back232023/SA_LTT.pdb | 0 SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.cs | 168 SA_LTT/Program_back232023/Resources/RecipeImage.PNG | 0 SA_LTT_UI/SA_LTT/Parameter/ModeParameter.cs | 24 SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.cs | 243 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenRecipe.resources | 0 SA_LTT/Program_back232023/Cor_1to1.ct5 | 0 SA_LTT_UI/SA_LTT_UI/Resources/Aligner.png | 0 SA_LTT/Info/Wafer/A8.xml | 9 SA_LTT_UI/가공 설명 Program/TestRec.vshost.exe.manifest | 11 SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.cs | 454 SA_LTT/Program_back232023/SA_LTT_UI.exe.config | 6 SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.Designer.cs | 136 SA_LTT/Program_230508/SA_LTT_UI.exe | 0 SA_LTT/Info/Wafer/Robot.xml | 10 SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj | 537 SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.cs | 32 SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.cs | 135 SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.resx | 120 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MessageBoxPad.resources | 0 SA_LTT/Info/Wafer/B24.xml | 10 SA_LTT_UI/SA_LTT/MessageBox.resx | 120 SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.resx | 120 SA_LTT/Program_Back1213/RTC5DLLx64.dll | 0 SA_LTT/Program_back230220/Resources/RecipeImage.PNG | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.AnalogBar.resources | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm1.png | 0 SA_LTT/Info/Wafer/Port1_23.xml | 7 SA_LTT/Program_back230330/RTC5DLLx64.dll | 0 SA_LTT/Program_back232023/pp.vshost.exe.config | 6 SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfo.cs | 58 SA_LTT/Program_Back230214/RTC5DLL.dll | 0 SA_LTT/Info/Wafer/Port2_25.xml | 7 SA_LTT/Program_Back230214/SA_LTT_UI.exe.config | 6 SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml.cs | 28 SA_LTT/Info/Wafer/Port1_17.xml | 7 SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Hand.png | 0 SA_LTT/Info/Wafer/Port2_11.xml | 7 SA_LTT/Program/Cor1746.ct5 | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.cs | 298 SA_LTT/Info/Wafer/B18.xml | 10 SA_LTT/Info/Wafer/Port1_1.xml | 7 README.md | 7 SA_LTT/Program_back230220/pp.vshost.exe.config | 6 SA_LTT/Program_230508/SA_LTT_UI.vshost.exe | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.Designer.cs | 139 SA_LTT/Program_back230220/RTC5DLL.dll | 0 SA_LTT/Program_Back1213/SA_LTT_UI.exe | 0 SA_LTT/Info/Wafer/B4.xml | 10 SA_LTT/Program_back230220/Resources/Robot_Arm2.png | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources | 0 SA_LTT/Program_back230220/SA_LTT_UI.exe.config | 6 SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.resx | 120 SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.Designer.cs | 143 SA_LTT/Info/Wafer/Port2_19.xml | 7 SA_LTT/Info/Wafer/A23.xml | 9 SA_LTT_UI/SA_LTT/Module/Crevis.cs | 372 SA_LTT/Program_Back230214/pp.vshost.exe.config | 6 SA_LTT/Info/Wafer/Port2_1.xml | 7 SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor1746.ct5 | 0 SA_LTT_UI/SA_LTT_UI/Properties/Resources.resx | 163 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.lref | 7 SA_LTT/Info/Recipe/BB.xml | 2894 + SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.Designer.cs | 86 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.cs | 464 SA_LTT_UI/.vs/SA_LTT_UI/v15/.suo | 0 SA_LTT/Info/Wafer/Port1_18.xml | 7 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.cache | 20 SA_LTT_UI/SA_LTT_UI/Properties/Resources.Designer.cs | 203 SA_LTT/Info/Wafer/Port2_10.xml | 7 SA_LTT/Program_230508/RTC5RBF.rbf | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorCalViewer.resources | 0 SA_LTT/Program_back230330/Cor_1to1_old.ct5 | 0 SA_LTT_UI/SA_LTT/Info/RecipeInfo/Recipe.cs | 758 SA_LTT_UI/SA_LTT_UI/Resources/RecipeImage.PNG | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.pdb | 0 SA_LTT/Info/Wafer/A17.xml | 9 SA_LTT/Program_230508/Resources/Chamber.png | 0 SA_LTT/Program_Usb/log4net.dll | 0 SA_LTT_UI/SA_LTT/Module/PowerPmacCtrl.cs | 1497 SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.resx | 120 SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.Designer.cs | 696 SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Chamber.png | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EquipmentInfoViewer.resources | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm2.png | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Body.png | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.GenerateResource.cache | 0 SA_LTT/Program_back232023/padDLLBW.dll | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.MainFrame.resources | 0 SA_LTT/Program_Usb/RTC5RBF.rbf | 0 SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.MessageBoxPad.resources | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe | 0 SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.Designer.cs | 338 SA_LTT/Info/Recipe/4INCH.xml | 16246 ++++++ SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm.png | 0 SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.config | 6 SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe | 0 SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.resx | 120 SA_LTT/Program_Back230214/Resources/Aligner.png | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.cs | 59 SA_LTT/Program/RTC5DAT.dat | 0 SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.config | 6 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLog.resources | 0 SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.Designer.cs | 195 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenIO.resources | 0 SA_LTT/Program/Cor_1to1_old.ct5 | 0 SA_LTT/Info/Wafer/Port2_14.xml | 7 SA_LTT/Info/Wafer/B25.xml | 10 SA_LTT/Info/Wafer/Port1_9.xml | 7 SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.resx | 120 SA_LTT/Info/Wafer/Port2_22.xml | 7 SA_LTT/Program_Usb/RTC5DAT.dat | 0 SA_LTT/Program_Back230214/RTC5RBF.rbf | 0 SA_LTT_UI/SA_LTT/Info/FoupInfo/Foup.cs | 34 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PiLaserViewer.resources | 0 SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.Designer.cs | 1848 SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.config | 6 SA_LTT/Program/log4net.dll | 0 SA_LTT/Config/Parameter/SystemParameter.xml | 17 SA_LTT_UI/SA_LTT/Module/Attenuator.cs | 472 SA_LTT/Program_Usb/RTC5OUT.out | 0 SA_LTT_UI/SA_LTT_UI/MainFrame.cs | 296 SA_LTT/Info/Wafer/B3.xml | 10 SA_LTT/Program_Back230214/RTC5DAT.dat | 0 SA_LTT/Program/RTC5OUT.out | 0 SA_LTT_UI/SA_LTT/Base/ComPort.cs | 385 SA_LTT/Info/Wafer/Port1_20.xml | 7 SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.cs | 610 SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.Designer.cs | 361 SA_LTT/Program_back230330/Resources/Chamber.png | 0 SA_LTT/Program_Back1213/EasyModbus.dll | 0 SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm2.png | 0 SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.config | 6 SA_LTT/Info/Wafer/B17.xml | 10 SA_LTT/Info/Wafer/Port2_6.xml | 7 SA_LTT_UI/SA_LTT_UI/Screen/IoBar.resx | 120 SA_LTT_UI/SA_LTT/Alarm/AlarmCode.cs | 2023 SA_LTT/Info/Wafer/Port1_19.xml | 7 SA_LTT/Program_Back230214/RTC5OUT.out | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.FileListAbsolute.txt | 801 SA_LTT/Program_back230330/padDLLBW.dll | 0 SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.exe | 0 SA_LTT/Program_back232023/Cor1746.ct5 | 0 SA_LTT/Program_back230220/Cor_1to1.ct5 | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.i.cs | 134 SA_LTT/Info/Wafer/B10.xml | 10 SA_LTT/Program_Back230214/padDLLBW.dll | 0 SA_LTT/Program/RTC5RBF.rbf | 0 SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.cs | 370 SA_LTT/Program_Usb/Resources/Aligner.png | 0 SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 SA_LTT/Program_Back230214/log4net.dll | 0 SA_LTT/Info/Wafer/Port1_2.xml | 7 SA_LTT/Program_230508/SA_LTT_UI.pdb | 0 SA_LTT/Info/Wafer/Port1_12.xml | 7 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AlarmViewer.resources | 0 SA_LTT_UI/SA_LTT/Alarm/AlarmManager.cs | 271 SA_LTT/Program_back230330/SA_LTT_UI.exe | 0 SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.Designer.cs | 838 SA_LTT/Program/SA_LTT_UI.exe.config | 6 SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.resx | 120 SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1.ct5 | 0 SA_LTT/Info/Wafer/A6.xml | 10 SA_LTT/Program_back230330/SA_LTT.pdb | 0 SA_LTT/Config/MotorData/MotorData_old.xml | 69 SA_LTT_UI/SA_LTT/Dll/RTC5DLL.dll | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChillerViewer.resources | 0 SA_LTT_UI/가공 설명 Program/TestRec.vshost.exe.config | 6 SA_LTT_UI/SA_LTT_UI/Screen/IoBar.Designer.cs | 87 SA_LTT/Program_back230330/SA_LTT.dll | 0 SA_LTT/Program_Back230214/Resources/Robot_Arm.png | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.LogInViewer.resources | 0 SA_LTT/Info/Wafer/A20.xml | 9 SA_LTT/Program_Usb/Resources/Chamber.png | 0 SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.Designer.cs | 496 SA_LTT/Program_back232023/RTC5DLL.dll | 0 SA_LTT/Program/Resources/Aligner.png | 0 SA_LTT/Program_Usb/Resources/Robot_Arm1.png | 0 SA_LTT_UI/SA_LTT/Module/Motor.cs | 75 SA_LTT/Program_Usb/Resources/Robot_Body.png | 0 SA_LTT/Info/Wafer/A19.xml | 9 SA_LTT/Info/Wafer/Port1_8.xml | 7 SA_LTT/Program/Resources/Chamber.png | 0 SA_LTT/Info/Wafer/B16.xml | 10 SA_LTT/Program_Back1213/Cor_1to1.ct5 | 0 SA_LTT/Config/Setting/Scanner.xml | 23 SA_LTT_UI/SA_LTT/Module/Chamber.cs | 425 SA_LTT/Program_Back1213/Resources/RecipeImage.PNG | 0 SA_LTT_UI/SA_LTT/Dll/OphirLMMeasurement.dll | 0 SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csprojAssemblyReference.cache | 0 SA_LTT/Info/Wafer/Port2_23.xml | 7 SA_LTT/Program_back230220/padDLLBW.dll | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.resx | 120 SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.resx | 120 SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.Designer.cs | 197 SA_LTT/Program_Usb/EasyModbus.dll | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.Designer.cs | 1361 SA_LTT/Program_back232023/SA_LTT_UI.exe | 0 SA_LTT_UI/SA_LTT/Base/SocketClient.cs | 323 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources | 0 SA_LTT_UI/가공 설명 Program/TestRec.exe.config | 6 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.baml | 0 SA_LTT/Info/Wafer/Port2_7.xml | 7 SA_LTT/Program/SA_LTT_UI.vshost.exe.config | 6 SA_LTT/Program_230508/SA_LTT_UI.exe.config | 6 SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.cs | 426 SA_LTT/Program_back230220/Cor1746.ct5 | 0 SA_LTT_UI/SA_LTT/Parameter/SettingParameterManager.cs | 59 SA_LTT/Info/Wafer/Port2_13.xml | 7 SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.Designer.cs | 590 SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.cs | 118 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.baml | 0 SA_LTT/Program_Back230214/SA_LTT_UI.exe | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLL.dll | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLLx64.dll | 0 SA_LTT_UI/SA_LTT/Module/PowerMeter.cs | 468 SA_LTT/Info/Wafer/Port1_21.xml | 7 SA_LTT_UI/SA_LTT/Module/GR200.cs | 173 SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.cs | 100 SA_LTT/Info/Recipe/한글.xml | 10607 ++++ SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CopyComplete | 0 SA_LTT_UI/SA_LTT/Module/Robot.cs | 1609 SA_LTT/Info/Wafer/Port1_3.xml | 7 SA_LTT/Program_back230330/pp.vshost.exe.manifest | 11 SA_LTT/Program_Back1213/SA_LTT.pdb | 0 SA_LTT/Program/RTC5DLLx64.dll | 0 SA_LTT/Program_back230330/Resources/Aligner.png | 0 SA_LTT/Config/Alarms.csv | 2001 SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml | 14 SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.Designer.cs | 76 SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferences.cache | 0 SA_LTT_UI/SA_LTT_UI/Screen/IoBar.cs | 52 SA_LTT/Info/Wafer/B11.xml | 10 SA_LTT/Program_back230220/Resources/Chamber.png | 0 SA_LTT_UI/SA_LTT/Dll/RTC5DLLx64.dll | 0 SA_LTT_UI/SA_LTT_UI/Resources/LoadPort.png | 0 SA_LTT/Program_Back1213/SA_LTT.dll | 0 SA_LTT/Program_Back1213/SA_LTT_UI.pdb | 0 SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.manifest | 11 SA_LTT/Program/Resources/RecipeImage.PNG | 0 SA_LTT/Info/Wafer/A5.xml | 9 SA_LTT/Program_Back1213/padDLLBW.dll | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.i.cs | 115 SA_LTT/Program_Back1213/SA_LTT_UI.exe.config | 6 SA_LTT_UI/SA_LTT_UI.sln | 28 SA_LTT/Program/Resources/Robot_Body.png | 0 SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.resx | 120 SA_LTT/Info/Wafer/A21.xml | 9 SA_LTT/Info/Wafer/Port1_11.xml | 7 SA_LTT_UI/SA_LTT/Base/XmlManager.cs | 131 SA_LTT/Program_back230220/SA_LTT.pdb | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.cs | 76 SA_LTT/Program_Back230214/EasyModbus.dll | 0 SA_LTT/Program_back230220/SA_LTT.dll | 0 SA_LTT_UI/SA_LTT_UI/MainFrame.resx | 123 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ModifyUserViewer.resources | 0 SA_LTT_UI/SA_LTT_UI/Resources/Alarm.png | 0 SA_LTT/Config/Parameter/ModeParameter.xml | 8 SA_LTT/Program_back230220/Resources/Aligner.png | 0 SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.Designer.cs | 775 SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.cache | 20 SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.Designer.cs | 177 SA_LTT/Info/Wafer/Port1_14.xml | 7 SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.manifest | 11 SA_LTT/Program_Back1213/RTC5DLL.dll | 0 SA_LTT/Program_back230220/Cor_1to1_old.ct5 | 0 SA_LTT_UI/SA_LTT/MessageBox.Designer.cs | 76 SA_LTT/Config/Cor1746.ct5 | 0 SA_LTT/Program_Back230214/Resources/Robot_Arm2.png | 0 SA_LTT/Program_Back1213/Resources/Robot_Body.png | 0 SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache | 0 SA_LTT/Program_Usb/SA_LTT_UI.pdb | 0 SA_LTT/Info/Wafer/Port1_7.xml | 7 SA_LTT_UI/SA_LTT/Sequence.cs | 2517 + SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.resx | 120 SA_LTT/Program_230508/EasyModbus.dll | 0 SA_LTT/Info/Wafer/Port2_4.xml | 7 SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml | 10 SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.cs | 83 SA_LTT/Info/Wafer/B15.xml | 10 SA_LTT/Info/Recipe/AAA.xml | 1843 SA_LTT/Program_Usb/Resources/Robot_Arm2.png | 0 SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.resx | 120 SA_LTT/Program_Back230214/Cor_1to1.ct5 | 0 SA_LTT/Program_back230330/Cor_1to1.ct5 | 0 SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe | 0 SA_LTT/Program_back230220/SA_LTT_UI.pdb | 0 SA_LTT_UI/SA_LTT/Parameter/SettingParameter.cs | 55 SA_LTT/Info/User/1.xml | 6 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.SequenceViewer.resources | 0 SA_LTT/Program_Usb/pp.vshost.exe.manifest | 11 SA_LTT/Program/SA_LTT_UI.vshost.exe.manifest | 11 SA_LTT/Program_back230220/pp.vshost.exe.manifest | 11 SA_LTT_UI/SA_LTT/Module/Chiller.cs | 1784 SA_LTT/Program_Back1213/Resources/Robot_Arm1.png | 0 SA_LTT_UI/SA_LTT_UI/SA_LTT_UI_k5iwqdhu_wpftmp.csproj | 529 SA_LTT/Program_Back1213/Cor_1to1_old.ct5 | 0 SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.Designer.cs | 246 SA_LTT/Info/Wafer/A11.xml | 9 SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.manifest | 11 SA_LTT/Info/Wafer/B20.xml | 10 SA_LTT/Info/Wafer/B12.xml | 10 SA_LTT_UI/SA_LTT_UI/Resources/Lamp.png | 0 SA_LTT/Program_Usb/padDLLBW.dll | 0 SA_LTT/Info/Wafer/A14.xml | 9 SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.Designer.cs | 1427 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenSetting.resources | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.Designer.cs | 265 SA_LTT/Program_back230220/RTC5OUT.out | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.config | 6 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.g.resources | 0 SA_LTT/Program_back230220/RTC5DAT.dat | 0 SA_LTT/Program_back232023/RTC5RBF.rbf | 0 SA_LTT/Program_back230330/Resources/RecipeImage.PNG | 0 SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CoreCompileInputs.cache | 1 SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.resx | 120 SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe | 0 SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe | 0 SA_LTT/Program_230508/pp.vshost.exe.config | 6 SA_LTT/Info/Wafer/Port2_20.xml | 7 SA_LTT_UI/SA_LTT/SA_LTT.csproj | 136 SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.FileListAbsolute.txt | 119 SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferences.cache | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.cs | 115 SA_LTT/Program/Cor_1to1.ct5 | 0 SA_LTT/Program_Usb/pp.vshost.exe.config | 6 SA_LTT/Program/Resources/Robot_Arm1.png | 0 SA_LTT/Program_back230330/pp.vshost.exe.config | 6 SA_LTT/Info/Wafer/Port2_16.xml | 7 SA_LTT/Info/Wafer/A4.xml | 9 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CoreCompileInputs.cache | 1 SA_LTT/Info/Wafer/B9.xml | 10 SA_LTT/Info/Recipe/180180.xml | 10298 ++++ SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.resx | 123 SA_LTT/Program/pp.vshost.exe.config | 6 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RecipeCreateViewer.resources | 0 SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.pdb | 0 SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.dll | 0 SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.GenerateResource.cache | 0 SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.cs | 437 SA_LTT/Info/Wafer/Port1_4.xml | 7 SA_LTT/Program_back230330/Resources/Robot_Body.png | 0 SA_LTT/Program_Back1213/RTC5RBF.rbf | 0 SA_LTT/Program_Back1213/log4net.dll | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyMeterViewer.resources | 0 SA_LTT/Program_Back1213/Resources/Robot_Arm2.png | 0 SA_LTT/Program_back232023/log4net.dll | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.i.cache | 20 SA_LTT_UI/SA_LTT/Module/PreAligner.cs | 1053 SA_LTT/Program/SA_LTT_UI.pdb | 0 SA_LTT/Info/Wafer/Port2_5.xml | 7 SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Aligner.png | 0 SA_LTT/Program_back232023/RTC5DLLx64.dll | 0 SA_LTT/Program_back230220/RTC5DLLx64.dll | 0 SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.resx | 120 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MaintenanceViewer.resources | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1_old.ct5 | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMotionMaintenance.resources | 0 SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.xml | 93 SA_LTT/Program_back232023/Resources/Robot_Arm2.png | 0 SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.Designer.cs | 146 SA_LTT/Program_Back230214/SA_LTT_UI.pdb | 0 SA_LTT/Info/Wafer/Port2_15.xml | 7 SA_LTT/Program_230508/SA_LTT.dll | 0 SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.Designer.cs | 84 SA_LTT_UI/SA_LTT_UI/bin/Debug/log4net.dll | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.CreateUserViewer.resources | 0 SA_LTT/Program_230508/SA_LTT.pdb | 0 SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.resx | 123 SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.resx | 120 SA_LTT_UI/SA_LTT_UI/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll | 0 SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.resx | 120 SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.i.cs | 76 SA_LTT_UI/SA_LTT/Log/EquipmentLogManager.cs | 122 SA_LTT_UI/SA_LTT/Base/SequenceTimer.cs | 64 SA_LTT/Info/Wafer/A12.xml | 9 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.VisionViewer.resources | 0 SA_LTT/Program_back230330/Cor1746.ct5 | 0 SA_LTT_UI/SA_LTT/bin/Debug/EasyModbus.dll | 0 SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.resx | 120 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RobotViewer.resources | 0 SA_LTT/Program_230508/Resources/Robot_Body.png | 0 SA_LTT_UI/SA_LTT/Module/FFU.cs | 451 SA_LTT_UI/SA_LTT/Info/UserInfo/UserManager.cs | 154 SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml | 38 SA_LTT/Program_back232023/EasyModbus.dll | 0 SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.manifest | 11 SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm1.png | 0 SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.config | 6 SA_LTT/Program_back230220/EasyModbus.dll | 0 SA_LTT/Program_230508/Cor1746.ct5 | 0 SA_LTT_UI/SA_LTT_UI/Resources/Robot_Body.png | 0 SA_LTT_UI/SA_LTT_UI/Resources/Chamber.png | 0 SA_LTT/Program_230508/Resources/Robot_Arm.png | 0 SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.ResolveComReference.cache | 0 SA_LTT/Program_Back230214/Resources/Chamber.png | 0 SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5RBF.rbf | 0 SA_LTT/Info/Wafer/A3.xml | 9 SA_LTT/Info/Wafer/A13.xml | 9 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLaser.resources | 0 SA_LTT/Info/Equipment/EquipmentInfo.xml | 5 SA_LTT/Info/Wafer/B8.xml | 10 SA_LTT/Program_Usb/SA_LTT.dll | 0 SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.cs | 624 SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.resx | 120 SA_LTT/Program_230508/RTC5DLLx64.dll | 0 SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.ResolveComReference.cache | 0 SA_LTT/Info/Recipe/123.xml | 4987 ++ SA_LTT/Program_Usb/Cor_1to1.ct5 | 0 SA_LTT/Info/FoupRecipe/TEST.xml | 31 SA_LTT/Info/Recipe/AA.xml | 7 SA_LTT/Program_Usb/Cor1746.ct5 | 0 SA_LTT/Info/Wafer/B13.xml | 10 SA_LTT/Info/Wafer/Port1_13.xml | 7 SA_LTT/Info/Wafer/Port1_5.xml | 7 SA_LTT/Program_230508/Resources/Aligner.png | 0 SA_LTT/Program_Back230214/pp.vshost.exe.manifest | 11 SA_LTT/Program/padDLLBW.dll | 0 SA_LTT/Program_230508/Cor_1to1_old.ct5 | 0 SA_LTT/Program_Usb/SA_LTT.pdb | 0 SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.config | 6 SA_LTT_UI/SA_LTT_UI/Properties/AssemblyInfo.cs | 36 SA_LTT/Info/Wafer/Port2_21.xml | 7 SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml.cs | 64 680 files changed, 140,139 insertions(+), 0 deletions(-) diff --git a/README.md b/README.md index 409f232..2a9fc96 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,10 @@ SA_LTT Program +========== +SA_LTT �뤃�뜑 +- �봽濡쒓렇�옩 �꽕�젙 諛� Parameter �뙆�씪�뱾. +- �쐞移� : C �뱶�씪�씠釉� + +SA_LTT_UI +- �꽕鍮� SW �봽濡쒓렇�옩. \ No newline at end of file diff --git a/SA_LTT/Config/Alarms.csv b/SA_LTT/Config/Alarms.csv new file mode 100644 index 0000000..42fec7c --- /dev/null +++ b/SA_LTT/Config/Alarms.csv @@ -0,0 +1,2001 @@ +AL_0000_,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0001_EMO_STOP_1,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0002_EMO_STOP_2,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0003_EMO_STOP_3,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0004_EMO_STOP_4,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0005_SMOKE_DETECTOR_ON,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0006_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0007_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0008_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0009_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0010_DOOR_OPEN_1,None,Heavy,False,2023.02.23 14:31:22.274 +AL_0011_DOOR_OPEN_2,None,Heavy,False,2023.02.23 14:31:22.274 +AL_0012_DOOR_OPEN_3,None,Heavy,False,2023.02.23 14:31:22.274 +AL_0013_DOOR_OPEN_4,None,Heavy,False,2023.02.23 14:31:22.274 +AL_0014_DOOR_OPEN_CP,None,Heavy,False,2022.11.16 09:00:54.716 +AL_0015_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0016_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0017_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0018_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0019_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0020_SERVO_MC_OFF,None,Heavy,True,2022.11.16 09:00:56.094 +AL_0021_VACUUM_MC_OFF,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0022_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0023_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0024_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0025_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0026_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0027_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0028_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0029_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0030_LASER_WATER_LEAK,None,Heavy,True,2022.11.16 09:00:56.094 +AL_0031_CHILLER_WATER_LEAK,None,Heavy,True,2022.11.16 09:00:56.094 +AL_0032_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0033_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0034_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0035_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0036_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0037_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0038_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0039_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0040_MAIN_CDA_PRESSURE,Main Valve를 열어 주세요.,Heavy,True,2022.11.16 17:33:55.314 +AL_0041_MAIN_VAC_PRESSURE,Main Valve를 열어 주세요.,Heavy,False,2022.11.16 17:33:55.413 +AL_0042_MAIN_CDA_FLOW,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0043_CMB_VAC_PRESSURE,None,Heavy,True,2022.11.16 09:00:56.094 +AL_0044_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0045_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0046_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0047_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0048_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0049_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0050_CREVIS_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0051_PRE_ALIGNER_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0052_ROBOT_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0053_ATTENUATOR_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0054_TEMPCONTROLER_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0055_FFU_DISCONNECTED,None,Light,True,2022.11.23 09:10:30.116 +AL_0056_POWER_PMAC_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0057_UV_LASER_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0058_GR200_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716 +AL_0059_POWERMETER_DISCONNECTED,None,Heavy,False,2022.11.17 15:28:24.238 +AL_0060_POWER_PMAC_DISCONNECTED,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0061_CHILLER_DISCONNECTED,None,Heavy,True,2022.11.30 13:13:00.173 +AL_0062_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0063_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0064_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0065_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0066_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0067_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0068_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0069_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0070_PORT1_IS_NOT_DETECTED,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0071_PORT2_IS_NOT_DETECTED,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0072_PREALIGNER_HAS_NOT_WAFER,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0073_CHAMBER_HAS_NOT_WAFER,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0074_ROBOT_HAS_NOT_WAFER,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0075_PREALIGNER_HAS_WAFER,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0076_CHAMBER_HAS_WAFER,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0077_ROBOT_HAS_WAFER,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0078_LDD_IS_NOT_ON,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0079_SHUTTER_IS_NOT_OPEN,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0080_SET_CURRENT_IS_NOT_ZERO,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0081_ENERGY_MEASUREMENT_FAIL,None,Heavy,True,2022.12.19 14:19:31.570 +AL_0082_,None,Heavy,True,2022.12.19 14:19:31.570 +AL_0083_,None,Heavy,True,2022.12.19 14:19:31.570 +AL_0084_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0085_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0086_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0087_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0088_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0089_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0090_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0091_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0092_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0093_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0094_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0095_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0096_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0097_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0098_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0099_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0100_LASER_SOFT_FAULT_HFSYNC,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0101_LASER_SOFT_FAULT_LDD_INTERLOCK,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0102_LASER_SOFT_FAULT_SHUTTER_INTERLOCK,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0103_LASER_SOFT_FAULT_LOW_EXT_FREQUENCY,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0104_LASER_BOARD_FAULT_MAIN,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0105_LASER_BOARD_FAULT_COMMON,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0106_LASER_BOARD_FAULT_TEMPERATURE,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0107_LASER_BOARD_FAULT_SENSOR,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0108_LASER_BOARD_FAULT_POWER_MONITOR,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0109_LASER_BOARD_FAULT_PULSE,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0110_LASER_BOARD_FAULT_LDD,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0111_LASER_BOARD_FAULT_MOTOR,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0112_LASER_SYSTEM_FAULT_MEMORY,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0113_LASER_SYSTEM_FAULT_SDCARD,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0114_LASER_SYSTEM_FAULT_BOARD_COMMUNICATION,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0115_LASER_SYSTEM_FAULT_BOARD_STATE,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0116_LASER_GENERAL_ALARM_LDD1,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0117_LASER_GENERAL_ALARM_LDD2,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0118_LASER_GENERAL_ALARM_QSW,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0119_LASER_GENERAL_ALARM_FLOW,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0120_LASER_GENERAL_ALARM_WET,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0121_LASER_GENERAL_ALARM_HUMIDITY,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0122_LASER_GENERAL_ALARM_HFSYNC,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0123_LASER_TEMPERATURE_FAULT_0,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0124_LASER_TEMPERATURE_FAULT_1,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0125_LASER_TEMPERATURE_FAULT_2,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0126_LASER_TEMPERATURE_FAULT_3,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0127_LASER_TEMPERATURE_FAULT_4,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0128_LASER_TEMPERATURE_FAULT_5,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0129_LASER_TEMPERATURE_FAULT_6,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0130_LASER_TEMPERATURE_FAULT_7,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0131_LASER_SOFT_FAULT,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0132_LASER_HARD_FAULT,None,Heavy,True,2023.02.09 15:54:06.609 +AL_0133_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0134_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0135_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0136_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0137_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0138_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0139_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0140_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0141_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0142_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0143_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0144_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0145_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0146_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0147_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0148_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0149_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0150_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0151_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0152_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0153_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0154_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0155_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0156_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0157_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0158_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0159_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0160_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0161_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0162_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0163_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0164_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0165_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0166_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0167_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0168_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0169_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0170_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0171_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0172_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0173_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0174_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0175_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0176_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0177_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0178_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0179_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0180_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0181_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0182_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0183_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0184_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0185_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0186_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0187_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0188_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0189_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0190_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0191_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0192_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0193_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0194_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0195_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0196_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0197_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0198_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0199_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0200_ROBOT_ALARM_OCCURED,None,Heavy,True,2022.11.17 13:55:10.855 +AL_0201_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0202_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0203_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0204_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0205_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0206_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0207_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0208_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0209_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0210_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0211_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0212_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0213_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0214_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0215_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0216_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0217_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0218_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0219_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0220_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0221_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0222_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0223_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0224_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0225_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0226_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0227_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0228_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0229_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0230_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0231_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0232_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0233_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0234_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0235_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0236_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0237_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0238_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0239_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0240_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0241_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0242_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0243_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0244_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0245_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0246_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0247_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0248_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0249_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0250_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0251_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0252_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0253_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0254_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0255_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0256_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0257_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0258_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0259_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0260_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0261_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0262_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0263_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0264_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0265_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0266_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0267_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0268_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0269_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0270_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0271_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0272_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0273_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0274_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0275_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0276_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0277_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0278_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0279_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0280_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0281_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0282_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0283_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0284_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0285_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0286_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0287_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0288_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0289_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0290_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0291_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0292_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0293_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0294_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0295_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0296_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0297_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0298_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0299_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0300_POWER_PMAC_NOT_CONNECTED,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0301_POWER_PMAC_INVALID_DEVICE,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0302_POWER_PMAC_INVALID_COMMAND,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0303_POWER_PMAC_INVALID_RESPONSE,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0304_POWER_PMAC_DATA_REAMINS,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0305_POWER_PMAC_CMD_LENGTH_EXCEEDS,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0306_POWER_PMAC_RES_LENGTH_EXCEEDS,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0307_POWER_PMAC_RUNNING_DOWNLOAD,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0308_POWER_PMAC_ERROR,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0309_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0310_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0311_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0312_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0313_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0314_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0315_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0316_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0317_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0318_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0319_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0320_MOTOR_Y_NEGATIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0321_MOTOR_Y_POSITIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0322_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0323_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0324_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0325_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0326_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0327_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0328_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0329_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0330_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0331_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0332_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0333_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0334_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0335_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0336_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0337_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0338_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0339_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0340_MOTOR_X_NEGATIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0341_MOTOR_X_POSITIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0342_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0343_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0344_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0345_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0346_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0347_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0348_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0349_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0350_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0351_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0352_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0353_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0354_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0355_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0356_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0357_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0358_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0359_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0360_MOTOR_T_NEGATIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0361_MOTOR_T_POSITIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185 +AL_0362_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0363_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0364_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0365_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0366_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0367_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0368_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0369_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0370_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0371_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0372_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0373_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0374_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0375_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0376_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0377_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0378_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0379_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0380_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0381_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0382_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0383_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0384_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0385_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0386_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0387_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0388_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0389_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0390_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0391_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0392_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0393_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0394_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0395_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0396_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0397_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0398_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0399_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0400_CHILLER_LOW_LEVEL_IN_TANK,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0401_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_TEMP,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0402_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_RISE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0403_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_DROP,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0404_CHILLER_HIGH_CIRCULATING_FLUID_RETURN_TEMP,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0405_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_PRESSURE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0406_CHILLER_ABNORMAL_PUMP_OPERATION,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0407_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_RISE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0408_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_DROP,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0409_CHILLER_HIGH_COMPRESSOR_INTANK_TEMP,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0410_CHILLER_LOW_COMPRESSOR_INTANK_TEMP,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0411_CHILLER_LOW_SUPER_HEAT_TEMPERATURE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0412_CHILLER_HIGH_COMPRESSOR_DISCHARGE_PRESSURE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0413_CHILLER_REFRIGERANT_CIRCUIT_HIGH_PRESSURE_DROP,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0414_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_RISE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0415_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_DROP,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0416_CHILLER_COMPRESSOR_OVER_LOAD,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0417_CHILLER_COMMUNICATION_ERROR,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0418_CHILLER_MEMORY_ERROR,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0419_CHILLER_DC_LINE_FUSE_CUT,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0420_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0421_CHILLER_CIRCULATING_FLUID_TEMP_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0422_CHILLER_COMPRESSOR_INTANK_TEMP_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0423_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0424_CHILLER_COMPRESSOR_DISCHARGE_PRESSURE_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0425_CHILLER_COMPRESSOR_INTANK_PRESSURE_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0426_CHILLER_MAINTENANCE_OF_PUMP,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0427_CHILLER_MAINTENENCE_OF_FAN_MOTOR,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0428_CHILLER_MAINTENENCE_OF_COMPRESSOR,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0429_CHILLER_CONTACT_INPUT_1_SIGNAL_DETECTION_ALARM,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0430_CHILLER_CONTACT_INPUT_2_SIGNAL_DETECTION_ALARM,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0431_CHILLER_WATER_LEAKAGE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0432_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_RISE,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0433_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_DROP,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0434_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_SENSOR_ERROR,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0435,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0436,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0437,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0438,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0439,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0440,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0441,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0442,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0443,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0444,None,Heavy,True,2022.12.13 10:42:05.686 +AL_0445_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0446_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0447_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0448_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0449_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0450_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0451_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0452_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0453_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0454_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0455_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0456_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0457_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0458_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0459_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0460_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0461_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0462_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0463_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0464_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0465_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0466_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0467_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0468_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0469_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0470_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0471_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0472_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0473_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0474_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0475_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0476_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0477_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0478_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0479_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0480_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0481_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0482_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0483_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0484_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0485_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0486_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0487_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0488_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0489_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0490_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0491_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0492_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0493_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0494_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0495_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0496_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0497_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0498_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0499_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0500_PREALIGNER_PIN_UP_ERROR,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0501_PREALIGNER_PIN_DOWN_ERROR,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0502_PREALIGNER_VACCUM_ERROR,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0503_PREALIGNER_NO_WAFER,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0504_PREALIGNER_WAFER_LIMIT_ERROR_AFTER_ALIGN,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0505_PREALIGNER_NOT_FOUND_NOTCH,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0506_PREALIGNER_STAGE_LIMIT_ERROR,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0507_PREALIGNER_INVALID_ALIGN_COMMAND,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0508_PREALIGNER_CHUCK_ARRANGE_ERROR,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0509_PREALIGNER_WAFER_ALIGN_CCD_OVER,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0510_PREALIGNER_WAFER_LIMIT_ERROR_BEFORE_ALIGN,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0511_PREALIGNER_RETRACT_HOME,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0512_PREALIGNER_WAFER_EXIST,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0513_PREALIGNER_CCD_MODULE_ERROR,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0514_PREALIGNER_ALIGNER_TYPE_ERROR,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0515_PREALIGNER_COMMAND_ERROR,None,Heavy,True,2022.11.15 10:01:42.811 +AL_0516_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0517_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0518_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0519_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0520_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0521_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0522_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0523_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0524_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0525_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0526_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0527_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0528_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0529_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0530_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0531_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0532_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0533_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0534_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0535_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0536_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0537_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0538_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0539_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0540_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0541_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0542_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0543_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0544_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0545_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0546_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0547_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0548_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0549_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0550_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0551_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0552_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0553_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0554_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0555_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0556_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0557_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0558_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0559_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0560_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0561_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0562_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0563_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0564_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0565_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0566_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0567_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0568_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0569_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0570_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0571_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0572_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0573_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0574_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0575_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0576_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0577_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0578_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0579_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0580_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0581_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0582_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0583_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0584_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0585_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0586_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0587_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0588_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0589_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0590_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0591_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0592_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0593_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0594_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0595_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0596_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0597_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0598_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0599_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0600_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0601_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0602_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0603_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0604_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0605_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0606_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0607_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0608_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0609_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0610_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0611_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0612_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0613_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0614_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0615_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0616_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0617_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0618_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0619_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0620_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0621_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0622_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0623_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0624_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0625_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0626_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0627_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0628_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0629_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0630_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0631_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0632_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0633_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0634_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0635_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0636_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0637_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0638_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0639_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0640_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0641_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0642_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0643_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0644_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0645_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0646_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0647_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0648_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0649_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0650_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0651_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0652_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0653_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0654_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0655_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0656_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0657_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0658_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0659_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0660_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0661_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0662_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0663_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0664_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0665_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0666_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0667_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0668_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0669_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0670_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0671_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0672_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0673_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0674_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0675_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0676_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0677_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0678_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0679_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0680_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0681_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0682_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0683_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0684_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0685_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0686_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0687_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0688_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0689_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0690_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0691_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0692_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0693_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0694_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0695_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0696_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0697_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0698_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0699_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0700_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0701_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0702_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0703_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0704_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0705_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0706_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0707_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0708_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0709_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0710_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0711_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0712_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0713_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0714_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0715_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0716_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0717_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0718_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0719_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0720_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0721_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0722_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0723_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0724_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0725_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0726_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0727_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0728_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0729_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0730_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0731_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0732_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0733_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0734_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0735_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0736_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0737_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0738_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0739_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0740_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0741_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0742_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0743_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0744_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0745_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0746_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0747_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0748_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0749_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0750_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0751_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0752_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0753_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0754_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0755_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0756_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0757_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0758_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0759_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0760_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0761_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0762_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0763_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0764_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0765_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0766_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0767_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0768_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0769_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0770_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0771_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0772_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0773_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0774_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0775_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0776_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0777_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0778_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0779_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0780_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0781_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0782_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0783_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0784_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0785_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0786_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0787_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0788_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0789_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0790_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0791_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0792_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0793_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0794_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0795_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0796_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0797_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0798_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0799_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0800_RTC5_NO_BOARD_FOUND,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0801_RTC5_ACCESS_DENIED,None,Heavy,True,2022.11.11 14:26:32.000 +AL_0802_RTC5_COMMAND_NOT_FORWARDED,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0803_RTC5_NO_RESPONSE_FROM_BOARD,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0804_RTC5_INVALID_PARAMETER,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0805_RTC5_LIST_PROCESSING_IS_NOT_ACTIVE,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0806_RTC5_LIST_COMMAND_REJECTED,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0807_RTC5_LIST_COMMAND_HAS_BEEN_COVERTED,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0808_RTC5_VERSION_ERROR_RTC5_DLL_VERSION,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0809_RTC5_VERIFY_ERROR_RTC5_DLL_VERSION,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0809_RTC5_VERIFY_ERROR_DOWNLOAD_VERIFICATION,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0810_RTC5_DSP_VERSION_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0811_RTC5_DLL_INTERNAL_WINDOWS_MEMORY_REQUEST_FAIL,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0812_RTC5_EEPROM_READ_OR_WRITE_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0813_RTC5_ERROR_READING_PCI_CONFIGURATION_REGISTER,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0814_RTC5_RESET_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0815_RTC5_UNRESET_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0816_RTC5_FILE_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0817_RTC5_FORMAT_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0818_RTC5_SYSTEM_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0819_RTC5_ACCESS_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0820_RTC5_VERSION_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0821_RTC5_SYSTEM_DRIVER_NOT_FOUND,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0822_RTC5_DRIVER_CALL_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0823_RTC5_CONFIGURATION_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0824_RTC5_FPGA_FIRMWARE_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0825_RTC5_PCI_DOWNLOAD_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0826_RTC5_BUSY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0827_RTC5_DSP_MEMORY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0828_RTC5_VERIFY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0829_RTC5_PCI_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0830_RTC5_FILE_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0831_RTC5_MEMORY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0832_RTC5_FILE_OPEN_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0833_RTC5_DSP_MEMORY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0834_RTC5_PCI_DOWNLOAD_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0835_RTC5_SYSTEM_DRIVER_NOT_FOUND,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0836_RTC5_PARAMETER_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0837_RTC5_ACCESS_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0838_RTC5_WARNING_3D_CORRECTION_TABLE,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0839_RTC5_BUSY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0840_RTC5_PCI_UPLOAD_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0841_RTC5_VERIFY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0842_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0843_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0844_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0845_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0846_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0847_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0848_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0849_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0850_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0851_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0852_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0853_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0854_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0855_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0856_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0857_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0858_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0859_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0860_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0861_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0862_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0863_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0864_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0865_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0866_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0867_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0868_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0869_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0870_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0871_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0872_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0873_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0874_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0875_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0876_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0877_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0878_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0879_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0880_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0881_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0882_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0883_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0884_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0885_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0886_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0887_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0888_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0889_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0890_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0891_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0892_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0893_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0894_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0895_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0896_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0897_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0898_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0899_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0900_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0901_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0902_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0903_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0904_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0905_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0906_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0907_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0908_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0909_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0910_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0911_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0912_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0913_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0914_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0915_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0916_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0917_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0918_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0919_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0920_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0921_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0922_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0923_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0924_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0925_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0926_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0927_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0928_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0929_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0930_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0931_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0932_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0933_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0934_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0935_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0936_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0937_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0938_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0939_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0940_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0941_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0942_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0943_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0944_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0945_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0946_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0947_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0948_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0949_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0950_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0951_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0952_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0953_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0954_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0955_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0956_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0957_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0958_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0959_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0960_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0961_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0962_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0963_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0964_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0965_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0966_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0967_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0968_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0969_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0970_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0971_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0972_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0973_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0974_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0975_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0976_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0977_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0978_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0979_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0980_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0981_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0982_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0983_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0984_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0985_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0986_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0987_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0988_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0989_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0990_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0991_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0992_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0993_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0994_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0995_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0996_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0997_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0998_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_0999_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1000_ERR_NOT_HOMED,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1001_ERR_EMERGENCY,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1002_ERR_MOTOR_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1003_ERR_WAIT_TIMEOUT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1004_ENCODER_RESET_TIMEOUT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1005_ERR_INTERLOCK,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1006_ERR_DATA_RANGE,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1007_ERR_WAFER_BEFORE_GET,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1008_ERR_NO_WAFER_BEFORE_PUT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1009_ERR_NO_WAFER_AFTER_GET,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1010_ERR_WAFER_AFTER_PUT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1011_ERR_NO_WAFER_DURING_GET,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1012_ERR_WAFER_DURING_PUT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1013_ERR_NOT_HOMED,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1014_ERR_NOT_SUPPORTED_FUNC,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1015_ERR_WAFER_OUT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1016_ERR_WAFER_SLIP,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1017_OVER_WAFER_DURING_GET,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1018_ERR_PLATE_CHECK,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1019_ERR_PUSHER_SPEED_HIGH,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1020_ERR_NOT_CORRECT_BLADE_POS,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1021_ERR_MAPPING_IS_NOT_PERFORMED,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1022_ERR_NO_MAPPING_DATA,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1023_ALREADY_LATCH_BLOCKED,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1024_ERR_CANNOT_UNGRIP,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1025_ERR_INVALID_COMMAND,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1026_ERR_INVALID_DATA,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1027_ERR_INVALID_STATION,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1028_ERR_INVALID_HAND,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1029_ERR_INVALID_SLOT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1030_ERR_INVALID_TEACHING_INDEX,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1031_ERR_INVALID_PD_INDEX,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1032_ERR_INVALID_HAND_TYPE,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1033_ERR_BOX_NOEXIT_ERORR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1034_ERR_INVALID_OFFSET,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1035_ERR_INVALID_COORDINATE_TYPE,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1036_ERR_INVALID_ARGUMENT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1037_ERR_INVALID_FORMAT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1038_ERR_INVALID_LOCATION_FORMAT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1039_ERR_INVALID_PROFILE_FORMAT,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1040_ERR_WRONG_PD_COMMAND,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1041_ERR_WRONG_AWC_DATA,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1042_ERR_NO_AWC_STATION,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1043_ERR_WRONG_LATCH_DATA,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1044_ERR_NO_LATCH_DATA,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1045_ERR_NO_DATA,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1046_ERR_NOT_HOME,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1047_ERR_CANNOT_RETRACT_ARM,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1048_ERR_VACUUM_DETECTING_ERORR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1049_ERR_NO_BOX,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1050_ERR_UPGRIP,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1051_ERR_DOUBLEBOXCHECH,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1052_ERR_ORIGINMANUALLY,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1053_ERR_NOTSUPPLY_AIR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1054_ERR_NOW_ON_MOVE,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1055_ERR_NOT_READYPOS,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1056_Z_POSITION_ERR_DETECTED,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1057_ERR_FLIP_TURN_INTERLOCK,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1058_ERR_CONTROL_BOX_FAN,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1059_ERR_ROBOT_FAN,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1060_ERR_AIRSTOP_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1061_ERR_RECEIVEBUF_FULL,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1062_ERR_SENDBUF_FULL,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1063_IO_RECEIVE_ERROR,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1064_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1065_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1066_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1067_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1068_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1069_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1070_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1071_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1072_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1073_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1074_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1075_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1076_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1077_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1078_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1079_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1080_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1081_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1082_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1083_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1084_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1085_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1086_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1087_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1088_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1089_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1090_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1091_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1092_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1093_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1094_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1095_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1096_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1097_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1098_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1099_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1100_ENERGY_DROP_CHECK_WRONG,None,Heavy,True,2022.12.13 10:42:05.686 +AL_1101_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1102_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1103_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1104_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1105_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1106_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1107_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1108_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1109_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1110_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1111_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1112_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1113_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1114_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1115_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1116_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1117_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1118_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1119_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1120_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1121_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1122_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1123_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1124_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1125_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1126_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1127_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1128_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1129_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1130_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1131_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1132_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1133_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1134_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1135_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1136_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1137_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1138_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1139_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1140_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1141_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1142_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1143_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1144_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1145_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1146_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1147_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1148_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1149_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1150_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1151_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1152_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1153_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1154_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1155_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1156_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1157_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1158_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1159_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1160_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1161_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1162_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1163_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1164_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1165_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1166_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1167_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1168_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1169_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1170_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1171_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1172_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1173_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1174_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1175_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1176_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1177_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1178_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1179_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1180_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1181_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1182_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1183_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1184_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1185_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1186_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1187_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1188_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1189_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1190_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1191_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1192_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1193_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1194_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1195_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1196_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1197_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1198_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1199_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1200_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1201_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1202_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1203_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1204_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1205_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1206_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1207_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1208_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1209_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1210_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1211_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1212_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1213_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1214_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1215_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1216_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1217_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1218_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1219_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1220_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1221_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1222_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1223_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1224_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1225_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1226_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1227_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1228_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1229_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1230_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1231_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1232_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1233_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1234_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1235_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1236_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1237_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1238_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1239_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1240_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1241_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1242_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1243_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1244_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1245_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1246_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1247_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1248_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1249_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1250_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1251_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1252_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1253_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1254_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1255_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1256_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1257_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1258_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1259_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1260_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1261_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1262_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1263_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1264_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1265_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1266_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1267_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1268_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1269_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1270_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1271_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1272_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1273_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1274_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1275_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1276_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1277_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1278_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1279_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1280_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1281_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1282_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1283_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1284_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1285_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1286_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1287_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1288_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1289_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1290_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1291_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1292_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1293_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1294_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1295_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1296_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1297_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1298_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1299_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1300_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1301_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1302_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1303_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1304_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1305_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1306_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1307_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1308_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1309_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1310_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1311_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1312_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1313_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1314_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1315_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1316_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1317_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1318_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1319_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1320_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1321_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1322_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1323_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1324_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1325_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1326_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1327_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1328_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1329_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1330_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1331_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1332_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1333_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1334_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1335_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1336_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1337_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1338_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1339_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1340_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1341_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1342_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1343_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1344_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1345_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1346_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1347_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1348_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1349_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1350_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1351_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1352_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1353_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1354_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1355_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1356_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1357_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1358_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1359_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1360_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1361_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1362_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1363_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1364_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1365_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1366_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1367_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1368_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1369_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1370_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1371_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1372_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1373_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1374_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1375_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1376_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1377_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1378_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1379_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1380_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1381_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1382_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1383_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1384_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1385_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1386_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1387_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1388_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1389_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1390_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1391_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1392_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1393_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1394_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1395_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1396_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1397_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1398_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1399_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1400_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1401_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1402_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1403_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1404_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1405_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1406_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1407_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1408_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1409_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1410_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1411_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1412_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1413_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1414_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1415_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1416_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1417_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1418_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1419_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1420_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1421_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1422_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1423_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1424_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1425_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1426_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1427_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1428_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1429_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1430_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1431_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1432_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1433_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1434_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1435_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1436_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1437_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1438_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1439_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1440_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1441_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1442_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1443_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1444_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1445_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1446_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1447_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1448_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1449_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1450_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1451_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1452_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1453_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1454_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1455_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1456_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1457_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1458_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1459_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1460_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1461_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1462_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1463_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1464_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1465_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1466_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1467_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1468_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1469_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1470_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1471_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1472_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1473_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1474_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1475_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1476_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1477_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1478_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1479_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1480_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1481_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1482_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1483_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1484_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1485_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1486_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1487_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1488_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1489_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1490_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1491_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1492_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1493_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1494_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1495_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1496_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1497_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1498_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1499_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1500_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1501_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1502_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1503_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1504_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1505_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1506_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1507_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1508_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1509_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1510_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1511_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1512_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1513_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1514_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1515_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1516_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1517_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1518_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1519_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1520_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1521_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1522_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1523_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1524_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1525_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1526_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1527_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1528_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1529_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1530_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1531_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1532_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1533_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1534_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1535_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1536_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1537_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1538_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1539_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1540_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1541_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1542_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1543_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1544_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1545_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1546_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1547_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1548_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1549_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1550_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1551_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1552_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1553_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1554_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1555_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1556_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1557_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1558_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1559_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1560_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1561_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1562_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1563_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1564_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1565_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1566_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1567_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1568_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1569_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1570_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1571_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1572_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1573_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1574_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1575_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1576_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1577_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1578_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1579_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1580_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1581_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1582_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1583_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1584_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1585_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1586_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1587_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1588_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1589_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1590_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1591_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1592_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1593_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1594_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1595_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1596_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1597_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1598_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1599_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1600_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1601_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1602_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1603_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1604_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1605_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1606_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1607_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1608_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1609_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1610_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1611_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1612_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1613_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1614_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1615_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1616_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1617_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1618_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1619_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1620_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1621_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1622_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1623_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1624_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1625_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1626_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1627_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1628_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1629_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1630_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1631_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1632_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1633_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1634_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1635_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1636_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1637_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1638_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1639_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1640_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1641_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1642_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1643_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1644_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1645_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1646_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1647_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1648_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1649_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1650_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1651_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1652_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1653_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1654_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1655_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1656_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1657_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1658_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1659_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1660_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1661_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1662_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1663_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1664_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1665_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1666_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1667_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1668_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1669_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1670_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1671_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1672_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1673_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1674_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1675_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1676_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1677_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1678_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1679_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1680_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1681_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1682_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1683_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1684_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1685_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1686_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1687_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1688_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1689_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1690_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1691_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1692_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1693_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1694_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1695_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1696_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1697_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1698_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1699_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1700_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1701_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1702_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1703_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1704_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1705_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1706_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1707_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1708_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1709_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1710_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1711_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1712_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1713_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1714_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1715_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1716_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1717_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1718_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1719_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1720_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1721_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1722_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1723_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1724_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1725_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1726_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1727_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1728_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1729_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1730_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1731_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1732_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1733_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1734_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1735_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1736_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1737_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1738_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1739_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1740_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1741_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1742_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1743_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1744_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1745_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1746_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1747_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1748_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1749_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1750_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1751_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1752_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1753_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1754_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1755_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1756_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1757_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1758_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1759_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1760_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1761_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1762_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1763_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1764_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1765_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1766_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1767_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1768_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1769_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1770_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1771_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1772_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1773_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1774_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1775_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1776_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1777_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1778_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1779_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1780_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1781_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1782_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1783_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1784_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1785_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1786_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1787_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1788_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1789_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1790_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1791_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1792_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1793_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1794_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1795_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1796_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1797_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1798_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1799_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1800_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1801_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1802_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1803_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1804_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1805_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1806_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1807_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1808_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1809_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1810_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1811_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1812_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1813_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1814_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1815_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1816_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1817_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1818_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1819_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1820_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1821_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1822_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1823_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1824_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1825_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1826_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1827_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1828_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1829_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1830_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1831_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1832_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1833_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1834_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1835_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1836_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1837_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1838_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1839_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1840_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1841_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1842_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1843_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1844_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1845_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1846_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1847_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1848_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1849_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1850_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1851_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1852_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1853_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1854_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1855_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1856_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1857_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1858_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1859_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1860_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1861_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1862_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1863_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1864_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1865_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1866_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1867_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1868_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1869_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1870_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1871_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1872_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1873_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1874_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1875_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1876_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1877_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1878_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1879_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1880_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1881_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1882_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1883_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1884_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1885_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1886_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1887_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1888_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1889_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1890_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1891_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1892_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1893_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1894_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1895_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1896_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1897_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1898_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1899_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1900_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1901_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1902_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1903_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1904_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1905_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1906_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1907_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1908_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1909_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1910_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1911_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1912_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1913_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1914_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1915_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1916_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1917_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1918_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1919_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1920_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1921_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1922_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1923_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1924_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1925_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1926_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1927_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1928_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1929_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1930_,None,Heavy,True,2022.09.15 13:21:17.809 +AL_1931_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1932_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1933_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1934_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1935_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1936_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1937_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1938_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1939_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1940_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1941_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1942_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1943_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1944_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1945_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1946_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1947_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1948_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1949_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1950_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1951_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1952_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1953_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1954_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1955_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1956_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1957_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1958_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1959_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1960_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1961_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1962_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1963_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1964_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1965_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1966_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1967_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1968_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1969_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1970_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1971_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1972_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1973_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1974_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1975_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1976_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1977_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1978_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1979_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1980_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1981_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1982_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1983_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1984_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1985_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1986_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1987_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1988_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1989_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1990_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1991_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1992_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1993_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1994_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1995_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1996_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1997_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1998_,None,Heavy,True,2022.09.15 13:21:17.810 +AL_1999_,None,Heavy,True,2022.09.15 13:21:17.810 diff --git a/SA_LTT/Config/Cor1746.ct5 b/SA_LTT/Config/Cor1746.ct5 new file mode 100644 index 0000000..c461bd9 --- /dev/null +++ b/SA_LTT/Config/Cor1746.ct5 Binary files differ diff --git a/SA_LTT/Config/MotorData/MotorData.xml b/SA_LTT/Config/MotorData/MotorData.xml new file mode 100644 index 0000000..502499a --- /dev/null +++ b/SA_LTT/Config/MotorData/MotorData.xml @@ -0,0 +1,159 @@ +<?xml version="1.0"?> +<ArrayOfAxisInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <AxisInfo> + <EnumAxisNo>0</EnumAxisNo> + <AxisNo>1</AxisNo> + <AxisType>SERVO</AxisType> + <Name>Y_AXIS</Name> + <HommingCmd>P30</HommingCmd> + <HomeEndCmd>P31</HomeEndCmd> + <Scale>10000</Scale> + <SWPlusLimit>920</SWPlusLimit> + <SWMinusLimit>-48</SWMinusLimit> + <Timeout>20000</Timeout> + <HommingTimeout>1200000</HommingTimeout> + <HommingSpeed>10</HommingSpeed> + <TeachList> + <Teach_Data> + <Name>Y Load Pos</Name> + <Position>400</Position> + <Speed>200</Speed> + <Accel>250</Accel> + </Teach_Data> + <Teach_Data> + <Name>Y Center Pos</Name> + <Position>240</Position> + <Speed>200</Speed> + <Accel>250</Accel> + </Teach_Data> + <Teach_Data> + <Name>Y BeamProfile Pos</Name> + <Position>225</Position> + <Speed>200</Speed> + <Accel>250</Accel> + </Teach_Data> + <Teach_Data> + <Name>Y PowerMeter Pos</Name> + <Position>180.8896</Position> + <Speed>200</Speed> + <Accel>250</Accel> + </Teach_Data> + <Teach_Data> + <Name>Y Align Pos</Name> + <Position>268.4253</Position> + <Speed>200</Speed> + <Accel>250</Accel> + </Teach_Data> + <Teach_Data> + <Name>Y Test Pos</Name> + <Position>173</Position> + <Speed>200</Speed> + <Accel>250</Accel> + </Teach_Data> + </TeachList> + </AxisInfo> + <AxisInfo> + <EnumAxisNo>1</EnumAxisNo> + <AxisNo>2</AxisNo> + <AxisType>SERVO</AxisType> + <Name>X_AXIS</Name> + <HommingCmd>P20</HommingCmd> + <HomeEndCmd>P21</HomeEndCmd> + <Scale>10000</Scale> + <SWPlusLimit>550</SWPlusLimit> + <SWMinusLimit>0</SWMinusLimit> + <Timeout>10000</Timeout> + <HommingTimeout>1200000</HommingTimeout> + <HommingSpeed>30</HommingSpeed> + <TeachList> + <Teach_Data> + <Name>X Load Pos</Name> + <Position>173</Position> + <Speed>100</Speed> + <Accel>250</Accel> + </Teach_Data> + <Teach_Data> + <Name>X Center Pos</Name> + <Position>178</Position> + <Speed>200</Speed> + <Accel>250</Accel> + </Teach_Data> + <Teach_Data> + <Name>X BeamProfile Pos</Name> + <Position>173</Position> + <Speed>200</Speed> + <Accel>250</Accel> + </Teach_Data> + <Teach_Data> + <Name>X PowerMeter Pos</Name> + <Position>-10.5846</Position> + <Speed>200</Speed> + <Accel>250</Accel> + </Teach_Data> + <Teach_Data> + <Name>X Align Pos</Name> + <Position>-20.8701</Position> + <Speed>100</Speed> + <Accel>250</Accel> + </Teach_Data> + <Teach_Data> + <Name>X Test Pos</Name> + <Position>173</Position> + <Speed>200</Speed> + <Accel>250</Accel> + </Teach_Data> + </TeachList> + </AxisInfo> + <AxisInfo> + <EnumAxisNo>2</EnumAxisNo> + <AxisNo>5</AxisNo> + <AxisType>SERVO</AxisType> + <Name>T_AXIS</Name> + <HommingCmd>P40</HommingCmd> + <HomeEndCmd>P41</HomeEndCmd> + <Scale>4062.7</Scale> + <SWPlusLimit>5</SWPlusLimit> + <SWMinusLimit>-5</SWMinusLimit> + <Timeout>20000</Timeout> + <HommingTimeout>1200000</HommingTimeout> + <HommingSpeed>1</HommingSpeed> + <TeachList> + <Teach_Data> + <Name>T Load Pos</Name> + <Position>0</Position> + <Speed>1</Speed> + <Accel>200</Accel> + </Teach_Data> + <Teach_Data> + <Name>T Center Pos</Name> + <Position>0</Position> + <Speed>1</Speed> + <Accel>200</Accel> + </Teach_Data> + <Teach_Data> + <Name>T BeamProfile Pos</Name> + <Position>0</Position> + <Speed>1</Speed> + <Accel>200</Accel> + </Teach_Data> + <Teach_Data> + <Name>T PowerMeter Pos</Name> + <Position>0</Position> + <Speed>1</Speed> + <Accel>200</Accel> + </Teach_Data> + <Teach_Data> + <Name>T Align Pos</Name> + <Position>0</Position> + <Speed>1</Speed> + <Accel>200</Accel> + </Teach_Data> + <Teach_Data> + <Name>T Test Pos</Name> + <Position>0</Position> + <Speed>1</Speed> + <Accel>200</Accel> + </Teach_Data> + </TeachList> + </AxisInfo> +</ArrayOfAxisInfo> \ No newline at end of file diff --git a/SA_LTT/Config/MotorData/MotorData_old.xml b/SA_LTT/Config/MotorData/MotorData_old.xml new file mode 100644 index 0000000..f7bddcf --- /dev/null +++ b/SA_LTT/Config/MotorData/MotorData_old.xml @@ -0,0 +1,69 @@ +<?xml version="1.0"?> +<ArrayOfAxisInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <AxisInfo> + <EnumAxisNo>0</EnumAxisNo> + <AxisNo>1</AxisNo> + <AxisType>SERVO</AxisType> + <Name>Y_AXIS</Name> + <HommingCmd>P30</HommingCmd> + <HomeEndCmd>P31</HomeEndCmd> + <Scale>10000</Scale> + <SWPlusLimit>920</SWPlusLimit> + <SWMinusLimit>-48</SWMinusLimit> + <Timeout>20000</Timeout> + <HommingTimeout>1200000</HommingTimeout> + <HommingSpeed>10</HommingSpeed> + <TeachList> + <Teach_Data> + <Name>Y Load Pos</Name> + <Position>0</Position> + <Speed>10</Speed> + <Accel>250</Accel> + </Teach_Data> + </TeachList> + </AxisInfo> + <AxisInfo> + <EnumAxisNo>1</EnumAxisNo> + <AxisNo>2</AxisNo> + <AxisType>SERVO</AxisType> + <Name>X_AXIS</Name> + <HommingCmd>P20</HommingCmd> + <HomeEndCmd>P21</HomeEndCmd> + <Scale>10000</Scale> + <SWPlusLimit>550</SWPlusLimit> + <SWMinusLimit>0</SWMinusLimit> + <Timeout>10000</Timeout> + <HommingTimeout>1200000</HommingTimeout> + <HommingSpeed>30</HommingSpeed> + <TeachList> + <Teach_Data> + <Name>X Load Pos</Name> + <Position>0</Position> + <Speed>10</Speed> + <Accel>250</Accel> + </Teach_Data> + </TeachList> + </AxisInfo> + <AxisInfo> + <EnumAxisNo>2</EnumAxisNo> + <AxisNo>5</AxisNo> + <AxisType>SERVO</AxisType> + <Name>T_AXIS</Name> + <HommingCmd>P40</HommingCmd> + <HomeEndCmd>P41</HomeEndCmd> + <Scale>40627</Scale> + <SWPlusLimit>5</SWPlusLimit> + <SWMinusLimit>-5</SWMinusLimit> + <Timeout>20000</Timeout> + <HommingTimeout>1200000</HommingTimeout> + <HommingSpeed>1</HommingSpeed> + <TeachList> + <Teach_Data> + <Name>T Load Pos</Name> + <Position>0</Position> + <Speed>1</Speed> + <Accel>200</Accel> + </Teach_Data> + </TeachList> + </AxisInfo> +</ArrayOfAxisInfo> \ No newline at end of file diff --git a/SA_LTT/Config/Parameter/InterlockParameter.xml b/SA_LTT/Config/Parameter/InterlockParameter.xml new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT/Config/Parameter/InterlockParameter.xml diff --git a/SA_LTT/Config/Parameter/ModeParameter.xml b/SA_LTT/Config/Parameter/ModeParameter.xml new file mode 100644 index 0000000..d7c835f --- /dev/null +++ b/SA_LTT/Config/Parameter/ModeParameter.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<ModeParameter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <EnergyDropCheckUse>false</EnergyDropCheckUse> + <AttenuatorCalUse>false</AttenuatorCalUse> + <EnergyMeasurementUse>false</EnergyMeasurementUse> + <ShutterAlwaysUse>false</ShutterAlwaysUse> + <AlignUse>false</AlignUse> +</ModeParameter> \ No newline at end of file diff --git a/SA_LTT/Config/Parameter/SettingParameter.xml b/SA_LTT/Config/Parameter/SettingParameter.xml new file mode 100644 index 0000000..664e3d5 --- /dev/null +++ b/SA_LTT/Config/Parameter/SettingParameter.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<SettingParameter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <EnergyDropCheckCycle>8</EnergyDropCheckCycle> + <EnergyDropCheckMeasurementTime>10</EnergyDropCheckMeasurementTime> + <EnergyDropCheckTargetAngle>40</EnergyDropCheckTargetAngle> + <EnergyDropCheckTargetEnergy>3.879</EnergyDropCheckTargetEnergy> + <EnergyDropCheckErrorOccuredRange>3</EnergyDropCheckErrorOccuredRange> + <AttenuatorCalCycle>10</AttenuatorCalCycle> + <AttenuatorCalMeasurementTime>10</AttenuatorCalMeasurementTime> + <AttenuatorCalCoolingTime>10</AttenuatorCalCoolingTime> + <AttenuatorCalStartAngle>2</AttenuatorCalStartAngle> + <AttenuatorCalEndAngle>43</AttenuatorCalEndAngle> + <AttenuatorCalAngleStep>2</AttenuatorCalAngleStep> + <EnergyMeasurementCycle>180</EnergyMeasurementCycle> + <EnergyMeasurementWaferCountCycle>5</EnergyMeasurementWaferCountCycle> + <EnergyMeasurementErrorOccuredRange>5</EnergyMeasurementErrorOccuredRange> + <EnergyMeasurementTime>10</EnergyMeasurementTime> + <EnergyMeasurmentStepAngle>0.5</EnergyMeasurmentStepAngle> + <EnergyMeasurementRetryCount>15</EnergyMeasurementRetryCount> + <EnergyMeterHeatingTime>5</EnergyMeterHeatingTime> + <BeamHeight>0.59</BeamHeight> + <BeamWidth>0.59</BeamWidth> + <CenterToVisionPositionX>28.425</CenterToVisionPositionX> + <CenterToVisionPositionY>-198.87</CenterToVisionPositionY> + <VisionTimeOut>5</VisionTimeOut> + <VisionHeartBeatTimeOut>3</VisionHeartBeatTimeOut> +</SettingParameter> \ No newline at end of file diff --git a/SA_LTT/Config/Parameter/SystemParameter.xml b/SA_LTT/Config/Parameter/SystemParameter.xml new file mode 100644 index 0000000..7323b47 --- /dev/null +++ b/SA_LTT/Config/Parameter/SystemParameter.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<SystemParameter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <ScannerFOV>0</ScannerFOV> + <BitsPerMM>0</BitsPerMM> + <EncoderCountPerMmX>0</EncoderCountPerMmX> + <EncoderCountPerMmY>0</EncoderCountPerMmY> + <HalfPeriod>0</HalfPeriod> + <PulseLength>0</PulseLength> + <TimeBase>0</TimeBase> + <JumpDelay>0</JumpDelay> + <MarkDelay>0</MarkDelay> + <PolygonDelay>0</PolygonDelay> + <LaserOnDelay>0</LaserOnDelay> + <LaserOffDelay>0</LaserOffDelay> + <JumpSpeed>0</JumpSpeed> + <MarkSpeed>0</MarkSpeed> +</SystemParameter> \ No newline at end of file diff --git a/SA_LTT/Config/Parameter/UserParameter.xml b/SA_LTT/Config/Parameter/UserParameter.xml new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT/Config/Parameter/UserParameter.xml diff --git a/SA_LTT/Config/Setting/Scanner.xml b/SA_LTT/Config/Setting/Scanner.xml new file mode 100644 index 0000000..c53b037 --- /dev/null +++ b/SA_LTT/Config/Setting/Scanner.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<Scanner xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <CorrectionFilePath>C:\SA_LTT\Config\Cor1746.ct5</CorrectionFilePath> + <IsInitialized>true</IsInitialized> + <IsBusy>false</IsBusy> + <Encoder0>0</Encoder0> + <Encoder1>0</Encoder1> + <EncoderCountPerMmX>0</EncoderCountPerMmX> + <EncoderCountPerMmY>10000</EncoderCountPerMmY> + <FOV>84.842</FOV> + <HalfPeriod>32000</HalfPeriod> + <PulseLength1>5</PulseLength1> + <TimeBase>0</TimeBase> + <JumpDelay>10</JumpDelay> + <MarkDelay>10</MarkDelay> + <PolygonDelay>10</PolygonDelay> + <LaserOnDelay>-775</LaserOnDelay> + <LaserOffDelay>100</LaserOffDelay> + <IsPosition>14</IsPosition> + <XGain>1</XGain> + <YGain>1</YGain> + <IsLaserOn>false</IsLaserOn> +</Scanner> \ No newline at end of file diff --git a/SA_LTT/Info/AttenuatorCal.csv b/SA_LTT/Info/AttenuatorCal.csv new file mode 100644 index 0000000..deedfbd --- /dev/null +++ b/SA_LTT/Info/AttenuatorCal.csv @@ -0,0 +1,23 @@ +0, 0 +2, 0 +4, 0.0007 +6, 0.0012 +8, 0.0017 +10, 0.0024 +12, 0.0032 +14, 0.004 +16, 0.005 +18, 0.006 +20, 0.0071 +22, 0.0081 +24, 0.0092 +26, 0.0103 +28, 0.0114 +30, 0.0123 +32, 0.0132 +34, 0.014 +36, 0.0146 +38, 0.0151 +40, 0.0155 +42, 0.0156 +43, 0.0157 diff --git a/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.xml b/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.xml new file mode 100644 index 0000000..15d3692 --- /dev/null +++ b/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8"?> +<AttenuatorCalInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <_attenuatorCalDatas> + <AttenuatorCalData> + <AttenuatorAngle>2</AttenuatorAngle> + <Energy>0</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>4</AttenuatorAngle> + <Energy>0.000646</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>6</AttenuatorAngle> + <Energy>0.0010116</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>8</AttenuatorAngle> + <Energy>0.0014726</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>10</AttenuatorAngle> + <Energy>0.0019965</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>12</AttenuatorAngle> + <Energy>0.0026162</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>14</AttenuatorAngle> + <Energy>0.0032963</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>16</AttenuatorAngle> + <Energy>0.0040097</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>18</AttenuatorAngle> + <Energy>0.0047834</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>20</AttenuatorAngle> + <Energy>0.0055615</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>22</AttenuatorAngle> + <Energy>0.0063731</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>24</AttenuatorAngle> + <Energy>0.0071533</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>26</AttenuatorAngle> + <Energy>0.0079236</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>28</AttenuatorAngle> + <Energy>0.0086652</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>30</AttenuatorAngle> + <Energy>0.0093515</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>32</AttenuatorAngle> + <Energy>0.0099759</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>34</AttenuatorAngle> + <Energy>0.0105088</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>36</AttenuatorAngle> + <Energy>0.0109515</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>38</AttenuatorAngle> + <Energy>0.0112964</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>40</AttenuatorAngle> + <Energy>0.0115174</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>42</AttenuatorAngle> + <Energy>0.0116034</Energy> + </AttenuatorCalData> + <AttenuatorCalData> + <AttenuatorAngle>43</AttenuatorAngle> + <Energy>0.0116261</Energy> + </AttenuatorCalData> + </_attenuatorCalDatas> +</AttenuatorCalInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Equipment/EquipmentInfo.xml b/SA_LTT/Info/Equipment/EquipmentInfo.xml new file mode 100644 index 0000000..d3d2763 --- /dev/null +++ b/SA_LTT/Info/Equipment/EquipmentInfo.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<EquipmentInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <EnergyDropCheckDate>2023-01-20T01:29:46.7296286+09:00</EnergyDropCheckDate> + <AttenuatorCalDate>2023-03-14T11:10:11.1635543+09:00</AttenuatorCalDate> +</EquipmentInfo> \ No newline at end of file diff --git a/SA_LTT/Info/FoupRecipe/TEST.xml b/SA_LTT/Info/FoupRecipe/TEST.xml new file mode 100644 index 0000000..873965a --- /dev/null +++ b/SA_LTT/Info/FoupRecipe/TEST.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<FoupRecipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>TEST</Name> + <RecipeNames> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string>AAA</string> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + <string xsi:nil="true" /> + </RecipeNames> +</FoupRecipe> \ No newline at end of file diff --git a/SA_LTT/Info/Recipe/123.xml b/SA_LTT/Info/Recipe/123.xml new file mode 100644 index 0000000..f7ec5ab --- /dev/null +++ b/SA_LTT/Info/Recipe/123.xml @@ -0,0 +1,4987 @@ +<?xml version="1.0" encoding="utf-8"?> +<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>123</Name> + <Radius>50</Radius> + <DistanceFromCenterToPrimaryFlat>48.5</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <ProcessInfoList> + <ProcessInfo> + <Radius>50</Radius> + <DistanceFromCenterToPrimaryFlat>48.5</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-50</StartX> + <StartY>44.865</StartY> + <Width>100</Width> + <Height>5.13</Height> + <ProcessStartX>-30.3501</ProcessStartX> + <ProcessStartY>44.865</ProcessStartY> + <ProcessEndX>30.3501</ProcessEndX> + <ProcessEndY>39.735</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>0.6</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>1113.12</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.3501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.3501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.0801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.0801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.8101</X> + <Y>40.005</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.8101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.5401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.5401</X> + <Y>40.545</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.2701</X> + <Y>40.545</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.2701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.0001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.0001</X> + <Y>40.545</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.7301</X> + <Y>40.815</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.7301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.4601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.4601</X> + <Y>41.355</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.1901</X> + <Y>41.085</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.1901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.9201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.9201</X> + <Y>41.355</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.6501</X> + <Y>41.895</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.6501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.3801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.3801</X> + <Y>41.625</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.1101</X> + <Y>41.895</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.1101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.8401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.8401</X> + <Y>42.435</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.5701</X> + <Y>42.165</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.5701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.3001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.3001</X> + <Y>42.705</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.0301</X> + <Y>42.705</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.0301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.7601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.7601</X> + <Y>42.705</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.4901</X> + <Y>43.245</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.4901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.2201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.2201</X> + <Y>42.975</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.9501</X> + <Y>43.515</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.9501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.6801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.6801</X> + <Y>43.515</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.4101</X> + <Y>43.515</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.4101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.1401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.1401</X> + <Y>44.055</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.8701</X> + <Y>43.785</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.8701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.6001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.6001</X> + <Y>44.325</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.3301</X> + <Y>44.055</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.3301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.0601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.0601</X> + <Y>44.595</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.7901</X> + <Y>44.325</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.7901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.5201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.5201</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.2501</X> + <Y>44.595</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.2501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.9801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.9801</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.7101</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.7101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.4401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.4401</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.1701</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.1701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.9001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.9001</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.6301</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.6301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.3601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.3601</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.0901</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.0901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.8201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.8201</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.5501</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.5501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.2801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.2801</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.0101</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.0101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.7401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.7401</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.4701</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.4701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.2001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.2001</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.9301</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.9301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.6601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.6601</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.3901</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.3901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.1201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.1201</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.8501</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.8501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.5801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.5801</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.3101</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.3101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.0401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.0401</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.7701</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.7701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.5001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.5001</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.2301</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.2301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.9601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.9601</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.6901</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.6901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.4201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.4201</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.1501</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.1501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.8801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.8801</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.6101</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.6101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.3401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.3401</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.0701</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.0701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.8001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.8001</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.5301</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.5301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.2601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.2601</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.9901</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.9901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.7201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.7201</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.4501</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.4501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.1801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.1801</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.9101</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.9101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.6401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.6401</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.3701</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.3701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.1001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.1001</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.8301</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.8301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.5601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.5601</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.2901</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.2901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.0201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.0201</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.7501</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.7501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.4801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.4801</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.2101</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.2101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.9401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.9401</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.6701</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.6701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.4001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.4001</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.1301</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.1301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.8601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.8601</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.5901</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.5901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.3201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.3201</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.0501</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.0501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.7801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.7801</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.5101</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.5101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.2401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.2401</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.9701</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.9701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.7001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.7001</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.4301</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.4301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.1601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.1601</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.8901</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.8901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.6201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.6201</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.3501</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.3501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.0801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.0801</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.8101</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.8101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.5401</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.5401</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.2701</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.2701</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.0001</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.0001</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.7301</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.7301</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.4601</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.4601</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.1901</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.1901</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.9201</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.9201</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.6501</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.6501</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.3801</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.3801</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.1101</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.1101</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.1599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.1599</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.4299</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.4299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.6999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.6999</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.9699</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.9699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.2399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.2399</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.5099</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.5099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.7799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.7799</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.0499</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.0499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.3199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.3199</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.5899</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.5899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.8599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.8599</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.1299</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.1299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.3999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.3999</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.6699</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.6699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.9399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.9399</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.2099</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.2099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.4799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.4799</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.7499</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.7499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.0199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.0199</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.2899</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.2899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.5599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.5599</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.8299</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.8299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.0999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.0999</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.3699</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.3699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.6399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.6399</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.9099</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.9099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.1799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.1799</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.4499</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.4499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.7199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.7199</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.9899</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.9899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.2599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.2599</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.5299</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.5299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.7999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.7999</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.0699</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.0699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.3399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.3399</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.6099</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.6099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.8799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.8799</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.1499</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.1499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.4199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.4199</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.6899</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.6899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.9599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.9599</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.2299</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.2299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.4999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.4999</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.7699</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.7699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.0399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.0399</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.3099</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.3099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.5799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.5799</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.8499</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.8499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.1199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.1199</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.3899</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.3899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.6599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.6599</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.9299</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.9299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.1999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.1999</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.4699</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.4699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.7399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.7399</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.0099</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.0099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.2799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.2799</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.5499</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.5499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.8199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.8199</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.0899</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.0899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.3599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.3599</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.6299</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.6299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.8999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.8999</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.1699</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.1699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.4399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.4399</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.7099</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.7099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.9799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.9799</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.2499</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.2499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.5199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.5199</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.7899</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.7899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.0599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.0599</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.3299</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.3299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.5999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.5999</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.8699</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.8699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.1399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.1399</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.4099</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.4099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.6799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.6799</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.9499</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.9499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.2199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.2199</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.4899</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.4899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.7599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.7599</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.0299</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.0299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.2999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.2999</X> + <Y>44.595</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.5699</X> + <Y>44.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.5699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.8399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.8399</X> + <Y>44.325</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.1099</X> + <Y>44.595</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.1099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.3799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.3799</X> + <Y>44.055</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.6499</X> + <Y>44.055</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.6499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.9199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.9199</X> + <Y>43.785</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.1899</X> + <Y>43.785</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.1899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.4599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.4599</X> + <Y>43.515</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.7299</X> + <Y>43.245</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.7299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.9999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.9999</X> + <Y>43.515</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.2699</X> + <Y>42.975</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.2699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.5399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.5399</X> + <Y>43.245</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.8099</X> + <Y>42.705</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.8099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.0799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.0799</X> + <Y>42.435</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.3499</X> + <Y>42.705</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.3499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.6199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.6199</X> + <Y>42.165</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.8899</X> + <Y>42.165</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.8899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.1599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.1599</X> + <Y>42.165</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.4299</X> + <Y>41.625</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.4299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.6999</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.6999</X> + <Y>41.895</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.9699</X> + <Y>41.625</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.9699</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.2399</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.2399</X> + <Y>41.085</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.5099</X> + <Y>41.085</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.5099</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.7799</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.7799</X> + <Y>41.085</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.0499</X> + <Y>40.545</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.0499</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.3199</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.3199</X> + <Y>40.545</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.5899</X> + <Y>40.545</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.5899</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.8599</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.8599</X> + <Y>40.005</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.1299</X> + <Y>39.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.1299</X> + <Y>39.735</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>50</Radius> + <DistanceFromCenterToPrimaryFlat>48.5</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-50</StartX> + <StartY>39.73</StartY> + <Width>100</Width> + <Height>5.13</Height> + <ProcessStartX>-36.0949</ProcessStartX> + <ProcessStartY>39.73</ProcessStartY> + <ProcessEndX>36.0949</ProcessEndX> + <ProcessEndY>34.6</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>0.6</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>1395.5</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.0949</X> + <Y>34.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.0949</X> + <Y>34.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.8249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.8249</X> + <Y>35.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.5549</X> + <Y>35.41</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.5549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.2849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.2849</X> + <Y>35.68</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.0149</X> + <Y>35.95</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.0149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.7449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.7449</X> + <Y>36.22</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.4749</X> + <Y>36.22</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.4749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.2049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.2049</X> + <Y>36.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.9349</X> + <Y>36.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.9349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.6649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.6649</X> + <Y>36.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.3949</X> + <Y>37.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.3949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.1249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.1249</X> + <Y>37.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.8549</X> + <Y>37.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.8549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.5849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.5849</X> + <Y>38.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.3149</X> + <Y>38.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.3149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.0449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.0449</X> + <Y>38.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.7749</X> + <Y>38.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.7749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.5049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.5049</X> + <Y>38.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.2349</X> + <Y>38.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.2349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.9649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.9649</X> + <Y>39.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.6949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.6949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.4249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.4249</X> + <Y>39.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.1549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.1549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.8849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.8849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.6149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.6149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.3449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.3449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.0749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.0749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.8049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.8049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.5349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.5349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.2649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.2649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.9949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.9949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.7249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.7249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.4549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.4549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.1849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.1849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.9149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.9149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.6449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.6449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.3749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.3749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.1049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.1049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.8349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.8349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.5649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.5649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.2949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.2949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.0249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.0249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.7549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.7549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.4849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.4849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.2149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.2149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.9449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.9449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.6749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.6749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.4049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.4049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.1349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.1349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.8649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.8649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.5949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.5949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.3249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.3249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.0549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.0549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.7849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.7849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.5149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.5149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.2449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.2449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.9749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.9749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.7049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.7049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.4349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.4349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.1649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.1649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.8949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.8949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.6249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.6249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.3549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.3549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.0849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.0849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.8149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.8149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.5449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.5449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.2749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.2749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.0049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.0049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.7349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.7349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.4649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.4649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.1949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.1949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.9249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.9249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.6549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.6549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.3849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.3849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.1149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.1149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.8449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.8449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.5749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.5749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.3049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.3049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.0349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.0349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.7649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.7649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.4949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.4949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.2249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.2249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.9549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.9549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.6849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.6849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.4149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.4149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.1449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.1449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.8749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.8749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.6049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.6049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.3349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.3349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.0649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.0649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.7949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.7949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.5249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.5249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.2549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.2549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.9849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.9849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.7149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.7149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.4449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.4449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.1749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.1749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.9049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.9049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.6349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.6349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.3649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.3649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.0949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.0949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.8249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.8249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.5549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.5549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.2849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.2849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.0149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.0149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.7449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.7449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.4749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.4749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.2049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.2049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.9349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.9349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.6649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.6649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.3949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.3949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.1249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.1249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.8549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.8549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.5849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.5849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.3149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.3149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.0449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.0449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.7749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.7749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.5049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.5049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.2349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.2349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.9649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.9649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.6949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.6949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.4249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.4249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.1549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.1549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.8849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.8849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.6149</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.6149</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.3449</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.3449</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.0749</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.0749</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.8049</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.8049</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.5349</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.5349</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.2649</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.2649</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.9949</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.9949</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.7249</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.7249</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.4549</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.4549</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.1849</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.1849</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.0851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.0851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.3551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.3551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.6251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.6251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.8951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.8951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.1651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.1651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.4351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.4351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.7051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.7051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.9751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.9751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.2451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.2451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.5151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.5151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.7851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.7851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.0551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.0551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.3251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.3251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.5951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.5951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.8651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.8651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.1351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.1351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.4051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.4051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.6751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.6751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.9451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.9451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.2151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.2151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.4851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.4851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.7551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.7551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.0251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.0251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.2951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.2951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.5651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.5651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.8351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.8351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.1051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.1051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.3751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.3751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.6451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.6451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.9151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.9151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.1851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.1851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.4551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.4551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.7251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.7251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.9951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.9951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.2651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.2651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.5351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.5351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.8051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.8051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.0751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.0751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.3451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.3451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.6151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.6151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.8851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.8851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.1551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.1551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.4251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.4251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.6951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.6951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.9651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.9651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.2351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.2351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.5051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.5051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.7751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.7751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.0451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.0451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.3151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.3151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.5851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.5851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.8551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.8551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.1251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.1251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.3951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.3951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.6651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.6651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.9351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.9351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.2051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.2051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.4751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.4751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.7451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.7451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.0151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.0151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.2851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.2851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.5551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.5551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.8251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.8251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.0951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.0951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.3651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.3651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.6351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.6351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.9051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.9051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.1751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.1751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.4451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.4451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.7151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.7151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.9851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.9851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.2551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.2551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.5251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.5251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.7951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.7951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.0651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.0651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.3351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.3351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.6051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.6051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.8751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.8751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.1451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.1451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.4151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.4151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.6851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.6851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.9551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.9551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.2251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.2251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.4951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.4951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.7651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.7651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.0351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.0351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.3051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.3051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.5751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.5751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.8451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.8451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.1151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.1151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.3851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.3851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.6551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.6551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.9251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.9251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.1951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.1951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.4651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.4651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.7351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.7351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.0051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.0051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.2751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.2751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.5451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.5451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.8151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.8151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.0851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.0851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.3551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.3551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.6251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.6251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.8951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.8951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.1651</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.1651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.4351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.4351</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.7051</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.7051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.9751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.9751</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.2451</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.2451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.5151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.5151</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.7851</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.7851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.0551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.0551</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.3251</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.3251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.5951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.5951</X> + <Y>39.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.8651</X> + <Y>39.19</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.8651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.1351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.1351</X> + <Y>38.92</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.4051</X> + <Y>38.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.4051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.6751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.6751</X> + <Y>38.92</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.9451</X> + <Y>38.65</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.9451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.2151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.2151</X> + <Y>38.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.4851</X> + <Y>37.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.4851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.7551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.7551</X> + <Y>37.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.0251</X> + <Y>37.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.0251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.2951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.2951</X> + <Y>37.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.5651</X> + <Y>37.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.5651</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.8351</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.8351</X> + <Y>37.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.1051</X> + <Y>36.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.1051</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.3751</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.3751</X> + <Y>36.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.6451</X> + <Y>35.95</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.6451</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.9151</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.9151</X> + <Y>35.68</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.1851</X> + <Y>35.41</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.1851</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.4551</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.4551</X> + <Y>35.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.7251</X> + <Y>34.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.7251</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.9951</X> + <Y>34.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.9951</X> + <Y>34.6</Y> + </Coord> + </ProcessList> + </ProcessInfo> + </ProcessInfoList> +</Recipe> \ No newline at end of file diff --git a/SA_LTT/Info/Recipe/180180.xml b/SA_LTT/Info/Recipe/180180.xml new file mode 100644 index 0000000..d22a003 --- /dev/null +++ b/SA_LTT/Info/Recipe/180180.xml @@ -0,0 +1,10298 @@ +<?xml version="1.0" encoding="utf-8"?> +<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>TEST</Name> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <ProcessInfoList> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-50</StartX> + <StartY>50</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-50</ProcessStartX> + <ProcessStartY>50</ProcessStartY> + <ProcessEndX>-20</ProcessEndX> + <ProcessEndY>20.03</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>16.2</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.73</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.73</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.46</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.46</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.19</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.19</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.92</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.92</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.65</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.65</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.38</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.38</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.11</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.11</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.84</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.84</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.57</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.57</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.3</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.3</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.03</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.03</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.76</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.76</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.49</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.49</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.22</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.22</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.95</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.95</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.68</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.68</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.41</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.41</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.14</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.14</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.87</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.87</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.6</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.6</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.33</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.33</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.06</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.06</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.79</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.79</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.52</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.52</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.25</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.25</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.98</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.98</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.71</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.71</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.44</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.44</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.17</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.17</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.9</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.9</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.63</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.63</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.36</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.36</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.09</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.09</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.82</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.82</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.55</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.55</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.28</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.28</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.01</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.01</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.74</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.74</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.47</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.47</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.2</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.2</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.93</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.93</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.66</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.66</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.39</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.39</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.12</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.12</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.85</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.85</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.58</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.58</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.31</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.31</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.04</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.04</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.77</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.77</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.5</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.5</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.23</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.23</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.96</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.96</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.69</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.69</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.42</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.42</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.15</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.15</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.88</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.88</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.61</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.61</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.34</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.34</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.07</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.07</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.8</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.8</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.53</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.53</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.26</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.26</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.99</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.99</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.72</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.72</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.45</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.45</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.18</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.18</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.91</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.91</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.64</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.64</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.37</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.37</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.1</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.1</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.83</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.83</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.56</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.56</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.29</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.29</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.02</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.02</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.75</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.75</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.48</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.48</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.21</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.21</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.94</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.94</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.67</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.67</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.4</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.4</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.13</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.13</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.86</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.86</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.59</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.59</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.32</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.32</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.05</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.05</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.78</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.78</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.51</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.51</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.24</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.24</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.97</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.97</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.7</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.7</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.43</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.43</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.16</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.16</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.89</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.89</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.62</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.62</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.35</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.35</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.08</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.08</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.81</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.81</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.54</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.54</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.27</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.27</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.73</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.73</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.46</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.46</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.19</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.19</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.92</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.92</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.65</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.65</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.38</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.38</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.11</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.11</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.84</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.84</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.57</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.57</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.3</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.3</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.03</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.03</X> + <Y>50</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-15</StartX> + <StartY>50</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-15</ProcessStartX> + <ProcessStartY>50</ProcessStartY> + <ProcessEndX>15</ProcessEndX> + <ProcessEndY>20.03</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>17.3</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.73</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.73</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.46</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.46</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.19</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.19</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.92</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.92</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.65</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.65</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.38</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.38</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.11</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.11</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.84</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.84</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.57</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.57</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.3</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.3</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.03</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.03</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.76</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.76</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.49</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.49</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.22</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.22</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.95</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.95</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.68</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.68</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.41</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.41</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.14</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.14</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.87</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.87</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.6</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.6</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.33</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.33</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.06</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.06</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.79</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.79</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.52</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.52</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.25</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.25</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.98</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.98</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.71</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.71</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.44</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.44</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.17</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.17</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.9</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.9</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.63</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.63</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.36</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.36</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.09</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.09</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.82</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.82</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.55</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.55</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.28</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.28</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.01</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.01</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.74</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.74</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.47</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.47</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.2</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.2</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.93</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.93</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.66</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.66</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.39</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.39</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.12</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.12</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.85</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.85</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.58</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.58</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.31</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.31</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.04</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.04</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.77</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.77</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.5</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.5</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.23</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.23</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.96</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.96</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.69</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.69</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.42</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.42</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.15</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.15</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.12</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.12</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.39</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.39</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.66</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.66</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.93</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.93</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.2</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.2</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.47</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.47</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.74</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.74</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.01</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.01</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.28</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.28</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.55</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.55</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.82</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.82</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.09</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.09</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.36</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.36</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.63</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.63</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.9</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.9</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.17</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.17</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.44</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.44</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.71</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.71</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.98</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.98</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.25</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.25</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.52</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.52</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.79</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.79</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.06</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.06</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.33</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.33</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.6</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.6</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.87</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.87</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.14</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.14</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.41</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.41</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.68</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.68</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.95</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.95</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.22</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.22</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.49</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.49</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.76</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.76</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.03</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.03</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.3</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.3</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.57</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.57</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.84</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.84</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.11</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.11</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.38</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.38</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.65</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.65</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.92</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.92</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.19</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.19</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.46</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.46</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.73</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.73</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.27</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.27</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.54</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.54</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.81</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.81</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.08</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.08</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.35</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.35</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.62</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.62</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.89</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.89</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.16</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.16</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.43</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.43</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.7</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.7</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.97</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.97</X> + <Y>50</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>20</StartX> + <StartY>50</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>20</ProcessStartX> + <ProcessStartY>50</ProcessStartY> + <ProcessEndX>50</ProcessEndX> + <ProcessEndY>20.03</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>18.4</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.27</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.27</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.54</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.54</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.81</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.81</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.08</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.08</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.35</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.35</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.62</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.62</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.89</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.89</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.16</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.16</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.43</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.43</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.7</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.7</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.97</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.97</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.24</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.24</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.51</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.51</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.78</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.78</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.05</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.05</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.32</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.32</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.59</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.59</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.86</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.86</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.13</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.13</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.4</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.4</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.67</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.67</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.94</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.94</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.21</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.21</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.48</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.48</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.75</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.75</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.02</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.02</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.29</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.29</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.56</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.56</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.83</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.83</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.1</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.1</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.37</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.37</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.64</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.64</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.91</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.91</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.18</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.18</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.45</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.45</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.72</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.72</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.99</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.99</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.26</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.26</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.53</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.53</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.8</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.8</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.07</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.07</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.34</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.34</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.61</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.61</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.88</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.88</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.15</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.15</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.42</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.42</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.69</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.69</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.96</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.96</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.23</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.23</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.5</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.5</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.77</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.77</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.04</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.04</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.31</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.31</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.58</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.58</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.85</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.85</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.12</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.12</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.39</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.39</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.66</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.66</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.93</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.93</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.2</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.2</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.47</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.47</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.74</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.74</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.01</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.01</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.28</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.28</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.55</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.55</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.82</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.82</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.09</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.09</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.36</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.36</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.63</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.63</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.9</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.9</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.17</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.17</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.44</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.44</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.71</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.71</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.98</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.98</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.25</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.25</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.52</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.52</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.79</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.79</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.06</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.06</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.33</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.33</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.6</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.6</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.87</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.87</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.14</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.14</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.41</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.41</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.68</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.68</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.95</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.95</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.22</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.22</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.49</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.49</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.76</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.76</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.03</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.03</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.3</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.3</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.57</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.57</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.84</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.84</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.11</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.11</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.38</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.38</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.65</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.65</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.92</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.92</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.19</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.19</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.46</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.46</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.73</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.73</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.27</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.27</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.54</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.54</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.81</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.81</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.08</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.08</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.35</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.35</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.62</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.62</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.89</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.89</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.16</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.16</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.43</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.43</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.7</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.7</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.97</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.97</X> + <Y>50</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-50</StartX> + <StartY>15</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-50</ProcessStartX> + <ProcessStartY>15</ProcessStartY> + <ProcessEndX>-20</ProcessEndX> + <ProcessEndY>-14.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>19.4</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.73</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.73</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.46</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.46</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.19</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.19</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.92</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.92</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.65</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.65</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.38</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.38</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.11</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.11</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.84</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.84</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.57</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.57</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.3</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.3</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.03</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.03</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.76</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.76</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.49</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.49</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.22</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.22</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.95</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.95</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.68</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.68</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.41</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.41</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.14</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.14</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.87</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.87</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.6</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.6</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.33</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.33</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.06</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.06</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.79</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.79</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.52</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.52</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.25</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.25</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.98</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.98</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.71</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.71</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.44</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.44</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.17</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.17</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.9</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.9</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.63</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.63</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.36</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.36</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.09</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.09</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.82</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.82</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.55</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.55</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.28</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.28</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.01</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.01</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.74</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.74</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.47</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.47</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.2</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.2</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.93</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.93</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.66</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.66</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.39</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.39</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.12</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.12</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.85</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.85</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.58</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.58</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.31</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.31</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.04</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.04</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.77</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.77</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.5</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.5</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.23</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.23</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.96</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.96</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.69</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.69</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.42</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.42</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.15</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.15</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.88</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.88</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.61</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.61</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.34</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.34</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.07</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.07</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.8</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.8</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.53</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.53</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.26</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.26</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.99</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.99</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.72</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.72</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.45</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.45</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.18</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.18</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.91</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.91</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.64</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.64</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.37</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.37</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.1</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.1</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.83</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.83</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.56</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.56</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.29</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.29</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.02</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.02</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.75</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.75</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.48</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.48</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.21</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.21</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.94</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.94</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.67</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.67</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.4</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.4</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.13</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.13</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.86</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.86</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.59</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.59</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.32</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.32</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.05</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.05</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.78</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.78</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.51</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.51</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.24</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.24</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.97</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.97</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.7</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.7</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.43</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.43</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.16</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.16</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.89</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.89</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.62</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.62</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.35</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.35</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.08</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.08</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.81</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.81</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.54</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.54</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.27</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.27</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.73</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.73</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.46</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.46</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.19</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.19</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.92</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.92</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.65</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.65</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.38</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.38</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.11</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.11</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.84</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.84</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.57</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.57</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.3</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.3</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.03</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.03</X> + <Y>15</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-15</StartX> + <StartY>15</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-15</ProcessStartX> + <ProcessStartY>15</ProcessStartY> + <ProcessEndX>15</ProcessEndX> + <ProcessEndY>-14.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>20.4</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.73</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.73</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.46</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.46</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.19</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.19</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.92</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.92</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.65</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.65</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.38</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.38</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.11</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.11</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.84</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.84</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.57</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.57</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.3</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.3</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.03</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.03</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.76</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.76</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.49</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.49</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.22</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.22</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.95</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.95</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.68</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.68</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.41</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.41</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.14</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.14</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.87</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.87</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.6</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.6</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.33</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.33</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.06</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.06</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.79</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.79</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.52</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.52</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.25</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.25</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.98</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.98</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.71</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.71</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.44</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.44</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.17</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.17</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.9</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.9</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.63</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.63</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.36</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.36</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.09</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.09</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.82</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.82</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.55</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.55</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.28</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.28</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.01</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.01</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.74</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.74</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.47</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.47</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.2</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.2</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.93</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.93</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.66</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.66</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.39</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.39</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.12</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.12</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.85</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.85</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.58</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.58</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.31</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.31</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.04</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.04</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.77</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.77</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.5</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.5</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.23</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.23</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.96</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.96</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.69</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.69</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.42</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.42</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.15</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.15</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.12</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.12</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.39</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.39</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.66</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.66</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.93</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.93</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.2</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.2</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.47</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.47</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.74</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.74</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.01</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.01</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.28</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.28</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.55</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.55</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.82</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.82</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.09</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.09</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.36</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.36</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.63</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.63</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.9</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.9</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.17</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.17</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.44</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.44</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.71</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.71</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.98</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.98</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.25</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.25</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.52</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.52</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.79</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.79</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.06</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.06</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.33</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.33</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.6</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.6</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.87</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.87</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.14</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.14</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.41</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.41</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.68</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.68</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.95</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.95</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.22</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.22</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.49</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.49</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.76</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.76</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.03</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.03</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.3</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.3</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.57</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.57</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.84</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.84</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.11</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.11</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.38</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.38</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.65</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.65</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.92</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.92</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.19</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.19</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.46</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.46</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.73</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.73</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.27</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.27</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.54</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.54</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.81</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.81</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.08</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.08</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.35</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.35</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.62</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.62</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.89</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.89</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.16</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.16</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.43</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.43</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.7</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.7</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.97</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.97</X> + <Y>15</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>20</StartX> + <StartY>15</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>20</ProcessStartX> + <ProcessStartY>15</ProcessStartY> + <ProcessEndX>50</ProcessEndX> + <ProcessEndY>-14.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>22</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.27</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.27</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.54</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.54</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.81</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.81</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.08</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.08</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.35</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.35</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.62</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.62</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.89</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.89</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.16</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.16</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.43</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.43</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.7</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.7</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.97</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.97</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.24</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.24</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.51</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.51</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.78</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.78</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.05</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.05</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.32</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.32</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.59</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.59</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.86</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.86</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.13</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.13</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.4</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.4</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.67</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.67</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.94</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.94</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.21</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.21</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.48</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.48</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.75</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.75</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.02</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.02</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.29</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.29</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.56</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.56</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.83</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.83</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.1</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.1</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.37</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.37</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.64</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.64</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.91</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.91</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.18</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.18</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.45</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.45</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.72</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.72</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.99</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.99</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.26</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.26</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.53</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.53</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.8</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.8</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.07</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.07</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.34</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.34</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.61</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.61</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.88</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.88</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.15</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.15</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.42</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.42</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.69</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.69</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.96</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.96</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.23</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.23</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.5</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.5</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.77</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.77</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.04</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.04</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.31</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.31</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.58</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.58</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.85</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.85</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.12</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.12</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.39</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.39</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.66</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.66</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.93</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.93</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.2</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.2</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.47</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.47</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.74</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.74</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.01</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.01</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.28</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.28</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.55</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.55</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.82</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.82</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.09</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.09</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.36</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.36</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.63</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.63</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.9</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.9</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.17</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.17</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.44</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.44</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.71</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.71</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.98</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.98</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.25</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.25</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.52</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.52</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.79</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.79</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.06</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.06</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.33</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.33</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.6</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.6</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.87</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.87</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.14</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.14</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.41</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.41</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.68</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.68</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.95</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.95</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.22</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.22</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.49</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.49</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.76</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.76</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.03</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.03</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.3</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.3</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.57</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.57</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.84</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.84</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.11</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.11</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.38</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.38</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.65</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.65</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.92</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.92</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.19</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.19</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.46</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.46</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.73</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.73</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.27</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.27</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.54</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.54</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.81</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.81</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.08</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.08</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.35</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.35</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.62</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.62</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.89</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.89</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.16</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.16</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.43</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.43</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.7</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.7</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.97</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.97</X> + <Y>15</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-50</StartX> + <StartY>-20</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-50</ProcessStartX> + <ProcessStartY>-20</ProcessStartY> + <ProcessEndX>-20</ProcessEndX> + <ProcessEndY>-49.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>23.6</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.73</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.73</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.46</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.46</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.19</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.19</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.92</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.92</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.65</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.65</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.38</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.38</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.11</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.11</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.84</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.84</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.57</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.57</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.3</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.3</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.03</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.03</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.76</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.76</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.49</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.49</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.22</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.22</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.95</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.95</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.68</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.68</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.41</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.41</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.14</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.14</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.87</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.87</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.6</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.6</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.33</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.33</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.06</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.06</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.79</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.79</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.52</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.52</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.25</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.25</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.98</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.98</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.71</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.71</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.44</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.44</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.17</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.17</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.9</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.9</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.63</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.63</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.36</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.36</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.09</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.09</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.82</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.82</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.55</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.55</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.28</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.28</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.01</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.01</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.74</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.74</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.47</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.47</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.2</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.2</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.93</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.93</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.66</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.66</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.39</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.39</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.12</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.12</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.85</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.85</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.58</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.58</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.31</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.31</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.04</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.04</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.77</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.77</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.5</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.5</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.23</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.23</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.96</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.96</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.69</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.69</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.42</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.42</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.15</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.15</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.88</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.88</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.61</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.61</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.34</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.34</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.07</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.07</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.8</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.8</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.53</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.53</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.26</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.26</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.99</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.99</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.72</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.72</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.45</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.45</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.18</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.18</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.91</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.91</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.64</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.64</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.37</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.37</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.1</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.1</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.83</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.83</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.56</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.56</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.29</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.29</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.02</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.02</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.75</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.75</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.48</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.48</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.21</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.21</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.94</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.94</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.67</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.67</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.4</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.4</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.13</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.13</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.86</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.86</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.59</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.59</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.32</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.32</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.05</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.05</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.78</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.78</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.51</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.51</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.24</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.24</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.97</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.97</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.7</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.7</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.43</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.43</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.16</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.16</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.89</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.89</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.62</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.62</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.35</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.35</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.08</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.08</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.81</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.81</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.54</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.54</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.27</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.27</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.73</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.73</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.46</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.46</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.19</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.19</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.92</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.92</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.65</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.65</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.38</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.38</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.11</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.11</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.84</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.84</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.57</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.57</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.3</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.3</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.03</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.03</X> + <Y>-20</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-15</StartX> + <StartY>-20</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-15</ProcessStartX> + <ProcessStartY>-20</ProcessStartY> + <ProcessEndX>15</ProcessEndX> + <ProcessEndY>-49.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>25.2</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.73</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.73</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.46</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.46</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.19</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.19</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.92</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.92</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.65</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.65</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.38</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.38</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.11</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.11</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.84</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.84</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.57</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.57</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.3</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.3</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.03</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.03</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.76</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.76</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.49</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.49</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.22</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.22</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.95</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.95</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.68</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.68</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.41</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.41</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.14</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.14</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.87</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.87</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.6</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.6</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.33</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.33</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.06</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.06</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.79</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.79</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.52</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.52</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.25</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.25</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.98</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.98</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.71</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.71</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.44</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.44</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.17</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.17</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.9</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.9</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.63</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.63</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.36</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.36</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.09</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.09</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.82</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.82</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.55</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.55</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.28</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.28</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.01</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.01</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.74</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.74</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.47</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.47</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.2</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.2</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.93</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.93</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.66</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.66</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.39</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.39</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.12</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.12</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.85</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.85</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.58</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.58</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.31</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.31</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.04</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.04</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.77</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.77</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.5</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.5</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.23</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.23</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.96</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.96</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.69</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.69</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.42</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.42</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.15</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.15</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.12</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.12</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.39</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.39</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.66</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.66</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.93</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.93</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.2</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.2</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.47</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.47</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.74</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.74</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.01</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.01</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.28</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.28</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.55</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.55</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.82</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.82</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.09</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.09</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.36</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.36</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.63</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.63</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.9</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.9</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.17</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.17</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.44</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.44</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.71</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.71</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.98</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.98</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.25</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.25</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.52</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.52</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.79</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.79</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.06</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.06</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.33</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.33</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.6</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.6</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.87</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.87</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.14</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.14</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.41</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.41</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.68</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.68</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.95</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.95</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.22</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.22</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.49</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.49</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.76</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.76</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.03</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.03</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.3</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.3</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.57</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.57</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.84</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.84</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.11</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.11</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.38</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.38</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.65</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.65</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.92</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.92</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.19</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.19</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.46</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.46</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.73</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.73</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.27</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.27</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.54</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.54</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.81</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.81</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.08</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.08</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.35</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.35</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.62</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.62</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.89</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.89</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.16</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.16</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.43</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.43</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.7</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.7</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.97</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.97</X> + <Y>-20</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>20</StartX> + <StartY>-20</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>20</ProcessStartX> + <ProcessStartY>-20</ProcessStartY> + <ProcessEndX>50</ProcessEndX> + <ProcessEndY>-49.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>27</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.27</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.27</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.54</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.54</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.81</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.81</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.08</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.08</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.35</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.35</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.62</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.62</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.89</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.89</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.16</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.16</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.43</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.43</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.7</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.7</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.97</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.97</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.24</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.24</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.51</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.51</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.78</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.78</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.05</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.05</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.32</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.32</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.59</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.59</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.86</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.86</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.13</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.13</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.4</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.4</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.67</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.67</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.94</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.94</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.21</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.21</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.48</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.48</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.75</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.75</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.02</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.02</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.29</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.29</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.56</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.56</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.83</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.83</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.1</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.1</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.37</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.37</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.64</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.64</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.91</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.91</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.18</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.18</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.45</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.45</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.72</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.72</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.99</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.99</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.26</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.26</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.53</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.53</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.8</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.8</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.07</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.07</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.34</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.34</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.61</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.61</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.88</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.88</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.15</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.15</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.42</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.42</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.69</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.69</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.96</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.96</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.23</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.23</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.5</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.5</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.77</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.77</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.04</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.04</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.31</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.31</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.58</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.58</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.85</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.85</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.12</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.12</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.39</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.39</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.66</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.66</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.93</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.93</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.2</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.2</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.47</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.47</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.74</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.74</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.01</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.01</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.28</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.28</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.55</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.55</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.82</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.82</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.09</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.09</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.36</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.36</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.63</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.63</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.9</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.9</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.17</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.17</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.44</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.44</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.71</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.71</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.98</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.98</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.25</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.25</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.52</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.52</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.79</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.79</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.06</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.06</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.33</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.33</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.6</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.6</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.87</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.87</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.14</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.14</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.41</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.41</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.68</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.68</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.95</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.95</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.22</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.22</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.49</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.49</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.76</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.76</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.03</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.03</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.3</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.3</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.57</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.57</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.84</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.84</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.11</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.11</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.38</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.38</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.65</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.65</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.92</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.92</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.19</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.19</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.46</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.46</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.73</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.73</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.27</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.27</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.54</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.54</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.81</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.81</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.08</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.08</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.35</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.35</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.62</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.62</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.89</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.89</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.16</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.16</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.43</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.43</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.7</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.7</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.97</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.97</X> + <Y>-20</Y> + </Coord> + </ProcessList> + </ProcessInfo> + </ProcessInfoList> +</Recipe> \ No newline at end of file diff --git a/SA_LTT/Info/Recipe/4INCH.xml b/SA_LTT/Info/Recipe/4INCH.xml new file mode 100644 index 0000000..55c8bbb --- /dev/null +++ b/SA_LTT/Info/Recipe/4INCH.xml @@ -0,0 +1,16246 @@ +<?xml version="1.0" encoding="utf-8"?> +<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>4INCH</Name> + <Radius>50</Radius> + <DistanceFromCenterToPrimaryFlat>48.5</DistanceFromCenterToPrimaryFlat> + <EdgeRound>2</EdgeRound> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <ProcessInfoList> + <ProcessInfo> + <Radius>50</Radius> + <DistanceFromCenterToPrimaryFlat>48.5</DistanceFromCenterToPrimaryFlat> + <EdgeRound>2</EdgeRound> + <StartX>-50</StartX> + <StartY>50</StartY> + <Width>100</Width> + <Height>19.9800014</Height> + <ProcessStartX>-37.454</ProcessStartX> + <ProcessStartY>48</ProcessStartY> + <ProcessEndX>37.454</ProcessEndX> + <ProcessEndY>30.02</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>2.8</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3600.16</ProcessLength> + <AccTime>5.7723337461124578</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.454</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.454</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.184</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.184</X> + <Y>30.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.914</X> + <Y>30.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.914</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.644</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.644</X> + <Y>30.83</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.374</X> + <Y>31.1</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.374</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.104</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.104</X> + <Y>31.64</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.834</X> + <Y>32.18</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.834</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.564</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.564</X> + <Y>32.45</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.294</X> + <Y>32.72</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.294</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.024</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.024</X> + <Y>32.72</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.754</X> + <Y>32.99</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.754</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.484</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.484</X> + <Y>33.26</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.214</X> + <Y>33.53</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.214</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.944</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.944</X> + <Y>33.8</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.674</X> + <Y>34.07</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.674</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.404</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.404</X> + <Y>34.34</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.134</X> + <Y>34.61</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.134</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.864</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.864</X> + <Y>34.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.594</X> + <Y>35.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.594</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.324</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.324</X> + <Y>35.69</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.054</X> + <Y>35.96</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.054</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.784</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.784</X> + <Y>36.23</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.514</X> + <Y>36.23</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.514</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.244</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.244</X> + <Y>36.23</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.974</X> + <Y>36.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.974</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.704</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.704</X> + <Y>36.77</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.434</X> + <Y>37.31</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.434</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.164</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.164</X> + <Y>37.58</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.894</X> + <Y>37.58</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.894</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.624</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.624</X> + <Y>37.58</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.354</X> + <Y>37.85</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.354</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.084</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.084</X> + <Y>38.39</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.814</X> + <Y>38.39</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.814</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.544</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.544</X> + <Y>38.39</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.274</X> + <Y>38.66</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.274</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.004</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.004</X> + <Y>39.2</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.734</X> + <Y>39.2</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.734</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.464</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.464</X> + <Y>39.2</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.194</X> + <Y>39.74</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.194</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.924</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.924</X> + <Y>39.74</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.654</X> + <Y>39.74</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.654</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.384</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.384</X> + <Y>40.01</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.114</X> + <Y>40.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.114</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.844</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.844</X> + <Y>40.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.574</X> + <Y>40.82</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.574</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.304</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.304</X> + <Y>40.82</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.034</X> + <Y>40.82</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.034</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.764</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.764</X> + <Y>41.36</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.494</X> + <Y>41.09</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.494</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.224</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.224</X> + <Y>41.63</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.954</X> + <Y>41.63</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.954</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.684</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.684</X> + <Y>41.63</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.414</X> + <Y>42.17</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.414</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.144</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.144</X> + <Y>41.9</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.874</X> + <Y>42.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.874</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.604</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.604</X> + <Y>42.17</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.334</X> + <Y>42.71</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.334</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.064</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.064</X> + <Y>42.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.794</X> + <Y>42.98</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.794</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.524</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.524</X> + <Y>42.71</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.254</X> + <Y>43.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.254</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.984</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.984</X> + <Y>42.98</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.714</X> + <Y>43.52</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.714</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.444</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.444</X> + <Y>43.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.174</X> + <Y>43.79</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.174</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.904</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.904</X> + <Y>43.52</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.634</X> + <Y>44.06</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.634</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.364</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.364</X> + <Y>43.79</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.094</X> + <Y>44.06</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.094</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.824</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.824</X> + <Y>44.06</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.554</X> + <Y>44.06</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.554</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.284</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.284</X> + <Y>44.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.014</X> + <Y>44.33</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.014</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.744</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.744</X> + <Y>44.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.474</X> + <Y>44.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.474</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.204</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.204</X> + <Y>44.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.934</X> + <Y>45.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.934</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.664</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.664</X> + <Y>44.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.394</X> + <Y>45.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.394</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.124</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.124</X> + <Y>45.41</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.854</X> + <Y>45.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.854</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.584</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.584</X> + <Y>45.41</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.314</X> + <Y>45.68</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.314</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.044</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.044</X> + <Y>45.41</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.774</X> + <Y>45.68</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.774</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.504</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.504</X> + <Y>45.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.234</X> + <Y>45.68</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.234</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.964</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.964</X> + <Y>45.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.694</X> + <Y>46.22</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.694</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.424</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.424</X> + <Y>45.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.154</X> + <Y>45.95</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.154</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.884</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.884</X> + <Y>46.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.614</X> + <Y>46.22</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.614</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.344</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.344</X> + <Y>46.22</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.074</X> + <Y>46.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.074</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.804</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.804</X> + <Y>46.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.534</X> + <Y>46.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.534</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.264</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.264</X> + <Y>46.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.994</X> + <Y>46.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.994</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.724</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.724</X> + <Y>47.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.454</X> + <Y>46.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.454</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.184</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.184</X> + <Y>46.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.914</X> + <Y>46.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.914</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.644</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.644</X> + <Y>47.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.374</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.374</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.104</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.104</X> + <Y>47.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.834</X> + <Y>47.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.834</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.564</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.564</X> + <Y>47.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.294</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.294</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.024</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.024</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.754</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.754</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.484</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.484</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.214</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.214</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.944</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.944</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.674</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.674</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.404</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.404</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.134</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.134</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.864</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.864</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.594</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.594</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.324</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.324</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.054</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.054</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.784</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.784</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.514</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.514</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.244</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.244</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.974</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.974</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.704</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.704</X> + <Y>48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.434</X> + <Y>48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.434</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.164</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.164</X> + <Y>48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.894</X> + <Y>48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.894</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.624</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.624</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.354</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.354</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.084</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.084</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.814</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.814</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.544</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.544</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.274</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.274</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.004</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.004</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.734</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.734</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.464</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.464</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.194</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.194</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.076</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.076</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.346</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.346</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.616</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.616</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.886</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.886</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.156</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.156</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.426</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.426</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.696</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.696</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.966</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.966</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.236</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.236</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.506</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.506</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.776</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.776</X> + <Y>48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.046</X> + <Y>48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.046</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.316</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.316</X> + <Y>48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.586</X> + <Y>48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.586</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.856</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.856</X> + <Y>48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.126</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.126</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.396</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.396</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.666</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.666</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.936</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.936</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.206</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.206</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.476</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.476</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.746</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.746</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.016</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.016</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.286</X> + <Y>47.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.286</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.556</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.556</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.826</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.826</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.096</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.096</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.366</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.366</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.636</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.636</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.906</X> + <Y>47.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.906</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.176</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.176</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.446</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.446</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.716</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.716</X> + <Y>47.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.986</X> + <Y>47.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.986</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.256</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.256</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.526</X> + <Y>47.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.526</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.796</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.796</X> + <Y>47.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.066</X> + <Y>46.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.066</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.336</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.336</X> + <Y>46.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.606</X> + <Y>47.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.606</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.876</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.876</X> + <Y>46.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.146</X> + <Y>46.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.146</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.416</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.416</X> + <Y>46.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.686</X> + <Y>46.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.686</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.956</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.956</X> + <Y>46.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.226</X> + <Y>46.22</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.226</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.496</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.496</X> + <Y>46.22</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.766</X> + <Y>46.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.766</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.036</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.036</X> + <Y>46.22</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.306</X> + <Y>45.95</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.306</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.576</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.576</X> + <Y>45.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.846</X> + <Y>46.22</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.846</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.116</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.116</X> + <Y>45.68</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.386</X> + <Y>45.68</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.386</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.656</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.656</X> + <Y>45.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.926</X> + <Y>45.41</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.926</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.196</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.196</X> + <Y>45.41</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.466</X> + <Y>45.68</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.466</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.736</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.736</X> + <Y>45.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.006</X> + <Y>45.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.006</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.276</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.276</X> + <Y>45.41</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.546</X> + <Y>44.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.546</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.816</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.816</X> + <Y>44.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.086</X> + <Y>44.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.086</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.356</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.356</X> + <Y>44.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.626</X> + <Y>44.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.626</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.896</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.896</X> + <Y>44.33</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.166</X> + <Y>44.33</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.166</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.436</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.436</X> + <Y>44.33</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.706</X> + <Y>44.06</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.706</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.976</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.976</X> + <Y>44.33</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.246</X> + <Y>43.79</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.246</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.516</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.516</X> + <Y>44.06</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.786</X> + <Y>43.52</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.786</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.056</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.056</X> + <Y>43.52</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.326</X> + <Y>43.52</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.326</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.596</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.596</X> + <Y>43.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.866</X> + <Y>43.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.866</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.136</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.136</X> + <Y>42.98</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.406</X> + <Y>42.98</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.406</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.676</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.676</X> + <Y>42.71</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.946</X> + <Y>42.71</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.946</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.216</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.216</X> + <Y>42.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.486</X> + <Y>42.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.486</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.756</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.756</X> + <Y>42.17</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.026</X> + <Y>41.9</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.026</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.296</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.296</X> + <Y>42.17</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.566</X> + <Y>41.63</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.566</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.836</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.836</X> + <Y>41.9</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.106</X> + <Y>41.36</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.106</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.376</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.376</X> + <Y>41.36</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.646</X> + <Y>41.09</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.646</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.916</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.916</X> + <Y>40.82</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.186</X> + <Y>41.09</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.186</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.456</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.456</X> + <Y>40.55</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.726</X> + <Y>40.55</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.726</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.996</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.996</X> + <Y>40.55</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.266</X> + <Y>40.01</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.266</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.536</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.536</X> + <Y>40.01</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.806</X> + <Y>40.01</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.806</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.076</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.076</X> + <Y>39.47</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.346</X> + <Y>39.47</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.346</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.616</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.616</X> + <Y>39.47</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.886</X> + <Y>38.93</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.886</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.156</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.156</X> + <Y>38.66</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.426</X> + <Y>38.93</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.426</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.696</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.696</X> + <Y>38.39</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.966</X> + <Y>38.12</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.966</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.236</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.236</X> + <Y>37.85</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.506</X> + <Y>38.12</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.506</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.776</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.776</X> + <Y>37.85</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.046</X> + <Y>37.31</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.046</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.316</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.316</X> + <Y>37.04</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.586</X> + <Y>37.04</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.586</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.856</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.856</X> + <Y>36.77</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.126</X> + <Y>36.77</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.126</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.396</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.396</X> + <Y>36.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.666</X> + <Y>35.96</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.666</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.936</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.936</X> + <Y>35.69</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.206</X> + <Y>35.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.206</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.476</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.476</X> + <Y>35.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.746</X> + <Y>34.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.746</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.016</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.016</X> + <Y>34.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.286</X> + <Y>34.61</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.286</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.556</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.556</X> + <Y>34.34</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.826</X> + <Y>34.07</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.826</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.096</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.096</X> + <Y>33.8</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.366</X> + <Y>33.53</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.366</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.636</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.636</X> + <Y>33.26</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.906</X> + <Y>32.99</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.906</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.176</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.176</X> + <Y>32.45</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.446</X> + <Y>32.18</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.446</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.716</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.716</X> + <Y>31.91</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.986</X> + <Y>31.64</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.986</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.256</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.256</X> + <Y>31.37</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.526</X> + <Y>31.37</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.526</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.796</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.796</X> + <Y>30.83</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.066</X> + <Y>30.29</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.066</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.336</X> + <Y>30.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.336</X> + <Y>30.02</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>50</Radius> + <DistanceFromCenterToPrimaryFlat>48.5</DistanceFromCenterToPrimaryFlat> + <EdgeRound>2</EdgeRound> + <StartX>-50</StartX> + <StartY>30.28</StartY> + <Width>100</Width> + <Height>19.9800014</Height> + <ProcessStartX>-46.8819</ProcessStartX> + <ProcessStartY>30.28</ProcessStartY> + <ProcessEndX>46.8819</ProcessEndX> + <ProcessEndY>10.3</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>2.8</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>6532.32</ProcessLength> + <AccTime>1.6376667837861219</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.8819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.8819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.6119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.6119</X> + <Y>11.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.3419</X> + <Y>12.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.3419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.0719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.0719</X> + <Y>13.27</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.8019</X> + <Y>14.62</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.8019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.5319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.5319</X> + <Y>15.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.2619</X> + <Y>16.24</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.2619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.9919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.9919</X> + <Y>16.51</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.7219</X> + <Y>17.32</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.7219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.4519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.4519</X> + <Y>18.13</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.1819</X> + <Y>18.94</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.1819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.9119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.9119</X> + <Y>19.21</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.6419</X> + <Y>20.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.6419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.3719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.3719</X> + <Y>20.83</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.1019</X> + <Y>21.37</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.1019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.8319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.8319</X> + <Y>21.91</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.5619</X> + <Y>22.45</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.5619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.2919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.2919</X> + <Y>22.72</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.0219</X> + <Y>22.99</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.0219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.7519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.7519</X> + <Y>23.53</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.4819</X> + <Y>24.34</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.4819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.2119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.2119</X> + <Y>24.61</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.9419</X> + <Y>24.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.9419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.6719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.6719</X> + <Y>25.69</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.4019</X> + <Y>25.69</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.4019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.1319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.1319</X> + <Y>26.23</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.8619</X> + <Y>26.77</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.8619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.5919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.5919</X> + <Y>27.04</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.3219</X> + <Y>27.31</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.3219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.0519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.0519</X> + <Y>28.12</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.7819</X> + <Y>28.12</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.7819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.5119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.5119</X> + <Y>28.66</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.2419</X> + <Y>29.2</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.2419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.9719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.9719</X> + <Y>29.2</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.7019</X> + <Y>29.74</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.7019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.4319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.4319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.1619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.1619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.8919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.8919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.6219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.6219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.3519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.3519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.0819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.0819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.8119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.8119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.5419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.5419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.2719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.2719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.0019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.0019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.7319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.7319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.4619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.4619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.1919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.1919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.9219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.9219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.6519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.6519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.3819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.3819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.1119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.1119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.8419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.8419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.5719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.5719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.3019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.3019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.0319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.0319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.7619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.7619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.4919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.4919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.2219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.2219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.9519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.9519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.6819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.6819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.4119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.4119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.1419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.1419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.8719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.8719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.6019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.6019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.3319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.3319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.0619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.0619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.7919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.7919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.5219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.5219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.2519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.2519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.9819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.9819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.7119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.7119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.4419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.4419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.1719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.1719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.9019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.9019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.6319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.6319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.3619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.3619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.0919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.0919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.8219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.8219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.5519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.5519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.2819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.2819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.0119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.0119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.7419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.7419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.4719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.4719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.2019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.2019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.9319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.9319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.6619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.6619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.3919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.3919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.1219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.1219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.8519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.8519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.5819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.5819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.3119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.3119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.0419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.0419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.7719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.7719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.5019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.5019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.2319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.2319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.9619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.9619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.6919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.6919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.4219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.4219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.1519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.1519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.8819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.8819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.6119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.6119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.3419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.3419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.0719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.0719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.8019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.8019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.5319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.5319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.2619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.2619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.9919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.9919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.7219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.7219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.4519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.4519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.1819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.1819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.9119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.9119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.6419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.6419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.3719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.3719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.1019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.1019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.8319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.8319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.5619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.5619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.2919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.2919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.0219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.0219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.7519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.7519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.4819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.4819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.2119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.2119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.9419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.9419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.6719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.6719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.4019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.4019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.1319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.1319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.8619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.8619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.5919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.5919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.3219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.3219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.0519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.0519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.7819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.7819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.5119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.5119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.2419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.2419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.9719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.9719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.7019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.7019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.4319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.4319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.1619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.1619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.8919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.8919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.6219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.6219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.3519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.3519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.0819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.0819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.8119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.8119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.5419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.5419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.2719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.2719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.0019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.0019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.7319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.7319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.4619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.4619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.1919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.1919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.9219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.9219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.6519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.6519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.3819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.3819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.1119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.1119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.8419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.8419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.5719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.5719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.3019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.3019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.0319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.0319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.7619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.7619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.4919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.4919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.2219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.2219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.9519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.9519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.6819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.6819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.4119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.4119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.1419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.1419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.8719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.8719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.6019</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.6019</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.3319</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.3319</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.0619</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.0619</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.7919</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.7919</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.5219</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.5219</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.2519</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.2519</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.9819</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.9819</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.7119</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.7119</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.4419</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.4419</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.1719</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.1719</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.0981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.0981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.3681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.3681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.6381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.6381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.9081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.9081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.1781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.1781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.4481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.4481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.7181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.7181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.9881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.9881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.2581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.2581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.5281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.5281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.7981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.7981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.0681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.0681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.3381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.3381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.6081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.6081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.8781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.8781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.1481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.1481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.4181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.4181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.6881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.6881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.9581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.9581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.2281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.2281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.4981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.4981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.7681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.7681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.0381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.0381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.3081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.3081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.5781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.5781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.8481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.8481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.1181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.1181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.3881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.3881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.6581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.6581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.9281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.9281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.1981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.1981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.4681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.4681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.7381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.7381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.0081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.0081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.2781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.2781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.5481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.5481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.8181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.8181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.0881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.0881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.3581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.3581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.6281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.6281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.8981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.8981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.1681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.1681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.4381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.4381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.7081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.7081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.9781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.9781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.2481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.2481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.5181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.5181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.7881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.7881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.0581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.0581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.3281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.3281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.5981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.5981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.8681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.8681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.1381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.1381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.4081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.4081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.6781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.6781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.9481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.9481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.2181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.2181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.4881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.4881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.7581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.7581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.0281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.0281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.2981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.2981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.5681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.5681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.8381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.8381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.1081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.1081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.3781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.3781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.6481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.6481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.9181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.9181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.1881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.1881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.4581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.4581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.7281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.7281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.9981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.9981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.2681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.2681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.5381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.5381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.8081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.8081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.0781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.0781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.3481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.3481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.6181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.6181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.8881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.8881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.1581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.1581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.4281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.4281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.6981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.6981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.9681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.9681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.2381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.2381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.5081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.5081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.7781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.7781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.0481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.0481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.3181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.3181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.5881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.5881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.8581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.8581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.1281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.1281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.3981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.3981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.6681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.6681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.9381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.9381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.2081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.2081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.4781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.4781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.7481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.7481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.0181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.0181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.2881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.2881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.5581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.5581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.8281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.8281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.0981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.0981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.3681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.3681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.6381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.6381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.9081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.9081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.1781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.1781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.4481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.4481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.7181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.7181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.9881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.9881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.2581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.2581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.5281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.5281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.7981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.7981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.0681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.0681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.3381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.3381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.6081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.6081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.8781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.8781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.1481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.1481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.4181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.4181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.6881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.6881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.9581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.9581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.2281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.2281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.4981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.4981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.7681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.7681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.0381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.0381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.3081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.3081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.5781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.5781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.8481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.8481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.1181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.1181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.3881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.3881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.6581</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.6581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.9281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.9281</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.1981</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.1981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.4681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.4681</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.7381</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.7381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.0081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.0081</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.2781</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.2781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.5481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.5481</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.8181</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.8181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.0881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.0881</X> + <Y>30.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.3581</X> + <Y>30.01</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.3581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.6281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.6281</X> + <Y>30.01</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.8981</X> + <Y>29.47</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.8981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.1681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.1681</X> + <Y>28.93</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.4381</X> + <Y>28.93</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.4381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.7081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.7081</X> + <Y>28.39</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.9781</X> + <Y>27.85</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.9781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.2481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.2481</X> + <Y>27.85</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.5181</X> + <Y>27.04</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.5181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.7881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.7881</X> + <Y>27.04</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.0581</X> + <Y>26.23</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.0581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.3281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.3281</X> + <Y>26.23</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.5981</X> + <Y>25.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.5981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.8681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.8681</X> + <Y>25.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.1381</X> + <Y>24.61</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.1381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.4081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.4081</X> + <Y>24.07</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.6781</X> + <Y>24.07</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.6781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.9481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.9481</X> + <Y>23.53</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.2181</X> + <Y>22.72</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.2181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.4881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.4881</X> + <Y>22.18</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.7581</X> + <Y>21.64</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.7581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.0281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.0281</X> + <Y>21.1</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.2981</X> + <Y>20.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.2981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.5681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.5681</X> + <Y>20.02</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.8381</X> + <Y>19.75</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.8381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.1081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.1081</X> + <Y>18.94</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.3781</X> + <Y>18.13</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.3781</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.6481</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.6481</X> + <Y>17.86</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.9181</X> + <Y>16.78</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.9181</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.1881</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.1881</X> + <Y>15.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.4581</X> + <Y>15.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.4581</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.7281</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.7281</X> + <Y>14.62</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.9981</X> + <Y>13.54</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.9981</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.2681</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.2681</X> + <Y>13</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.5381</X> + <Y>11.65</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.5381</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.8081</X> + <Y>10.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.8081</X> + <Y>10.84</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>50</Radius> + <DistanceFromCenterToPrimaryFlat>48.5</DistanceFromCenterToPrimaryFlat> + <EdgeRound>2</EdgeRound> + <StartX>-50</StartX> + <StartY>10.56</StartY> + <Width>97</Width> + <Height>19.9800014</Height> + <ProcessStartX>-48</ProcessStartX> + <ProcessStartY>10.56</ProcessStartY> + <ProcessEndX>47</ProcessEndX> + <ProcessEndY>-9.42</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>2.8</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>7160.6</ProcessLength> + <AccTime>0.23870372076502344</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48</X> + <Y>-0.24</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48</X> + <Y>-0.24</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.73</X> + <Y>-5.1</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.73</X> + <Y>5.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.46</X> + <Y>7.32</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.46</X> + <Y>-7.26</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.19</X> + <Y>-8.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.19</X> + <Y>8.94</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.92</X> + <Y>10.02</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.92</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.65</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.65</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.38</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.38</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.11</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.11</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.84</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.84</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.57</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.57</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.3</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.3</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.03</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.03</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.76</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.76</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.49</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.49</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.22</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.22</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.95</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.95</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.68</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.68</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.41</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.41</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.14</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.14</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.87</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.87</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.6</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.6</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.33</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.33</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.06</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.06</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.79</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.79</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.52</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.52</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.25</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.25</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.98</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.98</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.71</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.71</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.44</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.44</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.17</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.17</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.9</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.9</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.63</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.63</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.36</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.36</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.09</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.09</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.82</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.82</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.55</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.55</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.28</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.28</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.01</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.01</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.74</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.74</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.47</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.47</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.2</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.2</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.93</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.93</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.66</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.66</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.39</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.39</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.12</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.12</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.85</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.85</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.58</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.58</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.31</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.31</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.04</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.04</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.77</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.77</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.5</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.5</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.23</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.23</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.96</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.96</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.69</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.69</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.42</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.42</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.15</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.15</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.88</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.88</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.61</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.61</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.34</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.34</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.07</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.07</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.8</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.8</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.53</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.53</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.26</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.26</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.99</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.99</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.72</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.72</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.45</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.45</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.18</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.18</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.91</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.91</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.64</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.64</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.37</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.37</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.1</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.1</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.83</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.83</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.56</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.56</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.29</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.29</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.02</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.02</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.75</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.75</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.48</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.48</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.21</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.21</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.94</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.94</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.67</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.67</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.4</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.4</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.13</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.13</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.86</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.86</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.59</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.59</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.32</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.32</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.05</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.05</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.78</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.78</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.51</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.51</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.24</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.24</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.97</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.97</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.7</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.7</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.43</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.43</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.16</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.16</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.89</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.89</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.62</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.62</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.35</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.35</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.08</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.08</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.81</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.81</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.54</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.54</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.27</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.27</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.73</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.73</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.46</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.46</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.19</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.19</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.92</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.92</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.65</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.65</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.38</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.38</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.11</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.11</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.84</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.84</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.57</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.57</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.3</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.3</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.03</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.03</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.76</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.76</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.49</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.49</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.22</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.22</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.95</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.95</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.68</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.68</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.41</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.41</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.14</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.14</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.87</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.87</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.6</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.6</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.33</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.33</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.06</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.06</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.79</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.79</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.52</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.52</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.25</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.25</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.98</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.98</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.71</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.71</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.44</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.44</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.17</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.17</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.9</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.9</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.63</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.63</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.36</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.36</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.09</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.09</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.82</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.82</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.55</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.55</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.28</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.28</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.01</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.01</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.74</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.74</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.47</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.47</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.2</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.2</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.93</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.93</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.66</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.66</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.39</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.39</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.12</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.12</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.85</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.85</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.58</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.58</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.31</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.31</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.04</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.04</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.77</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.77</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.5</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.5</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.23</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.23</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.96</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.96</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.69</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.69</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.42</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.42</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.15</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.15</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.88</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.88</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.61</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.61</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.34</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.34</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.07</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.07</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.8</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.8</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.53</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.53</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.26</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.26</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.99</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.99</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.72</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.72</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.45</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.45</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.18</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.18</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.91</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.91</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.64</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.64</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.37</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.37</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.1</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.1</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.83</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.83</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.56</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.56</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.29</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.29</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.02</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.02</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.75</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.75</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.48</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.48</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.21</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.21</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.06</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.06</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.33</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.33</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.6</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.6</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.87</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.87</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.14</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.14</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.41</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.41</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.68</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.68</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.95</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.95</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.22</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.22</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.49</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.49</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.76</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.76</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.03</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.03</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.3</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.3</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.57</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.57</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.84</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.84</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.11</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.11</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.38</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.38</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.65</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.65</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.92</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.92</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.19</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.19</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.46</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.46</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.73</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.73</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.27</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.27</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.54</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.54</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.81</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.81</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.08</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.08</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.35</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.35</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.62</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.62</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.89</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.89</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.16</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.16</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.43</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.43</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.7</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.7</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.97</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.97</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.24</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.24</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.51</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.51</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.78</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.78</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.05</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.05</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.32</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.32</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.59</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.59</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.86</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.86</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.13</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.13</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.4</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.4</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.67</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.67</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.94</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.94</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.21</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.21</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.48</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.48</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.75</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.75</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.02</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.02</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.29</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.29</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.56</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.56</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.83</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.83</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.1</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.1</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.37</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.37</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.64</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.64</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.91</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.91</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.18</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.18</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.45</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.45</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.72</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.72</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.99</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.99</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.26</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.26</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.53</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.53</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.8</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.8</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.07</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.07</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.34</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.34</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.61</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.61</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.88</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.88</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.15</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.15</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.42</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.42</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.69</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.69</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.96</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.96</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.23</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.23</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.5</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.5</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.77</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.77</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.04</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.04</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.31</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.31</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.58</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.58</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.85</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.85</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.12</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.12</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.39</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.39</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.66</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.66</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.93</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.93</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.2</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.2</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.47</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.47</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.74</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.74</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.01</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.01</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.28</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.28</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.55</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.55</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.82</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.82</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.09</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.09</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.36</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.36</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.63</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.63</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.9</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.9</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.17</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.17</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.44</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.44</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.71</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.71</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.98</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.98</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.25</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.25</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.52</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.52</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.79</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.79</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.06</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.06</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.33</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.33</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.6</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.6</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.87</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.87</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.14</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.14</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.41</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.41</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.68</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.68</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.95</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.95</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.22</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.22</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.49</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.49</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.76</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.76</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.03</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.03</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.3</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.3</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.57</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.57</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.84</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.84</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.11</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.11</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.38</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.38</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.65</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.65</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.92</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.92</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.19</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.19</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.46</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.46</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.73</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.73</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.27</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.27</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.54</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.54</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.81</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.81</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.08</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.08</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.35</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.35</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.62</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.62</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.89</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.89</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.16</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.16</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.43</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.43</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.7</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.7</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.97</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.97</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.24</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.24</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.51</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.51</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.78</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.78</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.05</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.05</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.32</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.32</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.59</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.59</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.86</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.86</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.13</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.13</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.4</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.4</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.67</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.67</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.94</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.94</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.21</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.21</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.48</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.48</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.75</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.75</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.02</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.02</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.29</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.29</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.56</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.56</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.83</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.83</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.1</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.1</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.37</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.37</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.64</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.64</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.91</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.91</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.18</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.18</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.45</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.45</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.72</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.72</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.99</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.99</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.26</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.26</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.53</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.53</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.8</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.8</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.07</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.07</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.34</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.34</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.61</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.61</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.88</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.88</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.15</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.15</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.42</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.42</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.69</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.69</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.96</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.96</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.23</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.23</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.5</X> + <Y>10.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.5</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.77</X> + <Y>-9.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.77</X> + <Y>10.56</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>50</Radius> + <DistanceFromCenterToPrimaryFlat>48.5</DistanceFromCenterToPrimaryFlat> + <EdgeRound>2</EdgeRound> + <StartX>-50</StartX> + <StartY>-9.16</StartY> + <Width>100</Width> + <Height>19.9800014</Height> + <ProcessStartX>-47.1179</ProcessStartX> + <ProcessStartY>-9.16</ProcessStartY> + <ProcessEndX>47.1179</ProcessEndX> + <ProcessEndY>-29.14</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>2.8</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>6620.2</ProcessLength> + <AccTime>1.5034445519628903</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.1179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.1179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.8479</X> + <Y>-10.51</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.8479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.5779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.5779</X> + <Y>-11.86</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.3079</X> + <Y>-12.67</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.3079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.0379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.0379</X> + <Y>-13.75</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.7679</X> + <Y>-14.56</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.7679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.4979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.4979</X> + <Y>-15.37</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.2279</X> + <Y>-16.18</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.2279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.9579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.9579</X> + <Y>-16.99</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.6879</X> + <Y>-17.53</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.6879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.4179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.4179</X> + <Y>-18.34</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.1479</X> + <Y>-18.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.1479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.8779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.8779</X> + <Y>-19.69</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.6079</X> + <Y>-20.23</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.6079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.3379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.3379</X> + <Y>-20.77</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.0679</X> + <Y>-21.31</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.0679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.7979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.7979</X> + <Y>-21.85</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.5279</X> + <Y>-22.39</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.5279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.2579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.2579</X> + <Y>-22.93</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.9879</X> + <Y>-23.47</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.9879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.7179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.7179</X> + <Y>-24.01</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.4479</X> + <Y>-24.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.4479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.1779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.1779</X> + <Y>-24.82</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.9079</X> + <Y>-25.36</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.9079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.6379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.6379</X> + <Y>-25.63</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.3679</X> + <Y>-26.17</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.3679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.0979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.0979</X> + <Y>-26.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.8279</X> + <Y>-26.98</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.8279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.5579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.5579</X> + <Y>-27.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.2879</X> + <Y>-27.79</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.2879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.0179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.0179</X> + <Y>-28.06</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.7479</X> + <Y>-28.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.7479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.4779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.4779</X> + <Y>-28.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.2079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.2079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.9379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.9379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.6679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.6679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.3979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.3979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.1279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.1279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.8579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.8579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.5879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.5879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.3179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.3179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.0479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.0479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.7779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.7779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.5079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.5079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.2379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.2379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.9679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.9679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.6979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.6979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.4279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.4279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.1579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.1579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.8879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.8879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.6179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.6179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.3479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.3479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.0779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.0779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.8079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.8079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.5379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.5379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.2679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.2679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.9979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.9979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.7279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.7279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.4579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.4579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.1879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.1879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.9179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.9179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.6479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.6479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.3779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.3779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.1079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.1079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.8379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.8379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.5679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.5679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.2979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.2979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.0279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.0279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.7579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.7579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.4879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.4879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.2179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.2179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.9479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.9479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.6779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.6779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.4079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.4079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.1379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.1379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.8679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.8679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.5979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.5979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.3279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.3279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.0579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.0579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.7879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.7879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.5179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.5179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.2479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.2479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.9779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.9779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.7079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.7079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.4379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.4379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.1679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.1679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.8979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.8979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.6279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.6279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.3579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.3579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.0879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.0879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.8179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.8179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.5479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.5479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.2779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.2779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.0079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.0079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.7379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.7379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.4679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.4679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.1979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.1979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.9279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.9279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.6579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.6579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.3879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.3879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.1179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.1179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.8479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.8479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.5779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.5779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.3079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.3079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.0379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.0379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.7679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.7679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.4979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.4979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.2279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.2279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.9579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.9579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.6879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.6879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.4179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.4179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.1479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.1479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.8779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.8779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.6079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.6079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.3379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.3379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.0679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.0679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.7979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.7979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.5279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.5279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.2579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.2579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.9879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.9879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.7179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.7179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.4479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.4479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.1779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.1779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.9079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.9079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.6379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.6379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.3679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.3679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.0979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.0979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.8279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.8279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.5579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.5579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.2879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.2879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.0179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.0179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.7479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.7479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.4779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.4779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.2079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.2079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.9379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.9379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.6679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.6679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.3979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.3979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.1279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.1279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.8579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.8579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.5879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.5879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.3179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.3179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.0479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.0479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.7779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.7779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.5079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.5079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.2379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.2379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.9679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.9679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.6979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.6979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.4279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.4279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.1579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.1579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.8879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.8879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.6179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.6179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.3479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.3479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.0779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.0779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.8079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.8079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.5379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.5379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.2679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.2679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.9979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.9979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.7279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.7279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.4579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.4579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.1879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.1879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.9179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.9179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.6479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.6479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.3779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.3779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.1079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.1079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.8379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.8379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.5679</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.5679</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.2979</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.2979</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.0279</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.0279</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.7579</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.7579</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.4879</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.4879</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.2179</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.2179</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.9479</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.9479</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.6779</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.6779</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.4079</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.4079</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.1379</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.1379</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.1321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.1321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.4021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.4021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.6721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.6721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.9421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.9421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.2121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.2121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.4821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.4821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.7521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.7521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.0221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.0221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.2921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.2921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.5621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.5621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.8321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.8321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.1021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.1021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.3721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.3721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.6421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.6421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.9121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.9121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.1821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.1821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.4521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.4521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.7221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.7221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.9921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.9921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.2621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.2621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.5321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.5321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.8021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.8021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.0721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.0721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.3421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.3421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.6121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.6121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.8821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.8821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.1521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.1521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.4221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.4221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.6921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.6921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.9621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.9621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.2321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.2321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.5021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.5021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.7721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.7721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.0421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.0421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.3121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.3121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.5821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.5821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.8521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.8521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.1221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.1221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.3921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.3921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.6621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.6621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.9321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.9321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.2021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.2021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.4721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.4721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.7421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.7421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.0121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.0121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.2821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.2821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.5521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.5521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.8221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.8221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.0921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.0921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.3621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.3621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.6321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.6321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.9021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.9021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.1721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.1721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.4421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.4421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.7121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.7121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.9821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.9821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.2521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.2521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.5221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.5221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.7921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.7921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.0621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.0621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.3321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.3321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.6021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.6021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.8721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.8721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.1421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.1421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.4121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.4121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.6821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.6821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.9521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.9521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.2221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.2221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.4921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.4921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.7621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.7621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.0321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.0321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.3021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.3021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.5721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.5721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.8421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.8421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.1121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.1121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.3821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.3821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.6521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.6521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.9221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.9221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.1921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.1921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.4621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.4621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.7321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.7321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.0021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.0021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.2721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.2721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.5421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.5421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.8121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.8121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.0821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.0821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.3521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.3521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.6221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.6221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.8921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.8921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.1621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.1621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.4321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.4321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.7021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.7021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.9721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.9721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.2421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.2421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.5121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.5121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.7821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.7821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.0521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.0521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.3221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.3221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.5921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.5921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.8621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.8621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.1321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.1321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.4021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.4021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.6721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.6721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.9421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.9421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.2121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.2121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.4821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.4821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.7521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.7521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.0221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.0221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.2921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.2921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.5621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.5621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.8321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.8321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.1021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.1021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.3721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.3721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.6421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.6421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.9121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.9121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.1821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.1821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.4521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.4521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.7221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.7221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.9921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.9921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.2621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.2621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.5321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.5321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.8021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.8021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.0721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.0721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.3421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.3421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.6121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.6121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.8821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.8821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.1521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.1521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.4221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.4221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.6921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.6921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.9621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.9621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.2321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.2321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.5021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.5021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.7721</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.7721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.0421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.0421</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.3121</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.3121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.5821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.5821</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.8521</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.8521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.1221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.1221</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.3921</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.3921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.6621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.6621</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.9321</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.9321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.2021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.2021</X> + <Y>-29.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.4721</X> + <Y>-28.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.4721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.7421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.7421</X> + <Y>-28.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.0121</X> + <Y>-28.06</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.0121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.2821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.2821</X> + <Y>-27.79</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.5521</X> + <Y>-27.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.5521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.8221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.8221</X> + <Y>-26.98</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.0921</X> + <Y>-26.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.0921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.3621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.3621</X> + <Y>-26.17</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.6321</X> + <Y>-25.63</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.6321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.9021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.9021</X> + <Y>-25.36</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.1721</X> + <Y>-24.82</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.1721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.4421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.4421</X> + <Y>-24.28</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.7121</X> + <Y>-24.01</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.7121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.9821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.9821</X> + <Y>-23.47</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.2521</X> + <Y>-22.93</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.2521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.5221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.5221</X> + <Y>-22.39</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.7921</X> + <Y>-21.85</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.7921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.0621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.0621</X> + <Y>-21.31</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.3321</X> + <Y>-20.77</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.3321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.6021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.6021</X> + <Y>-20.23</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.8721</X> + <Y>-19.69</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.8721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.1421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.1421</X> + <Y>-18.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.4121</X> + <Y>-18.34</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.4121</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.6821</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.6821</X> + <Y>-17.8</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.9521</X> + <Y>-16.99</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.9521</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.2221</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.2221</X> + <Y>-16.18</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.4921</X> + <Y>-15.37</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.4921</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.7621</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.7621</X> + <Y>-14.56</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.0321</X> + <Y>-13.75</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.0321</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.3021</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.3021</X> + <Y>-12.67</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.5721</X> + <Y>-11.86</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.5721</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.8421</X> + <Y>-9.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.8421</X> + <Y>-10.51</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.1121</X> + <Y>-9.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.1121</X> + <Y>-9.16</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>50</Radius> + <DistanceFromCenterToPrimaryFlat>48.5</DistanceFromCenterToPrimaryFlat> + <EdgeRound>2</EdgeRound> + <StartX>-50</StartX> + <StartY>-28.88</StartY> + <Width>100</Width> + <Height>19.9800014</Height> + <ProcessStartX>-38.3399</ProcessStartX> + <ProcessStartY>-28.88</ProcessStartY> + <ProcessEndX>38.3399</ProcessEndX> + <ProcessEndY>-46.43</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>2.8</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3861.37</ProcessLength> + <AccTime>4.1148521463899046</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.3399</X> + <Y>-29.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.3399</X> + <Y>-29.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.0699</X> + <Y>-29.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.0699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.7999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.7999</X> + <Y>-29.69</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.5299</X> + <Y>-29.96</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.5299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.2599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.2599</X> + <Y>-30.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.9899</X> + <Y>-30.77</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.9899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.7199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.7199</X> + <Y>-31.04</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.4499</X> + <Y>-31.31</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.4499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.1799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.1799</X> + <Y>-31.58</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.9099</X> + <Y>-32.12</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.9099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.6399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.6399</X> + <Y>-32.39</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.3699</X> + <Y>-32.66</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.3699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.0999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.0999</X> + <Y>-32.93</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.8299</X> + <Y>-33.2</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.8299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.5599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.5599</X> + <Y>-33.47</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.2899</X> + <Y>-33.74</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.2899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.0199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.0199</X> + <Y>-34.01</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.7499</X> + <Y>-34.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.7499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.4799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.4799</X> + <Y>-34.55</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.2099</X> + <Y>-34.82</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.2099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.9399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.9399</X> + <Y>-35.09</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.6699</X> + <Y>-35.36</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.6699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.3999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.3999</X> + <Y>-35.63</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.1299</X> + <Y>-35.9</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.1299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.8599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.8599</X> + <Y>-36.17</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.5899</X> + <Y>-36.17</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.5899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.3199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.3199</X> + <Y>-36.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.0499</X> + <Y>-36.71</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.0499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.7799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.7799</X> + <Y>-36.98</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.5099</X> + <Y>-37.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.5099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.2399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.2399</X> + <Y>-37.52</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.9699</X> + <Y>-37.52</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.9699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.6999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.6999</X> + <Y>-37.79</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.4299</X> + <Y>-38.06</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.4299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.1599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.1599</X> + <Y>-38.33</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.8899</X> + <Y>-38.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.8899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.6199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.6199</X> + <Y>-38.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.3499</X> + <Y>-38.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.3499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.0799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.0799</X> + <Y>-39.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.8099</X> + <Y>-39.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.8099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.5399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.5399</X> + <Y>-39.41</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.2699</X> + <Y>-39.68</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.2699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.9999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.9999</X> + <Y>-39.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.7299</X> + <Y>-39.95</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.7299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.4599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.4599</X> + <Y>-40.22</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.1899</X> + <Y>-40.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.1899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.9199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.9199</X> + <Y>-40.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.6499</X> + <Y>-40.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.6499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.3799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.3799</X> + <Y>-40.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.1099</X> + <Y>-41.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.1099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.8399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.8399</X> + <Y>-41.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.5699</X> + <Y>-41.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.5699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.2999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.2999</X> + <Y>-41.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.0299</X> + <Y>-41.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.0299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.7599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.7599</X> + <Y>-41.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.4899</X> + <Y>-42.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.4899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.2199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.2199</X> + <Y>-42.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.9499</X> + <Y>-42.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.9499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.6799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.6799</X> + <Y>-42.38</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.4099</X> + <Y>-42.65</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.4099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.1399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.1399</X> + <Y>-42.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.8699</X> + <Y>-42.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.8699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.5999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.5999</X> + <Y>-42.92</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.3299</X> + <Y>-43.19</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.3299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.0599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.0599</X> + <Y>-43.19</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.7899</X> + <Y>-43.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.7899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.5199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.5199</X> + <Y>-43.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.2499</X> + <Y>-43.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.2499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.9799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.9799</X> + <Y>-43.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.7099</X> + <Y>-44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.7099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.4399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.4399</X> + <Y>-44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.1699</X> + <Y>-44.27</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.1699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.8999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.8999</X> + <Y>-44.27</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.6299</X> + <Y>-44.27</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.6299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.3599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.3599</X> + <Y>-44.54</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.0899</X> + <Y>-44.54</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.0899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.8199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.8199</X> + <Y>-44.81</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.5499</X> + <Y>-44.81</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.5499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.2799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.2799</X> + <Y>-44.81</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.0099</X> + <Y>-45.08</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.0099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.7399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.7399</X> + <Y>-45.08</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.4699</X> + <Y>-45.35</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.4699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.1999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.1999</X> + <Y>-45.35</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.9299</X> + <Y>-45.35</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.9299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.6599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.6599</X> + <Y>-45.62</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.3899</X> + <Y>-45.62</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.3899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.1199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.1199</X> + <Y>-45.62</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.8499</X> + <Y>-45.89</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.8499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.5799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.5799</X> + <Y>-45.89</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.3099</X> + <Y>-45.89</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.3099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.0399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.0399</X> + <Y>-46.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.7699</X> + <Y>-46.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.7699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.4999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.4999</X> + <Y>-46.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.2299</X> + <Y>-46.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.2299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.9599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.9599</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.6899</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.6899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.4199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.4199</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.1499</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.1499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.8799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.8799</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.6099</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.6099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.3399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.3399</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.0699</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.0699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.7999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.7999</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.5299</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.5299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.2599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.2599</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.9899</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.9899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.7199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.7199</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.4499</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.4499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.1799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.1799</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.9099</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.9099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.6399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.6399</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.3699</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.3699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.0999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.0999</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.8299</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.8299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.5599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.5599</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.2899</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.2899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.0199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.0199</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.7499</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.7499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.4799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.4799</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.2099</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.2099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.9399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.9399</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.6699</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.6699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.3999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.3999</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.1299</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.1299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.8599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.8599</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.5899</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.5899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.3199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.3199</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.0499</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.0499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.7799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.7799</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.5099</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.5099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.2399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.2399</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.9699</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.9699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.6999</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.6999</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.4299</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.4299</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.1599</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.1599</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.8899</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.8899</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.6199</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.6199</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.3499</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.3499</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.0799</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.0799</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.8099</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.8099</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.5399</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.5399</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.2699</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.2699</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.0001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.0001</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.2701</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.2701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.5401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.5401</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.8101</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.8101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.0801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.0801</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.3501</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.3501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.6201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.6201</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.8901</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.8901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.1601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.1601</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.4301</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.4301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.7001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.7001</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.9701</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.9701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.2401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.2401</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.5101</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.5101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.7801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.7801</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.0501</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.0501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.3201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.3201</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.5901</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.5901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.8601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.8601</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.1301</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.1301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.4001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.4001</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.6701</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.6701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.9401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.9401</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.2101</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.2101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.4801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.4801</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.7501</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.7501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.0201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.0201</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.2901</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.2901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.5601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.5601</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.8301</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.8301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.1001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.1001</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.3701</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.3701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.6401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.6401</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.9101</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.9101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.1801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.1801</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.4501</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.4501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.7201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.7201</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.9901</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.9901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.2601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.2601</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.5301</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.5301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.8001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.8001</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.0701</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.0701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.3401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.3401</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.6101</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.6101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.8801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.8801</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.1501</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.1501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.4201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.4201</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.6901</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.6901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.9601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.9601</X> + <Y>-46.43</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.2301</X> + <Y>-46.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.2301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.5001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.5001</X> + <Y>-46.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.7701</X> + <Y>-46.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.7701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.0401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.0401</X> + <Y>-46.16</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.3101</X> + <Y>-45.89</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.3101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.5801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.5801</X> + <Y>-45.89</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.8501</X> + <Y>-45.89</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.8501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.1201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.1201</X> + <Y>-45.62</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.3901</X> + <Y>-45.62</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.3901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.6601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.6601</X> + <Y>-45.62</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.9301</X> + <Y>-45.35</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.9301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.2001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.2001</X> + <Y>-45.35</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.4701</X> + <Y>-45.35</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.4701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.7401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.7401</X> + <Y>-45.08</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.0101</X> + <Y>-45.08</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.0101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.2801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.2801</X> + <Y>-44.81</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.5501</X> + <Y>-44.81</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.5501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.8201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.8201</X> + <Y>-44.81</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.0901</X> + <Y>-44.54</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.0901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.3601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.3601</X> + <Y>-44.54</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.6301</X> + <Y>-44.27</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.6301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.9001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.9001</X> + <Y>-44.27</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.1701</X> + <Y>-44.27</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.1701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.4401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.4401</X> + <Y>-44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.7101</X> + <Y>-44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.7101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.9801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.9801</X> + <Y>-43.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.2501</X> + <Y>-43.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.2501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.5201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.5201</X> + <Y>-43.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.7901</X> + <Y>-43.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.7901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.0601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.0601</X> + <Y>-43.19</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.3301</X> + <Y>-43.19</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.3301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.6001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.6001</X> + <Y>-42.92</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.8701</X> + <Y>-42.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.8701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.1401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.1401</X> + <Y>-42.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.4101</X> + <Y>-42.65</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.4101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.6801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.6801</X> + <Y>-42.38</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.9501</X> + <Y>-42.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.9501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.2201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.2201</X> + <Y>-42.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.4901</X> + <Y>-42.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.4901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.7601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.7601</X> + <Y>-41.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.0301</X> + <Y>-41.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.0301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.3001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.3001</X> + <Y>-41.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.5701</X> + <Y>-41.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.5701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.8401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.8401</X> + <Y>-41.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.1101</X> + <Y>-41.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.1101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.3801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.3801</X> + <Y>-40.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.6501</X> + <Y>-40.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.6501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.9201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.9201</X> + <Y>-40.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.1901</X> + <Y>-40.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.1901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.4601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.4601</X> + <Y>-40.22</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.7301</X> + <Y>-39.95</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.7301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.0001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.0001</X> + <Y>-39.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.2701</X> + <Y>-39.68</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.2701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.5401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.5401</X> + <Y>-39.41</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.8101</X> + <Y>-39.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.8101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.0801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.0801</X> + <Y>-39.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.3501</X> + <Y>-38.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.3501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.6201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.6201</X> + <Y>-38.6</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.8901</X> + <Y>-38.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.8901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.1601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.1601</X> + <Y>-38.33</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.4301</X> + <Y>-38.06</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.4301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.7001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.7001</X> + <Y>-37.79</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.9701</X> + <Y>-37.52</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.9701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.2401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.2401</X> + <Y>-37.52</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.5101</X> + <Y>-37.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.5101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.7801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.7801</X> + <Y>-36.98</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.0501</X> + <Y>-36.71</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.0501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.3201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.3201</X> + <Y>-36.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.5901</X> + <Y>-36.17</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.5901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.8601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.8601</X> + <Y>-36.17</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.1301</X> + <Y>-35.9</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.1301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.4001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.4001</X> + <Y>-35.63</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.6701</X> + <Y>-35.36</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.6701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.9401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.9401</X> + <Y>-35.09</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.2101</X> + <Y>-34.82</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.2101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.4801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.4801</X> + <Y>-34.55</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.7501</X> + <Y>-34.28</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.7501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.0201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.0201</X> + <Y>-34.01</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.2901</X> + <Y>-33.74</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.2901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.5601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.5601</X> + <Y>-33.47</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.8301</X> + <Y>-33.2</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.8301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.1001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.1001</X> + <Y>-32.93</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.3701</X> + <Y>-32.66</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.3701</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.6401</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.6401</X> + <Y>-32.39</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.9101</X> + <Y>-32.12</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.9101</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.1801</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.1801</X> + <Y>-31.58</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.4501</X> + <Y>-31.31</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.4501</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.7201</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.7201</X> + <Y>-31.04</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.9901</X> + <Y>-30.77</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.9901</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.2601</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.2601</X> + <Y>-30.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.5301</X> + <Y>-29.96</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.5301</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.8001</X> + <Y>-28.88</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.8001</X> + <Y>-29.69</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.0701</X> + <Y>-29.42</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.0701</X> + <Y>-28.88</Y> + </Coord> + </ProcessList> + </ProcessInfo> + </ProcessInfoList> +</Recipe> \ No newline at end of file diff --git a/SA_LTT/Info/Recipe/AA.xml b/SA_LTT/Info/Recipe/AA.xml new file mode 100644 index 0000000..3e700c9 --- /dev/null +++ b/SA_LTT/Info/Recipe/AA.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>AA</Name> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>30</DistanceFromCenterToPrimaryFlat> + <ProcessInfoList /> +</Recipe> \ No newline at end of file diff --git a/SA_LTT/Info/Recipe/AAA.xml b/SA_LTT/Info/Recipe/AAA.xml new file mode 100644 index 0000000..c82ca6f --- /dev/null +++ b/SA_LTT/Info/Recipe/AAA.xml @@ -0,0 +1,1843 @@ +<?xml version="1.0" encoding="utf-8"?> +<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>AAA</Name> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <ProcessInfoList> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>21.375</StartX> + <StartY>33.375</StartY> + <Width>24.75</Width> + <Height>22.2599983</Height> + <ProcessStartX>21.375</ProcessStartX> + <ProcessStartY>33.375</ProcessStartY> + <ProcessEndX>46.125</ProcessEndX> + <ProcessEndY>11.115</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0</BeamHeightOverlap> + <BeamWidthOverlap>0</BeamWidthOverlap> + <Energy>0.2</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>1080.53</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.375</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.375</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.905</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.905</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.435</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.435</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.965</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.965</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.495</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.495</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.025</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.025</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.555</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.555</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.085</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.085</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.615</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.615</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.145</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.145</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.675</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.675</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.205</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.205</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.735</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.735</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.265</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.265</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.795</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.795</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.325</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.325</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.855</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.855</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.385</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.385</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.915</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.915</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.445</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.445</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.975</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.975</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.505</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.505</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.035</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.035</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.565</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.565</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.095</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.095</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.625</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.625</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.155</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.155</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.685</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.685</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.215</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.215</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.745</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.745</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.275</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.275</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.805</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.805</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.335</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.335</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.865</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.865</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.395</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.395</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.925</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.925</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.455</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.455</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.985</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.985</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.515</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.515</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.045</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.045</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.575</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.575</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.105</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.105</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.635</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.635</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.165</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.165</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.695</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.695</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.225</X> + <Y>11.115</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.225</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.755</X> + <Y>33.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.755</X> + <Y>11.115</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-39.75</StartX> + <StartY>34.875</StartY> + <Width>23.625</Width> + <Height>21.1999989</Height> + <ProcessStartX>-39.75</ProcessStartX> + <ProcessStartY>34.875</ProcessStartY> + <ProcessEndX>-16.125</ProcessEndX> + <ProcessEndY>13.675</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0</BeamHeightOverlap> + <BeamWidthOverlap>0</BeamWidthOverlap> + <Energy>0.2</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>986.85</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.75</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.75</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.22</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.22</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.69</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.69</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.16</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.16</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.63</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.63</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.1</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.1</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.57</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.57</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.04</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.04</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.51</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.51</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.98</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.98</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.45</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.45</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.92</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.92</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.39</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.39</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.86</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.86</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.33</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.33</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.8</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.8</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.27</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.27</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.74</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.74</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.21</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.21</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.68</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.68</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.15</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.15</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.62</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.62</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.09</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.09</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.56</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.56</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.03</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.03</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.5</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.5</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.97</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.97</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.44</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.44</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.91</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.91</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.38</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.38</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.85</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.85</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.32</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.32</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.79</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.79</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.26</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.26</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.73</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.73</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.2</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.2</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.67</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.67</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.14</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.14</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.61</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.61</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.08</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.08</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.55</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.55</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.02</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.02</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.49</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.49</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.96</X> + <Y>13.675</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.96</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.43</X> + <Y>34.875</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.43</X> + <Y>13.675</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-39.75</StartX> + <StartY>-28.5</StartY> + <Width>22.125</Width> + <Height>19.6099987</Height> + <ProcessStartX>-39.75</ProcessStartX> + <ProcessStartY>-28.5</ProcessStartY> + <ProcessEndX>-17.625</ProcessEndX> + <ProcessEndY>-48.11</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0</BeamHeightOverlap> + <BeamWidthOverlap>0</BeamWidthOverlap> + <Energy>0.2</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>854.28</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.75</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.75</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.22</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.22</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.69</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.69</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.16</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.16</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.63</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.63</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.1</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.1</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.57</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.57</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.04</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.04</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.51</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.51</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.98</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.98</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.45</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.45</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.92</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.92</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.39</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.39</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.86</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.86</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.33</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.33</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.8</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.8</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.27</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.27</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.74</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.74</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.21</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.21</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.68</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.68</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.15</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.15</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.62</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.62</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.09</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.09</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.56</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.56</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.03</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.03</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.5</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.5</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.97</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.97</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.44</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.44</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.91</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.91</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.38</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.38</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.85</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.85</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.32</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.32</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.79</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.79</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.26</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.26</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.73</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.73</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.2</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.2</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.67</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.67</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.14</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.14</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.61</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.61</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.08</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.08</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.55</X> + <Y>-28.5</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.55</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.02</X> + <Y>-48.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.02</X> + <Y>-28.5</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>14.625</StartX> + <StartY>-15.375</StartY> + <Width>21</Width> + <Height>18.55</Height> + <ProcessStartX>14.625</ProcessStartX> + <ProcessStartY>-15.375</ProcessStartY> + <ProcessEndX>35.625</ProcessEndX> + <ProcessEndY>-33.925</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0</BeamHeightOverlap> + <BeamWidthOverlap>0</BeamWidthOverlap> + <Energy>0.2</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>771.2</ProcessLength> + <AccTime>0.036377360400291311</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.625</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.625</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.155</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.155</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.685</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.685</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.215</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.215</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.745</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.745</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.275</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.275</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.805</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.805</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.335</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.335</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.865</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.865</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.395</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.395</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.925</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.925</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.455</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.455</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.985</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.985</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.515</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.515</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.045</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.045</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.575</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.575</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.105</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.105</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.635</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.635</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.165</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.165</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.695</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.695</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.225</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.225</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.755</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.755</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.285</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.285</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.815</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.815</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.345</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.345</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.875</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.875</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.405</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.405</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.935</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.935</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.465</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.465</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.995</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.995</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.525</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.525</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.055</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.055</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.585</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.585</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.115</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.115</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.645</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.645</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.175</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.175</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.705</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.705</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.235</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.235</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.765</X> + <Y>-15.375</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.765</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.295</X> + <Y>-33.925</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.295</X> + <Y>-15.375</Y> + </Coord> + </ProcessList> + </ProcessInfo> + </ProcessInfoList> +</Recipe> \ No newline at end of file diff --git a/SA_LTT/Info/Recipe/BB.xml b/SA_LTT/Info/Recipe/BB.xml new file mode 100644 index 0000000..6872828 --- /dev/null +++ b/SA_LTT/Info/Recipe/BB.xml @@ -0,0 +1,2894 @@ +<?xml version="1.0" encoding="utf-8"?> +<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>BB</Name> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <BeamWidth>0.7</BeamWidth> + <BeamHeight>0.7</BeamHeight> + <ProcessInfoList> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-49.125</StartX> + <StartY>38.25</StartY> + <Width>100</Width> + <Height>30.1</Height> + <ProcessStartX>-49.125</ProcessStartX> + <ProcessStartY>38.25</ProcessStartY> + <ProcessEndX>50.875</ProcessEndX> + <ProcessEndY>8.15</ProcessEndY> + <BeamWidth>0.7</BeamWidth> + <BeamHeight>0.7</BeamHeight> + <BeamHeightOverlap>0.35</BeamHeightOverlap> + <BeamWidthOverlap>0.35</BeamWidthOverlap> + <Energy>1</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>8765.9</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.625</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.975</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.975</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.325</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.325</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.675</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.675</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.025</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.025</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.375</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.375</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.725</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.725</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.075</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.075</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.425</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.425</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.775</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.775</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.125</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.125</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.475</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.475</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.825</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.825</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.175</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.175</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.525</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.525</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.875</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.875</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.225</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.225</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.575</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.575</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.925</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.925</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>50.275</X> + <Y>38.25</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>50.275</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>50.625</X> + <Y>8.15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>50.625</X> + <Y>38.25</Y> + </Coord> + </ProcessList> + </ProcessInfo> + </ProcessInfoList> +</Recipe> \ No newline at end of file diff --git a/SA_LTT/Info/Recipe/TE.xml b/SA_LTT/Info/Recipe/TE.xml new file mode 100644 index 0000000..c5cc3d6 --- /dev/null +++ b/SA_LTT/Info/Recipe/TE.xml @@ -0,0 +1,4887 @@ +<?xml version="1.0" encoding="utf-8"?> +<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>TE</Name> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <ProcessInfoList> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-75</StartX> + <StartY>75</StartY> + <Width>150</Width> + <Height>5.13</Height> + <ProcessStartX>-27.2614</ProcessStartX> + <ProcessStartY>75</ProcessStartY> + <ProcessEndX>27.2614</ProcessEndX> + <ProcessEndY>69.87</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>0.6</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>787.76</ProcessLength> + <AccTime>1.0697408195683364</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.2614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.2614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.9914</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.9914</X> + <Y>70.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.7214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.7214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.4514</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.4514</X> + <Y>70.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.1814</X> + <Y>70.41</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.1814</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.9114</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.9114</X> + <Y>70.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.6414</X> + <Y>70.68</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.6414</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.3714</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.3714</X> + <Y>70.68</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.1014</X> + <Y>70.41</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.1014</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.8314</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.8314</X> + <Y>70.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.5614</X> + <Y>70.95</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.5614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.2914</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.2914</X> + <Y>70.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.0214</X> + <Y>71.22</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.0214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.7514</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.7514</X> + <Y>71.22</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.4814</X> + <Y>71.22</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.4814</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.2114</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.2114</X> + <Y>71.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.9414</X> + <Y>71.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.9414</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.6714</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.6714</X> + <Y>71.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.4014</X> + <Y>71.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.4014</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.1314</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.1314</X> + <Y>71.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.8614</X> + <Y>71.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.8614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.5914</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.5914</X> + <Y>72.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.3214</X> + <Y>72.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.3214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.0514</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.0514</X> + <Y>71.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.7814</X> + <Y>72.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.7814</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.5114</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.5114</X> + <Y>72.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.2414</X> + <Y>72.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.2414</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.9714</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.9714</X> + <Y>72.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.7014</X> + <Y>72.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.7014</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.4314</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.4314</X> + <Y>72.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.1614</X> + <Y>72.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.1614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.8914</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.8914</X> + <Y>72.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.6214</X> + <Y>72.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.6214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.3514</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.3514</X> + <Y>72.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.0814</X> + <Y>72.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.0814</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.8114</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.8114</X> + <Y>72.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.5414</X> + <Y>73.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.5414</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.2714</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.2714</X> + <Y>73.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.0014</X> + <Y>72.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.0014</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.7314</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.7314</X> + <Y>72.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.4614</X> + <Y>73.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.4614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.1914</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.1914</X> + <Y>73.38</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.9214</X> + <Y>73.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.9214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.6514</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.6514</X> + <Y>73.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.3814</X> + <Y>73.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.3814</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.1114</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.1114</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.8414</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.8414</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.5714</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.5714</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.3014</X> + <Y>73.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.3014</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.0314</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.0314</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.7614</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.7614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.4914</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.4914</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.2214</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.2214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.9514</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.9514</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.6814</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.6814</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.4114</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.4114</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.1414</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.1414</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.8714</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.8714</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.6014</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.6014</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.3314</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.3314</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.0614</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.0614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.7914</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.7914</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.5214</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.5214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.2514</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.2514</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.9814</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.9814</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.7114</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.7114</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.4414</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.4414</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.1714</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.1714</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.9014</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.9014</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.6314</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.6314</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.3614</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.3614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.0914</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.0914</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.8214</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.8214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.5514</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.5514</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.2814</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.2814</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.0114</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.0114</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.7414</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.7414</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.4714</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.4714</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.2014</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.2014</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.9314</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.9314</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.6614</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.6614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.3914</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.3914</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.1214</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.1214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.8514</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.8514</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.5814</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.5814</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.3114</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.3114</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.0414</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.0414</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.7714</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.7714</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.5014</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.5014</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.2314</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.2314</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.9614</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.9614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.6914</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.6914</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.4214</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.4214</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.1514</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.1514</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.8814</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.8814</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.6114</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.6114</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.3414</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.3414</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.0714</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.0714</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.8014</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.8014</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.5314</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.5314</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.2614</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.2614</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.0086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.0086</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.2786</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.2786</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.5486</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.5486</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.8186</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.8186</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.0886</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.0886</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.3586</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.3586</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.6286</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.6286</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.8986</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.8986</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.1686</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.1686</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.4386</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.4386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.7086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.7086</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.9786</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.9786</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.2486</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.2486</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.5186</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.5186</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.7886</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.7886</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.0586</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.0586</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.3286</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.3286</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.5986</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.5986</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.8686</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.8686</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.1386</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.1386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.4086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.4086</X> + <Y>75</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.6786</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.6786</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.9486</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.9486</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.2186</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.2186</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.4886</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.4886</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.7586</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.7586</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.0286</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.0286</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.2986</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.2986</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.5686</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.5686</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.8386</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.8386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.1086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.1086</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.3786</X> + <Y>74.73</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.3786</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.6486</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.6486</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.9186</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.9186</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.1886</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.1886</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.4586</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.4586</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.7286</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.7286</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.9986</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.9986</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.2686</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.2686</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.5386</X> + <Y>74.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.5386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.8086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.8086</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.0786</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.0786</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.3486</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.3486</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.6186</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.6186</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.8886</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.8886</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.1586</X> + <Y>74.19</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.1586</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.4286</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.4286</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.6986</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.6986</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.9686</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.9686</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.2386</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.2386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.5086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.5086</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.7786</X> + <Y>73.92</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.7786</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.0486</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.0486</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.3186</X> + <Y>73.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.3186</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.5886</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.5886</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.8586</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.8586</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.1286</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.1286</X> + <Y>73.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.3986</X> + <Y>73.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.3986</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.6686</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.6686</X> + <Y>73.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.9386</X> + <Y>73.38</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.9386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.2086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.2086</X> + <Y>73.38</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.4786</X> + <Y>73.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.4786</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.7486</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.7486</X> + <Y>72.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.0186</X> + <Y>72.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.0186</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.2886</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.2886</X> + <Y>73.11</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.5586</X> + <Y>73.11</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.5586</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.8286</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.8286</X> + <Y>72.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.0986</X> + <Y>72.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.0986</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.3686</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.3686</X> + <Y>72.84</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.6386</X> + <Y>72.84</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.6386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.9086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.9086</X> + <Y>72.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.1786</X> + <Y>72.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.1786</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.4486</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.4486</X> + <Y>72.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.7186</X> + <Y>72.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.7186</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.9886</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.9886</X> + <Y>72.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.2586</X> + <Y>72.3</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.2586</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.5286</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.5286</X> + <Y>72.3</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.7986</X> + <Y>72.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.7986</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.0686</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.0686</X> + <Y>71.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.3386</X> + <Y>72.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.3386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.6086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.6086</X> + <Y>71.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.8786</X> + <Y>71.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.8786</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.1486</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.1486</X> + <Y>71.76</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.4186</X> + <Y>71.76</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.4186</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.6886</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.6886</X> + <Y>71.22</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.9586</X> + <Y>71.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.9586</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.2286</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.2286</X> + <Y>71.49</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.4986</X> + <Y>71.22</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.4986</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.7686</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.7686</X> + <Y>71.22</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.0386</X> + <Y>71.22</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.0386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.3086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.3086</X> + <Y>70.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.5786</X> + <Y>70.95</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.5786</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.8486</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.8486</X> + <Y>70.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.1186</X> + <Y>70.41</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.1186</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.3886</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.3886</X> + <Y>70.68</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.6586</X> + <Y>70.68</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.6586</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.9286</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.9286</X> + <Y>70.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.1986</X> + <Y>70.41</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.1986</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.4686</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.4686</X> + <Y>70.14</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.7386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.7386</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.0086</X> + <Y>69.87</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.0086</X> + <Y>70.14</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-75</StartX> + <StartY>69.865</StartY> + <Width>150</Width> + <Height>5.13</Height> + <ProcessStartX>-37.8732</ProcessStartX> + <ProcessStartY>69.865</ProcessStartY> + <ProcessEndX>37.8732</ProcessEndX> + <ProcessEndY>64.735</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>0.6</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>1383.52</ProcessLength> + <AccTime>0.43314818025682128</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.8732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.8732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.6032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.6032</X> + <Y>65.005</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.3332</X> + <Y>65.005</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.3332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.0632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.0632</X> + <Y>65.275</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.7932</X> + <Y>65.545</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.7932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.5232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.5232</X> + <Y>65.275</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.2532</X> + <Y>65.815</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.2532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.9832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.9832</X> + <Y>65.545</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.7132</X> + <Y>66.085</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.7132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.4432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.4432</X> + <Y>66.085</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.1732</X> + <Y>66.355</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.1732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.9032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.9032</X> + <Y>66.355</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.6332</X> + <Y>66.625</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.6332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.3632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.3632</X> + <Y>66.625</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.0932</X> + <Y>66.895</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.0932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.8232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.8232</X> + <Y>66.895</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.5532</X> + <Y>67.165</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.5532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.2832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.2832</X> + <Y>67.165</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.0132</X> + <Y>67.435</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.0132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.7432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.7432</X> + <Y>67.435</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.4732</X> + <Y>67.705</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.4732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.2032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.2032</X> + <Y>67.705</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.9332</X> + <Y>67.975</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.9332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.6632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.6632</X> + <Y>67.975</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.3932</X> + <Y>68.245</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.3932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.1232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.1232</X> + <Y>67.975</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.8532</X> + <Y>68.515</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.8532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.5832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.5832</X> + <Y>68.245</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.3132</X> + <Y>68.785</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.3132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.0432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.0432</X> + <Y>68.515</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.7732</X> + <Y>68.785</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.7732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.5032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.5032</X> + <Y>69.055</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.2332</X> + <Y>69.055</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.2332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.9632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.9632</X> + <Y>69.325</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.6932</X> + <Y>69.055</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.6932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.4232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.4232</X> + <Y>69.595</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.1532</X> + <Y>69.595</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.1532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.8832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.8832</X> + <Y>69.595</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.6132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.6132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.3432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.3432</X> + <Y>69.595</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.0732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.0732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.8032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.8032</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.5332</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.5332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.2632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.2632</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.9932</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.9932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.7232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.7232</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.4532</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.4532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.1832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.1832</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.9132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.9132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.6432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.6432</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.3732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.3732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.1032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.1032</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.8332</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.8332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.5632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.5632</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.2932</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.2932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.0232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.0232</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.7532</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.7532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.4832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.4832</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.2132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.2132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.9432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.9432</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.6732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.6732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.4032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.4032</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.1332</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.1332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.8632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.8632</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.5932</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.5932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.3232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.3232</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.0532</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.0532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.7832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.7832</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.5132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.5132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.2432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.2432</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.9732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.9732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.7032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.7032</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.4332</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.4332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.1632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.1632</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.8932</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.8932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.6232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.6232</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.3532</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.3532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.0832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.0832</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.8132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.8132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.5432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.5432</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.2732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.2732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.0032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.0032</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.7332</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.7332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.4632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.4632</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.1932</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.1932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.9232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.9232</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.6532</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.6532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.3832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.3832</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.1132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.1132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.8432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.8432</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.5732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.5732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.3032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.3032</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.0332</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.0332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.7632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.7632</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.4932</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.4932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.2232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.2232</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.9532</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.9532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.6832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.6832</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.4132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.4132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.1432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.1432</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.8732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.8732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.6032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.6032</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.3332</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.3332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.0632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.0632</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.7932</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.7932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.5232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.5232</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.2532</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.2532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.9832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.9832</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.7132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.7132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.4432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.4432</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.1732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.1732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.9032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.9032</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.6332</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.6332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.3632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.3632</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.0932</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.0932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.8232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.8232</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.5532</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.5532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.2832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.2832</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.0132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.0132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.7432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.7432</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.4732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.4732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.2032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.2032</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.9332</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.9332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.6632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.6632</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.3932</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.3932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.1232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.1232</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.8532</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.8532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.5832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.5832</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.3132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.3132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.0432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.0432</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.7732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.7732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.5032</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.5032</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.2332</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.2332</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.9632</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.9632</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.6932</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.6932</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.4232</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.4232</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.1532</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.1532</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.8832</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.8832</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.6132</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.6132</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.3432</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.3432</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.0732</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.0732</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.1968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.1968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.4668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.4668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.7368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.7368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.0068</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.0068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.2768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.2768</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.5468</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.5468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.8168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.8168</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.0868</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.0868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.3568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.3568</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.6268</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.6268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.8968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.8968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.1668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.1668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.4368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.4368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.7068</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.7068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.9768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.9768</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.2468</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.2468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.5168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.5168</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.7868</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.7868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.0568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.0568</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.3268</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.3268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.5968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.5968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.8668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.8668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.1368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.1368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.4068</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.4068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.6768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.6768</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.9468</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.9468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.2168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.2168</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.4868</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.4868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.7568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.7568</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.0268</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.0268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.2968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.2968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.5668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.5668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.8368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.8368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.1068</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.1068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.3768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.3768</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.6468</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.6468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.9168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.9168</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.1868</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.1868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.4568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.4568</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.7268</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.7268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.9968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.9968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.2668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.2668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.5368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.5368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.8068</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.8068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.0768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.0768</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.3468</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.3468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.6168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.6168</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.8868</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.8868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.1568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.1568</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.4268</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.4268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.6968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.6968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.9668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.9668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.2368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.2368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.5068</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.5068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.7768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.7768</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.0468</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.0468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.3168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.3168</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.5868</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.5868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.8568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.8568</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.1268</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.1268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.3968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.3968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.6668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.6668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.9368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.9368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.2068</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.2068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.4768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.4768</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.7468</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.7468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.0168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.0168</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.2868</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.2868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.5568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.5568</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.8268</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.8268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.0968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.0968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.3668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.3668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.6368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.6368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.9068</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.9068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.1768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.1768</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.4468</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.4468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.7168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.7168</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.9868</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.9868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.2568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.2568</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.5268</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.5268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.7968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.7968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.0668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.0668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.3368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.3368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.6068</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.6068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.8768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.8768</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.1468</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.1468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.4168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.4168</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.6868</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.6868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.9568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.9568</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.2268</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.2268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.4968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.4968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.7668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.7668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.0368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.0368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.3068</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.3068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.5768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.5768</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.8468</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.8468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.1168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.1168</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.3868</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.3868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.6568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.6568</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.9268</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.9268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.1968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.1968</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.4668</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.4668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.7368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.7368</X> + <Y>69.865</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.0068</X> + <Y>69.325</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.0068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.2768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.2768</X> + <Y>69.595</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.5468</X> + <Y>69.325</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.5468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.8168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.8168</X> + <Y>69.325</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.0868</X> + <Y>69.325</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.0868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.3568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.3568</X> + <Y>68.785</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.6268</X> + <Y>69.055</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.6268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.8968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.8968</X> + <Y>68.515</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.1668</X> + <Y>68.785</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.1668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.4368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.4368</X> + <Y>68.515</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.7068</X> + <Y>68.515</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.7068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.9768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.9768</X> + <Y>68.245</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.2468</X> + <Y>67.975</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.2468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.5168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.5168</X> + <Y>68.245</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.7868</X> + <Y>67.705</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.7868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.0568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.0568</X> + <Y>67.975</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.3268</X> + <Y>67.435</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.3268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.5968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.5968</X> + <Y>67.705</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.8668</X> + <Y>67.165</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.8668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.1368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.1368</X> + <Y>67.435</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.4068</X> + <Y>66.895</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.4068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.6768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.6768</X> + <Y>67.165</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.9468</X> + <Y>66.625</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.9468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.2168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.2168</X> + <Y>66.895</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.4868</X> + <Y>66.355</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.4868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.7568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.7568</X> + <Y>66.625</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.0268</X> + <Y>66.085</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.0268</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.2968</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.2968</X> + <Y>66.355</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.5668</X> + <Y>65.815</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.5668</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.8368</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.8368</X> + <Y>66.085</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.1068</X> + <Y>65.815</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.1068</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.3768</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.3768</X> + <Y>65.545</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.6468</X> + <Y>65.545</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.6468</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.9168</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.9168</X> + <Y>65.275</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.1868</X> + <Y>65.275</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.1868</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.4568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.4568</X> + <Y>64.735</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.7268</X> + <Y>65.005</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.7268</X> + <Y>64.735</Y> + </Coord> + </ProcessList> + </ProcessInfo> + </ProcessInfoList> +</Recipe> \ No newline at end of file diff --git a/SA_LTT/Info/Recipe/TEST.xml b/SA_LTT/Info/Recipe/TEST.xml new file mode 100644 index 0000000..d22a003 --- /dev/null +++ b/SA_LTT/Info/Recipe/TEST.xml @@ -0,0 +1,10298 @@ +<?xml version="1.0" encoding="utf-8"?> +<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>TEST</Name> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <ProcessInfoList> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-50</StartX> + <StartY>50</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-50</ProcessStartX> + <ProcessStartY>50</ProcessStartY> + <ProcessEndX>-20</ProcessEndX> + <ProcessEndY>20.03</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>16.2</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.73</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.73</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.46</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.46</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.19</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.19</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.92</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.92</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.65</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.65</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.38</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.38</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.11</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.11</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.84</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.84</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.57</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.57</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.3</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.3</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.03</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.03</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.76</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.76</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.49</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.49</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.22</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.22</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.95</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.95</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.68</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.68</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.41</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.41</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.14</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.14</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.87</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.87</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.6</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.6</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.33</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.33</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.06</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.06</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.79</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.79</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.52</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.52</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.25</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.25</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.98</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.98</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.71</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.71</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.44</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.44</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.17</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.17</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.9</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.9</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.63</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.63</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.36</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.36</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.09</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.09</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.82</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.82</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.55</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.55</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.28</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.28</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.01</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.01</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.74</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.74</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.47</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.47</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.2</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.2</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.93</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.93</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.66</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.66</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.39</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.39</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.12</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.12</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.85</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.85</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.58</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.58</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.31</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.31</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.04</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.04</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.77</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.77</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.5</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.5</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.23</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.23</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.96</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.96</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.69</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.69</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.42</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.42</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.15</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.15</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.88</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.88</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.61</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.61</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.34</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.34</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.07</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.07</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.8</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.8</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.53</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.53</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.26</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.26</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.99</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.99</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.72</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.72</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.45</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.45</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.18</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.18</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.91</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.91</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.64</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.64</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.37</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.37</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.1</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.1</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.83</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.83</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.56</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.56</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.29</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.29</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.02</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.02</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.75</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.75</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.48</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.48</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.21</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.21</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.94</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.94</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.67</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.67</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.4</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.4</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.13</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.13</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.86</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.86</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.59</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.59</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.32</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.32</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.05</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.05</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.78</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.78</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.51</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.51</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.24</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.24</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.97</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.97</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.7</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.7</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.43</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.43</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.16</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.16</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.89</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.89</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.62</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.62</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.35</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.35</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.08</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.08</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.81</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.81</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.54</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.54</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.27</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.27</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.73</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.73</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.46</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.46</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.19</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.19</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.92</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.92</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.65</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.65</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.38</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.38</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.11</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.11</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.84</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.84</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.57</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.57</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.3</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.3</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.03</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.03</X> + <Y>50</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-15</StartX> + <StartY>50</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-15</ProcessStartX> + <ProcessStartY>50</ProcessStartY> + <ProcessEndX>15</ProcessEndX> + <ProcessEndY>20.03</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>17.3</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.73</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.73</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.46</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.46</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.19</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.19</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.92</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.92</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.65</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.65</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.38</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.38</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.11</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.11</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.84</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.84</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.57</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.57</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.3</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.3</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.03</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.03</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.76</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.76</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.49</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.49</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.22</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.22</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.95</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.95</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.68</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.68</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.41</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.41</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.14</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.14</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.87</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.87</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.6</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.6</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.33</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.33</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.06</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.06</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.79</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.79</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.52</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.52</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.25</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.25</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.98</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.98</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.71</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.71</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.44</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.44</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.17</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.17</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.9</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.9</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.63</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.63</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.36</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.36</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.09</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.09</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.82</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.82</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.55</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.55</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.28</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.28</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.01</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.01</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.74</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.74</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.47</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.47</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.2</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.2</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.93</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.93</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.66</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.66</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.39</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.39</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.12</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.12</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.85</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.85</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.58</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.58</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.31</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.31</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.04</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.04</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.77</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.77</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.5</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.5</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.23</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.23</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.96</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.96</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.69</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.69</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.42</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.42</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.15</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.15</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.12</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.12</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.39</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.39</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.66</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.66</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.93</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.93</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.2</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.2</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.47</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.47</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.74</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.74</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.01</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.01</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.28</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.28</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.55</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.55</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.82</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.82</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.09</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.09</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.36</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.36</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.63</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.63</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.9</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.9</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.17</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.17</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.44</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.44</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.71</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.71</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.98</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.98</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.25</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.25</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.52</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.52</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.79</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.79</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.06</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.06</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.33</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.33</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.6</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.6</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.87</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.87</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.14</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.14</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.41</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.41</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.68</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.68</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.95</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.95</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.22</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.22</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.49</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.49</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.76</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.76</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.03</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.03</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.3</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.3</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.57</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.57</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.84</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.84</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.11</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.11</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.38</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.38</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.65</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.65</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.92</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.92</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.19</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.19</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.46</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.46</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.73</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.73</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.27</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.27</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.54</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.54</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.81</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.81</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.08</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.08</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.35</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.35</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.62</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.62</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.89</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.89</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.16</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.16</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.43</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.43</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.7</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.7</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.97</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.97</X> + <Y>50</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>20</StartX> + <StartY>50</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>20</ProcessStartX> + <ProcessStartY>50</ProcessStartY> + <ProcessEndX>50</ProcessEndX> + <ProcessEndY>20.03</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>18.4</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.27</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.27</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.54</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.54</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.81</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.81</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.08</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.08</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.35</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.35</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.62</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.62</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.89</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.89</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.16</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.16</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.43</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.43</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.7</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.7</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.97</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.97</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.24</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.24</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.51</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.51</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.78</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.78</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.05</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.05</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.32</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.32</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.59</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.59</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.86</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.86</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.13</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.13</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.4</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.4</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.67</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.67</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.94</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.94</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.21</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.21</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.48</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.48</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.75</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.75</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.02</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.02</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.29</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.29</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.56</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.56</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.83</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.83</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.1</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.1</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.37</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.37</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.64</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.64</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.91</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.91</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.18</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.18</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.45</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.45</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.72</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.72</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.99</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.99</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.26</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.26</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.53</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.53</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.8</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.8</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.07</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.07</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.34</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.34</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.61</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.61</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.88</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.88</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.15</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.15</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.42</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.42</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.69</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.69</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.96</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.96</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.23</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.23</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.5</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.5</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.77</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.77</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.04</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.04</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.31</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.31</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.58</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.58</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.85</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.85</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.12</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.12</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.39</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.39</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.66</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.66</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.93</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.93</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.2</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.2</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.47</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.47</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.74</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.74</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.01</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.01</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.28</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.28</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.55</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.55</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.82</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.82</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.09</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.09</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.36</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.36</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.63</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.63</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.9</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.9</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.17</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.17</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.44</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.44</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.71</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.71</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.98</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.98</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.25</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.25</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.52</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.52</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.79</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.79</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.06</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.06</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.33</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.33</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.6</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.6</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.87</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.87</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.14</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.14</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.41</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.41</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.68</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.68</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.95</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.95</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.22</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.22</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.49</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.49</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.76</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.76</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.03</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.03</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.3</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.3</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.57</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.57</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.84</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.84</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.11</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.11</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.38</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.38</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.65</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.65</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.92</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.92</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.19</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.19</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.46</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.46</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.73</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.73</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.27</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.27</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.54</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.54</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.81</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.81</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.08</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.08</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.35</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.35</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.62</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.62</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.89</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.89</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.16</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.16</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.43</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.43</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.7</X> + <Y>50</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.7</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.97</X> + <Y>20.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.97</X> + <Y>50</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-50</StartX> + <StartY>15</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-50</ProcessStartX> + <ProcessStartY>15</ProcessStartY> + <ProcessEndX>-20</ProcessEndX> + <ProcessEndY>-14.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>19.4</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.73</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.73</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.46</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.46</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.19</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.19</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.92</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.92</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.65</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.65</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.38</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.38</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.11</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.11</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.84</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.84</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.57</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.57</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.3</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.3</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.03</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.03</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.76</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.76</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.49</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.49</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.22</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.22</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.95</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.95</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.68</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.68</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.41</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.41</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.14</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.14</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.87</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.87</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.6</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.6</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.33</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.33</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.06</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.06</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.79</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.79</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.52</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.52</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.25</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.25</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.98</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.98</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.71</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.71</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.44</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.44</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.17</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.17</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.9</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.9</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.63</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.63</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.36</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.36</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.09</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.09</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.82</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.82</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.55</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.55</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.28</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.28</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.01</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.01</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.74</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.74</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.47</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.47</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.2</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.2</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.93</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.93</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.66</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.66</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.39</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.39</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.12</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.12</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.85</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.85</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.58</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.58</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.31</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.31</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.04</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.04</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.77</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.77</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.5</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.5</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.23</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.23</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.96</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.96</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.69</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.69</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.42</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.42</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.15</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.15</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.88</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.88</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.61</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.61</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.34</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.34</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.07</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.07</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.8</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.8</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.53</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.53</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.26</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.26</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.99</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.99</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.72</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.72</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.45</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.45</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.18</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.18</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.91</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.91</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.64</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.64</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.37</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.37</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.1</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.1</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.83</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.83</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.56</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.56</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.29</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.29</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.02</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.02</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.75</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.75</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.48</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.48</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.21</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.21</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.94</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.94</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.67</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.67</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.4</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.4</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.13</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.13</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.86</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.86</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.59</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.59</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.32</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.32</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.05</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.05</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.78</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.78</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.51</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.51</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.24</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.24</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.97</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.97</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.7</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.7</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.43</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.43</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.16</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.16</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.89</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.89</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.62</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.62</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.35</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.35</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.08</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.08</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.81</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.81</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.54</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.54</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.27</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.27</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.73</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.73</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.46</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.46</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.19</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.19</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.92</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.92</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.65</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.65</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.38</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.38</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.11</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.11</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.84</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.84</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.57</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.57</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.3</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.3</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.03</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.03</X> + <Y>15</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-15</StartX> + <StartY>15</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-15</ProcessStartX> + <ProcessStartY>15</ProcessStartY> + <ProcessEndX>15</ProcessEndX> + <ProcessEndY>-14.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>20.4</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.73</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.73</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.46</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.46</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.19</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.19</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.92</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.92</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.65</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.65</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.38</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.38</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.11</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.11</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.84</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.84</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.57</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.57</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.3</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.3</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.03</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.03</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.76</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.76</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.49</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.49</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.22</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.22</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.95</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.95</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.68</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.68</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.41</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.41</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.14</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.14</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.87</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.87</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.6</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.6</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.33</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.33</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.06</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.06</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.79</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.79</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.52</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.52</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.25</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.25</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.98</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.98</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.71</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.71</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.44</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.44</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.17</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.17</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.9</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.9</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.63</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.63</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.36</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.36</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.09</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.09</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.82</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.82</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.55</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.55</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.28</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.28</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.01</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.01</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.74</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.74</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.47</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.47</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.2</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.2</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.93</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.93</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.66</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.66</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.39</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.39</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.12</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.12</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.85</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.85</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.58</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.58</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.31</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.31</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.04</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.04</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.77</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.77</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.5</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.5</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.23</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.23</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.96</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.96</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.69</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.69</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.42</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.42</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.15</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.15</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.12</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.12</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.39</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.39</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.66</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.66</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.93</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.93</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.2</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.2</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.47</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.47</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.74</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.74</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.01</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.01</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.28</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.28</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.55</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.55</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.82</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.82</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.09</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.09</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.36</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.36</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.63</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.63</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.9</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.9</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.17</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.17</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.44</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.44</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.71</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.71</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.98</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.98</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.25</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.25</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.52</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.52</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.79</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.79</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.06</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.06</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.33</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.33</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.6</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.6</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.87</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.87</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.14</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.14</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.41</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.41</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.68</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.68</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.95</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.95</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.22</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.22</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.49</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.49</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.76</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.76</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.03</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.03</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.3</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.3</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.57</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.57</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.84</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.84</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.11</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.11</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.38</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.38</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.65</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.65</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.92</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.92</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.19</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.19</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.46</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.46</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.73</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.73</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.27</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.27</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.54</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.54</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.81</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.81</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.08</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.08</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.35</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.35</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.62</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.62</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.89</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.89</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.16</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.16</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.43</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.43</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.7</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.7</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.97</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.97</X> + <Y>15</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>20</StartX> + <StartY>15</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>20</ProcessStartX> + <ProcessStartY>15</ProcessStartY> + <ProcessEndX>50</ProcessEndX> + <ProcessEndY>-14.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>22</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.27</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.27</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.54</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.54</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.81</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.81</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.08</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.08</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.35</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.35</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.62</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.62</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.89</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.89</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.16</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.16</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.43</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.43</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.7</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.7</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.97</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.97</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.24</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.24</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.51</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.51</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.78</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.78</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.05</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.05</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.32</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.32</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.59</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.59</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.86</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.86</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.13</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.13</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.4</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.4</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.67</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.67</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.94</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.94</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.21</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.21</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.48</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.48</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.75</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.75</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.02</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.02</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.29</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.29</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.56</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.56</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.83</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.83</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.1</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.1</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.37</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.37</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.64</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.64</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.91</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.91</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.18</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.18</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.45</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.45</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.72</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.72</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.99</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.99</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.26</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.26</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.53</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.53</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.8</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.8</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.07</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.07</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.34</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.34</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.61</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.61</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.88</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.88</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.15</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.15</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.42</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.42</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.69</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.69</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.96</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.96</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.23</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.23</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.5</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.5</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.77</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.77</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.04</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.04</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.31</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.31</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.58</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.58</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.85</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.85</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.12</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.12</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.39</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.39</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.66</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.66</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.93</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.93</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.2</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.2</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.47</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.47</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.74</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.74</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.01</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.01</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.28</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.28</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.55</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.55</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.82</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.82</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.09</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.09</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.36</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.36</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.63</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.63</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.9</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.9</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.17</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.17</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.44</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.44</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.71</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.71</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.98</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.98</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.25</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.25</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.52</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.52</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.79</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.79</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.06</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.06</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.33</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.33</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.6</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.6</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.87</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.87</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.14</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.14</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.41</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.41</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.68</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.68</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.95</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.95</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.22</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.22</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.49</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.49</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.76</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.76</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.03</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.03</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.3</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.3</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.57</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.57</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.84</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.84</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.11</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.11</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.38</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.38</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.65</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.65</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.92</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.92</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.19</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.19</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.46</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.46</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.73</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.73</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.27</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.27</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.54</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.54</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.81</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.81</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.08</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.08</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.35</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.35</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.62</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.62</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.89</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.89</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.16</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.16</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.43</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.43</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.7</X> + <Y>15</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.7</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.97</X> + <Y>-14.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.97</X> + <Y>15</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-50</StartX> + <StartY>-20</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-50</ProcessStartX> + <ProcessStartY>-20</ProcessStartY> + <ProcessEndX>-20</ProcessEndX> + <ProcessEndY>-49.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>23.6</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.73</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.73</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.46</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.46</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.19</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.19</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.92</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.92</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.65</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.65</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.38</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.38</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.11</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.11</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.84</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.84</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.57</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.57</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.3</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.3</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.03</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.03</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.76</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.76</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.49</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.49</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.22</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.22</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.95</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.95</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.68</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.68</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.41</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.41</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.14</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.14</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.87</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.87</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.6</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.6</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.33</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.33</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.06</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.06</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.79</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.79</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.52</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.52</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.25</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.25</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.98</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.98</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.71</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.71</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.44</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.44</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.17</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.17</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.9</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.9</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.63</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.63</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.36</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.36</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.09</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.09</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.82</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.82</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.55</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.55</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.28</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.28</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.01</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.01</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.74</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.74</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.47</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.47</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.2</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.2</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.93</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.93</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.66</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.66</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.39</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.39</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.12</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.12</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.85</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.85</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.58</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.58</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.31</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.31</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.04</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.04</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.77</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.77</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.5</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.5</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.23</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.23</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.96</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.96</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.69</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.69</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.42</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.42</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.15</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.15</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.88</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.88</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.61</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.61</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.34</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.34</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.07</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.07</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.8</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.8</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.53</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.53</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.26</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.26</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.99</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.99</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.72</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.72</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.45</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.45</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.18</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.18</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.91</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.91</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.64</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.64</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.37</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.37</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.1</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.1</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.83</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.83</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.56</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.56</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.29</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.29</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.02</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.02</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.75</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.75</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.48</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.48</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.21</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.21</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.94</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.94</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.67</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.67</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.4</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.4</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.13</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.13</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.86</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.86</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.59</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.59</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.32</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.32</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.05</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.05</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.78</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.78</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.51</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.51</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.24</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.24</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.97</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.97</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.7</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.7</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.43</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.43</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.16</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.16</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.89</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.89</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.62</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.62</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.35</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.35</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.08</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.08</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.81</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.81</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.54</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.54</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.27</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.27</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.73</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.73</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.46</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.46</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.19</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.19</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.92</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.92</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.65</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.65</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.38</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.38</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.11</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.11</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.84</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.84</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.57</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.57</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.3</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.3</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.03</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.03</X> + <Y>-20</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>-15</StartX> + <StartY>-20</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>-15</ProcessStartX> + <ProcessStartY>-20</ProcessStartY> + <ProcessEndX>15</ProcessEndX> + <ProcessEndY>-49.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>25.2</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.73</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.73</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.46</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.46</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.19</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.19</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.92</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.92</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.65</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.65</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.38</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.38</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.11</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.11</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.84</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.84</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.57</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.57</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.3</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.3</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.03</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.03</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.76</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.76</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.49</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.49</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.22</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.22</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.95</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.95</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.68</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.68</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.41</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.41</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.14</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.14</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.87</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.87</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.6</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.6</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.33</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.33</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.06</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.06</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.79</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.79</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.52</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.52</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.25</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.25</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.98</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.98</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.71</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.71</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.44</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.44</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.17</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.17</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.9</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.9</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.63</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.63</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.36</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.36</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.09</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.09</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.82</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.82</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.55</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.55</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.28</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.28</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.01</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.01</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.74</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.74</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.47</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.47</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.2</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.2</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.93</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.93</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.66</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.66</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.39</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.39</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.12</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.12</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.85</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.85</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.58</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.58</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.31</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.31</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.04</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.04</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.77</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.77</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.5</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.5</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.23</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.23</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.96</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.96</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.69</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.69</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.42</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.42</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.15</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.15</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.12</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.12</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.39</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.39</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.66</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.66</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.93</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.93</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.2</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.2</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.47</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.47</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.74</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.74</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.01</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.01</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.28</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.28</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.55</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.55</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.82</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.82</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.09</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.09</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.36</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.36</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.63</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.63</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.9</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.9</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.17</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.17</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.44</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.44</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.71</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.71</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.98</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.98</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.25</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.25</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.52</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.52</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.79</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.79</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.06</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.06</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.33</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.33</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.6</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.6</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.87</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.87</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.14</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.14</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.41</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.41</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.68</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.68</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.95</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.95</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.22</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.22</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.49</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.49</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.76</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.76</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.03</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.03</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.3</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.3</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.57</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.57</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.84</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.84</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.11</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.11</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.38</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.38</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.65</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.65</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.92</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.92</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.19</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.19</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.46</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.46</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.73</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.73</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.27</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.27</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.54</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.54</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.81</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.81</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.08</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.08</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.35</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.35</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.62</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.62</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.89</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.89</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.16</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.16</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.43</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.43</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.7</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.7</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.97</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.97</X> + <Y>-20</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>0</EdgeRound> + <StartX>20</StartX> + <StartY>-20</StartY> + <Width>30</Width> + <Height>29.9700012</Height> + <ProcessStartX>20</ProcessStartX> + <ProcessStartY>-20</ProcessStartY> + <ProcessEndX>50</ProcessEndX> + <ProcessEndY>-49.97</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <AttenuatorAngle>27</AttenuatorAngle> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>3409.28</ProcessLength> + <AccTime>0.11274074874477023</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.27</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.27</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.54</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.54</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.81</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.81</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.08</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.08</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.35</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.35</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.62</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.62</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.89</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.89</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.16</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.16</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.43</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.43</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.7</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.7</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.97</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.97</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.24</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.24</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.51</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.51</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.78</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.78</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.05</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.05</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.32</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.32</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.59</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.59</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.86</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.86</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.13</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.13</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.4</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.4</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.67</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.67</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.94</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.94</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.21</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.21</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.48</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.48</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.75</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.75</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.02</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.02</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.29</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.29</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.56</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.56</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.83</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.83</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.1</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.1</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.37</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.37</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.64</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.64</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.91</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.91</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.18</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.18</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.45</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.45</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.72</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.72</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.99</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.99</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.26</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.26</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.53</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.53</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.8</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.8</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.07</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.07</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.34</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.34</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.61</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.61</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.88</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.88</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.15</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.15</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.42</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.42</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.69</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.69</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.96</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.96</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.23</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.23</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.5</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.5</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.77</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.77</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.04</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.04</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.31</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.31</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.58</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.58</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.85</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.85</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.12</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.12</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.39</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.39</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.66</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.66</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.93</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.93</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.2</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.2</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.47</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.47</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.74</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.74</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.01</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.01</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.28</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.28</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.55</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.55</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.82</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.82</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.09</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.09</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.36</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.36</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.63</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.63</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.9</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.9</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.17</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.17</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.44</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.44</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.71</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.71</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.98</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.98</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.25</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.25</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.52</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.52</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.79</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.79</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.06</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.06</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.33</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.33</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.6</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.6</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.87</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.87</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.14</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.14</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.41</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.41</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.68</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.68</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.95</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.95</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.22</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.22</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.49</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.49</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.76</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.76</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.03</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.03</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.3</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.3</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.57</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.57</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.84</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.84</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.11</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.11</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.38</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.38</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.65</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.65</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.92</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.92</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.19</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.19</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.46</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.46</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.73</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.73</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.27</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.27</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.54</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.54</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.81</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.81</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.08</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.08</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.35</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.35</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.62</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.62</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.89</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.89</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.16</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.16</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.43</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.43</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.7</X> + <Y>-20</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.7</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.97</X> + <Y>-49.97</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.97</X> + <Y>-20</Y> + </Coord> + </ProcessList> + </ProcessInfo> + </ProcessInfoList> +</Recipe> \ No newline at end of file diff --git "a/SA_LTT/Info/Recipe/\355\225\234\352\270\200.xml" "b/SA_LTT/Info/Recipe/\355\225\234\352\270\200.xml" new file mode 100644 index 0000000..eb9c1b6 --- /dev/null +++ "b/SA_LTT/Info/Recipe/\355\225\234\352\270\200.xml" @@ -0,0 +1,10607 @@ +<?xml version="1.0" encoding="utf-8"?> +<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>�븳湲�</Name> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>2</EdgeRound> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <ProcessInfoList> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>2</EdgeRound> + <StartX>-75</StartX> + <StartY>23.7</StartY> + <Width>150</Width> + <Height>5.13</Height> + <ProcessStartX>-70.5985</ProcessStartX> + <ProcessStartY>23.7</ProcessStartY> + <ProcessEndX>70.5985</ProcessEndX> + <ProcessEndY>18.57</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>0.4</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>2900.45</ProcessLength> + <AccTime>0</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-70.5985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-70.5985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-70.3285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-70.3285</X> + <Y>19.65</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-70.0585</X> + <Y>20.46</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-70.0585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-69.7885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-69.7885</X> + <Y>21.54</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-69.5185</X> + <Y>22.08</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-69.5185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-69.2485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-69.2485</X> + <Y>22.89</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-68.9785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-68.9785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-68.7085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-68.7085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-68.4385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-68.4385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-68.1685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-68.1685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-67.8985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-67.8985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-67.6285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-67.6285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-67.3585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-67.3585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-67.0885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-67.0885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-66.8185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-66.8185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-66.5485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-66.5485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-66.2785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-66.2785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-66.0085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-66.0085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-65.7385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-65.7385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-65.4685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-65.4685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-65.1985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-65.1985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-64.9285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-64.9285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-64.6585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-64.6585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-64.3885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-64.3885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-64.1185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-64.1185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-63.8485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-63.8485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-63.5785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-63.5785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-63.3085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-63.3085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-63.0385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-63.0385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-62.7685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-62.7685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-62.4985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-62.4985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-62.2285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-62.2285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-61.9585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-61.9585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-61.6885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-61.6885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-61.4185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-61.4185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-61.1485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-61.1485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-60.8785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-60.8785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-60.6085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-60.6085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-60.3385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-60.3385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-60.0685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-60.0685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-59.7985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-59.7985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-59.5285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-59.5285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-59.2585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-59.2585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-58.9885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-58.9885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-58.7185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-58.7185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-58.4485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-58.4485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-58.1785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-58.1785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-57.9085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-57.9085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-57.6385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-57.6385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-57.3685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-57.3685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-57.0985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-57.0985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-56.8285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-56.8285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-56.5585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-56.5585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-56.2885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-56.2885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-56.0185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-56.0185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-55.7485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-55.7485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-55.4785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-55.4785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-55.2085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-55.2085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-54.9385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-54.9385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-54.6685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-54.6685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-54.3985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-54.3985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-54.1285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-54.1285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-53.8585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-53.8585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-53.5885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-53.5885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-53.3185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-53.3185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-53.0485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-53.0485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-52.7785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-52.7785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-52.5085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-52.5085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-52.2385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-52.2385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-51.9685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-51.9685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-51.6985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-51.6985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-51.4285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-51.4285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-51.1585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-51.1585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50.8885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50.8885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50.6185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50.6185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50.3485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50.3485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50.0785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50.0785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.8085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.8085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.5385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.5385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.2685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.2685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.9985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.9985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.7285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.7285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.4585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.4585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.1885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.1885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.9185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.9185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.6485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.6485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.3785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.3785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.1085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.1085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.8385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.8385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.5685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.5685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.2985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.2985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.0285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.0285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.7585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.7585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.4885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.4885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.2185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.2185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.9485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.9485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.6785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.6785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.4085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.4085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.1385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.1385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.8685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.8685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.5985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.5985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.3285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.3285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.0585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.0585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.7885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.7885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.5185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.5185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.2485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.2485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.9785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.9785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.7085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.7085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.4385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.4385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.1685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.1685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.8985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.8985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.6285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.6285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.3585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.3585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.0885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.0885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.8185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.8185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.5485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.5485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.2785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.2785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.0085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.0085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.7385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.7385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.4685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.4685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.1985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.1985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.9285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.9285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.6585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.6585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.3885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.3885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.1185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.1185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.8485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.8485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.5785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.5785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.3085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.3085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.0385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.0385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.7685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.7685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.4985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.4985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.2285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.2285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.9585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.9585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.6885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.6885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.4185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.4185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.1485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.1485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.8785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.8785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.6085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.6085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.3385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.3385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.0685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.0685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.7985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.7985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.5285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.5285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.2585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.2585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.9885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.9885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.7185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.7185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.4485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.4485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.1785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.1785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.9085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.9085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.6385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.6385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.3685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.3685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.0985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.0985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.8285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.8285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.5585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.5585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.2885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.2885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.0185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.0185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.7485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.7485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.4785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.4785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.2085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.2085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.9385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.9385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.6685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.6685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.3985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.3985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.1285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.1285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.8585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.8585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.5885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.5885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.3185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.3185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.0485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.0485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.7785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.7785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.5085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.5085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.2385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.2385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.9685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.9685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.6985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.6985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.4285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.4285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.1585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.1585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.8885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.8885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.6185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.6185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.3485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.3485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.0785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.0785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.8085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.8085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.5385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.5385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.2685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.2685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.9985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.9985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.7285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.7285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.4585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.4585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.1885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.1885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.9185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.9185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.6485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.6485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.3785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.3785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.1085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.1085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.8385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.8385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.5685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.5685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.2985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.2985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.0285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.0285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.7585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.7585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.4885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.4885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.2185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.2185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.9485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.9485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.6785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.6785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.4085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.4085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.1385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.1385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.8685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.8685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.5985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.5985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.3285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.3285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.0585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.0585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.7885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.7885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.5185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.5185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.2485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.2485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.9785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.9785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.7085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.7085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.4385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.4385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.1685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.1685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.8985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.8985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.6285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.6285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.3585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.3585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.0885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.0885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.8185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.8185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.5485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.5485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.2785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.2785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.0085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.0085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.7385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.7385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.4685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.4685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.1985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.1985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.9285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.9285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.6585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.6585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.3885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.3885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.1185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.1185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.8485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.8485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.5785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.5785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.3085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.3085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.0385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.0385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.7685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.7685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.4985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.4985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.2285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.2285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.9585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.9585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.6885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.6885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.4185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.4185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.1485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.1485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.8785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.8785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.6085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.6085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.3385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.3385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.0685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.0685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.7985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.7985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.5285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.5285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.2585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.2585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.9885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.9885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.7185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.7185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.4485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.4485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.1785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.1785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.9085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.9085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.6385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.6385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.3685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.3685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.0985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.0985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.8285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.8285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.5585</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.5585</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.2885</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.2885</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.0185</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.0185</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.7485</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.7485</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.4785</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.4785</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.2085</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.2085</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.9385</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.9385</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.6685</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.6685</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.3985</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.3985</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.1285</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.1285</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.1415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.1415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.4115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.4115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.6815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.6815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.9515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.9515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.2215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.2215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.4915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.4915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.7615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.7615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.0315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.0315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.3015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.3015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.5715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.5715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.8415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.8415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.1115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.1115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.3815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.3815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.6515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.6515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.9215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.9215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.1915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.1915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.4615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.4615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.7315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.7315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.0015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.0015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.2715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.2715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.5415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.5415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.8115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.8115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.0815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.0815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.3515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.3515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.6215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.6215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.8915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.8915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.1615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.1615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.4315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.4315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.7015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.7015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.9715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.9715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.2415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.2415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.5115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.5115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.7815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.7815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.0515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.0515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.3215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.3215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.5915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.5915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.8615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.8615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.1315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.1315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.4015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.4015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.6715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.6715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.9415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.9415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.2115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.2115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.4815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.4815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.7515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.7515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.0215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.0215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.2915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.2915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.5615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.5615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.8315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.8315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.1015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.1015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.3715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.3715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.6415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.6415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.9115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.9115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.1815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.1815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.4515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.4515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.7215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.7215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.9915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.9915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.2615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.2615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.5315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.5315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.8015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.8015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.0715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.0715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.3415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.3415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.6115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.6115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.8815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.8815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.1515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.1515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.4215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.4215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.6915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.6915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.9615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.9615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.2315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.2315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.5015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.5015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.7715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.7715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.0415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.0415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.3115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.3115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.5815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.5815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.8515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.8515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.1215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.1215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.3915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.3915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.6615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.6615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.9315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.9315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.2015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.2015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.4715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.4715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.7415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.7415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.0115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.0115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.2815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.2815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.5515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.5515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.8215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.8215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.0915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.0915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.3615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.3615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.6315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.6315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.9015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.9015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.1715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.1715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.4415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.4415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.7115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.7115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.9815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.9815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.2515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.2515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.5215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.5215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.7915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.7915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.0615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.0615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.3315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.3315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.6015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.6015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.8715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.8715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.1415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.1415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.4115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.4115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.6815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.6815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.9515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.9515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.2215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.2215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.4915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.4915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.7615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.7615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.0315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.0315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.3015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.3015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.5715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.5715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.8415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.8415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.1115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.1115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.3815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.3815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.6515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.6515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.9215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.9215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.1915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.1915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.4615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.4615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.7315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.7315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.0015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.0015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.2715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.2715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.5415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.5415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.8115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.8115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.0815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.0815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.3515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.3515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.6215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.6215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.8915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.8915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.1615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.1615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.4315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.4315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.7015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.7015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.9715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.9715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.2415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.2415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.5115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.5115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.7815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.7815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.0515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.0515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.3215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.3215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.5915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.5915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.8615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.8615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.1315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.1315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.4015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.4015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.6715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.6715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.9415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.9415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.2115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.2115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.4815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.4815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.7515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.7515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.0215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.0215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.2915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.2915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.5615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.5615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.8315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.8315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.1015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.1015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.3715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.3715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.6415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.6415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.9115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.9115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.1815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.1815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.4515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.4515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.7215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.7215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.9915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.9915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.2615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.2615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.5315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.5315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.8015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.8015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.0715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.0715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.3415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.3415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.6115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.6115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.8815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.8815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.1515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.1515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.4215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.4215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.6915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.6915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.9615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.9615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.2315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.2315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.5015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.5015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.7715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.7715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.0415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.0415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.3115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.3115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.5815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.5815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.8515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.8515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.1215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.1215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.3915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.3915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.6615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.6615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.9315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.9315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.2015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.2015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.4715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.4715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.7415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.7415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.0115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.0115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.2815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.2815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.5515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.5515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.8215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.8215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>50.0915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>50.0915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>50.3615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>50.3615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>50.6315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>50.6315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>50.9015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>50.9015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>51.1715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>51.1715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>51.4415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>51.4415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>51.7115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>51.7115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>51.9815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>51.9815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>52.2515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>52.2515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>52.5215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>52.5215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>52.7915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>52.7915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>53.0615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>53.0615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>53.3315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>53.3315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>53.6015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>53.6015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>53.8715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>53.8715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>54.1415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>54.1415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>54.4115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>54.4115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>54.6815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>54.6815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>54.9515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>54.9515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>55.2215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>55.2215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>55.4915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>55.4915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>55.7615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>55.7615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>56.0315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>56.0315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>56.3015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>56.3015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>56.5715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>56.5715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>56.8415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>56.8415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>57.1115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>57.1115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>57.3815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>57.3815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>57.6515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>57.6515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>57.9215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>57.9215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>58.1915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>58.1915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>58.4615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>58.4615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>58.7315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>58.7315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>59.0015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>59.0015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>59.2715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>59.2715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>59.5415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>59.5415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>59.8115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>59.8115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>60.0815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>60.0815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>60.3515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>60.3515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>60.6215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>60.6215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>60.8915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>60.8915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>61.1615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>61.1615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>61.4315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>61.4315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>61.7015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>61.7015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>61.9715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>61.9715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>62.2415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>62.2415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>62.5115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>62.5115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>62.7815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>62.7815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>63.0515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>63.0515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>63.3215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>63.3215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>63.5915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>63.5915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>63.8615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>63.8615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>64.1315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>64.1315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>64.4015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>64.4015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>64.6715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>64.6715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>64.9415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>64.9415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>65.2115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>65.2115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>65.4815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>65.4815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>65.7515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>65.7515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>66.0215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>66.0215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>66.2915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>66.2915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>66.5615</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>66.5615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>66.8315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>66.8315</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>67.1015</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>67.1015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>67.3715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>67.3715</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>67.6415</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>67.6415</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>67.9115</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>67.9115</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>68.1815</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>68.1815</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>68.4515</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>68.4515</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>68.7215</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>68.7215</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>68.9915</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>68.9915</X> + <Y>23.7</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>69.2615</X> + <Y>23.16</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>69.2615</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>69.5315</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>69.5315</X> + <Y>22.35</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>69.8015</X> + <Y>21.54</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>69.8015</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>70.0715</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>70.0715</X> + <Y>20.46</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>70.3415</X> + <Y>19.65</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>70.3415</X> + <Y>18.57</Y> + </Coord> + </ProcessList> + </ProcessInfo> + <ProcessInfo> + <Radius>75</Radius> + <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat> + <EdgeRound>2</EdgeRound> + <StartX>-75</StartX> + <StartY>18.57</StartY> + <Width>150</Width> + <Height>5.13</Height> + <ProcessStartX>-71.7521</ProcessStartX> + <ProcessStartY>18.57</ProcessStartY> + <ProcessEndX>71.7521</ProcessEndX> + <ProcessEndY>13.44</ProcessEndY> + <BeamWidth>0.53</BeamWidth> + <BeamHeight>0.53</BeamHeight> + <BeamHeightOverlap>0.26</BeamHeightOverlap> + <BeamWidthOverlap>0.26</BeamWidthOverlap> + <Energy>0.4</Energy> + <IsProcessEnable>true</IsProcessEnable> + <ProcessLength>2955.17</ProcessLength> + <AccTime>0.0744444499418082</AccTime> + <ProcessList> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-71.7521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-71.7521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-71.4821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-71.4821</X> + <Y>14.79</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-71.2121</X> + <Y>16.14</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-71.2121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-70.9421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-70.9421</X> + <Y>16.95</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-70.6721</X> + <Y>18.03</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-70.6721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-70.4021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-70.4021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-70.1321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-70.1321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-69.8621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-69.8621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-69.5921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-69.5921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-69.3221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-69.3221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-69.0521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-69.0521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-68.7821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-68.7821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-68.5121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-68.5121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-68.2421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-68.2421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-67.9721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-67.9721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-67.7021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-67.7021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-67.4321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-67.4321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-67.1621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-67.1621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-66.8921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-66.8921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-66.6221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-66.6221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-66.3521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-66.3521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-66.0821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-66.0821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-65.8121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-65.8121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-65.5421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-65.5421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-65.2721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-65.2721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-65.0021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-65.0021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-64.7321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-64.7321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-64.4621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-64.4621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-64.1921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-64.1921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-63.9221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-63.9221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-63.6521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-63.6521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-63.3821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-63.3821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-63.1121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-63.1121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-62.8421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-62.8421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-62.5721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-62.5721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-62.3021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-62.3021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-62.0321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-62.0321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-61.7621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-61.7621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-61.4921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-61.4921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-61.2221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-61.2221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-60.9521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-60.9521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-60.6821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-60.6821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-60.4121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-60.4121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-60.1421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-60.1421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-59.8721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-59.8721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-59.6021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-59.6021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-59.3321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-59.3321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-59.0621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-59.0621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-58.7921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-58.7921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-58.5221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-58.5221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-58.2521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-58.2521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-57.9821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-57.9821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-57.7121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-57.7121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-57.4421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-57.4421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-57.1721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-57.1721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-56.9021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-56.9021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-56.6321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-56.6321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-56.3621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-56.3621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-56.0921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-56.0921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-55.8221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-55.8221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-55.5521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-55.5521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-55.2821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-55.2821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-55.0121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-55.0121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-54.7421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-54.7421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-54.4721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-54.4721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-54.2021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-54.2021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-53.9321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-53.9321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-53.6621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-53.6621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-53.3921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-53.3921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-53.1221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-53.1221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-52.8521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-52.8521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-52.5821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-52.5821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-52.3121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-52.3121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-52.0421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-52.0421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-51.7721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-51.7721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-51.5021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-51.5021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-51.2321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-51.2321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50.9621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50.9621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50.6921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50.6921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50.4221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50.4221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-50.1521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-50.1521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.8821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.8821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.6121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.6121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.3421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.3421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-49.0721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-49.0721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.8021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.8021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.5321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.5321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-48.2621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-48.2621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.9921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.9921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.7221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.7221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.4521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.4521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-47.1821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-47.1821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.9121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.9121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.6421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.6421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.3721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.3721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-46.1021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-46.1021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.8321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.8321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.5621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.5621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.2921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.2921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-45.0221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-45.0221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.7521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.7521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.4821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.4821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-44.2121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-44.2121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.9421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.9421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.6721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.6721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.4021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.4021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-43.1321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-43.1321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.8621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.8621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.5921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.5921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.3221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.3221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-42.0521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-42.0521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.7821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.7821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.5121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.5121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-41.2421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-41.2421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.9721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.9721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.7021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.7021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.4321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.4321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-40.1621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-40.1621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.8921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.8921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.6221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.6221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.3521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.3521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-39.0821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-39.0821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.8121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.8121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.5421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.5421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.2721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.2721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-38.0021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-38.0021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.7321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.7321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.4621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.4621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-37.1921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-37.1921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.9221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.9221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.6521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.6521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.3821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.3821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-36.1121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-36.1121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.8421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.8421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.5721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.5721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.3021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.3021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-35.0321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-35.0321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.7621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.7621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.4921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.4921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-34.2221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-34.2221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.9521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.9521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.6821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.6821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.4121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.4121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-33.1421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-33.1421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.8721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.8721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.6021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.6021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.3321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.3321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-32.0621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-32.0621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.7921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.7921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.5221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.5221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-31.2521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-31.2521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.9821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.9821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.7121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.7121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.4421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.4421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-30.1721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-30.1721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.9021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.9021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.6321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.6321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.3621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.3621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-29.0921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-29.0921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.8221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.8221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.5521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.5521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.2821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.2821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-28.0121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-28.0121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.7421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.7421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.4721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.4721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-27.2021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-27.2021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.9321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.9321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.6621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.6621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.3921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.3921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-26.1221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-26.1221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.8521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.8521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.5821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.5821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.3121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.3121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-25.0421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-25.0421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.7721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.7721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.5021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.5021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-24.2321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-24.2321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.9621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.9621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.6921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.6921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.4221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.4221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-23.1521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-23.1521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.8821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.8821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.6121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.6121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.3421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.3421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-22.0721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-22.0721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.8021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.8021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.5321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.5321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-21.2621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-21.2621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.9921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.9921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.7221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.7221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.4521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.4521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-20.1821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-20.1821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.9121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.9121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.6421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.6421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.3721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.3721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-19.1021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-19.1021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.8321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.8321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.5621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.5621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.2921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.2921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-18.0221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-18.0221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.7521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.7521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.4821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.4821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-17.2121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-17.2121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.9421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.9421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.6721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.6721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.4021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.4021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-16.1321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-16.1321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.8621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.8621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.5921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.5921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.3221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.3221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-15.0521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-15.0521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.7821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.7821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.5121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.5121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-14.2421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-14.2421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.9721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.9721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.7021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.7021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.4321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.4321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-13.1621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-13.1621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.8921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.8921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.6221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.6221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.3521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.3521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-12.0821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-12.0821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.8121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.8121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.5421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.5421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.2721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.2721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-11.0021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-11.0021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.7321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.7321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.4621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.4621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-10.1921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-10.1921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.9221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.9221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.6521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.6521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.3821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.3821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-9.1121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-9.1121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.8421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.8421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.5721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.5721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.3021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.3021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-8.0321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-8.0321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.7621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.7621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.4921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.4921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-7.2221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-7.2221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.9521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.9521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.6821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.6821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.4121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.4121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-6.1421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-6.1421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.8721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.8721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.6021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.6021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.3321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.3321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-5.0621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-5.0621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.7921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.7921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.5221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.5221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-4.2521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-4.2521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.9821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.9821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.7121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.7121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.4421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.4421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-3.1721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-3.1721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.9021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.9021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.6321</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.6321</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.3621</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.3621</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-2.0921</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-2.0921</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.8221</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.8221</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.5521</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.5521</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.2821</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.2821</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-1.0121</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-1.0121</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.7421</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.7421</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.4721</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.4721</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>-0.2021</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>-0.2021</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.0679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.0679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.3379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.3379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.6079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.6079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>0.8779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>0.8779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.1479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.1479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.4179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.4179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.6879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.6879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>1.9579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>1.9579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.2279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.2279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.4979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.4979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>2.7679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>2.7679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.0379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.0379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.3079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.3079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.5779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.5779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>3.8479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>3.8479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.1179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.1179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.3879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.3879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.6579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.6579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>4.9279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>4.9279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.1979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.1979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.4679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.4679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>5.7379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>5.7379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.0079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.0079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.2779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.2779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.5479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.5479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>6.8179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>6.8179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.0879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.0879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.3579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.3579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.6279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.6279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>7.8979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>7.8979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.1679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.1679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.4379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.4379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.7079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.7079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>8.9779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>8.9779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.2479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.2479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.5179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.5179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>9.7879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>9.7879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.0579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.0579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.3279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.3279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.5979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.5979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>10.8679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>10.8679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.1379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.1379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.4079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.4079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.6779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.6779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>11.9479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>11.9479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.2179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.2179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.4879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.4879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>12.7579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>12.7579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.0279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.0279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.2979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.2979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.5679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.5679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>13.8379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>13.8379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.1079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.1079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.3779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.3779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.6479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.6479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>14.9179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>14.9179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.1879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.1879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.4579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.4579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.7279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.7279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>15.9979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>15.9979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.2679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.2679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.5379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.5379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>16.8079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>16.8079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.0779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.0779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.3479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.3479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.6179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.6179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>17.8879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>17.8879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.1579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.1579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.4279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.4279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.6979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.6979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>18.9679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>18.9679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.2379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.2379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.5079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.5079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>19.7779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>19.7779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.0479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.0479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.3179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.3179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.5879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.5879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>20.8579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>20.8579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.1279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.1279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.3979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.3979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.6679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.6679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>21.9379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>21.9379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.2079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.2079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.4779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.4779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>22.7479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>22.7479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.0179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.0179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.2879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.2879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.5579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.5579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>23.8279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>23.8279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.0979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.0979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.3679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.3679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.6379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.6379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>24.9079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>24.9079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.1779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.1779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.4479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.4479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.7179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.7179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>25.9879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>25.9879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.2579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.2579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.5279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.5279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>26.7979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>26.7979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.0679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.0679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.3379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.3379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.6079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.6079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>27.8779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>27.8779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.1479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.1479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.4179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.4179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.6879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.6879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>28.9579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>28.9579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.2279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.2279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.4979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.4979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>29.7679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>29.7679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.0379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.0379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.3079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.3079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.5779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.5779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>30.8479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>30.8479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.1179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.1179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.3879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.3879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.6579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.6579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>31.9279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>31.9279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.1979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.1979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.4679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.4679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>32.7379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>32.7379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.0079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.0079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.2779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.2779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.5479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.5479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>33.8179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>33.8179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.0879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.0879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.3579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.3579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.6279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.6279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>34.8979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>34.8979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.1679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.1679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.4379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.4379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.7079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.7079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>35.9779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>35.9779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.2479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.2479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.5179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.5179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>36.7879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>36.7879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.0579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.0579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.3279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.3279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.5979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.5979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>37.8679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>37.8679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.1379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.1379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.4079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.4079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.6779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.6779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>38.9479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>38.9479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.2179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.2179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.4879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.4879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>39.7579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>39.7579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.0279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.0279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.2979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.2979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.5679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.5679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>40.8379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>40.8379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.1079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.1079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.3779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.3779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.6479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.6479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>41.9179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>41.9179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.1879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.1879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.4579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.4579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.7279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.7279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>42.9979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>42.9979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.2679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.2679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.5379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.5379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>43.8079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>43.8079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.0779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.0779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.3479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.3479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.6179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.6179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>44.8879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>44.8879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.1579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.1579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.4279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.4279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.6979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.6979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>45.9679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>45.9679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.2379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.2379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.5079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.5079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>46.7779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>46.7779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.0479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.0479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.3179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.3179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.5879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.5879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>47.8579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>47.8579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.1279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.1279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.3979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.3979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.6679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.6679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>48.9379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>48.9379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.2079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.2079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.4779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.4779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>49.7479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>49.7479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>50.0179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>50.0179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>50.2879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>50.2879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>50.5579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>50.5579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>50.8279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>50.8279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>51.0979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>51.0979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>51.3679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>51.3679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>51.6379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>51.6379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>51.9079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>51.9079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>52.1779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>52.1779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>52.4479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>52.4479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>52.7179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>52.7179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>52.9879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>52.9879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>53.2579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>53.2579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>53.5279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>53.5279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>53.7979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>53.7979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>54.0679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>54.0679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>54.3379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>54.3379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>54.6079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>54.6079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>54.8779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>54.8779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>55.1479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>55.1479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>55.4179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>55.4179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>55.6879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>55.6879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>55.9579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>55.9579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>56.2279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>56.2279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>56.4979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>56.4979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>56.7679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>56.7679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>57.0379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>57.0379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>57.3079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>57.3079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>57.5779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>57.5779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>57.8479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>57.8479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>58.1179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>58.1179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>58.3879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>58.3879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>58.6579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>58.6579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>58.9279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>58.9279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>59.1979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>59.1979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>59.4679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>59.4679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>59.7379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>59.7379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>60.0079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>60.0079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>60.2779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>60.2779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>60.5479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>60.5479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>60.8179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>60.8179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>61.0879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>61.0879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>61.3579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>61.3579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>61.6279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>61.6279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>61.8979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>61.8979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>62.1679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>62.1679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>62.4379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>62.4379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>62.7079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>62.7079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>62.9779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>62.9779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>63.2479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>63.2479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>63.5179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>63.5179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>63.7879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>63.7879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>64.0579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>64.0579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>64.3279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>64.3279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>64.5979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>64.5979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>64.8679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>64.8679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>65.1379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>65.1379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>65.4079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>65.4079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>65.6779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>65.6779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>65.9479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>65.9479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>66.2179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>66.2179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>66.4879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>66.4879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>66.7579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>66.7579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>67.0279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>67.0279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>67.2979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>67.2979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>67.5679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>67.5679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>67.8379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>67.8379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>68.1079</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>68.1079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>68.3779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>68.3779</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>68.6479</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>68.6479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>68.9179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>68.9179</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>69.1879</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>69.1879</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>69.4579</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>69.4579</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>69.7279</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>69.7279</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>69.9979</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>69.9979</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>70.2679</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>70.2679</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>70.5379</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>70.5379</X> + <Y>18.57</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>70.8079</X> + <Y>17.49</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>70.8079</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>71.0779</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>71.0779</X> + <Y>16.41</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>71.3479</X> + <Y>15.6</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>71.3479</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>JUMP</ScanMode> + <X>71.6179</X> + <Y>13.44</Y> + </Coord> + <Coord> + <ScanMode>MARK</ScanMode> + <X>71.6179</X> + <Y>14.25</Y> + </Coord> + </ProcessList> + </ProcessInfo> + </ProcessInfoList> +</Recipe> \ No newline at end of file diff --git a/SA_LTT/Info/User/1.xml b/SA_LTT/Info/User/1.xml new file mode 100644 index 0000000..dbb29cd --- /dev/null +++ b/SA_LTT/Info/User/1.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>1</Name> + <Password>1</Password> + <Level>Engineer</Level> +</User> \ No newline at end of file diff --git a/SA_LTT/Info/User/DIT.xml b/SA_LTT/Info/User/DIT.xml new file mode 100644 index 0000000..0607398 --- /dev/null +++ b/SA_LTT/Info/User/DIT.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>DIT</Name> + <Password>1234</Password> + <Level>Master</Level> +</User> \ No newline at end of file diff --git a/SA_LTT/Info/User/Operator.xml b/SA_LTT/Info/User/Operator.xml new file mode 100644 index 0000000..aa62265 --- /dev/null +++ b/SA_LTT/Info/User/Operator.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Name>Operator</Name> + <Password>1234</Password> + <Level>Operator</Level> +</User> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A1.xml b/SA_LTT/Info/Wafer/A1.xml new file mode 100644 index 0000000..ad99006 --- /dev/null +++ b/SA_LTT/Info/Wafer/A1.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A1</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A10.xml b/SA_LTT/Info/Wafer/A10.xml new file mode 100644 index 0000000..de36b64 --- /dev/null +++ b/SA_LTT/Info/Wafer/A10.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A10</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A11.xml b/SA_LTT/Info/Wafer/A11.xml new file mode 100644 index 0000000..dfddc7e --- /dev/null +++ b/SA_LTT/Info/Wafer/A11.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A11</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A12.xml b/SA_LTT/Info/Wafer/A12.xml new file mode 100644 index 0000000..5572f14 --- /dev/null +++ b/SA_LTT/Info/Wafer/A12.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A12</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A13.xml b/SA_LTT/Info/Wafer/A13.xml new file mode 100644 index 0000000..816839c --- /dev/null +++ b/SA_LTT/Info/Wafer/A13.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A13</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A14.xml b/SA_LTT/Info/Wafer/A14.xml new file mode 100644 index 0000000..2ab898c --- /dev/null +++ b/SA_LTT/Info/Wafer/A14.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A14</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A15.xml b/SA_LTT/Info/Wafer/A15.xml new file mode 100644 index 0000000..87b3e3f --- /dev/null +++ b/SA_LTT/Info/Wafer/A15.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A15</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A16.xml b/SA_LTT/Info/Wafer/A16.xml new file mode 100644 index 0000000..57b15bd --- /dev/null +++ b/SA_LTT/Info/Wafer/A16.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A16</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A17.xml b/SA_LTT/Info/Wafer/A17.xml new file mode 100644 index 0000000..746e06e --- /dev/null +++ b/SA_LTT/Info/Wafer/A17.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A17</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A18.xml b/SA_LTT/Info/Wafer/A18.xml new file mode 100644 index 0000000..6b44895 --- /dev/null +++ b/SA_LTT/Info/Wafer/A18.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A18</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A19.xml b/SA_LTT/Info/Wafer/A19.xml new file mode 100644 index 0000000..4502153 --- /dev/null +++ b/SA_LTT/Info/Wafer/A19.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A19</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A2.xml b/SA_LTT/Info/Wafer/A2.xml new file mode 100644 index 0000000..1baa771 --- /dev/null +++ b/SA_LTT/Info/Wafer/A2.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A2</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A20.xml b/SA_LTT/Info/Wafer/A20.xml new file mode 100644 index 0000000..a708216 --- /dev/null +++ b/SA_LTT/Info/Wafer/A20.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A20</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A21.xml b/SA_LTT/Info/Wafer/A21.xml new file mode 100644 index 0000000..666cb30 --- /dev/null +++ b/SA_LTT/Info/Wafer/A21.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A21</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A22.xml b/SA_LTT/Info/Wafer/A22.xml new file mode 100644 index 0000000..b2af051 --- /dev/null +++ b/SA_LTT/Info/Wafer/A22.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A22</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A23.xml b/SA_LTT/Info/Wafer/A23.xml new file mode 100644 index 0000000..8a7ef0c --- /dev/null +++ b/SA_LTT/Info/Wafer/A23.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A23</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A24.xml b/SA_LTT/Info/Wafer/A24.xml new file mode 100644 index 0000000..ada3d47 --- /dev/null +++ b/SA_LTT/Info/Wafer/A24.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A24</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A25.xml b/SA_LTT/Info/Wafer/A25.xml new file mode 100644 index 0000000..f383c26 --- /dev/null +++ b/SA_LTT/Info/Wafer/A25.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A25</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A3.xml b/SA_LTT/Info/Wafer/A3.xml new file mode 100644 index 0000000..9f979c2 --- /dev/null +++ b/SA_LTT/Info/Wafer/A3.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A3</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A4.xml b/SA_LTT/Info/Wafer/A4.xml new file mode 100644 index 0000000..5b7814f --- /dev/null +++ b/SA_LTT/Info/Wafer/A4.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A4</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A5.xml b/SA_LTT/Info/Wafer/A5.xml new file mode 100644 index 0000000..d012d65 --- /dev/null +++ b/SA_LTT/Info/Wafer/A5.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A5</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A6.xml b/SA_LTT/Info/Wafer/A6.xml new file mode 100644 index 0000000..119139e --- /dev/null +++ b/SA_LTT/Info/Wafer/A6.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>A1</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A7.xml b/SA_LTT/Info/Wafer/A7.xml new file mode 100644 index 0000000..2310487 --- /dev/null +++ b/SA_LTT/Info/Wafer/A7.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A7</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A8.xml b/SA_LTT/Info/Wafer/A8.xml new file mode 100644 index 0000000..7f66fb0 --- /dev/null +++ b/SA_LTT/Info/Wafer/A8.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A8</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/A9.xml b/SA_LTT/Info/Wafer/A9.xml new file mode 100644 index 0000000..b3a7e4a --- /dev/null +++ b/SA_LTT/Info/Wafer/A9.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <SourceNumber>A9</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B1.xml b/SA_LTT/Info/Wafer/B1.xml new file mode 100644 index 0000000..286fd67 --- /dev/null +++ b/SA_LTT/Info/Wafer/B1.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B1</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B10.xml b/SA_LTT/Info/Wafer/B10.xml new file mode 100644 index 0000000..5c821fd --- /dev/null +++ b/SA_LTT/Info/Wafer/B10.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B10</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B11.xml b/SA_LTT/Info/Wafer/B11.xml new file mode 100644 index 0000000..f82b6ef --- /dev/null +++ b/SA_LTT/Info/Wafer/B11.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B11</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B12.xml b/SA_LTT/Info/Wafer/B12.xml new file mode 100644 index 0000000..2fba852 --- /dev/null +++ b/SA_LTT/Info/Wafer/B12.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B12</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B13.xml b/SA_LTT/Info/Wafer/B13.xml new file mode 100644 index 0000000..9d63e3b --- /dev/null +++ b/SA_LTT/Info/Wafer/B13.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B13</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B14.xml b/SA_LTT/Info/Wafer/B14.xml new file mode 100644 index 0000000..02014ba --- /dev/null +++ b/SA_LTT/Info/Wafer/B14.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B14</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B15.xml b/SA_LTT/Info/Wafer/B15.xml new file mode 100644 index 0000000..e835c39 --- /dev/null +++ b/SA_LTT/Info/Wafer/B15.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B15</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B16.xml b/SA_LTT/Info/Wafer/B16.xml new file mode 100644 index 0000000..d979891 --- /dev/null +++ b/SA_LTT/Info/Wafer/B16.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B16</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B17.xml b/SA_LTT/Info/Wafer/B17.xml new file mode 100644 index 0000000..0651410 --- /dev/null +++ b/SA_LTT/Info/Wafer/B17.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B17</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B18.xml b/SA_LTT/Info/Wafer/B18.xml new file mode 100644 index 0000000..1ea4978 --- /dev/null +++ b/SA_LTT/Info/Wafer/B18.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B18</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B19.xml b/SA_LTT/Info/Wafer/B19.xml new file mode 100644 index 0000000..551543d --- /dev/null +++ b/SA_LTT/Info/Wafer/B19.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B19</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B2.xml b/SA_LTT/Info/Wafer/B2.xml new file mode 100644 index 0000000..334aed6 --- /dev/null +++ b/SA_LTT/Info/Wafer/B2.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B2</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B20.xml b/SA_LTT/Info/Wafer/B20.xml new file mode 100644 index 0000000..35c2e5f --- /dev/null +++ b/SA_LTT/Info/Wafer/B20.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B20</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B21.xml b/SA_LTT/Info/Wafer/B21.xml new file mode 100644 index 0000000..6441f5f --- /dev/null +++ b/SA_LTT/Info/Wafer/B21.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B21</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B22.xml b/SA_LTT/Info/Wafer/B22.xml new file mode 100644 index 0000000..2dde426 --- /dev/null +++ b/SA_LTT/Info/Wafer/B22.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B22</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B23.xml b/SA_LTT/Info/Wafer/B23.xml new file mode 100644 index 0000000..3397d04 --- /dev/null +++ b/SA_LTT/Info/Wafer/B23.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B23</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B24.xml b/SA_LTT/Info/Wafer/B24.xml new file mode 100644 index 0000000..a5607cc --- /dev/null +++ b/SA_LTT/Info/Wafer/B24.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B24</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B25.xml b/SA_LTT/Info/Wafer/B25.xml new file mode 100644 index 0000000..678b46d --- /dev/null +++ b/SA_LTT/Info/Wafer/B25.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B25</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B3.xml b/SA_LTT/Info/Wafer/B3.xml new file mode 100644 index 0000000..f88a305 --- /dev/null +++ b/SA_LTT/Info/Wafer/B3.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B3</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B4.xml b/SA_LTT/Info/Wafer/B4.xml new file mode 100644 index 0000000..3785fe6 --- /dev/null +++ b/SA_LTT/Info/Wafer/B4.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B4</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B5.xml b/SA_LTT/Info/Wafer/B5.xml new file mode 100644 index 0000000..1a30ebc --- /dev/null +++ b/SA_LTT/Info/Wafer/B5.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B5</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B6.xml b/SA_LTT/Info/Wafer/B6.xml new file mode 100644 index 0000000..ebcdb92 --- /dev/null +++ b/SA_LTT/Info/Wafer/B6.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B6</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B7.xml b/SA_LTT/Info/Wafer/B7.xml new file mode 100644 index 0000000..e5ac09c --- /dev/null +++ b/SA_LTT/Info/Wafer/B7.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B7</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B8.xml b/SA_LTT/Info/Wafer/B8.xml new file mode 100644 index 0000000..da00ff7 --- /dev/null +++ b/SA_LTT/Info/Wafer/B8.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B8</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/B9.xml b/SA_LTT/Info/Wafer/B9.xml new file mode 100644 index 0000000..45d2282 --- /dev/null +++ b/SA_LTT/Info/Wafer/B9.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>B9</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Chamber.xml b/SA_LTT/Info/Wafer/Chamber.xml new file mode 100644 index 0000000..ca2dc80 --- /dev/null +++ b/SA_LTT/Info/Wafer/Chamber.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>true</IsFlip> + <IsProcessComplete>true</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName>AAA</RecipeName> + <SourceNumber>A6</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_1.xml b/SA_LTT/Info/Wafer/Port1_1.xml new file mode 100644 index 0000000..4fdeae7 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_1.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_10.xml b/SA_LTT/Info/Wafer/Port1_10.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_10.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_11.xml b/SA_LTT/Info/Wafer/Port1_11.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_11.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_12.xml b/SA_LTT/Info/Wafer/Port1_12.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_12.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_13.xml b/SA_LTT/Info/Wafer/Port1_13.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_13.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_14.xml b/SA_LTT/Info/Wafer/Port1_14.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_14.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_15.xml b/SA_LTT/Info/Wafer/Port1_15.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_15.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_16.xml b/SA_LTT/Info/Wafer/Port1_16.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_16.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_17.xml b/SA_LTT/Info/Wafer/Port1_17.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_17.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_18.xml b/SA_LTT/Info/Wafer/Port1_18.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_18.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_19.xml b/SA_LTT/Info/Wafer/Port1_19.xml new file mode 100644 index 0000000..4fdeae7 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_19.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_2.xml b/SA_LTT/Info/Wafer/Port1_2.xml new file mode 100644 index 0000000..4fdeae7 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_2.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_20.xml b/SA_LTT/Info/Wafer/Port1_20.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_20.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_21.xml b/SA_LTT/Info/Wafer/Port1_21.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_21.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_22.xml b/SA_LTT/Info/Wafer/Port1_22.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_22.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_23.xml b/SA_LTT/Info/Wafer/Port1_23.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_23.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_24.xml b/SA_LTT/Info/Wafer/Port1_24.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_24.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_25.xml b/SA_LTT/Info/Wafer/Port1_25.xml new file mode 100644 index 0000000..4fdeae7 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_25.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Exist</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_3.xml b/SA_LTT/Info/Wafer/Port1_3.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_3.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_4.xml b/SA_LTT/Info/Wafer/Port1_4.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_4.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_5.xml b/SA_LTT/Info/Wafer/Port1_5.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_5.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_6.xml b/SA_LTT/Info/Wafer/Port1_6.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_6.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_7.xml b/SA_LTT/Info/Wafer/Port1_7.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_7.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_8.xml b/SA_LTT/Info/Wafer/Port1_8.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_8.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port1_9.xml b/SA_LTT/Info/Wafer/Port1_9.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port1_9.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_1.xml b/SA_LTT/Info/Wafer/Port2_1.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_1.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_10.xml b/SA_LTT/Info/Wafer/Port2_10.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_10.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_11.xml b/SA_LTT/Info/Wafer/Port2_11.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_11.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_12.xml b/SA_LTT/Info/Wafer/Port2_12.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_12.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_13.xml b/SA_LTT/Info/Wafer/Port2_13.xml new file mode 100644 index 0000000..1941375 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_13.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Leaning</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_14.xml b/SA_LTT/Info/Wafer/Port2_14.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_14.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_15.xml b/SA_LTT/Info/Wafer/Port2_15.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_15.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_16.xml b/SA_LTT/Info/Wafer/Port2_16.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_16.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_17.xml b/SA_LTT/Info/Wafer/Port2_17.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_17.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_18.xml b/SA_LTT/Info/Wafer/Port2_18.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_18.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_19.xml b/SA_LTT/Info/Wafer/Port2_19.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_19.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_2.xml b/SA_LTT/Info/Wafer/Port2_2.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_2.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_20.xml b/SA_LTT/Info/Wafer/Port2_20.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_20.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_21.xml b/SA_LTT/Info/Wafer/Port2_21.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_21.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_22.xml b/SA_LTT/Info/Wafer/Port2_22.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_22.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_23.xml b/SA_LTT/Info/Wafer/Port2_23.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_23.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_24.xml b/SA_LTT/Info/Wafer/Port2_24.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_24.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_25.xml b/SA_LTT/Info/Wafer/Port2_25.xml new file mode 100644 index 0000000..1941375 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_25.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Leaning</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_3.xml b/SA_LTT/Info/Wafer/Port2_3.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_3.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_4.xml b/SA_LTT/Info/Wafer/Port2_4.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_4.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_5.xml b/SA_LTT/Info/Wafer/Port2_5.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_5.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_6.xml b/SA_LTT/Info/Wafer/Port2_6.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_6.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_7.xml b/SA_LTT/Info/Wafer/Port2_7.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_7.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_8.xml b/SA_LTT/Info/Wafer/Port2_8.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_8.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Port2_9.xml b/SA_LTT/Info/Wafer/Port2_9.xml new file mode 100644 index 0000000..01279f0 --- /dev/null +++ b/SA_LTT/Info/Wafer/Port2_9.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <CarrierID /> + <LotID /> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/PreAligner.xml b/SA_LTT/Info/Wafer/PreAligner.xml new file mode 100644 index 0000000..119139e --- /dev/null +++ b/SA_LTT/Info/Wafer/PreAligner.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>A1</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Info/Wafer/Robot.xml b/SA_LTT/Info/Wafer/Robot.xml new file mode 100644 index 0000000..119139e --- /dev/null +++ b/SA_LTT/Info/Wafer/Robot.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <IsStatus>Empty</IsStatus> + <IsFlip>false</IsFlip> + <IsProcessComplete>false</IsProcessComplete> + <CarrierID /> + <LotID /> + <RecipeName /> + <SourceNumber>A1</SourceNumber> +</WaferInfo> \ No newline at end of file diff --git a/SA_LTT/Program/Cor1746.ct5 b/SA_LTT/Program/Cor1746.ct5 new file mode 100644 index 0000000..c461bd9 --- /dev/null +++ b/SA_LTT/Program/Cor1746.ct5 Binary files differ diff --git a/SA_LTT/Program/Cor_1to1.ct5 b/SA_LTT/Program/Cor_1to1.ct5 new file mode 100644 index 0000000..ff9626c --- /dev/null +++ b/SA_LTT/Program/Cor_1to1.ct5 Binary files differ diff --git a/SA_LTT/Program/Cor_1to1_old.ct5 b/SA_LTT/Program/Cor_1to1_old.ct5 new file mode 100644 index 0000000..7e6f31b --- /dev/null +++ b/SA_LTT/Program/Cor_1to1_old.ct5 Binary files differ diff --git a/SA_LTT/Program/EasyModbus.dll b/SA_LTT/Program/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT/Program/EasyModbus.dll Binary files differ diff --git a/SA_LTT/Program/RTC5DAT.dat b/SA_LTT/Program/RTC5DAT.dat new file mode 100644 index 0000000..057cee3 --- /dev/null +++ b/SA_LTT/Program/RTC5DAT.dat Binary files differ diff --git a/SA_LTT/Program/RTC5DLL.dll b/SA_LTT/Program/RTC5DLL.dll new file mode 100644 index 0000000..4b48cec --- /dev/null +++ b/SA_LTT/Program/RTC5DLL.dll Binary files differ diff --git a/SA_LTT/Program/RTC5DLLx64.dll b/SA_LTT/Program/RTC5DLLx64.dll new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/SA_LTT/Program/RTC5DLLx64.dll Binary files differ diff --git a/SA_LTT/Program/RTC5OUT.out b/SA_LTT/Program/RTC5OUT.out new file mode 100644 index 0000000..3d6cd41 --- /dev/null +++ b/SA_LTT/Program/RTC5OUT.out Binary files differ diff --git a/SA_LTT/Program/RTC5RBF.rbf b/SA_LTT/Program/RTC5RBF.rbf new file mode 100644 index 0000000..d0dd886 --- /dev/null +++ b/SA_LTT/Program/RTC5RBF.rbf Binary files differ diff --git a/SA_LTT/Program/Resources/Aligner.png b/SA_LTT/Program/Resources/Aligner.png new file mode 100644 index 0000000..7f6efa7 --- /dev/null +++ b/SA_LTT/Program/Resources/Aligner.png Binary files differ diff --git a/SA_LTT/Program/Resources/Chamber.png b/SA_LTT/Program/Resources/Chamber.png new file mode 100644 index 0000000..517d2c2 --- /dev/null +++ b/SA_LTT/Program/Resources/Chamber.png Binary files differ diff --git a/SA_LTT/Program/Resources/RecipeImage.PNG b/SA_LTT/Program/Resources/RecipeImage.PNG new file mode 100644 index 0000000..6e95cdd --- /dev/null +++ b/SA_LTT/Program/Resources/RecipeImage.PNG Binary files differ diff --git a/SA_LTT/Program/Resources/Robot_Arm.png b/SA_LTT/Program/Resources/Robot_Arm.png new file mode 100644 index 0000000..2a15d09 --- /dev/null +++ b/SA_LTT/Program/Resources/Robot_Arm.png Binary files differ diff --git a/SA_LTT/Program/Resources/Robot_Arm1.png b/SA_LTT/Program/Resources/Robot_Arm1.png new file mode 100644 index 0000000..d1ddc60 --- /dev/null +++ b/SA_LTT/Program/Resources/Robot_Arm1.png Binary files differ diff --git a/SA_LTT/Program/Resources/Robot_Arm2.png b/SA_LTT/Program/Resources/Robot_Arm2.png new file mode 100644 index 0000000..da4b264 --- /dev/null +++ b/SA_LTT/Program/Resources/Robot_Arm2.png Binary files differ diff --git a/SA_LTT/Program/Resources/Robot_Body.png b/SA_LTT/Program/Resources/Robot_Body.png new file mode 100644 index 0000000..327b8b9 --- /dev/null +++ b/SA_LTT/Program/Resources/Robot_Body.png Binary files differ diff --git a/SA_LTT/Program/SA_LTT.dll b/SA_LTT/Program/SA_LTT.dll new file mode 100644 index 0000000..8ea4703 --- /dev/null +++ b/SA_LTT/Program/SA_LTT.dll Binary files differ diff --git a/SA_LTT/Program/SA_LTT.pdb b/SA_LTT/Program/SA_LTT.pdb new file mode 100644 index 0000000..b10c73e --- /dev/null +++ b/SA_LTT/Program/SA_LTT.pdb Binary files differ diff --git a/SA_LTT/Program/SA_LTT_UI.exe b/SA_LTT/Program/SA_LTT_UI.exe new file mode 100644 index 0000000..cac3e47 --- /dev/null +++ b/SA_LTT/Program/SA_LTT_UI.exe Binary files differ diff --git a/SA_LTT/Program/SA_LTT_UI.exe.config b/SA_LTT/Program/SA_LTT_UI.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program/SA_LTT_UI.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program/SA_LTT_UI.pdb b/SA_LTT/Program/SA_LTT_UI.pdb new file mode 100644 index 0000000..ea57a5b --- /dev/null +++ b/SA_LTT/Program/SA_LTT_UI.pdb Binary files differ diff --git a/SA_LTT/Program/SA_LTT_UI.vshost.exe b/SA_LTT/Program/SA_LTT_UI.vshost.exe new file mode 100644 index 0000000..681ab77 --- /dev/null +++ b/SA_LTT/Program/SA_LTT_UI.vshost.exe Binary files differ diff --git a/SA_LTT/Program/SA_LTT_UI.vshost.exe.config b/SA_LTT/Program/SA_LTT_UI.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program/SA_LTT_UI.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program/SA_LTT_UI.vshost.exe.manifest b/SA_LTT/Program/SA_LTT_UI.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program/SA_LTT_UI.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program/log4net.dll b/SA_LTT/Program/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT/Program/log4net.dll Binary files differ diff --git a/SA_LTT/Program/padDLLBW.dll b/SA_LTT/Program/padDLLBW.dll new file mode 100644 index 0000000..a4ff496 --- /dev/null +++ b/SA_LTT/Program/padDLLBW.dll Binary files differ diff --git a/SA_LTT/Program/pp.vshost.exe.config b/SA_LTT/Program/pp.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program/pp.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program/pp.vshost.exe.manifest b/SA_LTT/Program/pp.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program/pp.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_230508/Cor1746.ct5 b/SA_LTT/Program_230508/Cor1746.ct5 new file mode 100644 index 0000000..c461bd9 --- /dev/null +++ b/SA_LTT/Program_230508/Cor1746.ct5 Binary files differ diff --git a/SA_LTT/Program_230508/Cor_1to1.ct5 b/SA_LTT/Program_230508/Cor_1to1.ct5 new file mode 100644 index 0000000..ff9626c --- /dev/null +++ b/SA_LTT/Program_230508/Cor_1to1.ct5 Binary files differ diff --git a/SA_LTT/Program_230508/Cor_1to1_old.ct5 b/SA_LTT/Program_230508/Cor_1to1_old.ct5 new file mode 100644 index 0000000..7e6f31b --- /dev/null +++ b/SA_LTT/Program_230508/Cor_1to1_old.ct5 Binary files differ diff --git a/SA_LTT/Program_230508/EasyModbus.dll b/SA_LTT/Program_230508/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT/Program_230508/EasyModbus.dll Binary files differ diff --git a/SA_LTT/Program_230508/RTC5DAT.dat b/SA_LTT/Program_230508/RTC5DAT.dat new file mode 100644 index 0000000..057cee3 --- /dev/null +++ b/SA_LTT/Program_230508/RTC5DAT.dat Binary files differ diff --git a/SA_LTT/Program_230508/RTC5DLL.dll b/SA_LTT/Program_230508/RTC5DLL.dll new file mode 100644 index 0000000..4b48cec --- /dev/null +++ b/SA_LTT/Program_230508/RTC5DLL.dll Binary files differ diff --git a/SA_LTT/Program_230508/RTC5DLLx64.dll b/SA_LTT/Program_230508/RTC5DLLx64.dll new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/SA_LTT/Program_230508/RTC5DLLx64.dll Binary files differ diff --git a/SA_LTT/Program_230508/RTC5OUT.out b/SA_LTT/Program_230508/RTC5OUT.out new file mode 100644 index 0000000..3d6cd41 --- /dev/null +++ b/SA_LTT/Program_230508/RTC5OUT.out Binary files differ diff --git a/SA_LTT/Program_230508/RTC5RBF.rbf b/SA_LTT/Program_230508/RTC5RBF.rbf new file mode 100644 index 0000000..d0dd886 --- /dev/null +++ b/SA_LTT/Program_230508/RTC5RBF.rbf Binary files differ diff --git a/SA_LTT/Program_230508/Resources/Aligner.png b/SA_LTT/Program_230508/Resources/Aligner.png new file mode 100644 index 0000000..7f6efa7 --- /dev/null +++ b/SA_LTT/Program_230508/Resources/Aligner.png Binary files differ diff --git a/SA_LTT/Program_230508/Resources/Chamber.png b/SA_LTT/Program_230508/Resources/Chamber.png new file mode 100644 index 0000000..517d2c2 --- /dev/null +++ b/SA_LTT/Program_230508/Resources/Chamber.png Binary files differ diff --git a/SA_LTT/Program_230508/Resources/RecipeImage.PNG b/SA_LTT/Program_230508/Resources/RecipeImage.PNG new file mode 100644 index 0000000..6e95cdd --- /dev/null +++ b/SA_LTT/Program_230508/Resources/RecipeImage.PNG Binary files differ diff --git a/SA_LTT/Program_230508/Resources/Robot_Arm.png b/SA_LTT/Program_230508/Resources/Robot_Arm.png new file mode 100644 index 0000000..2a15d09 --- /dev/null +++ b/SA_LTT/Program_230508/Resources/Robot_Arm.png Binary files differ diff --git a/SA_LTT/Program_230508/Resources/Robot_Arm1.png b/SA_LTT/Program_230508/Resources/Robot_Arm1.png new file mode 100644 index 0000000..d1ddc60 --- /dev/null +++ b/SA_LTT/Program_230508/Resources/Robot_Arm1.png Binary files differ diff --git a/SA_LTT/Program_230508/Resources/Robot_Arm2.png b/SA_LTT/Program_230508/Resources/Robot_Arm2.png new file mode 100644 index 0000000..da4b264 --- /dev/null +++ b/SA_LTT/Program_230508/Resources/Robot_Arm2.png Binary files differ diff --git a/SA_LTT/Program_230508/Resources/Robot_Body.png b/SA_LTT/Program_230508/Resources/Robot_Body.png new file mode 100644 index 0000000..327b8b9 --- /dev/null +++ b/SA_LTT/Program_230508/Resources/Robot_Body.png Binary files differ diff --git a/SA_LTT/Program_230508/SA_LTT.dll b/SA_LTT/Program_230508/SA_LTT.dll new file mode 100644 index 0000000..f3648e0 --- /dev/null +++ b/SA_LTT/Program_230508/SA_LTT.dll Binary files differ diff --git a/SA_LTT/Program_230508/SA_LTT.pdb b/SA_LTT/Program_230508/SA_LTT.pdb new file mode 100644 index 0000000..318537b --- /dev/null +++ b/SA_LTT/Program_230508/SA_LTT.pdb Binary files differ diff --git a/SA_LTT/Program_230508/SA_LTT_UI.exe b/SA_LTT/Program_230508/SA_LTT_UI.exe new file mode 100644 index 0000000..cd900b2 --- /dev/null +++ b/SA_LTT/Program_230508/SA_LTT_UI.exe Binary files differ diff --git a/SA_LTT/Program_230508/SA_LTT_UI.exe.config b/SA_LTT/Program_230508/SA_LTT_UI.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_230508/SA_LTT_UI.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_230508/SA_LTT_UI.pdb b/SA_LTT/Program_230508/SA_LTT_UI.pdb new file mode 100644 index 0000000..618166e --- /dev/null +++ b/SA_LTT/Program_230508/SA_LTT_UI.pdb Binary files differ diff --git a/SA_LTT/Program_230508/SA_LTT_UI.vshost.exe b/SA_LTT/Program_230508/SA_LTT_UI.vshost.exe new file mode 100644 index 0000000..681ab77 --- /dev/null +++ b/SA_LTT/Program_230508/SA_LTT_UI.vshost.exe Binary files differ diff --git a/SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.config b/SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.manifest b/SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_230508/log4net.dll b/SA_LTT/Program_230508/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT/Program_230508/log4net.dll Binary files differ diff --git a/SA_LTT/Program_230508/padDLLBW.dll b/SA_LTT/Program_230508/padDLLBW.dll new file mode 100644 index 0000000..a4ff496 --- /dev/null +++ b/SA_LTT/Program_230508/padDLLBW.dll Binary files differ diff --git a/SA_LTT/Program_230508/pp.vshost.exe.config b/SA_LTT/Program_230508/pp.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_230508/pp.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_230508/pp.vshost.exe.manifest b/SA_LTT/Program_230508/pp.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_230508/pp.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_Back1213/Cor1746.ct5 b/SA_LTT/Program_Back1213/Cor1746.ct5 new file mode 100644 index 0000000..c461bd9 --- /dev/null +++ b/SA_LTT/Program_Back1213/Cor1746.ct5 Binary files differ diff --git a/SA_LTT/Program_Back1213/Cor_1to1.ct5 b/SA_LTT/Program_Back1213/Cor_1to1.ct5 new file mode 100644 index 0000000..ff9626c --- /dev/null +++ b/SA_LTT/Program_Back1213/Cor_1to1.ct5 Binary files differ diff --git a/SA_LTT/Program_Back1213/Cor_1to1_old.ct5 b/SA_LTT/Program_Back1213/Cor_1to1_old.ct5 new file mode 100644 index 0000000..7e6f31b --- /dev/null +++ b/SA_LTT/Program_Back1213/Cor_1to1_old.ct5 Binary files differ diff --git a/SA_LTT/Program_Back1213/EasyModbus.dll b/SA_LTT/Program_Back1213/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT/Program_Back1213/EasyModbus.dll Binary files differ diff --git a/SA_LTT/Program_Back1213/RTC5DAT.dat b/SA_LTT/Program_Back1213/RTC5DAT.dat new file mode 100644 index 0000000..057cee3 --- /dev/null +++ b/SA_LTT/Program_Back1213/RTC5DAT.dat Binary files differ diff --git a/SA_LTT/Program_Back1213/RTC5DLL.dll b/SA_LTT/Program_Back1213/RTC5DLL.dll new file mode 100644 index 0000000..4b48cec --- /dev/null +++ b/SA_LTT/Program_Back1213/RTC5DLL.dll Binary files differ diff --git a/SA_LTT/Program_Back1213/RTC5DLLx64.dll b/SA_LTT/Program_Back1213/RTC5DLLx64.dll new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/SA_LTT/Program_Back1213/RTC5DLLx64.dll Binary files differ diff --git a/SA_LTT/Program_Back1213/RTC5OUT.out b/SA_LTT/Program_Back1213/RTC5OUT.out new file mode 100644 index 0000000..3d6cd41 --- /dev/null +++ b/SA_LTT/Program_Back1213/RTC5OUT.out Binary files differ diff --git a/SA_LTT/Program_Back1213/RTC5RBF.rbf b/SA_LTT/Program_Back1213/RTC5RBF.rbf new file mode 100644 index 0000000..d0dd886 --- /dev/null +++ b/SA_LTT/Program_Back1213/RTC5RBF.rbf Binary files differ diff --git a/SA_LTT/Program_Back1213/Resources/Aligner.png b/SA_LTT/Program_Back1213/Resources/Aligner.png new file mode 100644 index 0000000..7f6efa7 --- /dev/null +++ b/SA_LTT/Program_Back1213/Resources/Aligner.png Binary files differ diff --git a/SA_LTT/Program_Back1213/Resources/Chamber.png b/SA_LTT/Program_Back1213/Resources/Chamber.png new file mode 100644 index 0000000..517d2c2 --- /dev/null +++ b/SA_LTT/Program_Back1213/Resources/Chamber.png Binary files differ diff --git a/SA_LTT/Program_Back1213/Resources/RecipeImage.PNG b/SA_LTT/Program_Back1213/Resources/RecipeImage.PNG new file mode 100644 index 0000000..6e95cdd --- /dev/null +++ b/SA_LTT/Program_Back1213/Resources/RecipeImage.PNG Binary files differ diff --git a/SA_LTT/Program_Back1213/Resources/Robot_Arm.png b/SA_LTT/Program_Back1213/Resources/Robot_Arm.png new file mode 100644 index 0000000..2a15d09 --- /dev/null +++ b/SA_LTT/Program_Back1213/Resources/Robot_Arm.png Binary files differ diff --git a/SA_LTT/Program_Back1213/Resources/Robot_Arm1.png b/SA_LTT/Program_Back1213/Resources/Robot_Arm1.png new file mode 100644 index 0000000..d1ddc60 --- /dev/null +++ b/SA_LTT/Program_Back1213/Resources/Robot_Arm1.png Binary files differ diff --git a/SA_LTT/Program_Back1213/Resources/Robot_Arm2.png b/SA_LTT/Program_Back1213/Resources/Robot_Arm2.png new file mode 100644 index 0000000..da4b264 --- /dev/null +++ b/SA_LTT/Program_Back1213/Resources/Robot_Arm2.png Binary files differ diff --git a/SA_LTT/Program_Back1213/Resources/Robot_Body.png b/SA_LTT/Program_Back1213/Resources/Robot_Body.png new file mode 100644 index 0000000..327b8b9 --- /dev/null +++ b/SA_LTT/Program_Back1213/Resources/Robot_Body.png Binary files differ diff --git a/SA_LTT/Program_Back1213/SA_LTT.dll b/SA_LTT/Program_Back1213/SA_LTT.dll new file mode 100644 index 0000000..bc058a4 --- /dev/null +++ b/SA_LTT/Program_Back1213/SA_LTT.dll Binary files differ diff --git a/SA_LTT/Program_Back1213/SA_LTT.pdb b/SA_LTT/Program_Back1213/SA_LTT.pdb new file mode 100644 index 0000000..46701ec --- /dev/null +++ b/SA_LTT/Program_Back1213/SA_LTT.pdb Binary files differ diff --git a/SA_LTT/Program_Back1213/SA_LTT_UI.exe b/SA_LTT/Program_Back1213/SA_LTT_UI.exe new file mode 100644 index 0000000..4992f2f --- /dev/null +++ b/SA_LTT/Program_Back1213/SA_LTT_UI.exe Binary files differ diff --git a/SA_LTT/Program_Back1213/SA_LTT_UI.exe.config b/SA_LTT/Program_Back1213/SA_LTT_UI.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_Back1213/SA_LTT_UI.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_Back1213/SA_LTT_UI.pdb b/SA_LTT/Program_Back1213/SA_LTT_UI.pdb new file mode 100644 index 0000000..f5ce3c8 --- /dev/null +++ b/SA_LTT/Program_Back1213/SA_LTT_UI.pdb Binary files differ diff --git a/SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe b/SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe new file mode 100644 index 0000000..681ab77 --- /dev/null +++ b/SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe Binary files differ diff --git a/SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.config b/SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.manifest b/SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_Back1213/log4net.dll b/SA_LTT/Program_Back1213/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT/Program_Back1213/log4net.dll Binary files differ diff --git a/SA_LTT/Program_Back1213/padDLLBW.dll b/SA_LTT/Program_Back1213/padDLLBW.dll new file mode 100644 index 0000000..a4ff496 --- /dev/null +++ b/SA_LTT/Program_Back1213/padDLLBW.dll Binary files differ diff --git a/SA_LTT/Program_Back230214/Cor1746.ct5 b/SA_LTT/Program_Back230214/Cor1746.ct5 new file mode 100644 index 0000000..c461bd9 --- /dev/null +++ b/SA_LTT/Program_Back230214/Cor1746.ct5 Binary files differ diff --git a/SA_LTT/Program_Back230214/Cor_1to1.ct5 b/SA_LTT/Program_Back230214/Cor_1to1.ct5 new file mode 100644 index 0000000..ff9626c --- /dev/null +++ b/SA_LTT/Program_Back230214/Cor_1to1.ct5 Binary files differ diff --git a/SA_LTT/Program_Back230214/Cor_1to1_old.ct5 b/SA_LTT/Program_Back230214/Cor_1to1_old.ct5 new file mode 100644 index 0000000..7e6f31b --- /dev/null +++ b/SA_LTT/Program_Back230214/Cor_1to1_old.ct5 Binary files differ diff --git a/SA_LTT/Program_Back230214/EasyModbus.dll b/SA_LTT/Program_Back230214/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT/Program_Back230214/EasyModbus.dll Binary files differ diff --git a/SA_LTT/Program_Back230214/RTC5DAT.dat b/SA_LTT/Program_Back230214/RTC5DAT.dat new file mode 100644 index 0000000..057cee3 --- /dev/null +++ b/SA_LTT/Program_Back230214/RTC5DAT.dat Binary files differ diff --git a/SA_LTT/Program_Back230214/RTC5DLL.dll b/SA_LTT/Program_Back230214/RTC5DLL.dll new file mode 100644 index 0000000..4b48cec --- /dev/null +++ b/SA_LTT/Program_Back230214/RTC5DLL.dll Binary files differ diff --git a/SA_LTT/Program_Back230214/RTC5DLLx64.dll b/SA_LTT/Program_Back230214/RTC5DLLx64.dll new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/SA_LTT/Program_Back230214/RTC5DLLx64.dll Binary files differ diff --git a/SA_LTT/Program_Back230214/RTC5OUT.out b/SA_LTT/Program_Back230214/RTC5OUT.out new file mode 100644 index 0000000..3d6cd41 --- /dev/null +++ b/SA_LTT/Program_Back230214/RTC5OUT.out Binary files differ diff --git a/SA_LTT/Program_Back230214/RTC5RBF.rbf b/SA_LTT/Program_Back230214/RTC5RBF.rbf new file mode 100644 index 0000000..d0dd886 --- /dev/null +++ b/SA_LTT/Program_Back230214/RTC5RBF.rbf Binary files differ diff --git a/SA_LTT/Program_Back230214/Resources/Aligner.png b/SA_LTT/Program_Back230214/Resources/Aligner.png new file mode 100644 index 0000000..7f6efa7 --- /dev/null +++ b/SA_LTT/Program_Back230214/Resources/Aligner.png Binary files differ diff --git a/SA_LTT/Program_Back230214/Resources/Chamber.png b/SA_LTT/Program_Back230214/Resources/Chamber.png new file mode 100644 index 0000000..517d2c2 --- /dev/null +++ b/SA_LTT/Program_Back230214/Resources/Chamber.png Binary files differ diff --git a/SA_LTT/Program_Back230214/Resources/RecipeImage.PNG b/SA_LTT/Program_Back230214/Resources/RecipeImage.PNG new file mode 100644 index 0000000..6e95cdd --- /dev/null +++ b/SA_LTT/Program_Back230214/Resources/RecipeImage.PNG Binary files differ diff --git a/SA_LTT/Program_Back230214/Resources/Robot_Arm.png b/SA_LTT/Program_Back230214/Resources/Robot_Arm.png new file mode 100644 index 0000000..2a15d09 --- /dev/null +++ b/SA_LTT/Program_Back230214/Resources/Robot_Arm.png Binary files differ diff --git a/SA_LTT/Program_Back230214/Resources/Robot_Arm1.png b/SA_LTT/Program_Back230214/Resources/Robot_Arm1.png new file mode 100644 index 0000000..d1ddc60 --- /dev/null +++ b/SA_LTT/Program_Back230214/Resources/Robot_Arm1.png Binary files differ diff --git a/SA_LTT/Program_Back230214/Resources/Robot_Arm2.png b/SA_LTT/Program_Back230214/Resources/Robot_Arm2.png new file mode 100644 index 0000000..da4b264 --- /dev/null +++ b/SA_LTT/Program_Back230214/Resources/Robot_Arm2.png Binary files differ diff --git a/SA_LTT/Program_Back230214/Resources/Robot_Body.png b/SA_LTT/Program_Back230214/Resources/Robot_Body.png new file mode 100644 index 0000000..327b8b9 --- /dev/null +++ b/SA_LTT/Program_Back230214/Resources/Robot_Body.png Binary files differ diff --git a/SA_LTT/Program_Back230214/SA_LTT.dll b/SA_LTT/Program_Back230214/SA_LTT.dll new file mode 100644 index 0000000..0e1cf38 --- /dev/null +++ b/SA_LTT/Program_Back230214/SA_LTT.dll Binary files differ diff --git a/SA_LTT/Program_Back230214/SA_LTT.pdb b/SA_LTT/Program_Back230214/SA_LTT.pdb new file mode 100644 index 0000000..426f913 --- /dev/null +++ b/SA_LTT/Program_Back230214/SA_LTT.pdb Binary files differ diff --git a/SA_LTT/Program_Back230214/SA_LTT_UI.exe b/SA_LTT/Program_Back230214/SA_LTT_UI.exe new file mode 100644 index 0000000..925c905 --- /dev/null +++ b/SA_LTT/Program_Back230214/SA_LTT_UI.exe Binary files differ diff --git a/SA_LTT/Program_Back230214/SA_LTT_UI.exe.config b/SA_LTT/Program_Back230214/SA_LTT_UI.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_Back230214/SA_LTT_UI.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_Back230214/SA_LTT_UI.pdb b/SA_LTT/Program_Back230214/SA_LTT_UI.pdb new file mode 100644 index 0000000..96dc838 --- /dev/null +++ b/SA_LTT/Program_Back230214/SA_LTT_UI.pdb Binary files differ diff --git a/SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe b/SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe new file mode 100644 index 0000000..681ab77 --- /dev/null +++ b/SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe Binary files differ diff --git a/SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.config b/SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.manifest b/SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_Back230214/log4net.dll b/SA_LTT/Program_Back230214/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT/Program_Back230214/log4net.dll Binary files differ diff --git a/SA_LTT/Program_Back230214/padDLLBW.dll b/SA_LTT/Program_Back230214/padDLLBW.dll new file mode 100644 index 0000000..a4ff496 --- /dev/null +++ b/SA_LTT/Program_Back230214/padDLLBW.dll Binary files differ diff --git a/SA_LTT/Program_Back230214/pp.vshost.exe.config b/SA_LTT/Program_Back230214/pp.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_Back230214/pp.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_Back230214/pp.vshost.exe.manifest b/SA_LTT/Program_Back230214/pp.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_Back230214/pp.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_Usb/Cor1746.ct5 b/SA_LTT/Program_Usb/Cor1746.ct5 new file mode 100644 index 0000000..c461bd9 --- /dev/null +++ b/SA_LTT/Program_Usb/Cor1746.ct5 Binary files differ diff --git a/SA_LTT/Program_Usb/Cor_1to1.ct5 b/SA_LTT/Program_Usb/Cor_1to1.ct5 new file mode 100644 index 0000000..ff9626c --- /dev/null +++ b/SA_LTT/Program_Usb/Cor_1to1.ct5 Binary files differ diff --git a/SA_LTT/Program_Usb/Cor_1to1_old.ct5 b/SA_LTT/Program_Usb/Cor_1to1_old.ct5 new file mode 100644 index 0000000..7e6f31b --- /dev/null +++ b/SA_LTT/Program_Usb/Cor_1to1_old.ct5 Binary files differ diff --git a/SA_LTT/Program_Usb/EasyModbus.dll b/SA_LTT/Program_Usb/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT/Program_Usb/EasyModbus.dll Binary files differ diff --git a/SA_LTT/Program_Usb/RTC5DAT.dat b/SA_LTT/Program_Usb/RTC5DAT.dat new file mode 100644 index 0000000..057cee3 --- /dev/null +++ b/SA_LTT/Program_Usb/RTC5DAT.dat Binary files differ diff --git a/SA_LTT/Program_Usb/RTC5DLL.dll b/SA_LTT/Program_Usb/RTC5DLL.dll new file mode 100644 index 0000000..4b48cec --- /dev/null +++ b/SA_LTT/Program_Usb/RTC5DLL.dll Binary files differ diff --git a/SA_LTT/Program_Usb/RTC5DLLx64.dll b/SA_LTT/Program_Usb/RTC5DLLx64.dll new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/SA_LTT/Program_Usb/RTC5DLLx64.dll Binary files differ diff --git a/SA_LTT/Program_Usb/RTC5OUT.out b/SA_LTT/Program_Usb/RTC5OUT.out new file mode 100644 index 0000000..3d6cd41 --- /dev/null +++ b/SA_LTT/Program_Usb/RTC5OUT.out Binary files differ diff --git a/SA_LTT/Program_Usb/RTC5RBF.rbf b/SA_LTT/Program_Usb/RTC5RBF.rbf new file mode 100644 index 0000000..d0dd886 --- /dev/null +++ b/SA_LTT/Program_Usb/RTC5RBF.rbf Binary files differ diff --git a/SA_LTT/Program_Usb/Resources/Aligner.png b/SA_LTT/Program_Usb/Resources/Aligner.png new file mode 100644 index 0000000..7f6efa7 --- /dev/null +++ b/SA_LTT/Program_Usb/Resources/Aligner.png Binary files differ diff --git a/SA_LTT/Program_Usb/Resources/Chamber.png b/SA_LTT/Program_Usb/Resources/Chamber.png new file mode 100644 index 0000000..517d2c2 --- /dev/null +++ b/SA_LTT/Program_Usb/Resources/Chamber.png Binary files differ diff --git a/SA_LTT/Program_Usb/Resources/RecipeImage.PNG b/SA_LTT/Program_Usb/Resources/RecipeImage.PNG new file mode 100644 index 0000000..6e95cdd --- /dev/null +++ b/SA_LTT/Program_Usb/Resources/RecipeImage.PNG Binary files differ diff --git a/SA_LTT/Program_Usb/Resources/Robot_Arm.png b/SA_LTT/Program_Usb/Resources/Robot_Arm.png new file mode 100644 index 0000000..2a15d09 --- /dev/null +++ b/SA_LTT/Program_Usb/Resources/Robot_Arm.png Binary files differ diff --git a/SA_LTT/Program_Usb/Resources/Robot_Arm1.png b/SA_LTT/Program_Usb/Resources/Robot_Arm1.png new file mode 100644 index 0000000..d1ddc60 --- /dev/null +++ b/SA_LTT/Program_Usb/Resources/Robot_Arm1.png Binary files differ diff --git a/SA_LTT/Program_Usb/Resources/Robot_Arm2.png b/SA_LTT/Program_Usb/Resources/Robot_Arm2.png new file mode 100644 index 0000000..da4b264 --- /dev/null +++ b/SA_LTT/Program_Usb/Resources/Robot_Arm2.png Binary files differ diff --git a/SA_LTT/Program_Usb/Resources/Robot_Body.png b/SA_LTT/Program_Usb/Resources/Robot_Body.png new file mode 100644 index 0000000..327b8b9 --- /dev/null +++ b/SA_LTT/Program_Usb/Resources/Robot_Body.png Binary files differ diff --git a/SA_LTT/Program_Usb/SA_LTT.dll b/SA_LTT/Program_Usb/SA_LTT.dll new file mode 100644 index 0000000..962773d --- /dev/null +++ b/SA_LTT/Program_Usb/SA_LTT.dll Binary files differ diff --git a/SA_LTT/Program_Usb/SA_LTT.pdb b/SA_LTT/Program_Usb/SA_LTT.pdb new file mode 100644 index 0000000..bcb24b6 --- /dev/null +++ b/SA_LTT/Program_Usb/SA_LTT.pdb Binary files differ diff --git a/SA_LTT/Program_Usb/SA_LTT_UI.exe b/SA_LTT/Program_Usb/SA_LTT_UI.exe new file mode 100644 index 0000000..c3b4e78 --- /dev/null +++ b/SA_LTT/Program_Usb/SA_LTT_UI.exe Binary files differ diff --git a/SA_LTT/Program_Usb/SA_LTT_UI.exe.config b/SA_LTT/Program_Usb/SA_LTT_UI.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_Usb/SA_LTT_UI.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_Usb/SA_LTT_UI.pdb b/SA_LTT/Program_Usb/SA_LTT_UI.pdb new file mode 100644 index 0000000..417eb61 --- /dev/null +++ b/SA_LTT/Program_Usb/SA_LTT_UI.pdb Binary files differ diff --git a/SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe b/SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe new file mode 100644 index 0000000..681ab77 --- /dev/null +++ b/SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe Binary files differ diff --git a/SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.config b/SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.manifest b/SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_Usb/log4net.dll b/SA_LTT/Program_Usb/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT/Program_Usb/log4net.dll Binary files differ diff --git a/SA_LTT/Program_Usb/padDLLBW.dll b/SA_LTT/Program_Usb/padDLLBW.dll new file mode 100644 index 0000000..a4ff496 --- /dev/null +++ b/SA_LTT/Program_Usb/padDLLBW.dll Binary files differ diff --git a/SA_LTT/Program_Usb/pp.vshost.exe.config b/SA_LTT/Program_Usb/pp.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_Usb/pp.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_Usb/pp.vshost.exe.manifest b/SA_LTT/Program_Usb/pp.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_Usb/pp.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_back230220/Cor1746.ct5 b/SA_LTT/Program_back230220/Cor1746.ct5 new file mode 100644 index 0000000..c461bd9 --- /dev/null +++ b/SA_LTT/Program_back230220/Cor1746.ct5 Binary files differ diff --git a/SA_LTT/Program_back230220/Cor_1to1.ct5 b/SA_LTT/Program_back230220/Cor_1to1.ct5 new file mode 100644 index 0000000..ff9626c --- /dev/null +++ b/SA_LTT/Program_back230220/Cor_1to1.ct5 Binary files differ diff --git a/SA_LTT/Program_back230220/Cor_1to1_old.ct5 b/SA_LTT/Program_back230220/Cor_1to1_old.ct5 new file mode 100644 index 0000000..7e6f31b --- /dev/null +++ b/SA_LTT/Program_back230220/Cor_1to1_old.ct5 Binary files differ diff --git a/SA_LTT/Program_back230220/EasyModbus.dll b/SA_LTT/Program_back230220/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT/Program_back230220/EasyModbus.dll Binary files differ diff --git a/SA_LTT/Program_back230220/RTC5DAT.dat b/SA_LTT/Program_back230220/RTC5DAT.dat new file mode 100644 index 0000000..057cee3 --- /dev/null +++ b/SA_LTT/Program_back230220/RTC5DAT.dat Binary files differ diff --git a/SA_LTT/Program_back230220/RTC5DLL.dll b/SA_LTT/Program_back230220/RTC5DLL.dll new file mode 100644 index 0000000..4b48cec --- /dev/null +++ b/SA_LTT/Program_back230220/RTC5DLL.dll Binary files differ diff --git a/SA_LTT/Program_back230220/RTC5DLLx64.dll b/SA_LTT/Program_back230220/RTC5DLLx64.dll new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/SA_LTT/Program_back230220/RTC5DLLx64.dll Binary files differ diff --git a/SA_LTT/Program_back230220/RTC5OUT.out b/SA_LTT/Program_back230220/RTC5OUT.out new file mode 100644 index 0000000..3d6cd41 --- /dev/null +++ b/SA_LTT/Program_back230220/RTC5OUT.out Binary files differ diff --git a/SA_LTT/Program_back230220/RTC5RBF.rbf b/SA_LTT/Program_back230220/RTC5RBF.rbf new file mode 100644 index 0000000..d0dd886 --- /dev/null +++ b/SA_LTT/Program_back230220/RTC5RBF.rbf Binary files differ diff --git a/SA_LTT/Program_back230220/Resources/Aligner.png b/SA_LTT/Program_back230220/Resources/Aligner.png new file mode 100644 index 0000000..7f6efa7 --- /dev/null +++ b/SA_LTT/Program_back230220/Resources/Aligner.png Binary files differ diff --git a/SA_LTT/Program_back230220/Resources/Chamber.png b/SA_LTT/Program_back230220/Resources/Chamber.png new file mode 100644 index 0000000..517d2c2 --- /dev/null +++ b/SA_LTT/Program_back230220/Resources/Chamber.png Binary files differ diff --git a/SA_LTT/Program_back230220/Resources/RecipeImage.PNG b/SA_LTT/Program_back230220/Resources/RecipeImage.PNG new file mode 100644 index 0000000..6e95cdd --- /dev/null +++ b/SA_LTT/Program_back230220/Resources/RecipeImage.PNG Binary files differ diff --git a/SA_LTT/Program_back230220/Resources/Robot_Arm.png b/SA_LTT/Program_back230220/Resources/Robot_Arm.png new file mode 100644 index 0000000..2a15d09 --- /dev/null +++ b/SA_LTT/Program_back230220/Resources/Robot_Arm.png Binary files differ diff --git a/SA_LTT/Program_back230220/Resources/Robot_Arm1.png b/SA_LTT/Program_back230220/Resources/Robot_Arm1.png new file mode 100644 index 0000000..d1ddc60 --- /dev/null +++ b/SA_LTT/Program_back230220/Resources/Robot_Arm1.png Binary files differ diff --git a/SA_LTT/Program_back230220/Resources/Robot_Arm2.png b/SA_LTT/Program_back230220/Resources/Robot_Arm2.png new file mode 100644 index 0000000..da4b264 --- /dev/null +++ b/SA_LTT/Program_back230220/Resources/Robot_Arm2.png Binary files differ diff --git a/SA_LTT/Program_back230220/Resources/Robot_Body.png b/SA_LTT/Program_back230220/Resources/Robot_Body.png new file mode 100644 index 0000000..327b8b9 --- /dev/null +++ b/SA_LTT/Program_back230220/Resources/Robot_Body.png Binary files differ diff --git a/SA_LTT/Program_back230220/SA_LTT.dll b/SA_LTT/Program_back230220/SA_LTT.dll new file mode 100644 index 0000000..462cdb4 --- /dev/null +++ b/SA_LTT/Program_back230220/SA_LTT.dll Binary files differ diff --git a/SA_LTT/Program_back230220/SA_LTT.pdb b/SA_LTT/Program_back230220/SA_LTT.pdb new file mode 100644 index 0000000..61a0c34 --- /dev/null +++ b/SA_LTT/Program_back230220/SA_LTT.pdb Binary files differ diff --git a/SA_LTT/Program_back230220/SA_LTT_UI.exe b/SA_LTT/Program_back230220/SA_LTT_UI.exe new file mode 100644 index 0000000..8289e90 --- /dev/null +++ b/SA_LTT/Program_back230220/SA_LTT_UI.exe Binary files differ diff --git a/SA_LTT/Program_back230220/SA_LTT_UI.exe.config b/SA_LTT/Program_back230220/SA_LTT_UI.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_back230220/SA_LTT_UI.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_back230220/SA_LTT_UI.pdb b/SA_LTT/Program_back230220/SA_LTT_UI.pdb new file mode 100644 index 0000000..00bb7d7 --- /dev/null +++ b/SA_LTT/Program_back230220/SA_LTT_UI.pdb Binary files differ diff --git a/SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe b/SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe new file mode 100644 index 0000000..681ab77 --- /dev/null +++ b/SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe Binary files differ diff --git a/SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.config b/SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.manifest b/SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_back230220/log4net.dll b/SA_LTT/Program_back230220/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT/Program_back230220/log4net.dll Binary files differ diff --git a/SA_LTT/Program_back230220/padDLLBW.dll b/SA_LTT/Program_back230220/padDLLBW.dll new file mode 100644 index 0000000..a4ff496 --- /dev/null +++ b/SA_LTT/Program_back230220/padDLLBW.dll Binary files differ diff --git a/SA_LTT/Program_back230220/pp.vshost.exe.config b/SA_LTT/Program_back230220/pp.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_back230220/pp.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_back230220/pp.vshost.exe.manifest b/SA_LTT/Program_back230220/pp.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_back230220/pp.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_back230330/Cor1746.ct5 b/SA_LTT/Program_back230330/Cor1746.ct5 new file mode 100644 index 0000000..c461bd9 --- /dev/null +++ b/SA_LTT/Program_back230330/Cor1746.ct5 Binary files differ diff --git a/SA_LTT/Program_back230330/Cor_1to1.ct5 b/SA_LTT/Program_back230330/Cor_1to1.ct5 new file mode 100644 index 0000000..ff9626c --- /dev/null +++ b/SA_LTT/Program_back230330/Cor_1to1.ct5 Binary files differ diff --git a/SA_LTT/Program_back230330/Cor_1to1_old.ct5 b/SA_LTT/Program_back230330/Cor_1to1_old.ct5 new file mode 100644 index 0000000..7e6f31b --- /dev/null +++ b/SA_LTT/Program_back230330/Cor_1to1_old.ct5 Binary files differ diff --git a/SA_LTT/Program_back230330/EasyModbus.dll b/SA_LTT/Program_back230330/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT/Program_back230330/EasyModbus.dll Binary files differ diff --git a/SA_LTT/Program_back230330/RTC5DAT.dat b/SA_LTT/Program_back230330/RTC5DAT.dat new file mode 100644 index 0000000..057cee3 --- /dev/null +++ b/SA_LTT/Program_back230330/RTC5DAT.dat Binary files differ diff --git a/SA_LTT/Program_back230330/RTC5DLL.dll b/SA_LTT/Program_back230330/RTC5DLL.dll new file mode 100644 index 0000000..4b48cec --- /dev/null +++ b/SA_LTT/Program_back230330/RTC5DLL.dll Binary files differ diff --git a/SA_LTT/Program_back230330/RTC5DLLx64.dll b/SA_LTT/Program_back230330/RTC5DLLx64.dll new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/SA_LTT/Program_back230330/RTC5DLLx64.dll Binary files differ diff --git a/SA_LTT/Program_back230330/RTC5OUT.out b/SA_LTT/Program_back230330/RTC5OUT.out new file mode 100644 index 0000000..3d6cd41 --- /dev/null +++ b/SA_LTT/Program_back230330/RTC5OUT.out Binary files differ diff --git a/SA_LTT/Program_back230330/RTC5RBF.rbf b/SA_LTT/Program_back230330/RTC5RBF.rbf new file mode 100644 index 0000000..d0dd886 --- /dev/null +++ b/SA_LTT/Program_back230330/RTC5RBF.rbf Binary files differ diff --git a/SA_LTT/Program_back230330/Resources/Aligner.png b/SA_LTT/Program_back230330/Resources/Aligner.png new file mode 100644 index 0000000..7f6efa7 --- /dev/null +++ b/SA_LTT/Program_back230330/Resources/Aligner.png Binary files differ diff --git a/SA_LTT/Program_back230330/Resources/Chamber.png b/SA_LTT/Program_back230330/Resources/Chamber.png new file mode 100644 index 0000000..517d2c2 --- /dev/null +++ b/SA_LTT/Program_back230330/Resources/Chamber.png Binary files differ diff --git a/SA_LTT/Program_back230330/Resources/RecipeImage.PNG b/SA_LTT/Program_back230330/Resources/RecipeImage.PNG new file mode 100644 index 0000000..6e95cdd --- /dev/null +++ b/SA_LTT/Program_back230330/Resources/RecipeImage.PNG Binary files differ diff --git a/SA_LTT/Program_back230330/Resources/Robot_Arm.png b/SA_LTT/Program_back230330/Resources/Robot_Arm.png new file mode 100644 index 0000000..2a15d09 --- /dev/null +++ b/SA_LTT/Program_back230330/Resources/Robot_Arm.png Binary files differ diff --git a/SA_LTT/Program_back230330/Resources/Robot_Arm1.png b/SA_LTT/Program_back230330/Resources/Robot_Arm1.png new file mode 100644 index 0000000..d1ddc60 --- /dev/null +++ b/SA_LTT/Program_back230330/Resources/Robot_Arm1.png Binary files differ diff --git a/SA_LTT/Program_back230330/Resources/Robot_Arm2.png b/SA_LTT/Program_back230330/Resources/Robot_Arm2.png new file mode 100644 index 0000000..da4b264 --- /dev/null +++ b/SA_LTT/Program_back230330/Resources/Robot_Arm2.png Binary files differ diff --git a/SA_LTT/Program_back230330/Resources/Robot_Body.png b/SA_LTT/Program_back230330/Resources/Robot_Body.png new file mode 100644 index 0000000..327b8b9 --- /dev/null +++ b/SA_LTT/Program_back230330/Resources/Robot_Body.png Binary files differ diff --git a/SA_LTT/Program_back230330/SA_LTT.dll b/SA_LTT/Program_back230330/SA_LTT.dll new file mode 100644 index 0000000..09aa8d0 --- /dev/null +++ b/SA_LTT/Program_back230330/SA_LTT.dll Binary files differ diff --git a/SA_LTT/Program_back230330/SA_LTT.pdb b/SA_LTT/Program_back230330/SA_LTT.pdb new file mode 100644 index 0000000..c82d35a --- /dev/null +++ b/SA_LTT/Program_back230330/SA_LTT.pdb Binary files differ diff --git a/SA_LTT/Program_back230330/SA_LTT_UI.exe b/SA_LTT/Program_back230330/SA_LTT_UI.exe new file mode 100644 index 0000000..33feb3b --- /dev/null +++ b/SA_LTT/Program_back230330/SA_LTT_UI.exe Binary files differ diff --git a/SA_LTT/Program_back230330/SA_LTT_UI.exe.config b/SA_LTT/Program_back230330/SA_LTT_UI.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_back230330/SA_LTT_UI.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_back230330/SA_LTT_UI.pdb b/SA_LTT/Program_back230330/SA_LTT_UI.pdb new file mode 100644 index 0000000..8209fe0 --- /dev/null +++ b/SA_LTT/Program_back230330/SA_LTT_UI.pdb Binary files differ diff --git a/SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe b/SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe new file mode 100644 index 0000000..681ab77 --- /dev/null +++ b/SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe Binary files differ diff --git a/SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.config b/SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.manifest b/SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_back230330/log4net.dll b/SA_LTT/Program_back230330/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT/Program_back230330/log4net.dll Binary files differ diff --git a/SA_LTT/Program_back230330/padDLLBW.dll b/SA_LTT/Program_back230330/padDLLBW.dll new file mode 100644 index 0000000..a4ff496 --- /dev/null +++ b/SA_LTT/Program_back230330/padDLLBW.dll Binary files differ diff --git a/SA_LTT/Program_back230330/pp.vshost.exe.config b/SA_LTT/Program_back230330/pp.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_back230330/pp.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_back230330/pp.vshost.exe.manifest b/SA_LTT/Program_back230330/pp.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_back230330/pp.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_back232023/Cor1746.ct5 b/SA_LTT/Program_back232023/Cor1746.ct5 new file mode 100644 index 0000000..c461bd9 --- /dev/null +++ b/SA_LTT/Program_back232023/Cor1746.ct5 Binary files differ diff --git a/SA_LTT/Program_back232023/Cor_1to1.ct5 b/SA_LTT/Program_back232023/Cor_1to1.ct5 new file mode 100644 index 0000000..ff9626c --- /dev/null +++ b/SA_LTT/Program_back232023/Cor_1to1.ct5 Binary files differ diff --git a/SA_LTT/Program_back232023/Cor_1to1_old.ct5 b/SA_LTT/Program_back232023/Cor_1to1_old.ct5 new file mode 100644 index 0000000..7e6f31b --- /dev/null +++ b/SA_LTT/Program_back232023/Cor_1to1_old.ct5 Binary files differ diff --git a/SA_LTT/Program_back232023/EasyModbus.dll b/SA_LTT/Program_back232023/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT/Program_back232023/EasyModbus.dll Binary files differ diff --git a/SA_LTT/Program_back232023/RTC5DAT.dat b/SA_LTT/Program_back232023/RTC5DAT.dat new file mode 100644 index 0000000..057cee3 --- /dev/null +++ b/SA_LTT/Program_back232023/RTC5DAT.dat Binary files differ diff --git a/SA_LTT/Program_back232023/RTC5DLL.dll b/SA_LTT/Program_back232023/RTC5DLL.dll new file mode 100644 index 0000000..4b48cec --- /dev/null +++ b/SA_LTT/Program_back232023/RTC5DLL.dll Binary files differ diff --git a/SA_LTT/Program_back232023/RTC5DLLx64.dll b/SA_LTT/Program_back232023/RTC5DLLx64.dll new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/SA_LTT/Program_back232023/RTC5DLLx64.dll Binary files differ diff --git a/SA_LTT/Program_back232023/RTC5OUT.out b/SA_LTT/Program_back232023/RTC5OUT.out new file mode 100644 index 0000000..3d6cd41 --- /dev/null +++ b/SA_LTT/Program_back232023/RTC5OUT.out Binary files differ diff --git a/SA_LTT/Program_back232023/RTC5RBF.rbf b/SA_LTT/Program_back232023/RTC5RBF.rbf new file mode 100644 index 0000000..d0dd886 --- /dev/null +++ b/SA_LTT/Program_back232023/RTC5RBF.rbf Binary files differ diff --git a/SA_LTT/Program_back232023/Resources/Aligner.png b/SA_LTT/Program_back232023/Resources/Aligner.png new file mode 100644 index 0000000..7f6efa7 --- /dev/null +++ b/SA_LTT/Program_back232023/Resources/Aligner.png Binary files differ diff --git a/SA_LTT/Program_back232023/Resources/Chamber.png b/SA_LTT/Program_back232023/Resources/Chamber.png new file mode 100644 index 0000000..517d2c2 --- /dev/null +++ b/SA_LTT/Program_back232023/Resources/Chamber.png Binary files differ diff --git a/SA_LTT/Program_back232023/Resources/RecipeImage.PNG b/SA_LTT/Program_back232023/Resources/RecipeImage.PNG new file mode 100644 index 0000000..6e95cdd --- /dev/null +++ b/SA_LTT/Program_back232023/Resources/RecipeImage.PNG Binary files differ diff --git a/SA_LTT/Program_back232023/Resources/Robot_Arm.png b/SA_LTT/Program_back232023/Resources/Robot_Arm.png new file mode 100644 index 0000000..2a15d09 --- /dev/null +++ b/SA_LTT/Program_back232023/Resources/Robot_Arm.png Binary files differ diff --git a/SA_LTT/Program_back232023/Resources/Robot_Arm1.png b/SA_LTT/Program_back232023/Resources/Robot_Arm1.png new file mode 100644 index 0000000..d1ddc60 --- /dev/null +++ b/SA_LTT/Program_back232023/Resources/Robot_Arm1.png Binary files differ diff --git a/SA_LTT/Program_back232023/Resources/Robot_Arm2.png b/SA_LTT/Program_back232023/Resources/Robot_Arm2.png new file mode 100644 index 0000000..da4b264 --- /dev/null +++ b/SA_LTT/Program_back232023/Resources/Robot_Arm2.png Binary files differ diff --git a/SA_LTT/Program_back232023/Resources/Robot_Body.png b/SA_LTT/Program_back232023/Resources/Robot_Body.png new file mode 100644 index 0000000..327b8b9 --- /dev/null +++ b/SA_LTT/Program_back232023/Resources/Robot_Body.png Binary files differ diff --git a/SA_LTT/Program_back232023/SA_LTT.dll b/SA_LTT/Program_back232023/SA_LTT.dll new file mode 100644 index 0000000..2a65d41 --- /dev/null +++ b/SA_LTT/Program_back232023/SA_LTT.dll Binary files differ diff --git a/SA_LTT/Program_back232023/SA_LTT.pdb b/SA_LTT/Program_back232023/SA_LTT.pdb new file mode 100644 index 0000000..27168bf --- /dev/null +++ b/SA_LTT/Program_back232023/SA_LTT.pdb Binary files differ diff --git a/SA_LTT/Program_back232023/SA_LTT_UI.exe b/SA_LTT/Program_back232023/SA_LTT_UI.exe new file mode 100644 index 0000000..d47a2da --- /dev/null +++ b/SA_LTT/Program_back232023/SA_LTT_UI.exe Binary files differ diff --git a/SA_LTT/Program_back232023/SA_LTT_UI.exe.config b/SA_LTT/Program_back232023/SA_LTT_UI.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_back232023/SA_LTT_UI.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_back232023/SA_LTT_UI.pdb b/SA_LTT/Program_back232023/SA_LTT_UI.pdb new file mode 100644 index 0000000..c1e3a20 --- /dev/null +++ b/SA_LTT/Program_back232023/SA_LTT_UI.pdb Binary files differ diff --git a/SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe b/SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe new file mode 100644 index 0000000..681ab77 --- /dev/null +++ b/SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe Binary files differ diff --git a/SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.config b/SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.manifest b/SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT/Program_back232023/log4net.dll b/SA_LTT/Program_back232023/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT/Program_back232023/log4net.dll Binary files differ diff --git a/SA_LTT/Program_back232023/padDLLBW.dll b/SA_LTT/Program_back232023/padDLLBW.dll new file mode 100644 index 0000000..a4ff496 --- /dev/null +++ b/SA_LTT/Program_back232023/padDLLBW.dll Binary files differ diff --git a/SA_LTT/Program_back232023/pp.vshost.exe.config b/SA_LTT/Program_back232023/pp.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT/Program_back232023/pp.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT/Program_back232023/pp.vshost.exe.manifest b/SA_LTT/Program_back232023/pp.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT/Program_back232023/pp.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT_UI/.vs/SA_LTT_UI/v14/.suo b/SA_LTT_UI/.vs/SA_LTT_UI/v14/.suo new file mode 100644 index 0000000..6cd26a1 --- /dev/null +++ b/SA_LTT_UI/.vs/SA_LTT_UI/v14/.suo Binary files differ diff --git a/SA_LTT_UI/.vs/SA_LTT_UI/v15/.suo b/SA_LTT_UI/.vs/SA_LTT_UI/v15/.suo new file mode 100644 index 0000000..09b441f --- /dev/null +++ b/SA_LTT_UI/.vs/SA_LTT_UI/v15/.suo Binary files differ diff --git a/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/db.lock b/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/db.lock new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/db.lock diff --git a/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide b/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide new file mode 100644 index 0000000..3727c73 --- /dev/null +++ b/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide Binary files differ diff --git a/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-shm b/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-shm new file mode 100644 index 0000000..c15e984 --- /dev/null +++ b/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-shm Binary files differ diff --git a/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-wal b/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-wal new file mode 100644 index 0000000..31daef0 --- /dev/null +++ b/SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-wal Binary files differ diff --git a/SA_LTT_UI/SA_LTT/Alarm/Alarm.cs b/SA_LTT_UI/SA_LTT/Alarm/Alarm.cs new file mode 100644 index 0000000..9d501a0 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Alarm/Alarm.cs @@ -0,0 +1,176 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT.Alarm +{ + public class Alarm + { + public Alarm() + { + + } + + AlarmCode _code; + string _description; + AlarmLevel _level; + bool _use; + DateTime _occurredTime; + + public AlarmCode Code + { + get + { + return _code; + } + + set + { + _code = value; + } + } + + public string Description + { + get + { + return _description; + } + + set + { + _description = value; + } + } + + public bool Heavy + { + get + { + return _level == AlarmLevel.Heavy; + } + set + { + if (value == true) + { + _level = AlarmLevel.Heavy; + } + else + { + _level = AlarmLevel.Light; + } + } + } + + public bool Light + { + get + { + return _level == AlarmLevel.Light; + } + set + { + if (value == true) + { + _level = AlarmLevel.Light; + } + else + { + _level = AlarmLevel.Heavy; + } + } + } + + public AlarmLevel Level + { + get + { + return _level; + } + + set + { + _level = value; + } + } + + public bool Use + { + get + { + return _use; + } + + set + { + _use = value; + } + } + + public DateTime OccurredTime + { + get + { + return _occurredTime; + } + + set + { + _occurredTime = value; + } + } + + public Alarm Clone() + { + Alarm clone = new Alarm(); + + clone.Code = this.Code; + clone.Description = this.Description; + clone.Level = this.Level; + clone.Use = this.Use; + clone.OccurredTime = this.OccurredTime; + + return clone; + } + + public static bool operator == (Alarm alarm1, Alarm alarm2) + { + bool result = true; + + result &= alarm1.Code == alarm2.Code; + result &= alarm1.Description == alarm2.Description; + result &= alarm1.Heavy == alarm2.Heavy; + result &= alarm1.Light == alarm2.Light; + result &= alarm1.Level == alarm2.Level; + result &= alarm1.Use == alarm2.Use; + + return result; + } + + public static bool operator != (Alarm alarm1, Alarm alarm2) + { + bool result = true; + + result &= alarm1.Code == alarm2.Code; + result &= alarm1.Description == alarm2.Description; + result &= alarm1.Heavy == alarm2.Heavy; + result &= alarm1.Light == alarm2.Light; + result &= alarm1.Level == alarm2.Level; + result &= alarm1.Use == alarm2.Use; + + return !result; + } + + public override bool Equals(object obj) + { + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Alarm/AlarmCode.cs b/SA_LTT_UI/SA_LTT/Alarm/AlarmCode.cs new file mode 100644 index 0000000..a0219c5 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Alarm/AlarmCode.cs @@ -0,0 +1,2023 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT +{ + public enum AlarmCode + { + AL_0000_, + AL_0001_EMO_STOP_1, + AL_0002_EMO_STOP_2, + AL_0003_EMO_STOP_3, + AL_0004_EMO_STOP_4, + AL_0005_SMOKE_DETECTOR_ON, + AL_0006_, + AL_0007_, + AL_0008_, + AL_0009_, + AL_0010_DOOR_OPEN_1, + AL_0011_DOOR_OPEN_2, + AL_0012_DOOR_OPEN_3, + AL_0013_DOOR_OPEN_4, + AL_0014_DOOR_OPEN_CP, + AL_0015_, + AL_0016_, + AL_0017_, + AL_0018_, + AL_0019_, + AL_0020_SERVO_MC_OFF, + AL_0021_VACUUM_MC_OFF, + AL_0022_, + AL_0023_, + AL_0024_, + AL_0025_, + AL_0026_, + AL_0027_, + AL_0028_, + AL_0029_, + AL_0030_LASER_WATER_LEAK, + AL_0031_CHILLER_WATER_LEAK, + AL_0032_, + AL_0033_, + AL_0034_, + AL_0035_, + AL_0036_, + AL_0037_, + AL_0038_, + AL_0039_, + AL_0040_MAIN_CDA_PRESSURE, + AL_0041_MAIN_VAC_PRESSURE, + AL_0042_MAIN_CDA_FLOW, + AL_0043_CMB_VAC_PRESSURE, + AL_0044_, + AL_0045_, + AL_0046_, + AL_0047_, + AL_0048_, + AL_0049_, + AL_0050_CREVIS_DISCONNECTED, + AL_0051_PRE_ALIGNER_DISCONNECTED, + AL_0052_ROBOT_DISCONNECTED, + AL_0053_ATTENUATOR_DISCONNECTED, + AL_0054_TEMPCONTROLER_DISCONNECTED, + AL_0055_FFU_DISCONNECTED, + AL_0056_POWER_PMAC_DISCONNECTED, + AL_0057_UV_LASER_DISCONNECTED, + AL_0058_GR200_DISCONNECTED, + AL_0059_POWERMETER_DISCONNECTED, + AL_0060_POWER_PMAC_DISCONNECTED, + AL_0061_CHILLER_DISCONNECTED, + AL_0062_, + AL_0063_, + AL_0064_, + AL_0065_, + AL_0066_, + AL_0067_, + AL_0068_, + AL_0069_, + AL_0070_PORT1_IS_NOT_DETECTED, + AL_0071_PORT2_IS_NOT_DETECTED, + AL_0072_PREALIGNER_HAS_NOT_WAFER, + AL_0073_CHAMBER_HAS_NOT_WAFER, + AL_0074_ROBOT_HAS_NOT_WAFER, + AL_0075_PREALIGNER_HAS_WAFER, + AL_0076_CHAMBER_HAS_WAFER, + AL_0077_ROBOT_HAS_WAFER, + AL_0078_LDD_IS_NOT_ON, + AL_0079_SHUTTER_IS_NOT_OPEN, + AL_0080_SET_CURRENT_IS_NOT_ZERO, + AL_0081_ENERGY_MEASUREMENT_FAIL, + AL_0082_, + AL_0083_, + AL_0084_, + AL_0085_, + AL_0086_, + AL_0087_, + AL_0088_, + AL_0089_, + AL_0090_, + AL_0091_, + AL_0092_, + AL_0093_, + AL_0094_, + AL_0095_, + AL_0096_, + AL_0097_, + AL_0098_, + AL_0099_, + AL_0100_LASER_SOFT_FAULT_HFSYNC, + AL_0101_LASER_SOFT_FAULT_LDD_INTERLOCK, + AL_0102_LASER_SOFT_FAULT_SHUTTER_INTERLOCK, + AL_0103_LASER_SOFT_FAULT_LOW_EXT_FREQUENCY, + AL_0104_LASER_BOARD_FAULT_MAIN, + AL_0105_LASER_BOARD_FAULT_COMMON, + AL_0106_LASER_BOARD_FAULT_TEMPERATURE, + AL_0107_LASER_BOARD_FAULT_SENSOR, + AL_0108_LASER_BOARD_FAULT_POWER_MONITOR, + AL_0109_LASER_BOARD_FAULT_PULSE, + AL_0110_LASER_BOARD_FAULT_LDD, + AL_0111_LASER_BOARD_FAULT_MOTOR, + AL_0112_LASER_SYSTEM_FAULT_MEMORY, + AL_0113_LASER_SYSTEM_FAULT_SDCARD, + AL_0114_LASER_SYSTEM_FAULT_BOARD_COMMUNICATION, + AL_0115_LASER_SYSTEM_FAULT_BOARD_STATE, + AL_0116_LASER_GENERAL_ALARM_LDD1, + AL_0117_LASER_GENERAL_ALARM_LDD2, + AL_0118_LASER_GENERAL_ALARM_QSW, + AL_0119_LASER_GENERAL_ALARM_FLOW, + AL_0120_LASER_GENERAL_ALARM_WET, + AL_0121_LASER_GENERAL_ALARM_HUMIDITY, + AL_0122_LASER_GENERAL_ALARM_HFSYNC, + AL_0123_LASER_TEMPERATURE_FAULT_0, + AL_0124_LASER_TEMPERATURE_FAULT_1, + AL_0125_LASER_TEMPERATURE_FAULT_2, + AL_0126_LASER_TEMPERATURE_FAULT_3, + AL_0127_LASER_TEMPERATURE_FAULT_4, + AL_0128_LASER_TEMPERATURE_FAULT_5, + AL_0129_LASER_TEMPERATURE_FAULT_6, + AL_0130_LASER_TEMPERATURE_FAULT_7, + AL_0131_LASER_SOFT_FAULT, + AL_0132_LASER_HARD_FAULT, + AL_0133_, + AL_0134_, + AL_0135_, + AL_0136_, + AL_0137_, + AL_0138_, + AL_0139_, + AL_0140_, + AL_0141_, + AL_0142_, + AL_0143_, + AL_0144_, + AL_0145_, + AL_0146_, + AL_0147_, + AL_0148_, + AL_0149_, + AL_0150_, + AL_0151_, + AL_0152_, + AL_0153_, + AL_0154_, + AL_0155_, + AL_0156_, + AL_0157_, + AL_0158_, + AL_0159_, + AL_0160_, + AL_0161_, + AL_0162_, + AL_0163_, + AL_0164_, + AL_0165_, + AL_0166_, + AL_0167_, + AL_0168_, + AL_0169_, + AL_0170_, + AL_0171_, + AL_0172_, + AL_0173_, + AL_0174_, + AL_0175_, + AL_0176_, + AL_0177_, + AL_0178_, + AL_0179_, + AL_0180_, + AL_0181_, + AL_0182_, + AL_0183_, + AL_0184_, + AL_0185_, + AL_0186_, + AL_0187_, + AL_0188_, + AL_0189_, + AL_0190_, + AL_0191_, + AL_0192_, + AL_0193_, + AL_0194_, + AL_0195_, + AL_0196_, + AL_0197_, + AL_0198_, + AL_0199_, + AL_0200_ROBOT_ALARM_OCCURED, + AL_0201_, + AL_0202_, + AL_0203_, + AL_0204_, + AL_0205_, + AL_0206_, + AL_0207_, + AL_0208_, + AL_0209_, + AL_0210_, + AL_0211_, + AL_0212_, + AL_0213_, + AL_0214_, + AL_0215_, + AL_0216_, + AL_0217_, + AL_0218_, + AL_0219_, + AL_0220_, + AL_0221_, + AL_0222_, + AL_0223_, + AL_0224_, + AL_0225_, + AL_0226_, + AL_0227_, + AL_0228_, + AL_0229_, + AL_0230_, + AL_0231_, + AL_0232_, + AL_0233_, + AL_0234_, + AL_0235_, + AL_0236_, + AL_0237_, + AL_0238_, + AL_0239_, + AL_0240_, + AL_0241_, + AL_0242_, + AL_0243_, + AL_0244_, + AL_0245_, + AL_0246_, + AL_0247_, + AL_0248_, + AL_0249_, + AL_0250_, + AL_0251_, + AL_0252_, + AL_0253_, + AL_0254_, + AL_0255_, + AL_0256_, + AL_0257_, + AL_0258_, + AL_0259_, + AL_0260_, + AL_0261_, + AL_0262_, + AL_0263_, + AL_0264_, + AL_0265_, + AL_0266_, + AL_0267_, + AL_0268_, + AL_0269_, + AL_0270_, + AL_0271_, + AL_0272_, + AL_0273_, + AL_0274_, + AL_0275_, + AL_0276_, + AL_0277_, + AL_0278_, + AL_0279_, + AL_0280_, + AL_0281_, + AL_0282_, + AL_0283_, + AL_0284_, + AL_0285_, + AL_0286_, + AL_0287_, + AL_0288_, + AL_0289_, + AL_0290_, + AL_0291_, + AL_0292_, + AL_0293_, + AL_0294_, + AL_0295_, + AL_0296_, + AL_0297_, + AL_0298_, + AL_0299_, + AL_0300_POWER_PMAC_NOT_CONNECTED, + AL_0301_POWER_PMAC_INVALID_DEVICE, + AL_0302_POWER_PMAC_INVALID_COMMAND, + AL_0303_POWER_PMAC_INVALID_RESPONSE, + AL_0304_POWER_PMAC_DATA_REAMINS, + AL_0305_POWER_PMAC_CMD_LENGTH_EXCEEDS, + AL_0306_POWER_PMAC_RES_LENGTH_EXCEEDS, + AL_0307_POWER_PMAC_RUNNING_DOWNLOAD, + AL_0308_POWER_PMAC_ERROR, + AL_0309_, + AL_0310_, + AL_0311_, + AL_0312_, + AL_0313_, + AL_0314_, + AL_0315_, + AL_0316_, + AL_0317_, + AL_0318_, + AL_0319_, + AL_0320_MOTOR_Y_NEGATIVE_LIMIT, + AL_0321_MOTOR_Y_POSITIVE_LIMIT, + AL_0322_, + AL_0323_, + AL_0324_, + AL_0325_, + AL_0326_, + AL_0327_, + AL_0328_, + AL_0329_, + AL_0330_, + AL_0331_, + AL_0332_, + AL_0333_, + AL_0334_, + AL_0335_, + AL_0336_, + AL_0337_, + AL_0338_, + AL_0339_, + AL_0340_MOTOR_X_NEGATIVE_LIMIT, + AL_0341_MOTOR_X_POSITIVE_LIMIT, + AL_0342_, + AL_0343_, + AL_0344_, + AL_0345_, + AL_0346_, + AL_0347_, + AL_0348_, + AL_0349_, + AL_0350_, + AL_0351_, + AL_0352_, + AL_0353_, + AL_0354_, + AL_0355_, + AL_0356_, + AL_0357_, + AL_0358_, + AL_0359_, + AL_0360_MOTOR_T_NEGATIVE_LIMIT, + AL_0361_MOTOR_T_POSITIVE_LIMIT, + AL_0362_, + AL_0363_, + AL_0364_, + AL_0365_, + AL_0366_, + AL_0367_, + AL_0368_, + AL_0369_, + AL_0370_, + AL_0371_, + AL_0372_, + AL_0373_, + AL_0374_, + AL_0375_, + AL_0376_, + AL_0377_, + AL_0378_, + AL_0379_, + AL_0380_, + AL_0381_, + AL_0382_, + AL_0383_, + AL_0384_, + AL_0385_, + AL_0386_, + AL_0387_, + AL_0388_, + AL_0389_, + AL_0390_, + AL_0391_, + AL_0392_, + AL_0393_, + AL_0394_, + AL_0395_, + AL_0396_, + AL_0397_, + AL_0398_, + AL_0399_, + AL_0400_CHILLER_LOW_LEVEL_IN_TANK, + AL_0401_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_TEMP, + AL_0402_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_RISE, + AL_0403_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_DROP, + AL_0404_CHILLER_HIGH_CIRCULATING_FLUID_RETURN_TEMP, + AL_0405_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_PRESSURE, + AL_0406_CHILLER_ABNORMAL_PUMP_OPERATION, + AL_0407_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_RISE, + AL_0408_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_DROP, + AL_0409_CHILLER_HIGH_COMPRESSOR_INTANK_TEMP, + AL_0410_CHILLER_LOW_COMPRESSOR_INTANK_TEMP, + AL_0411_CHILLER_LOW_SUPER_HEAT_TEMPERATURE, + AL_0412_CHILLER_HIGH_COMPRESSOR_DISCHARGE_PRESSURE, + AL_0413_CHILLER_REFRIGERANT_CIRCUIT_HIGH_PRESSURE_DROP, + AL_0414_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_RISE, + AL_0415_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_DROP, + AL_0416_CHILLER_COMPRESSOR_OVER_LOAD, + AL_0417_CHILLER_COMMUNICATION_ERROR, + AL_0418_CHILLER_MEMORY_ERROR, + AL_0419_CHILLER_DC_LINE_FUSE_CUT, + AL_0420_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_SENSOR_FAILURE, + AL_0421_CHILLER_CIRCULATING_FLUID_TEMP_SENSOR_FAILURE, + AL_0422_CHILLER_COMPRESSOR_INTANK_TEMP_SENSOR_FAILURE, + AL_0423_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_SENSOR_FAILURE, + AL_0424_CHILLER_COMPRESSOR_DISCHARGE_PRESSURE_SENSOR_FAILURE, + AL_0425_CHILLER_COMPRESSOR_INTANK_PRESSURE_SENSOR_FAILURE, + AL_0426_CHILLER_MAINTENANCE_OF_PUMP, + AL_0427_CHILLER_MAINTENENCE_OF_FAN_MOTOR, + AL_0428_CHILLER_MAINTENENCE_OF_COMPRESSOR, + AL_0429_CHILLER_CONTACT_INPUT_1_SIGNAL_DETECTION_ALARM, + AL_0430_CHILLER_CONTACT_INPUT_2_SIGNAL_DETECTION_ALARM, + AL_0431_CHILLER_WATER_LEAKAGE, + AL_0432_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_RISE, + AL_0433_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_DROP, + AL_0434_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_SENSOR_ERROR, + AL_0435, + AL_0436, + AL_0437, + AL_0438, + AL_0439, + AL_0440, + AL_0441, + AL_0442, + AL_0443, + AL_0444, + AL_0445_, + AL_0446_, + AL_0447_, + AL_0448_, + AL_0449_, + AL_0450_, + AL_0451_, + AL_0452_, + AL_0453_, + AL_0454_, + AL_0455_, + AL_0456_, + AL_0457_, + AL_0458_, + AL_0459_, + AL_0460_, + AL_0461_, + AL_0462_, + AL_0463_, + AL_0464_, + AL_0465_, + AL_0466_, + AL_0467_, + AL_0468_, + AL_0469_, + AL_0470_, + AL_0471_, + AL_0472_, + AL_0473_, + AL_0474_, + AL_0475_, + AL_0476_, + AL_0477_, + AL_0478_, + AL_0479_, + AL_0480_, + AL_0481_, + AL_0482_, + AL_0483_, + AL_0484_, + AL_0485_, + AL_0486_, + AL_0487_, + AL_0488_, + AL_0489_, + AL_0490_, + AL_0491_, + AL_0492_, + AL_0493_, + AL_0494_, + AL_0495_, + AL_0496_, + AL_0497_, + AL_0498_, + AL_0499_, + AL_0500_PREALIGNER_PIN_UP_ERROR, + AL_0501_PREALIGNER_PIN_DOWN_ERROR, + AL_0502_PREALIGNER_VACCUM_ERROR, + AL_0503_PREALIGNER_NO_WAFER, + AL_0504_PREALIGNER_WAFER_LIMIT_ERROR_AFTER_ALIGN, + AL_0505_PREALIGNER_NOT_FOUND_NOTCH, + AL_0506_PREALIGNER_STAGE_LIMIT_ERROR, + AL_0507_PREALIGNER_INVALID_ALIGN_COMMAND, + AL_0508_PREALIGNER_CHUCK_ARRANGE_ERROR, + AL_0509_PREALIGNER_WAFER_ALIGN_CCD_OVER, + AL_0510_PREALIGNER_WAFER_LIMIT_ERROR_BEFORE_ALIGN, + AL_0511_PREALIGNER_RETRACT_HOME, + AL_0512_PREALIGNER_WAFER_EXIST, + AL_0513_PREALIGNER_CCD_MODULE_ERROR, + AL_0514_PREALIGNER_ALIGNER_TYPE_ERROR, + AL_0515_PREALIGNER_COMMAND_ERROR, + AL_0516_, + AL_0517_, + AL_0518_, + AL_0519_, + AL_0520_, + AL_0521_, + AL_0522_, + AL_0523_, + AL_0524_, + AL_0525_, + AL_0526_, + AL_0527_, + AL_0528_, + AL_0529_, + AL_0530_, + AL_0531_, + AL_0532_, + AL_0533_, + AL_0534_, + AL_0535_, + AL_0536_, + AL_0537_, + AL_0538_, + AL_0539_, + AL_0540_, + AL_0541_, + AL_0542_, + AL_0543_, + AL_0544_, + AL_0545_, + AL_0546_, + AL_0547_, + AL_0548_, + AL_0549_, + AL_0550_, + AL_0551_, + AL_0552_, + AL_0553_, + AL_0554_, + AL_0555_, + AL_0556_, + AL_0557_, + AL_0558_, + AL_0559_, + AL_0560_, + AL_0561_, + AL_0562_, + AL_0563_, + AL_0564_, + AL_0565_, + AL_0566_, + AL_0567_, + AL_0568_, + AL_0569_, + AL_0570_, + AL_0571_, + AL_0572_, + AL_0573_, + AL_0574_, + AL_0575_, + AL_0576_, + AL_0577_, + AL_0578_, + AL_0579_, + AL_0580_, + AL_0581_, + AL_0582_, + AL_0583_, + AL_0584_, + AL_0585_, + AL_0586_, + AL_0587_, + AL_0588_, + AL_0589_, + AL_0590_, + AL_0591_, + AL_0592_, + AL_0593_, + AL_0594_, + AL_0595_, + AL_0596_, + AL_0597_, + AL_0598_, + AL_0599_, + AL_0600_, + AL_0601_, + AL_0602_, + AL_0603_, + AL_0604_, + AL_0605_, + AL_0606_, + AL_0607_, + AL_0608_, + AL_0609_, + AL_0610_, + AL_0611_, + AL_0612_, + AL_0613_, + AL_0614_, + AL_0615_, + AL_0616_, + AL_0617_, + AL_0618_, + AL_0619_, + AL_0620_, + AL_0621_, + AL_0622_, + AL_0623_, + AL_0624_, + AL_0625_, + AL_0626_, + AL_0627_, + AL_0628_, + AL_0629_, + AL_0630_, + AL_0631_, + AL_0632_, + AL_0633_, + AL_0634_, + AL_0635_, + AL_0636_, + AL_0637_, + AL_0638_, + AL_0639_, + AL_0640_, + AL_0641_, + AL_0642_, + AL_0643_, + AL_0644_, + AL_0645_, + AL_0646_, + AL_0647_, + AL_0648_, + AL_0649_, + AL_0650_, + AL_0651_, + AL_0652_, + AL_0653_, + AL_0654_, + AL_0655_, + AL_0656_, + AL_0657_, + AL_0658_, + AL_0659_, + AL_0660_, + AL_0661_, + AL_0662_, + AL_0663_, + AL_0664_, + AL_0665_, + AL_0666_, + AL_0667_, + AL_0668_, + AL_0669_, + AL_0670_, + AL_0671_, + AL_0672_, + AL_0673_, + AL_0674_, + AL_0675_, + AL_0676_, + AL_0677_, + AL_0678_, + AL_0679_, + AL_0680_, + AL_0681_, + AL_0682_, + AL_0683_, + AL_0684_, + AL_0685_, + AL_0686_, + AL_0687_, + AL_0688_, + AL_0689_, + AL_0690_, + AL_0691_, + AL_0692_, + AL_0693_, + AL_0694_, + AL_0695_, + AL_0696_, + AL_0697_, + AL_0698_, + AL_0699_, + AL_0700_, + AL_0701_, + AL_0702_, + AL_0703_, + AL_0704_, + AL_0705_, + AL_0706_, + AL_0707_, + AL_0708_, + AL_0709_, + AL_0710_, + AL_0711_, + AL_0712_, + AL_0713_, + AL_0714_, + AL_0715_, + AL_0716_, + AL_0717_, + AL_0718_, + AL_0719_, + AL_0720_, + AL_0721_, + AL_0722_, + AL_0723_, + AL_0724_, + AL_0725_, + AL_0726_, + AL_0727_, + AL_0728_, + AL_0729_, + AL_0730_, + AL_0731_, + AL_0732_, + AL_0733_, + AL_0734_, + AL_0735_, + AL_0736_, + AL_0737_, + AL_0738_, + AL_0739_, + AL_0740_, + AL_0741_, + AL_0742_, + AL_0743_, + AL_0744_, + AL_0745_, + AL_0746_, + AL_0747_, + AL_0748_, + AL_0749_, + AL_0750_, + AL_0751_, + AL_0752_, + AL_0753_, + AL_0754_, + AL_0755_, + AL_0756_, + AL_0757_, + AL_0758_, + AL_0759_, + AL_0760_, + AL_0761_, + AL_0762_, + AL_0763_, + AL_0764_, + AL_0765_, + AL_0766_, + AL_0767_, + AL_0768_, + AL_0769_, + AL_0770_, + AL_0771_, + AL_0772_, + AL_0773_, + AL_0774_, + AL_0775_, + AL_0776_, + AL_0777_, + AL_0778_, + AL_0779_, + AL_0780_, + AL_0781_, + AL_0782_, + AL_0783_, + AL_0784_, + AL_0785_, + AL_0786_, + AL_0787_, + AL_0788_, + AL_0789_, + AL_0790_, + AL_0791_, + AL_0792_, + AL_0793_, + AL_0794_, + AL_0795_, + AL_0796_, + AL_0797_, + AL_0798_, + AL_0799_, + + AL_0800_RTC5_NO_BOARD_FOUND, + AL_0801_RTC5_ACCESS_DENIED, + AL_0802_RTC5_COMMAND_NOT_FORWARDED, + AL_0803_RTC5_NO_RESPONSE_FROM_BOARD, + AL_0804_RTC5_INVALID_PARAMETER, + AL_0805_RTC5_LIST_PROCESSING_IS_NOT_ACTIVE, + AL_0806_RTC5_LIST_COMMAND_REJECTED, + AL_0807_RTC5_LIST_COMMAND_HAS_BEEN_COVERTED, + AL_0808_RTC5_VERSION_ERROR_RTC5_DLL_VERSION, + AL_0809_RTC5_VERIFY_ERROR_RTC5_DLL_VERSION, + AL_0809_RTC5_VERIFY_ERROR_DOWNLOAD_VERIFICATION, + AL_0810_RTC5_DSP_VERSION_ERROR, + AL_0811_RTC5_DLL_INTERNAL_WINDOWS_MEMORY_REQUEST_FAIL, + AL_0812_RTC5_EEPROM_READ_OR_WRITE_ERROR, + AL_0813_RTC5_ERROR_READING_PCI_CONFIGURATION_REGISTER, + + AL_0814_RTC5_RESET_ERROR, + AL_0815_RTC5_UNRESET_ERROR, + AL_0816_RTC5_FILE_ERROR, + AL_0817_RTC5_FORMAT_ERROR, + AL_0818_RTC5_SYSTEM_ERROR, + AL_0819_RTC5_ACCESS_ERROR, + AL_0820_RTC5_VERSION_ERROR, + AL_0821_RTC5_SYSTEM_DRIVER_NOT_FOUND, + AL_0822_RTC5_DRIVER_CALL_ERROR, + AL_0823_RTC5_CONFIGURATION_ERROR, + AL_0824_RTC5_FPGA_FIRMWARE_ERROR, + AL_0825_RTC5_PCI_DOWNLOAD_ERROR, + AL_0826_RTC5_BUSY_ERROR, + AL_0827_RTC5_DSP_MEMORY_ERROR, + AL_0828_RTC5_VERIFY_ERROR, + AL_0829_RTC5_PCI_ERROR, + + AL_0830_RTC5_FILE_ERROR, + AL_0831_RTC5_MEMORY_ERROR, + AL_0832_RTC5_FILE_OPEN_ERROR, + AL_0833_RTC5_DSP_MEMORY_ERROR, + AL_0834_RTC5_PCI_DOWNLOAD_ERROR, + AL_0835_RTC5_SYSTEM_DRIVER_NOT_FOUND, + AL_0836_RTC5_PARAMETER_ERROR, + AL_0837_RTC5_ACCESS_ERROR, + AL_0838_RTC5_WARNING_3D_CORRECTION_TABLE, + AL_0839_RTC5_BUSY_ERROR, + AL_0840_RTC5_PCI_UPLOAD_ERROR, + AL_0841_RTC5_VERIFY_ERROR, + AL_0842_, + AL_0843_, + AL_0844_, + AL_0845_, + AL_0846_, + AL_0847_, + AL_0848_, + AL_0849_, + AL_0850_, + AL_0851_, + AL_0852_, + AL_0853_, + AL_0854_, + AL_0855_, + AL_0856_, + AL_0857_, + AL_0858_, + AL_0859_, + AL_0860_, + AL_0861_, + AL_0862_, + AL_0863_, + AL_0864_, + AL_0865_, + AL_0866_, + AL_0867_, + AL_0868_, + AL_0869_, + AL_0870_, + AL_0871_, + AL_0872_, + AL_0873_, + AL_0874_, + AL_0875_, + AL_0876_, + AL_0877_, + AL_0878_, + AL_0879_, + AL_0880_, + AL_0881_, + AL_0882_, + AL_0883_, + AL_0884_, + AL_0885_, + AL_0886_, + AL_0887_, + AL_0888_, + AL_0889_, + AL_0890_, + AL_0891_, + AL_0892_, + AL_0893_, + AL_0894_, + AL_0895_, + AL_0896_, + AL_0897_, + AL_0898_, + AL_0899_, + AL_0900_, + AL_0901_, + AL_0902_, + AL_0903_, + AL_0904_, + AL_0905_, + AL_0906_, + AL_0907_, + AL_0908_, + AL_0909_, + AL_0910_, + AL_0911_, + AL_0912_, + AL_0913_, + AL_0914_, + AL_0915_, + AL_0916_, + AL_0917_, + AL_0918_, + AL_0919_, + AL_0920_, + AL_0921_, + AL_0922_, + AL_0923_, + AL_0924_, + AL_0925_, + AL_0926_, + AL_0927_, + AL_0928_, + AL_0929_, + AL_0930_, + AL_0931_, + AL_0932_, + AL_0933_, + AL_0934_, + AL_0935_, + AL_0936_, + AL_0937_, + AL_0938_, + AL_0939_, + AL_0940_, + AL_0941_, + AL_0942_, + AL_0943_, + AL_0944_, + AL_0945_, + AL_0946_, + AL_0947_, + AL_0948_, + AL_0949_, + AL_0950_, + AL_0951_, + AL_0952_, + AL_0953_, + AL_0954_, + AL_0955_, + AL_0956_, + AL_0957_, + AL_0958_, + AL_0959_, + AL_0960_, + AL_0961_, + AL_0962_, + AL_0963_, + AL_0964_, + AL_0965_, + AL_0966_, + AL_0967_, + AL_0968_, + AL_0969_, + AL_0970_, + AL_0971_, + AL_0972_, + AL_0973_, + AL_0974_, + AL_0975_, + AL_0976_, + AL_0977_, + AL_0978_, + AL_0979_, + AL_0980_, + AL_0981_, + AL_0982_, + AL_0983_, + AL_0984_, + AL_0985_, + AL_0986_, + AL_0987_, + AL_0988_, + AL_0989_, + AL_0990_, + AL_0991_, + AL_0992_, + AL_0993_, + AL_0994_, + AL_0995_, + AL_0996_, + AL_0997_, + AL_0998_, + AL_0999_, + AL_1000_ERR_NOT_HOMED, + AL_1001_ERR_EMERGENCY, + AL_1002_ERR_MOTOR_ERROR, + AL_1003_ERR_WAIT_TIMEOUT, + AL_1004_ENCODER_RESET_TIMEOUT, + AL_1005_ERR_INTERLOCK, + AL_1006_ERR_DATA_RANGE, + AL_1007_ERR_WAFER_BEFORE_GET, + AL_1008_ERR_NO_WAFER_BEFORE_PUT, + AL_1009_ERR_NO_WAFER_AFTER_GET, + AL_1010_ERR_WAFER_AFTER_PUT, + AL_1011_ERR_NO_WAFER_DURING_GET, + AL_1012_ERR_WAFER_DURING_PUT, + AL_1013_ERR_NOT_HOMED, + AL_1014_ERR_NOT_SUPPORTED_FUNC, + AL_1015_ERR_WAFER_OUT, + AL_1016_ERR_WAFER_SLIP, + AL_1017_OVER_WAFER_DURING_GET, + AL_1018_ERR_PLATE_CHECK, + AL_1019_ERR_PUSHER_SPEED_HIGH, + AL_1020_ERR_NOT_CORRECT_BLADE_POS, + AL_1021_ERR_MAPPING_IS_NOT_PERFORMED, + AL_1022_ERR_NO_MAPPING_DATA, + AL_1023_ALREADY_LATCH_BLOCKED, + AL_1024_ERR_CANNOT_UNGRIP, + AL_1025_ERR_INVALID_COMMAND, + AL_1026_ERR_INVALID_DATA, + AL_1027_ERR_INVALID_STATION, + AL_1028_ERR_INVALID_HAND, + AL_1029_ERR_INVALID_SLOT, + AL_1030_ERR_INVALID_TEACHING_INDEX, + AL_1031_ERR_INVALID_PD_INDEX, + AL_1032_ERR_INVALID_HAND_TYPE, + AL_1033_ERR_BOX_NOEXIT_ERORR, + AL_1034_ERR_INVALID_OFFSET, + AL_1035_ERR_INVALID_COORDINATE_TYPE, + AL_1036_ERR_INVALID_ARGUMENT, + AL_1037_ERR_INVALID_FORMAT, + AL_1038_ERR_INVALID_LOCATION_FORMAT, + AL_1039_ERR_INVALID_PROFILE_FORMAT, + AL_1040_ERR_WRONG_PD_COMMAND, + AL_1041_ERR_WRONG_AWC_DATA, + AL_1042_ERR_NO_AWC_STATION, + AL_1043_ERR_WRONG_LATCH_DATA, + AL_1044_ERR_NO_LATCH_DATA, + AL_1045_ERR_NO_DATA, + AL_1046_ERR_NOT_HOME, + AL_1047_ERR_CANNOT_RETRACT_ARM, + AL_1048_ERR_VACUUM_DETECTING_ERORR, + AL_1049_ERR_NO_BOX, + AL_1050_ERR_UPGRIP, + AL_1051_ERR_DOUBLEBOXCHECH, + AL_1052_ERR_ORIGINMANUALLY, + AL_1053_ERR_NOTSUPPLY_AIR, + AL_1054_ERR_NOW_ON_MOVE, + AL_1055_ERR_NOT_READYPOS, + AL_1056_Z_POSITION_ERR_DETECTED, + AL_1057_ERR_FLIP_TURN_INTERLOCK, + AL_1058_ERR_CONTROL_BOX_FAN, + AL_1059_ERR_ROBOT_FAN, + AL_1060_ERR_AIRSTOP_ERROR, + AL_1061_ERR_RECEIVEBUF_FULL, + AL_1062_ERR_SENDBUF_FULL, + AL_1063_IO_RECEIVE_ERROR, + AL_1064_, + AL_1065_, + AL_1066_, + AL_1067_, + AL_1068_, + AL_1069_, + AL_1070_, + AL_1071_, + AL_1072_, + AL_1073_, + AL_1074_, + AL_1075_, + AL_1076_, + AL_1077_, + AL_1078_, + AL_1079_, + AL_1080_, + AL_1081_, + AL_1082_, + AL_1083_, + AL_1084_, + AL_1085_, + AL_1086_, + AL_1087_, + AL_1088_, + AL_1089_, + AL_1090_, + AL_1091_, + AL_1092_, + AL_1093_, + AL_1094_, + AL_1095_, + AL_1096_, + AL_1097_, + AL_1098_, + AL_1099_, + AL_1100_ENERGY_DROP_CHECK_WRONG, + AL_1101_, + AL_1102_, + AL_1103_, + AL_1104_, + AL_1105_, + AL_1106_, + AL_1107_, + AL_1108_, + AL_1109_, + AL_1110_, + AL_1111_, + AL_1112_, + AL_1113_, + AL_1114_, + AL_1115_, + AL_1116_, + AL_1117_, + AL_1118_, + AL_1119_, + AL_1120_, + AL_1121_, + AL_1122_, + AL_1123_, + AL_1124_, + AL_1125_, + AL_1126_, + AL_1127_, + AL_1128_, + AL_1129_, + AL_1130_, + AL_1131_, + AL_1132_, + AL_1133_, + AL_1134_, + AL_1135_, + AL_1136_, + AL_1137_, + AL_1138_, + AL_1139_, + AL_1140_, + AL_1141_, + AL_1142_, + AL_1143_, + AL_1144_, + AL_1145_, + AL_1146_, + AL_1147_, + AL_1148_, + AL_1149_, + AL_1150_, + AL_1151_, + AL_1152_, + AL_1153_, + AL_1154_, + AL_1155_, + AL_1156_, + AL_1157_, + AL_1158_, + AL_1159_, + AL_1160_, + AL_1161_, + AL_1162_, + AL_1163_, + AL_1164_, + AL_1165_, + AL_1166_, + AL_1167_, + AL_1168_, + AL_1169_, + AL_1170_, + AL_1171_, + AL_1172_, + AL_1173_, + AL_1174_, + AL_1175_, + AL_1176_, + AL_1177_, + AL_1178_, + AL_1179_, + AL_1180_, + AL_1181_, + AL_1182_, + AL_1183_, + AL_1184_, + AL_1185_, + AL_1186_, + AL_1187_, + AL_1188_, + AL_1189_, + AL_1190_, + AL_1191_, + AL_1192_, + AL_1193_, + AL_1194_, + AL_1195_, + AL_1196_, + AL_1197_, + AL_1198_, + AL_1199_, + AL_1200_, + AL_1201_, + AL_1202_, + AL_1203_, + AL_1204_, + AL_1205_, + AL_1206_, + AL_1207_, + AL_1208_, + AL_1209_, + AL_1210_, + AL_1211_, + AL_1212_, + AL_1213_, + AL_1214_, + AL_1215_, + AL_1216_, + AL_1217_, + AL_1218_, + AL_1219_, + AL_1220_, + AL_1221_, + AL_1222_, + AL_1223_, + AL_1224_, + AL_1225_, + AL_1226_, + AL_1227_, + AL_1228_, + AL_1229_, + AL_1230_, + AL_1231_, + AL_1232_, + AL_1233_, + AL_1234_, + AL_1235_, + AL_1236_, + AL_1237_, + AL_1238_, + AL_1239_, + AL_1240_, + AL_1241_, + AL_1242_, + AL_1243_, + AL_1244_, + AL_1245_, + AL_1246_, + AL_1247_, + AL_1248_, + AL_1249_, + AL_1250_, + AL_1251_, + AL_1252_, + AL_1253_, + AL_1254_, + AL_1255_, + AL_1256_, + AL_1257_, + AL_1258_, + AL_1259_, + AL_1260_, + AL_1261_, + AL_1262_, + AL_1263_, + AL_1264_, + AL_1265_, + AL_1266_, + AL_1267_, + AL_1268_, + AL_1269_, + AL_1270_, + AL_1271_, + AL_1272_, + AL_1273_, + AL_1274_, + AL_1275_, + AL_1276_, + AL_1277_, + AL_1278_, + AL_1279_, + AL_1280_, + AL_1281_, + AL_1282_, + AL_1283_, + AL_1284_, + AL_1285_, + AL_1286_, + AL_1287_, + AL_1288_, + AL_1289_, + AL_1290_, + AL_1291_, + AL_1292_, + AL_1293_, + AL_1294_, + AL_1295_, + AL_1296_, + AL_1297_, + AL_1298_, + AL_1299_, + AL_1300_, + AL_1301_, + AL_1302_, + AL_1303_, + AL_1304_, + AL_1305_, + AL_1306_, + AL_1307_, + AL_1308_, + AL_1309_, + AL_1310_, + AL_1311_, + AL_1312_, + AL_1313_, + AL_1314_, + AL_1315_, + AL_1316_, + AL_1317_, + AL_1318_, + AL_1319_, + AL_1320_, + AL_1321_, + AL_1322_, + AL_1323_, + AL_1324_, + AL_1325_, + AL_1326_, + AL_1327_, + AL_1328_, + AL_1329_, + AL_1330_, + AL_1331_, + AL_1332_, + AL_1333_, + AL_1334_, + AL_1335_, + AL_1336_, + AL_1337_, + AL_1338_, + AL_1339_, + AL_1340_, + AL_1341_, + AL_1342_, + AL_1343_, + AL_1344_, + AL_1345_, + AL_1346_, + AL_1347_, + AL_1348_, + AL_1349_, + AL_1350_, + AL_1351_, + AL_1352_, + AL_1353_, + AL_1354_, + AL_1355_, + AL_1356_, + AL_1357_, + AL_1358_, + AL_1359_, + AL_1360_, + AL_1361_, + AL_1362_, + AL_1363_, + AL_1364_, + AL_1365_, + AL_1366_, + AL_1367_, + AL_1368_, + AL_1369_, + AL_1370_, + AL_1371_, + AL_1372_, + AL_1373_, + AL_1374_, + AL_1375_, + AL_1376_, + AL_1377_, + AL_1378_, + AL_1379_, + AL_1380_, + AL_1381_, + AL_1382_, + AL_1383_, + AL_1384_, + AL_1385_, + AL_1386_, + AL_1387_, + AL_1388_, + AL_1389_, + AL_1390_, + AL_1391_, + AL_1392_, + AL_1393_, + AL_1394_, + AL_1395_, + AL_1396_, + AL_1397_, + AL_1398_, + AL_1399_, + AL_1400_, + AL_1401_, + AL_1402_, + AL_1403_, + AL_1404_, + AL_1405_, + AL_1406_, + AL_1407_, + AL_1408_, + AL_1409_, + AL_1410_, + AL_1411_, + AL_1412_, + AL_1413_, + AL_1414_, + AL_1415_, + AL_1416_, + AL_1417_, + AL_1418_, + AL_1419_, + AL_1420_, + AL_1421_, + AL_1422_, + AL_1423_, + AL_1424_, + AL_1425_, + AL_1426_, + AL_1427_, + AL_1428_, + AL_1429_, + AL_1430_, + AL_1431_, + AL_1432_, + AL_1433_, + AL_1434_, + AL_1435_, + AL_1436_, + AL_1437_, + AL_1438_, + AL_1439_, + AL_1440_, + AL_1441_, + AL_1442_, + AL_1443_, + AL_1444_, + AL_1445_, + AL_1446_, + AL_1447_, + AL_1448_, + AL_1449_, + AL_1450_, + AL_1451_, + AL_1452_, + AL_1453_, + AL_1454_, + AL_1455_, + AL_1456_, + AL_1457_, + AL_1458_, + AL_1459_, + AL_1460_, + AL_1461_, + AL_1462_, + AL_1463_, + AL_1464_, + AL_1465_, + AL_1466_, + AL_1467_, + AL_1468_, + AL_1469_, + AL_1470_, + AL_1471_, + AL_1472_, + AL_1473_, + AL_1474_, + AL_1475_, + AL_1476_, + AL_1477_, + AL_1478_, + AL_1479_, + AL_1480_, + AL_1481_, + AL_1482_, + AL_1483_, + AL_1484_, + AL_1485_, + AL_1486_, + AL_1487_, + AL_1488_, + AL_1489_, + AL_1490_, + AL_1491_, + AL_1492_, + AL_1493_, + AL_1494_, + AL_1495_, + AL_1496_, + AL_1497_, + AL_1498_, + AL_1499_, + AL_1500_, + AL_1501_, + AL_1502_, + AL_1503_, + AL_1504_, + AL_1505_, + AL_1506_, + AL_1507_, + AL_1508_, + AL_1509_, + AL_1510_, + AL_1511_, + AL_1512_, + AL_1513_, + AL_1514_, + AL_1515_, + AL_1516_, + AL_1517_, + AL_1518_, + AL_1519_, + AL_1520_, + AL_1521_, + AL_1522_, + AL_1523_, + AL_1524_, + AL_1525_, + AL_1526_, + AL_1527_, + AL_1528_, + AL_1529_, + AL_1530_, + AL_1531_, + AL_1532_, + AL_1533_, + AL_1534_, + AL_1535_, + AL_1536_, + AL_1537_, + AL_1538_, + AL_1539_, + AL_1540_, + AL_1541_, + AL_1542_, + AL_1543_, + AL_1544_, + AL_1545_, + AL_1546_, + AL_1547_, + AL_1548_, + AL_1549_, + AL_1550_, + AL_1551_, + AL_1552_, + AL_1553_, + AL_1554_, + AL_1555_, + AL_1556_, + AL_1557_, + AL_1558_, + AL_1559_, + AL_1560_, + AL_1561_, + AL_1562_, + AL_1563_, + AL_1564_, + AL_1565_, + AL_1566_, + AL_1567_, + AL_1568_, + AL_1569_, + AL_1570_, + AL_1571_, + AL_1572_, + AL_1573_, + AL_1574_, + AL_1575_, + AL_1576_, + AL_1577_, + AL_1578_, + AL_1579_, + AL_1580_, + AL_1581_, + AL_1582_, + AL_1583_, + AL_1584_, + AL_1585_, + AL_1586_, + AL_1587_, + AL_1588_, + AL_1589_, + AL_1590_, + AL_1591_, + AL_1592_, + AL_1593_, + AL_1594_, + AL_1595_, + AL_1596_, + AL_1597_, + AL_1598_, + AL_1599_, + AL_1600_, + AL_1601_, + AL_1602_, + AL_1603_, + AL_1604_, + AL_1605_, + AL_1606_, + AL_1607_, + AL_1608_, + AL_1609_, + AL_1610_, + AL_1611_, + AL_1612_, + AL_1613_, + AL_1614_, + AL_1615_, + AL_1616_, + AL_1617_, + AL_1618_, + AL_1619_, + AL_1620_, + AL_1621_, + AL_1622_, + AL_1623_, + AL_1624_, + AL_1625_, + AL_1626_, + AL_1627_, + AL_1628_, + AL_1629_, + AL_1630_, + AL_1631_, + AL_1632_, + AL_1633_, + AL_1634_, + AL_1635_, + AL_1636_, + AL_1637_, + AL_1638_, + AL_1639_, + AL_1640_, + AL_1641_, + AL_1642_, + AL_1643_, + AL_1644_, + AL_1645_, + AL_1646_, + AL_1647_, + AL_1648_, + AL_1649_, + AL_1650_, + AL_1651_, + AL_1652_, + AL_1653_, + AL_1654_, + AL_1655_, + AL_1656_, + AL_1657_, + AL_1658_, + AL_1659_, + AL_1660_, + AL_1661_, + AL_1662_, + AL_1663_, + AL_1664_, + AL_1665_, + AL_1666_, + AL_1667_, + AL_1668_, + AL_1669_, + AL_1670_, + AL_1671_, + AL_1672_, + AL_1673_, + AL_1674_, + AL_1675_, + AL_1676_, + AL_1677_, + AL_1678_, + AL_1679_, + AL_1680_, + AL_1681_, + AL_1682_, + AL_1683_, + AL_1684_, + AL_1685_, + AL_1686_, + AL_1687_, + AL_1688_, + AL_1689_, + AL_1690_, + AL_1691_, + AL_1692_, + AL_1693_, + AL_1694_, + AL_1695_, + AL_1696_, + AL_1697_, + AL_1698_, + AL_1699_, + AL_1700_, + AL_1701_, + AL_1702_, + AL_1703_, + AL_1704_, + AL_1705_, + AL_1706_, + AL_1707_, + AL_1708_, + AL_1709_, + AL_1710_, + AL_1711_, + AL_1712_, + AL_1713_, + AL_1714_, + AL_1715_, + AL_1716_, + AL_1717_, + AL_1718_, + AL_1719_, + AL_1720_, + AL_1721_, + AL_1722_, + AL_1723_, + AL_1724_, + AL_1725_, + AL_1726_, + AL_1727_, + AL_1728_, + AL_1729_, + AL_1730_, + AL_1731_, + AL_1732_, + AL_1733_, + AL_1734_, + AL_1735_, + AL_1736_, + AL_1737_, + AL_1738_, + AL_1739_, + AL_1740_, + AL_1741_, + AL_1742_, + AL_1743_, + AL_1744_, + AL_1745_, + AL_1746_, + AL_1747_, + AL_1748_, + AL_1749_, + AL_1750_, + AL_1751_, + AL_1752_, + AL_1753_, + AL_1754_, + AL_1755_, + AL_1756_, + AL_1757_, + AL_1758_, + AL_1759_, + AL_1760_, + AL_1761_, + AL_1762_, + AL_1763_, + AL_1764_, + AL_1765_, + AL_1766_, + AL_1767_, + AL_1768_, + AL_1769_, + AL_1770_, + AL_1771_, + AL_1772_, + AL_1773_, + AL_1774_, + AL_1775_, + AL_1776_, + AL_1777_, + AL_1778_, + AL_1779_, + AL_1780_, + AL_1781_, + AL_1782_, + AL_1783_, + AL_1784_, + AL_1785_, + AL_1786_, + AL_1787_, + AL_1788_, + AL_1789_, + AL_1790_, + AL_1791_, + AL_1792_, + AL_1793_, + AL_1794_, + AL_1795_, + AL_1796_, + AL_1797_, + AL_1798_, + AL_1799_, + AL_1800_, + AL_1801_, + AL_1802_, + AL_1803_, + AL_1804_, + AL_1805_, + AL_1806_, + AL_1807_, + AL_1808_, + AL_1809_, + AL_1810_, + AL_1811_, + AL_1812_, + AL_1813_, + AL_1814_, + AL_1815_, + AL_1816_, + AL_1817_, + AL_1818_, + AL_1819_, + AL_1820_, + AL_1821_, + AL_1822_, + AL_1823_, + AL_1824_, + AL_1825_, + AL_1826_, + AL_1827_, + AL_1828_, + AL_1829_, + AL_1830_, + AL_1831_, + AL_1832_, + AL_1833_, + AL_1834_, + AL_1835_, + AL_1836_, + AL_1837_, + AL_1838_, + AL_1839_, + AL_1840_, + AL_1841_, + AL_1842_, + AL_1843_, + AL_1844_, + AL_1845_, + AL_1846_, + AL_1847_, + AL_1848_, + AL_1849_, + AL_1850_, + AL_1851_, + AL_1852_, + AL_1853_, + AL_1854_, + AL_1855_, + AL_1856_, + AL_1857_, + AL_1858_, + AL_1859_, + AL_1860_, + AL_1861_, + AL_1862_, + AL_1863_, + AL_1864_, + AL_1865_, + AL_1866_, + AL_1867_, + AL_1868_, + AL_1869_, + AL_1870_, + AL_1871_, + AL_1872_, + AL_1873_, + AL_1874_, + AL_1875_, + AL_1876_, + AL_1877_, + AL_1878_, + AL_1879_, + AL_1880_, + AL_1881_, + AL_1882_, + AL_1883_, + AL_1884_, + AL_1885_, + AL_1886_, + AL_1887_, + AL_1888_, + AL_1889_, + AL_1890_, + AL_1891_, + AL_1892_, + AL_1893_, + AL_1894_, + AL_1895_, + AL_1896_, + AL_1897_, + AL_1898_, + AL_1899_, + AL_1900_, + AL_1901_, + AL_1902_, + AL_1903_, + AL_1904_, + AL_1905_, + AL_1906_, + AL_1907_, + AL_1908_, + AL_1909_, + AL_1910_, + AL_1911_, + AL_1912_, + AL_1913_, + AL_1914_, + AL_1915_, + AL_1916_, + AL_1917_, + AL_1918_, + AL_1919_, + AL_1920_, + AL_1921_, + AL_1922_, + AL_1923_, + AL_1924_, + AL_1925_, + AL_1926_, + AL_1927_, + AL_1928_, + AL_1929_, + AL_1930_, + AL_1931_, + AL_1932_, + AL_1933_, + AL_1934_, + AL_1935_, + AL_1936_, + AL_1937_, + AL_1938_, + AL_1939_, + AL_1940_, + AL_1941_, + AL_1942_, + AL_1943_, + AL_1944_, + AL_1945_, + AL_1946_, + AL_1947_, + AL_1948_, + AL_1949_, + AL_1950_, + AL_1951_, + AL_1952_, + AL_1953_, + AL_1954_, + AL_1955_, + AL_1956_, + AL_1957_, + AL_1958_, + AL_1959_, + AL_1960_, + AL_1961_, + AL_1962_, + AL_1963_, + AL_1964_, + AL_1965_, + AL_1966_, + AL_1967_, + AL_1968_, + AL_1969_, + AL_1970_, + AL_1971_, + AL_1972_, + AL_1973_, + AL_1974_, + AL_1975_, + AL_1976_, + AL_1977_, + AL_1978_, + AL_1979_, + AL_1980_, + AL_1981_, + AL_1982_, + AL_1983_, + AL_1984_, + AL_1985_, + AL_1986_, + AL_1987_, + AL_1988_, + AL_1989_, + AL_1990_, + AL_1991_, + AL_1992_, + AL_1993_, + AL_1994_, + AL_1995_, + AL_1996_, + AL_1997_, + AL_1998_, + AL_1999_, + } + + public enum AlarmLevel + { + Light, + Heavy, + } +} + diff --git a/SA_LTT_UI/SA_LTT/Alarm/AlarmManager.cs b/SA_LTT_UI/SA_LTT/Alarm/AlarmManager.cs new file mode 100644 index 0000000..8e11d63 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Alarm/AlarmManager.cs @@ -0,0 +1,271 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT.Alarm +{ + public delegate void AlarmOccurredEvent(Alarm occurredAlarm); + + public delegate void AlarmClearedEvent(); + + public class AlarmManager + { + public AlarmManager() + { + _alarms.Clear(); + OccurredAlarms.Clear(); + + ReadAlarmFile(); + } + + private string fileName = "Alarms.csv"; + + private Dictionary<AlarmCode, Alarm> _alarms = new Dictionary<AlarmCode, Alarm>(); + + public List<Alarm> OccurredAlarms = new List<Alarm>(); + + public event AlarmOccurredEvent Occurred; + + public event AlarmClearedEvent Cleared; + + /// <summary> + /// �븣�엺 �뙆�씪 �씫湲�. + /// </summary> + private void ReadAlarmFile() + { + string path = Equipment.settingFilePath + fileName; + + // �뙆�씪 �뵒�젆�넗由� �뾾�쑝硫� �깮�꽦. + if (Directory.Exists(Equipment.settingFilePath) == false) + { + Directory.CreateDirectory(Equipment.settingFilePath); + } + + // �뙆�씪 �뾾�쑝硫� Alarm list �깮�꽦 �썑 諛섑솚. + if (File.Exists(path) == false) + { + _alarms.Clear(); + + foreach (AlarmCode code in Enum.GetValues(typeof(AlarmCode))) + { + Alarm alarm = new Alarm(); + alarm.Code = code; + alarm.Level = AlarmLevel.Heavy; + alarm.Use = true; + alarm.Description = "None"; + alarm.OccurredTime = DateTime.Now; + + _alarms.Add(code, alarm); + } + + WriteAlarmFile(); + } + + string fileAlarmData = string.Empty; + + //�뙆�씪 �뿴�젮�엳�뼱�룄 �씫�쓣 �닔 �엳�룄濡� �젣�옉. + using (FileStream fs = File.Open(path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite)) + { + using (StreamReader sr = new StreamReader(fs, Encoding.Default)) + { + fileAlarmData = sr.ReadToEnd(); + sr.Close(); + } + + fs.Close(); + } + + string[] fileAlarms = fileAlarmData.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); + + // �뙆�씪�뿉�꽌 Alarm �젙蹂� �씫�뼱�샂. + foreach (var line in fileAlarms) + { + Alarm alarm = new Alarm(); + + string[] items = line.Split(','); + + if (items.Length < 5) + { + continue; + } + + AlarmCode code; + string description; + AlarmLevel level; + bool use; + DateTime time; + + if (Enum.TryParse(items[0], out code) == false) + { + continue; + } + + description = items[1]; + + if (Enum.TryParse(items[2], out level) == false) + { + level = AlarmLevel.Heavy; + } + + if(Boolean.TryParse(items[3], out use) == false) + { + use = true; + } + + if (DateTime.TryParse(items[4], out time) == false) + { + time = DateTime.Now; + } + + alarm.Code = code; + alarm.Description = description; + alarm.Level = level; + alarm.Use = use; + alarm.OccurredTime = time; + + if(_alarms.ContainsKey(code) == false) + { + _alarms.Add(code, alarm); + } + } + + // �뙆�씪�뿉�꽌 �씫�뼱�삩 Alarm 媛��닔�� �떎�젣 �븣�엺 媛��닔�� 留욎� �븡�쑝硫� Alarm �깮�꽦. + if (_alarms.Count != Enum.GetValues(typeof(AlarmCode)).Length) + { + // �뙆�씪�뿉�꽌 �씫�뼱�삩 Alarm�뿉 �뾾�뒗 Alarm �깮�꽦. + foreach (AlarmCode code in Enum.GetValues(typeof(AlarmCode))) + { + if (_alarms.ContainsKey(code) == false) + { + Alarm alarm = new Alarm(); + alarm.Code = code; + alarm.Description = "None"; + alarm.Level = AlarmLevel.Heavy; + alarm.Use = true; + alarm.OccurredTime = DateTime.Now; + + _alarms.Add(code, alarm); + } + } + + // �븣�엺 Key媛� �삤由꾩감�닚 �젙�젹 + _alarms = _alarms.OrderBy(i => i.Key).ToDictionary(i => i.Key, i => i.Value); + } + + // �븣�엺 �젙蹂� �뙆�씪 ���옣. + WriteAlarmFile(); + } + + /// <summary> + /// �븣�엺 �뙆�씪 �벐湲�. + /// </summary> + private void WriteAlarmFile() + { + string path = Equipment.settingFilePath + fileName; + + if (Directory.Exists(Equipment.settingFilePath) == false) + { + Directory.CreateDirectory(Equipment.settingFilePath); + } + + StringBuilder sb = new StringBuilder(); + + foreach (Alarm alarm in _alarms.Values) + { + sb.AppendLine($"{alarm.Code},{alarm.Description},{alarm.Level},{alarm.Use},{alarm.OccurredTime.ToString("yyyy.MM.dd HH:mm:ss.fff")}"); + } + + try + { + File.WriteAllText(path, sb.ToString(), Encoding.Default); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + + public void Occur(AlarmCode code) + { + if (OccurredAlarms.Exists(x => x.Code == code) == false) + { + Alarm alarm = _alarms[code]; + + alarm.OccurredTime = DateTime.Now; + + if (alarm.Use == true) + { + Alarm copiedAlarm = alarm.Clone(); + OccurredAlarms.Add(copiedAlarm); + EquipmentLogManager.Instance.WriteAlarmOccurredLog($"{$"{copiedAlarm.Code},{copiedAlarm.Description},{copiedAlarm.Level}"}"); + Occurred?.Invoke(copiedAlarm); + } + } + } + + public void Clear() + { + OccurredAlarms.Clear(); + + Cleared?.Invoke(); + } + + public void Save(List<Alarm> alarms) + { + DateTime dt = DateTime.Now; + foreach (Alarm alarm in alarms) + { + if(alarm != _alarms[alarm.Code]) + { + Alarm oldAlarm = _alarms[alarm.Code]; + + //Alarm 蹂�寃쎌떆 濡쒓렇 �뼱�뼸寃� �궓湲몄� 怨좊�쇱벐. + + string differenceInfo = string.Empty; + + if(oldAlarm.Description != alarm.Description) + differenceInfo += $"{oldAlarm.Description} -> {alarm.Description},"; + else + differenceInfo += $"{alarm.Description},"; + + if (oldAlarm.Level != alarm.Level) + differenceInfo += $"{oldAlarm.Level} -> {alarm.Level},"; + else + differenceInfo += $"{alarm.Level},"; + + if (oldAlarm.Use != alarm.Use) + differenceInfo += $"{oldAlarm.Use} -> {alarm.Use}"; + else + differenceInfo += $"{alarm.Use}"; + + //蹂�寃� �븣�엺 濡쒓렇. + EquipmentLogManager.Instance.WriteAlarmChangedLog($"{oldAlarm.Code},{differenceInfo}"); + } + + _alarms[alarm.Code] = alarm; + } + + TimeSpan ts = DateTime.Now - dt; + + WriteAlarmFile(); + } + + public SortedList<AlarmCode, Alarm> GetAlarms() + { + SortedList<AlarmCode, Alarm> list = new SortedList<AlarmCode, Alarm>(); + + foreach (Alarm alarm in _alarms.Values) + { + Alarm data = alarm.Clone(); + list.Add(data.Code, data); + } + + return list; + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Base/ComPort.cs b/SA_LTT_UI/SA_LTT/Base/ComPort.cs new file mode 100644 index 0000000..0797801 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Base/ComPort.cs @@ -0,0 +1,385 @@ +癤퓎sing System; +using System.IO.Ports; +using System.Threading; + +namespace SA_LTT.Module +{ + public abstract class ComPort + { + private object thisLock; + + private bool lockCheck; + + protected SerialPort serialPort; + + private string _terminator; + + private string _receivedData; + + private double _receiveWaitSeconds; + + public bool IsOpen + { + get + { + if (serialPort == null) + return false; + + return serialPort.IsOpen; + } + } + + public string PortName + { + get + { + return serialPort.PortName; + } + } + + /// <summary> + /// 醫낃껐�옄 �꽕�젙. + /// </summary> + public string Terminator + { + get + { + return _terminator; + } + + set + { + _terminator = value; + } + } + + public double ReceiveWaitSeconds + { + get + { + return _receiveWaitSeconds; + } + + set + { + _receiveWaitSeconds = value; + } + } + + public ComPort(string portName = "COM1") + { + thisLock = new object(); + + serialPort = new SerialPort(); + + serialPort.PortName = portName; + serialPort.BaudRate = 9600; + serialPort.DataBits = 8; + serialPort.Parity = Parity.None; + serialPort.StopBits = StopBits.One; + serialPort.Handshake = Handshake.None; + serialPort.ReadTimeout = 500; + serialPort.WriteTimeout = 500; + Terminator = "\r\n"; + } + + public static string[] GetExistPortNames() + { + return SerialPort.GetPortNames(); + } + + public bool Open() + { + try + { + serialPort.Open(); + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + + public bool Close() + { + try + { + serialPort.Close(); + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + + protected string WriteRead(string command) + { + string receivedData = string.Empty; + + lock (thisLock) + { + while (lockCheck) + Monitor.Wait(thisLock); + + try + { + lockCheck = true; + _receivedData = string.Empty; + if (serialPort.BytesToRead > 0) serialPort.ReadExisting(); + + serialPort.BaseStream.Flush(); + + serialPort.Write(command); + + DateTime check = DateTime.Now; + + while (true) + { + if ((DateTime.Now - check).TotalSeconds > ReceiveWaitSeconds) + { + check = DateTime.Now; + break; + } + } + + while (true) + { + if (serialPort.BytesToRead > 0) + { + receivedData = serialPort.ReadExisting(); + + if(CheckTerminator(receivedData)) + { + if(Terminator == null) + { + if (serialPort.BytesToRead > 0) + continue; + } + receivedData = _receivedData; + break; + } + } + + if ((DateTime.Now - check).TotalMilliseconds > serialPort.ReadTimeout) + { + throw new TimeoutException($"receieve timeout"); + } + } + + return receivedData; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog($"{e.StackTrace}\r\n{serialPort.PortName} port, command : {command}, received data : {receivedData}, {e.Message}" ); + return receivedData; + } + finally + { + lockCheck = false; + Monitor.Pulse(thisLock); + } + } + } + + protected void Write(string command) + { + + lock (thisLock) + { + while (lockCheck) + Monitor.Wait(thisLock); + + try + { + lockCheck = true; + + serialPort.Write(command); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + lockCheck = false; + Monitor.Pulse(thisLock); + } + } + } + + protected string WriteRead(byte[] command) + { + string receivedData = string.Empty; + + lock (thisLock) + { + while (lockCheck) + Monitor.Wait(thisLock); + + try + { + lockCheck = true; + _receivedData = string.Empty; + if (serialPort.BytesToRead > 0) serialPort.ReadExisting(); + + serialPort.BaseStream.Flush(); + + serialPort.Write(command, 0, command.Length); + + DateTime check = DateTime.Now; + + while(true) + { + if ((DateTime.Now - check).TotalSeconds > ReceiveWaitSeconds) + { + check = DateTime.Now; + break; + } + } + + while (true) + { + if (serialPort.BytesToRead > 0) + { + receivedData = serialPort.ReadExisting(); + + if (CheckTerminator(receivedData)) + { + double aa = (DateTime.Now - check).TotalMilliseconds; + receivedData = _receivedData; + break; + } + } + + if ((DateTime.Now - check).TotalMilliseconds > serialPort.ReadTimeout) + { + throw new TimeoutException($"{serialPort.PortName} Port Receieve Timeout"); + } + } + + return receivedData; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return receivedData; + } + finally + { + lockCheck = false; + Monitor.Pulse(thisLock); + } + } + } + + protected void Write(byte[] command) + { + + lock (thisLock) + { + while (lockCheck) + Monitor.Wait(thisLock); + + try + { + lockCheck = true; + + serialPort.Write(command, 0, command.Length); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + lockCheck = false; + Monitor.Pulse(thisLock); + } + } + } + + protected string Read(double timeOutSec) + { + string receivedData = string.Empty; + DateTime check = DateTime.Now; + + lock (thisLock) + { + while (lockCheck) + Monitor.Wait(thisLock); + + try + { + lockCheck = true; + + while (true) + { + if (serialPort.BytesToRead > 0) + { + receivedData = serialPort.ReadExisting(); + + if (CheckTerminator(receivedData)) + { + receivedData = _receivedData; + break; + } + } + + if ((DateTime.Now - check).TotalSeconds > timeOutSec) + { + throw new TimeoutException($"{serialPort.PortName} Port Receieve Timeout"); + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return receivedData; + } + finally + { + lockCheck = false; + Monitor.Pulse(thisLock); + } + } + + return receivedData; + } + + private bool CheckTerminator(string receivedData) + { + if (Terminator == null) + { + _receivedData += receivedData; + return true; + } + else + { + if (receivedData.Contains(Terminator) || _receivedData.Contains(Terminator)) + { + int terminatorLocation = receivedData.IndexOf(Terminator); + + if (receivedData.Length == terminatorLocation + Terminator.Length) + { + _receivedData += receivedData; + } + else + { + _receivedData += receivedData.Remove(terminatorLocation + Terminator.Length); + } + + return true; + } + else + { + _receivedData += receivedData; + return false; + } + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Base/SequenceTimer.cs b/SA_LTT_UI/SA_LTT/Base/SequenceTimer.cs new file mode 100644 index 0000000..7ce1992 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Base/SequenceTimer.cs @@ -0,0 +1,64 @@ +癤퓎sing System.Diagnostics; + +namespace SA_LTT +{ + public class SequenceTimer + { + #region Property + public double Seconds + { + get + { + return _stopwatch.Elapsed.TotalSeconds; + } + } + + public double Minute + { + get + { + return _stopwatch.Elapsed.TotalMinutes; + } + } + #endregion + + #region Field + private Stopwatch _stopwatch; + #endregion + + #region Construct + public SequenceTimer() + { + _stopwatch = new Stopwatch(); + } + #endregion + + #region Fuction + public void Start() + { + if (_stopwatch.IsRunning == false) + { + _stopwatch.Start(); + } + } + + public void ReStart() + { + _stopwatch.Restart(); + } + + public void Stop() + { + if (_stopwatch.IsRunning == true) + { + _stopwatch.Stop(); + } + } + + public void Reset() + { + _stopwatch.Reset(); + } + #endregion + } +} diff --git a/SA_LTT_UI/SA_LTT/Base/SocketClient.cs b/SA_LTT_UI/SA_LTT/Base/SocketClient.cs new file mode 100644 index 0000000..ec20f15 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Base/SocketClient.cs @@ -0,0 +1,323 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System; +using System.Collections; +using System.Net; +using System.Text; +using System.Threading; +using System.Net.Sockets; + +namespace SA_LTT.Base +{ + public class SocketClient + { + #region Property + /// <summary> + /// Client socket + /// </summary> + private Socket sock; + + /// <summary> + /// Receive event handler + /// </summary> + private ReceiveEventHandler RecevedHandler; + + /// <summary> + /// Server ip to be connected + /// </summary> + public IPAddress Ip { get; private set; } + + /// <summary> + /// Server port to be connected + /// </summary> + public int Port { get; private set; } + + /// <summary> + /// Client name + /// </summary> + public string Name { get; private set; } + + public bool isConnected { get { return sock == null ? false : sock.Connected; } } + #endregion + + #region Construct + /// <summary> + /// Socket client construct + /// </summary> + /// <param name="ip"> Server ip to be connected</param> + /// <param name="port"> Server port to be connected</param> + public SocketClient() + { + this.Ip = IPAddress.Parse("127.0.0.1"); + this.Port = 8000; + this.Name = string.Empty; + + RecevedHandler = new ReceiveEventHandler(); + } + #endregion + + #region Fuction + public void ChangeAddress(IPAddress ip, int port) + { + if (isConnected) + { + Disconnect(); + } + + this.Ip = ip; + this.Port = port; + } + + /// <summary> + /// Connect to server + /// </summary> + /// <returns></returns> + public bool Connect() + { + try + { + if (sock == null) + sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + else if (sock.Connected) + throw new Exception("socket is already connected."); + else + { + sock.Close(); + sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + } + + IPEndPoint ipep = new IPEndPoint(Ip, Port); + + IAsyncResult async_result = sock.BeginConnect(ipep, new AsyncCallback(ConnectedCallback), sock); + + if (async_result.AsyncWaitHandle.WaitOne(5000, false)) + { + return true; + } + else + { + sock.Close(); + sock = null; + return false; + } + } + catch (Exception ex) + { + return false; + } + + } + + /// <summary> + /// Add received Event + /// </summary> + /// <param name="Received_event">Received event</param> + /// <returns></returns> + public bool Add_received_event(ReceivedEvent Received_event) + { + try + { + RecevedHandler.ReceiveEvent += Received_event; + return true; + } + catch (Exception ex) + { + return false; + } + } + + /// <summary> + /// Disconnect to server + /// </summary> + public void Disconnect() + { + try + { + if (sock == null) + throw new Exception("socket is already disconnected"); + + this.sock.Close(); + + sock.Dispose(); + sock = null; + } + catch (Exception ex) + { + } + } + + /// <summary> + /// Async connected call back + /// </summary> + /// <param name="ar"></param> + private void ConnectedCallback(IAsyncResult ar) + { + try + { + Socket client = (Socket)ar.AsyncState; + + if (!client.Connected) return; + + client.EndConnect(ar); + sock = client; + + StateObject so = new StateObject(sock); + + so.workSocket.BeginReceive(so.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(RecieveCallback), so); + } + catch (Exception ex) + { + } + } + + /// <summary> + /// Async receieve call back + /// </summary> + /// <param name="ar"></param> + private void RecieveCallback(IAsyncResult ar) + { + try + { + StateObject so = (StateObject)ar.AsyncState; + + if (!so.workSocket.Connected) return; + + int byteread = so.workSocket.EndReceive(ar); + + if (byteread > 0) + { + so.Received_data.Append(Encoding.ASCII.GetString(so.buffer, 0, byteread)); + RecevedHandler.OnReceived(so); + StateObject so2 = new StateObject(so.workSocket); + so.workSocket.BeginReceive(so2.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(RecieveCallback), so2); + } + } + catch (Exception ex) + { + } + } + + /// <summary> + /// Send data + /// </summary> + /// <param name="data"></param> + /// <param name="clientid"></param> + /// <param name="sock"></param> + public bool SendData(string data) + { + try + { + byte[] buffer = Encoding.Default.GetBytes(data); + sock.BeginSend(buffer, 0, buffer.Length, 0, new AsyncCallback(SendCallback), sock); + return true; + } + catch (Exception ex) + { + return false; + } + } + + /// <summary> + /// Send data + /// </summary> + /// <param name="data"></param> + /// <returns></returns> + public bool SendData(byte[] data) + { + try + { + sock.BeginSend(data, 0, data.Length, 0, new AsyncCallback(SendCallback), sock); + return true; + } + catch (Exception ex) + { + return false; + } + } + + /// <summary> + /// Async Send call back + /// </summary> + /// <param name="ar"></param> + public void SendCallback(IAsyncResult ar) + { + try + { + Socket sock = (Socket)ar.AsyncState; + + int byteSent = sock.EndSend(ar); + } + catch (Exception ex) + { + } + } + #endregion + } + + public delegate void ReceivedEvent(object obj, ReceiveEventArgs e); + + public class ReceiveEventHandler + { + /// <summary> + /// Recevied event + /// </summary> + public event ReceivedEvent ReceiveEvent; + + /// <summary> + /// Invoke an ReceiveEvent + /// </summary> + /// <param name="so">StateObject after received</param> + public virtual void OnReceived(StateObject so) + { + if (ReceiveEvent != null) + { + ReceiveEvent(this, new ReceiveEventArgs(so)); + } + } + } + + public class ReceiveEventArgs : EventArgs + { + public StateObject stateobject { get; private set; } + + /// <summary> + /// Socket�씠 Received �릺�뿀�쓣�븣 �궗�슜 + /// </summary> + /// <param name="so">Received �맂 �썑�쓽 StateObject 媛�</param> + public ReceiveEventArgs(StateObject stateobject) + { + this.stateobject = stateobject; + } + } + + public class StateObject + { + /// <summary> + /// Received Sockect + /// </summary> + public Socket workSocket = null; + + /// <summary> + /// Maximum size that can be received + /// </summary> + public const int BufferSize = 256; + + /// <summary> + /// Received buffer + /// </summary> + public byte[] buffer = new byte[BufferSize]; + + /// <summary> + /// Received data string + /// </summary> + public StringBuilder Received_data = new StringBuilder(); + + public StateObject(Socket sock) + { + workSocket = sock; + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Base/XmlManager.cs b/SA_LTT_UI/SA_LTT/Base/XmlManager.cs new file mode 100644 index 0000000..97e4e03 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Base/XmlManager.cs @@ -0,0 +1,131 @@ +癤퓎sing System; +using System.IO; +using System.Reflection; +using System.Xml.Serialization; + + +namespace SA_LTT.Base +{ + public abstract class XmlManager<T> where T : class + { + string _extension = ".xml"; + + public XmlManager() + { + + } + + protected void SaveFile(string filePath, T data) + { + try + { + XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); + + using (TextWriter textWriter = new StreamWriter(filePath)) + { + xmlSerializer.Serialize(textWriter, data); + textWriter.Close(); + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + + protected bool TrySaveFile(string filePath, T data) + { + try + { + XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); + + using (TextWriter textWriter = new StreamWriter(filePath)) + { + xmlSerializer.Serialize(textWriter, data); + textWriter.Close(); + } + + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + + protected T ReadFile(string filePath) + { + try + { + T data; + XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); + + using (TextReader textReader = new StreamReader(filePath)) + { + data = (T)xmlSerializer.Deserialize(textReader); + textReader.Close(); + } + + return data; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return null; + } + } + + protected bool TryReadFile(string filePath, out T data) + { + try + { + XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); + + using (TextReader textReader = new StreamReader(filePath)) + { + data = (T)xmlSerializer.Deserialize(textReader); + textReader.Close(); + } + + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + data = null; + + return false; + } + } + + protected void DeleteFile(string filePath) + { + FileInfo fileInfo = new FileInfo(filePath); + + if(fileInfo.Exists) + { + fileInfo.Delete(); + } + } + + public void Copy(T value) + { + foreach (PropertyInfo propertyInfo in this.GetType().GetProperties()) + { + // Set Method 媛� �뾾�쑝硫� �뵲濡� 媛믪쓣 �꽔吏� �븡�쓬. + if(propertyInfo.GetSetMethod() != null) + { + propertyInfo.SetValue(this, propertyInfo.GetValue(value, null), null); + } + } + } + + public T Clone() + { + T Tvalue = (T)this.MemberwiseClone(); + + return Tvalue; + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Dll/EasyModbus.dll b/SA_LTT_UI/SA_LTT/Dll/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Dll/EasyModbus.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT/Dll/OphirLMMeasurement.dll b/SA_LTT_UI/SA_LTT/Dll/OphirLMMeasurement.dll new file mode 100644 index 0000000..33f6eb7 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Dll/OphirLMMeasurement.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT/Dll/RTC5DAT.dat b/SA_LTT_UI/SA_LTT/Dll/RTC5DAT.dat new file mode 100644 index 0000000..057cee3 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Dll/RTC5DAT.dat Binary files differ diff --git a/SA_LTT_UI/SA_LTT/Dll/RTC5DLL.dll b/SA_LTT_UI/SA_LTT/Dll/RTC5DLL.dll new file mode 100644 index 0000000..4b48cec --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Dll/RTC5DLL.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT/Dll/RTC5DLLx64.dll b/SA_LTT_UI/SA_LTT/Dll/RTC5DLLx64.dll new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Dll/RTC5DLLx64.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT/Dll/RTC5OUT.out b/SA_LTT_UI/SA_LTT/Dll/RTC5OUT.out new file mode 100644 index 0000000..3d6cd41 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Dll/RTC5OUT.out Binary files differ diff --git a/SA_LTT_UI/SA_LTT/Dll/RTC5RBF.rbf b/SA_LTT_UI/SA_LTT/Dll/RTC5RBF.rbf new file mode 100644 index 0000000..d0dd886 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Dll/RTC5RBF.rbf Binary files differ diff --git a/SA_LTT_UI/SA_LTT/Dll/log4net.dll b/SA_LTT_UI/SA_LTT/Dll/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Dll/log4net.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT/Equipment.cs b/SA_LTT_UI/SA_LTT/Equipment.cs new file mode 100644 index 0000000..9cdfbd0 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Equipment.cs @@ -0,0 +1,1382 @@ +癤퓎sing SA_LTT.Alarm; +using SA_LTT.Info.AttenuatorCalInfo; +using SA_LTT.Info.EquipmentInfo; +using SA_LTT.Info.FoupInfo; +using SA_LTT.Info.RecipeInfo; +using SA_LTT.Info.WaferInfo; +using SA_LTT.Module; +using SA_LTT.Parameter; +using SA_LTT.UserInfo; +using System; +using System.Reflection; +using System.Threading; +using static SA_LTT.Info.WaferInfo.WaferInfoManager; +using static SA_LTT.Sequence; + +namespace SA_LTT +{ + //�뿬湲곗꽌�뒗 �븞�� (Auto Key媛� �뾾�쓬) ;; 洹몃깷 Maint�씪 �븣 Teach濡�.. + public enum EquipmentMode + { + Auto, + /// <summary> + /// Key teach mode + /// </summary> + Teach, + } + + public enum EquipmentStatus + { + /// <summary> + /// �옣鍮� �씠�긽 �뾾�쓬. + /// </summary> + Nomal, + /// <summary> + /// �옣鍮� Heavy �븣�엺 �긽�깭. + /// </summary> + Fault, + /// <summary> + /// �옣鍮� Light �븣�엺 �긽�깭. + /// </summary> + Warning, + /// <summary> + /// �옣鍮� PM �긽�깭 + /// </summary> + PM, + } + + public enum ProcessStatus + { + /// <summary> + /// ��湲곗긽�깭, (sequence ��湲�) + /// </summary> + Idle, + /// <summary> + /// �룞�옉�긽�깭, (sequence �룞�옉以�) + /// </summary> + Execute, + /// <summary> + /// �젙吏� �긽�깭, (sequence �씪�떆�젙吏�) + /// </summary> + Pause, + /// <summary> + /// �젙吏� ��湲� �긽�깭, (sequence �씪�떆�젙吏�, Step 吏꾪뻾 以�.) + /// </summary> + PauseWait, + } + + public delegate void UserChangedEvnet(User changedUser); + + public class Equipment : IDisposable + { + /* + =========== Hardware 紐⑸줉 ================ + Laser + PreAligner + LED <- ? + GR200 + Temp + EFU + Robot // 吏� -ing + Chiller + Scanner // �셿 + Motor + IO + Attenuator // �셿 + ============================================ + + ============= Software 紐⑸줉 ================= + Alarm // �셿 + Recipe + + Mode(Teach/Auto) + EquipmentStatus(Nomal/Fault/PM) + ProcessStatus(Idle/Execute/Pause) + + UserParameter -> 誘몄젙 + SystemParameter -> 誘몄젙 + InterlockParameter -> 誘몄젙 + + UserInfo // �셿 + ============================================= + + */ + + /// <summary> + /// �꽕�젙 �뙆�씪 ���옣 / parameter, alarm �벑. + /// </summary> + public const string settingFilePath = @"C:\SA_LTT\Config\"; + + /// <summary> + /// �젙蹂� �뙆�씪 ���옣 / user, recipe �벑. + /// </summary> + public const string infoFilePath = @"C:\SA_LTT\Info\"; + + public const string Version = "001.000.000"; + + public static string UpdateDate; + + private EquipmentStatus _equipmentStatus = EquipmentStatus.Nomal; + private ProcessStatus _processStatus = ProcessStatus.Idle; + private EquipmentMode _equipmentMode = EquipmentMode.Teach; + + private bool CheckCST1Removed; + private bool CheckCST2Removed; + private bool _isRunStop; + private bool _isAutoRun; + + public EquipmentInfo equipmentInfo; + public AttenuatorCalInfo attenuatorCalInfo; + public ModeParameterManager modeParameterManager; + public SettingParameterManager settingParameterManager; + + public Crevis crevis; + public Scanner scanner; + public PreAligner preAligner; + public Robot robot; + public AlarmManager alarmManager; + public Attenuator attenuator; + public E5CC tempControl; + public FFU ffu; + public GR200 gr200; + public PowerPmacCtrl powerPmac; + public PiLaser piLaser; + public PowerMeter powerMeter; + public Chiller chiller; + + public Chamber chamber; + public UserManager userManager; + private User _user; + + public WaferInfoManager waferInfoManager; + public RecipeManager recipeManager; + public FoupRecipeManager foupRecipeManager; + public VisionControl visionControl; + + private Sequence _sequence; + private Thread t_ModuleUpdate; + private Thread t_Sequence; + private Thread t_UpdateTowerLamp; + + public event UserChangedEvnet UserChanged; + + public Foup port1Foup; + public Foup port2Foup; + + public bool SequencePause + { + get; + private set; + } + + public bool IsDisposed + { + get; + private set; + } + + public PmcSteps PmcStep + { + get + { + return _sequence.PmcStep; + } + } + + public TmcSteps TmcStep + { + get + { + return _sequence.TmcStep; + } + } + + public bool IsEnergyDropCheckRun + { + get + { + if (PmcSteps.EnergyDropCheckStart <= PmcStep && PmcStep <= PmcSteps.EnergyDropCheckEnd) + { + return true; + } + else + { + return false; + } + } + } + + public bool IsAttenuatorCalRun + { + get + { + if (PmcSteps.AttenuatorCalStart <= PmcStep && PmcStep <= PmcSteps.AttenuatorCalEnd) + { + return true; + } + else + { + return false; + } + } + } + + public double ProcessTactTimeSeconds + { + get + { + return _sequence.ProcessTactTimeSeconds; + } + } + + public EquipmentStatus EquipmentStatus + { + get + { + return _equipmentStatus; + } + + private set + { + _equipmentStatus = value; + } + } + + public ProcessStatus ProcessStatus + { + get + { + return _processStatus; + } + + private set + { + _processStatus = value; + } + } + + public EquipmentMode EquipmentMode + { + get + { + return _equipmentMode; + } + + private set + { + _equipmentMode = value; + } + } + + public bool IsLampOn + { + get + { + if(crevis.Connected) + { + return crevis.DigitalOutputs[Crevis.DigitalOutput.FLUORESCENT_LAMP_OFF] ? false : true; + } + else + { + return false; + } + } + } + + public User User + { + get + { + return _user; + } + + private set + { + _user = value; + } + } + + /// <summary> + /// 留덉�留� Wafer 吏꾪뻾 �썑 醫낅즺. + /// </summary> + public bool IsRunStop + { + get + { + return _isRunStop; + } + + set + { + _isRunStop = value; + } + } + + public bool IsAutoRun + { + get + { + return _isAutoRun; + } + + set + { + _isAutoRun = value; + } + } + + private bool checkCycle = false; + + private System.Windows.Forms.Timer t_UiView = new System.Windows.Forms.Timer(); + private MessageBoxPad messageBoxPad = new MessageBoxPad(); + private string message; + bool messageboxPadShowBit; + + public Equipment() + { + InitializeParameter(); + InitializeData(); + InitializeModule(); + + Assembly assembly = Assembly.GetExecutingAssembly(); + DateTime buildTime = System.IO.File.GetLastWriteTime(assembly.Location); + UpdateDate = $"{buildTime.Year}-{buildTime.Month:D2}-{buildTime.Day:D2}"; + + _sequence = new Sequence(this); + + t_ModuleUpdate = new Thread(ModuleUpdate); + t_ModuleUpdate.Start(); + + t_Sequence = new Thread(SequenceRun); + t_Sequence.Start(); + + t_UpdateTowerLamp = new Thread(UpdateTowerLamp); + t_UpdateTowerLamp.Start(); + + while (checkCycle == false) ; + + EquipmentLogManager.Instance.WriteProcessLog($"Program start !!"); + + t_UiView.Tick += T_UiView_Tick; + t_UiView.Interval = 2000; + t_UiView.Start(); + } + + private void T_UiView_Tick(object sender, EventArgs e) + { + if(messageboxPadShowBit) + { + messageboxPadShowBit = false; + messageBoxPad.SetMessage(message); + messageBoxPad.Show(); + } + } + + public void SetMessageBox(string message = "") + { + this.message = message; + messageboxPadShowBit = true; + } + + private void InitializeParameter() + { + equipmentInfo = new EquipmentInfo(); + equipmentInfo.Refresh(); + + attenuatorCalInfo = new AttenuatorCalInfo(); + attenuatorCalInfo.Refresh(); + + attenuatorCalInfo.SetAttenuatorCalData(attenuatorCalInfo.GetAttenuatorCalData()); + modeParameterManager = new ModeParameterManager(); + settingParameterManager = new SettingParameterManager(); + + modeParameterManager.Refresh(); + settingParameterManager.Refresh(); + } + + private void InitializeData() + { + EquipmentMode = EquipmentMode.Auto; + EquipmentStatus = EquipmentStatus.Nomal; + ProcessStatus = ProcessStatus.Idle; + SequencePause = true; + + User = new User(); + + alarmManager = new AlarmManager(); + alarmManager.Occurred += AlarmManager_Occurred; + alarmManager.Cleared += AlarmManager_Cleared; + userManager = new UserManager(this); + waferInfoManager = new WaferInfoManager(this); + recipeManager = new RecipeManager(this); + foupRecipeManager = new FoupRecipeManager(this); + visionControl = new VisionControl(this); + + port1Foup = new Foup(this); + port1Foup.portNumber = 1; + + port2Foup = new Foup(this); + port2Foup.portNumber = 2; + } + + private void AlarmManager_Cleared() + { + + } + + private void AlarmManager_Occurred(Alarm.Alarm occurredAlarm) + { + //�엫�떆, 遺��� �궗�슜 �븞�븿. + //crevis.WriteOutput(Crevis.DigitalOutput.BUZZER_1, true); + } + + private void InitializeModule() + { + crevis = new Crevis(this); + scanner = new Scanner(this); + scanner.Initialize(); + + preAligner = new PreAligner(this); + robot = new Robot(this); + attenuator = new Attenuator(this); + tempControl = new E5CC(this); + ffu = new FFU(this); + gr200 = new GR200(this); + powerPmac = new PowerPmacCtrl(this); + piLaser = new PiLaser(this); + chamber = new Chamber(this); + powerMeter = new PowerMeter(this); + chiller = new Chiller(this); + } + + private void ModuleUpdate() + { + while (IsDisposed == false) + { + Thread.Sleep(10); + + try + { + ScannerUpdate(); + UpdateWaferInfo(); + UpdateFoupInfo(); + CheckAlarm(); + UpdateEquipmentStatus(); + + if (checkCycle == false) + { + checkCycle = true; + } + } + catch(Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + private void CheckAlarm() + { + bool check = false; + + if (crevis.DigitalInputs[Crevis.DigitalInput.EMO_SW_1]) + { + alarmManager.Occur(AlarmCode.AL_0001_EMO_STOP_1); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.EMO_SW_2]) + { + alarmManager.Occur(AlarmCode.AL_0002_EMO_STOP_2); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.EMO_SW_3]) + { + alarmManager.Occur(AlarmCode.AL_0003_EMO_STOP_3); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.EMO_SW_4]) + { + alarmManager.Occur(AlarmCode.AL_0004_EMO_STOP_4); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.SMOKE_DETECTOR_CP_BOX]) + { + alarmManager.Occur(AlarmCode.AL_0005_SMOKE_DETECTOR_ON); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.SERVO_MC_STATUS] == false) + { + alarmManager.Occur(AlarmCode.AL_0020_SERVO_MC_OFF); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.VACUUM_MC_STATUS]) + { + alarmManager.Occur(AlarmCode.AL_0021_VACUUM_MC_OFF); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.WATER_LEAK_LASER] == false) + { + alarmManager.Occur(AlarmCode.AL_0030_LASER_WATER_LEAK); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.WATER_LEAK_CHILLER] == false) + { + alarmManager.Occur(AlarmCode.AL_0031_CHILLER_WATER_LEAK); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.MAIN_CDA_PRESSURE] == false) + { + alarmManager.Occur(AlarmCode.AL_0040_MAIN_CDA_PRESSURE); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.MAIN_VAC_PRESSURE] == false) + { + alarmManager.Occur(AlarmCode.AL_0041_MAIN_VAC_PRESSURE); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.MAIN_CDA_FLOW]) + { + alarmManager.Occur(AlarmCode.AL_0042_MAIN_CDA_FLOW); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.CMB_VACUUM_PRESSURE]) + { + alarmManager.Occur(AlarmCode.AL_0043_CMB_VAC_PRESSURE); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.DOOR_LOCK_OPEN_1]) + { + alarmManager.Occur(AlarmCode.AL_0010_DOOR_OPEN_1); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.DOOR_LOCK_OPEN_2]) + { + alarmManager.Occur(AlarmCode.AL_0011_DOOR_OPEN_2); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.DOOR_LOCK_OPEN_3]) + { + alarmManager.Occur(AlarmCode.AL_0012_DOOR_OPEN_3); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.DOOR_LOCK_OPEN_4]) + { + alarmManager.Occur(AlarmCode.AL_0013_DOOR_OPEN_4); + check = true; + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.CP_BOX_OPEN]) + { + alarmManager.Occur(AlarmCode.AL_0014_DOOR_OPEN_CP); + check = true; + } + } + + private void UpdateTowerLamp() + { + /* + * ========== RED (Equipment status)========== + * �젏�벑 : Fault �긽�깭 �꽕鍮� �슫�쟾 遺덇�. (Heavy Alarm) + * �젏硫� : Warning �긽�깭 �꽕鍮� �궗�슜 媛��뒫. (Light Alarm) + * �냼�벑 : �궗�슜 媛��뒫 + * ========== YELLOW (Equipment Mode)========== + * �젏�벑 : Teach Mode + * �젏硫� : X + * �냼�벑 : Atuo Mode + * ========== GREEN (Process status)========== + * �젏�벑 : Sequence �룞�옉 以� + * �젏硫� : Sequence �씪�떆 �젙吏� + * �냼�벑 : Sequence �젙吏� �긽�깭. + */ + while (IsDisposed == false) + { + Thread.Sleep(500); + + try + { + // Red + if (alarmManager.OccurredAlarms.Count > 0) + { + if (alarmManager.OccurredAlarms.Exists(x => x.Level == AlarmLevel.Heavy)) + { + if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_RED] == false) + crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_RED, true); + } + else + { + crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_RED, !crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_RED]); + } + } + else + { + if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_RED]) + crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_RED, false); + } + + //Yellow + if (EquipmentMode == EquipmentMode.Auto) + { + if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_YELLOW]) + crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_YELLOW, false); + } + else + { + if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_YELLOW] == false) + crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_YELLOW, true); + } + + //Green + if (ProcessStatus == ProcessStatus.Execute) + { + if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_GREEN] == false) + crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_GREEN, true); + } + else if (ProcessStatus == ProcessStatus.Idle) + { + if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_GREEN]) + crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_GREEN, false); + } + else + { + crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_GREEN, !crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_GREEN]); + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + private bool IsInterlock() + { + bool check = false; + + // Robot �씤�꽣�씫 + if(robot.IsError) + { + check = true; + } + + // Vision Interlock + if (modeParameterManager.ModeParameter.AlignUse) + { + if(crevis.DigitalOutputs[Crevis.DigitalOutput.FLUORESCENT_LAMP_OFF] == false) + { + SetMessageBox("Align �궗�슜�떆 Lamp瑜� 爰쇱<�꽭�슂."); + check = true; + } + } + + // PreAligner �씤�꽣�씫 + //if(preAligner.IsHome == false) // Home �긽�깭媛� 怨꾩냽 off濡� �뱾�뼱�샂; + //{ + // check = true; + //} + + // �옣鍮� �긽�깭 �씤�꽣�씫 + + if (EquipmentMode == EquipmentMode.Teach) //�옣鍮� Mode �솗�씤 + { + check = true; + } + + if (EquipmentStatus == EquipmentStatus.Fault) //�옣鍮� �긽�깭 �솗�씤 + { + check = true; + } + + return check; + } + + private void SequenceRun() + { + while (IsDisposed == false) + { + Thread.Sleep(50); + + try + { + /* + * Auto -> Sequence �룞�옉 吏꾪뻾 以�. + * PauseWait -> Sequence �룞�옉 以� �씪�떆�젙吏� ��湲�. + * Pause -> Sequence �룞�옉 以� �씪�떆 �젙吏�. + * Idle -> Sequence ��湲� �긽�깭. + */ + + if (IsInterlock()) // Interlock 諛쒖깮. + { + ProcessPause(); + + if (_sequence.IsTmcStepPauseEnable == false) + { + _sequence.TmcSequence(); + } + + if (_sequence.IsPmcStepPauseEnable == false) + { + _sequence.PmcSequence(); + } + } + else // Interlock 諛쒖깮 �븞�븿. + { + if(SequencePause) // Pause �긽�깭 + { + if (_sequence.IsTmcStepPauseEnable == false) + { + _sequence.TmcSequence(); + } + + if(_sequence.IsPmcStepPauseEnable == false) + { + _sequence.PmcSequence(); + } + } + else // Excute �긽�깭 + { + //Todo. Shutter always use�옉 �긽愿� �뾾�씠 Energy drop check, attenuator cal �븣�뒗 �빆�긽 �뿴�뼱�넃�쓣源� ..? + if (modeParameterManager.ModeParameter.ShutterAlwaysUse) + { + if (PmcStep != PmcSteps.Wait) + { + if (crevis.DigitalOutputs[Crevis.DigitalOutput.LASER_SHUTTER_OPEN_SOL] == false) + { + crevis.WriteOutput(Crevis.DigitalOutput.LASER_SHUTTER_OPEN_SOL, true); + } + } + } + + if (IsEnergyDropCheckTime()) + { + //Tmc 吏꾪뻾 以� �씪 �븣留� �떎�뻾. + if (_sequence.TmcStep != TmcSteps.Wait) + { + _sequence.EnergyDropCheckStart(); + } + } + + if(IsAttenuatorCalTime()) + { + //Tmc 吏꾪뻾 以� �씪 �븣留� �떎�뻾. + if (_sequence.TmcStep != TmcSteps.Wait) + { + _sequence.AttenuatorCalStart(); + } + } + + _sequence.PmcSequence(); + _sequence.TmcSequence(); + } + } + + UpdateProcessStatus(); + } + catch(Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + public bool IsEnergyDropCheckTime() + { + if (modeParameterManager.ModeParameter.EnergyDropCheckUse) + { + if ((DateTime.Now - equipmentInfo.EnergyDropCheckDate).TotalHours > settingParameterManager.SettingParameter.EnergyDropCheckCycle) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + + public bool IsAttenuatorCalTime() + { + if (modeParameterManager.ModeParameter.AttenuatorCalUse) + { + if ((DateTime.Now - equipmentInfo.AttenuatorCalDate).TotalHours > settingParameterManager.SettingParameter.AttenuatorCalCycle) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + + private void UpdateEquipmentStatus() + { + if(alarmManager.OccurredAlarms.Count > 0) + { + if(alarmManager.OccurredAlarms.Exists(x=>x.Level == AlarmLevel.Heavy)) + { + EquipmentStatus = EquipmentStatus.Fault; + } + else + { + EquipmentStatus = EquipmentStatus.Warning; + } + } + else + { + if (EquipmentMode == EquipmentMode.Teach) + { + EquipmentStatus = EquipmentStatus.PM; + } + else + { + EquipmentStatus = EquipmentStatus.Nomal; + } + } + } + + private void UpdateProcessStatus() + { + if (SequencePause == false && _sequence.PmcStep == Sequence.PmcSteps.Wait && _sequence.TmcStep == Sequence.TmcSteps.Wait) + { + ProcessStatus = ProcessStatus.Idle; + ProcessPause(); + } + else if (SequencePause) + { + if (_sequence.IsTmcStepPauseEnable && _sequence.IsPmcStepPauseEnable) + { + if(_sequence.PmcStep == Sequence.PmcSteps.Wait && _sequence.TmcStep == Sequence.TmcSteps.Wait) + { + ProcessStatus = ProcessStatus.Idle; + } + else + { + ProcessStatus = ProcessStatus.Pause; + } + } + else + { + ProcessStatus = ProcessStatus.PauseWait; + } + } + else + { + ProcessStatus = ProcessStatus.Execute; + } + } + + private void ScannerUpdate() + { + if(scanner.IsInitialized) + { + scanner.GetBusy(); + scanner.GetLaserOn(); + } + + //Laser On�씪 �븣 Board On + if(scanner.IsLaserOn) + { + if (crevis.DigitalOutputs[Crevis.DigitalOutput.LASER_LED_BOARD_ON] == false) + crevis.WriteOutput(Crevis.DigitalOutput.LASER_LED_BOARD_ON, true); + } + else + { + if (crevis.DigitalOutputs[Crevis.DigitalOutput.LASER_LED_BOARD_ON] == true) + crevis.WriteOutput(Crevis.DigitalOutput.LASER_LED_BOARD_ON, false); + } + } + + private void UpdateWaferInfo() + { + //CST 1踰� �젣嫄� �맆�떆 Port1 Wafer Info 珥덇린�솕. + if(crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_1]) + { + CheckCST1Removed = false; + } + else + { + if (CheckCST1Removed == false) + { + WaferInfo waferInfo = new WaferInfo(); + WaferNumbers waferNumber = WaferNumbers.A1; + + for (int i = 0; i < 25; i++) + { + waferInfo.SourceNumber = waferNumber + i; + waferInfoManager.SetWaferInfo(waferNumber + i, waferInfo.Clone()); + } + + CheckCST1Removed = true; + } + } + + //CST 2踰� �젣嫄� �맆�떆 Port2 Wafer Info 珥덇린�솕. + if (crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_2]) + { + CheckCST2Removed = false; + } + else + { + if (CheckCST2Removed == false) + { + WaferInfo waferInfo = new WaferInfo(); + WaferNumbers waferNumber = WaferNumbers.B1; + + for (int i = 0; i < 25; i++) + { + waferInfo.SourceNumber = waferNumber + i; + waferInfoManager.SetWaferInfo(waferNumber + i, waferInfo.Clone()); + } + + CheckCST2Removed = true; + } + } + + //濡쒕큸 �룞�옉 �븞�븷 �븣 + if(robot.IsRunEnable && robot.IsPutGetRun == false) + { + //Robot Wafer info �룞湲고솕, �븷留ㅼ벐... + if (robot.IsWaferExist) + { + WaferInfo waferInfo = waferInfoManager.GetWaferInfo(WaferNumbers.Robot); + + if (waferInfo.IsStatus == WaferInfo.WaferStatus.Empty) + { + //�긽�깭 Error �븣�엺? + waferInfo.IsStatus = WaferInfo.WaferStatus.Exist; + waferInfoManager.SetWaferInfo(WaferNumbers.Robot, waferInfo); + } + } + else + { + WaferInfo waferInfo = waferInfoManager.GetWaferInfo(WaferNumbers.Robot); + + if (waferInfo.IsStatus != WaferInfo.WaferStatus.Empty) + { + //�긽�깭 Error �븣�엺? + waferInfo.IsStatus = WaferInfo.WaferStatus.Empty; + waferInfoManager.SetWaferInfo(WaferNumbers.Robot, waferInfo); + } + } + + //Aligner Wafer info �룞湲고솕, �븷留ㅼ벐... + if (preAligner.IsWaferExist) + { + WaferInfo waferInfo = waferInfoManager.GetWaferInfo(WaferNumbers.PreAligner); + + if (waferInfo.IsStatus == WaferInfo.WaferStatus.Empty) + { + //�긽�깭 Error �븣�엺? + waferInfo.IsStatus = WaferInfo.WaferStatus.Exist; + waferInfoManager.SetWaferInfo(WaferNumbers.PreAligner, waferInfo); + } + } + else + { + WaferInfo waferInfo = waferInfoManager.GetWaferInfo(WaferNumbers.PreAligner); + + if (waferInfo.IsStatus != WaferInfo.WaferStatus.Empty) + { + //�긽�깭 Error �븣�엺? + waferInfo.IsStatus = WaferInfo.WaferStatus.Empty; + waferInfoManager.SetWaferInfo(WaferNumbers.PreAligner, waferInfo); + } + } + + } + } + + private void UpdateFoupInfo() + { + if (crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_1] == false) + { + port1Foup.status = FoupStatus.Empty; + } + else + { + if(port1Foup.status == FoupStatus.Empty) + { + port1Foup.status = FoupStatus.Ready; + } + } + + if (crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_2] == false) + { + port2Foup.status = FoupStatus.Empty; + } + else + { + if (port2Foup.status == FoupStatus.Empty) + { + port2Foup.status = FoupStatus.Ready; + } + } + } + + public void Dispose() + { + EquipmentLogManager.Instance.WriteProcessLog($"Program end !!"); + IsDisposed = true; + } + + public bool ChangeUser(string userName) + { + if (userManager.ExistsUser(userName)) + { + User = userManager.GetUser(userName); + UserChanged?.Invoke(User.Clone()); + return true; + } + else + { + return false; + } + } + + public void LogOut() + { + User user = new User(); + user.Name = string.Empty; + user.Level = UserLevel.Operator; + user.Password = "1234"; + + User = user; + + UserChanged?.Invoke(User.Clone()); + } + + public void BuzzerStop() + { + crevis.WriteOutput(Crevis.DigitalOutput.BUZZER_1, false); + crevis.WriteOutput(Crevis.DigitalOutput.BUZZER_2, false); + crevis.WriteOutput(Crevis.DigitalOutput.BUZZER_3, false); + crevis.WriteOutput(Crevis.DigitalOutput.BUZZER_4, false); + } + + public void LampOn() + { + crevis.WriteOutput(Crevis.DigitalOutput.FLUORESCENT_LAMP_OFF, false); + } + + public void LampOff() + { + crevis.WriteOutput(Crevis.DigitalOutput.FLUORESCENT_LAMP_OFF, true); + } + + public void EmoStop() + { + /* + Process stop 紐⑸줉========= + process pause + Motor �젙吏�. + Scanner �젙吏�, laser off + + IO off 紐⑸줉====== + N2 MFC Valve on sol off + N2 CHB valve on sol off + CHB bypass on sol on + */ + if(ProcessStatus == ProcessStatus.Execute) + { + ProcessPause(); + } + + if(chamber.IsInposition == false) + { + chamber.AllStop(); + } + + if(scanner.IsBusy) + { + scanner.Stop(); + } + + if(scanner.IsLaserOn) + { + scanner.LaserOff(); + } + + if(crevis.DigitalOutputs[Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL] != false) + { + crevis.WriteOutput(Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL, false); + } + + if (crevis.DigitalOutputs[Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL] != false) + { + crevis.WriteOutput(Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL, false); + } + + if (crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_BYPASS_ON_SOL] != true) + { + crevis.WriteOutput(Crevis.DigitalOutput.CMB_BYPASS_ON_SOL, true); + } + } + + public void ProcessStartCheck() + { + if(User.Level == UserLevel.Operator) + { + // door close �긽�깭�뿉�꽌 媛��뒫. + } + else if (User.Level == UserLevel.Engineer) + { + // door close �긽�깭�뿉�꽌 媛��뒫. + } + else if (User.Level == UserLevel.Master) + { + // Interlock �빐�젣. + } + } + + public bool ChangeMode(EquipmentMode mode) + { + if(EquipmentMode == mode) + { + return true; + } + else + { + //�굹以묒뿉 �씤�꽣�씫 嫄멸린; + if(ProcessStatus == ProcessStatus.Idle) + { + EquipmentMode = mode; + return true; + } + else + { + return false; + } + } + } + + public bool ChangeEquipementStatus(EquipmentStatus status) + { + if(EquipmentStatus == status) + { + return true; + } + else + { + if (EquipmentStatus == EquipmentStatus.Nomal) + { + if (status == EquipmentStatus.Fault || status == EquipmentStatus.Warning) + { + if (alarmManager.OccurredAlarms.Count == 0) + { + EquipmentStatus = status; + return true; + } + else + { + + } + } + } + else if (EquipmentStatus == EquipmentStatus.Fault) + { + if(status == EquipmentStatus.Nomal) + { + if(alarmManager.OccurredAlarms.Count == 0) + { + EquipmentStatus = status; + return true; + } + else + { + + } + } + } + else if (EquipmentStatus == EquipmentStatus.Warning) + { + + } + else if (EquipmentStatus == EquipmentStatus.PM) + { + EquipmentStatus = status; + return true; + } + } + + return false; + } + + public bool ProcessStart() + { + //Teach or Fault + if (EquipmentMode == EquipmentMode.Teach || EquipmentStatus == EquipmentStatus.Fault) + { + return false; + } + + if(TmcStep == TmcSteps.Wait && PmcStep == PmcSteps.Wait) + { + for (int i = (int)WaferNumbers.B25 + 1; i < Enum.GetValues(typeof(WaferNumbers)).Length; i++) + { + if (waferInfoManager.GetWaferInfo((WaferNumbers)i).IsStatus != WaferInfo.WaferStatus.Empty) + { + SetMessageBox("�궡遺��뿉 Wafer媛� 議댁옱�빀�땲�떎."); + return false; + } + } + } + + _sequence.ProcessStart(); + SequencePause = false; + return true; + } + + public bool ProcessStartInterlock() + { + if (piLaser.CurrentPiLaserStatus.EnableLdd == false) + { + SetMessageBox("LDD 媛� �뿴�젮�엳吏� �븡�뒿�땲�떎."); + return false; + } + + if (piLaser.CurrentPiLaserStatus.EnableShutter == false) + { + SetMessageBox("Laser shutter媛� �뿴�젮�엳吏� �븡�뒿�땲�떎."); + return false; + } + + if (piLaser.CurrentPiLaserStatus.SetCurrent != piLaser.CurrentPiLaserStatus.MaxCurrent) + { + SetMessageBox("Laser set current媛� max媛믪씠 �븘�떃�땲�떎."); + return false; + } + + return true; + } + + public bool ManualProcessStart() + { + //Teach or Fault + if (EquipmentMode == EquipmentMode.Teach || EquipmentStatus == EquipmentStatus.Fault || ProcessStatus != ProcessStatus.Idle) + { + return false; + } + + if (_sequence.ManualProcessStart()) + { + SequencePause = false; + return true; + } + else + { + return false; + } + } + + public bool ManualEnergyDropCheckStart() + { + if (EquipmentMode == EquipmentMode.Teach || EquipmentStatus == EquipmentStatus.Fault || ProcessStatus != ProcessStatus.Idle) + { + return false; + } + + if (_sequence.EnergyDropCheckStart()) + { + SequencePause = false; + return true; + } + else + { + return false; + } + } + + public bool EnergyDropCheckStop() + { + SequencePause = false; + return _sequence.EnergyDropCheckStop(); + } + + public bool ManualAttenuatorCalStart() + { + if (EquipmentMode == EquipmentMode.Teach || EquipmentStatus == EquipmentStatus.Fault || ProcessStatus != ProcessStatus.Idle) + { + return false; + } + + if (_sequence.AttenuatorCalStart()) + { + SequencePause = false; + return true; + } + else + { + return false; + } + } + + public bool AttenuatorCalStop() + { + SequencePause = false; + return _sequence.AttenuatorCalStop(); + } + + public void ProcessPause() + { + if(SequencePause == false) + { + EquipmentLogManager.Instance.WriteProcessLog($"Process pause"); + SequencePause = true; + } + } + + public bool ProcessStop() + { + if(ProcessStatus == ProcessStatus.Execute) + { + return false; + } + + if(_sequence.ProcessStop()) + { + SequencePause = false; + return true; + } + else + { + return false; + } + } + + //�븳踰덈쭔 �궗�슜�븷 寃�. BeginInvoke �궗�슜以�. + public void AddRecipeExcutedEvent(RecipeExcuteEvent recipeExcuteEvent) + { + _sequence.RecipeExcuted += recipeExcuteEvent; + } + + //�븳踰덈쭔 �궗�슜�븷 寃�. BeginInvoke �궗�슜以�. + public void AddProcessInfoExcutedEvent(ProcessInfoExcuteEvent processInfoExcuteEvent) + { + _sequence.ProcessInfoExcuted += processInfoExcuteEvent; + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalData.cs b/SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalData.cs new file mode 100644 index 0000000..32917fb --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalData.cs @@ -0,0 +1,68 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT.Info.AttenuatorCalInfo +{ + public class AttenuatorCalData + { + float _attenuatorAngle; + double _energy; + + public float AttenuatorAngle + { + get + { + return _attenuatorAngle; + } + + set + { + _attenuatorAngle = value; + } + } + + public double Energy + { + get + { + return _energy; + } + + set + { + _energy = value; + } + } + + public AttenuatorCalData() + { + AttenuatorAngle = 0; + Energy = 0; + } + + public AttenuatorCalData Clone() + { + AttenuatorCalData clone = new AttenuatorCalData(); + + clone.AttenuatorAngle = this.AttenuatorAngle; + clone.Energy = this.Energy; + + return clone; + } + + public bool IsEqual(AttenuatorCalData data) + { + if(data.AttenuatorAngle == this.AttenuatorAngle && data.Energy == this.Energy) + { + return true; + } + else + { + return false; + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.cs b/SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.cs new file mode 100644 index 0000000..5b2feee --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.cs @@ -0,0 +1,188 @@ +癤퓎sing SA_LTT.Base; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT.Info.AttenuatorCalInfo +{ + public class AttenuatorCalInfo : XmlManager<AttenuatorCalInfo> + { + readonly string _fileName = "AttenuatorCalInfo.xml"; + readonly string _filePath = @"AttenuatorCalInfo\"; + + public List<AttenuatorCalData> _attenuatorCalDatas { get; set; } + + public AttenuatorCalInfo() + { + _attenuatorCalDatas = new List<AttenuatorCalData>(); + } + + public void Refresh() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath); + + if (directoryInfo.Exists == false) + { + directoryInfo.Create(); + } + + FileInfo fileInfo = new FileInfo(directoryInfo.FullName + _fileName); + + if (fileInfo.Exists == false) + { + SaveFile(fileInfo.FullName, this); + } + else + { + AttenuatorCalInfo equipmentInfo = new AttenuatorCalInfo(); + + equipmentInfo = ReadFile(fileInfo.FullName); + + Copy(equipmentInfo); + } + } + + public float GetAttenuatorAngleForEnergy(double energy) + { + float attenuatorAngle = 0; + + int i = 0; + + for (; i< _attenuatorCalDatas.Count; i++) + { + if(_attenuatorCalDatas[i].Energy >= energy) + { + break; + } + } + + if(i == 0) + { + attenuatorAngle = _attenuatorCalDatas[i].AttenuatorAngle; + } + else + { + AttenuatorCalData beforeData = _attenuatorCalDatas[i - 1]; + AttenuatorCalData afterData = _attenuatorCalDatas[i]; + + double energyValue = (afterData.Energy - beforeData.Energy) / 10; + float angleValue = (afterData.AttenuatorAngle - beforeData.AttenuatorAngle) / 10f; + + for(i = 1; i < 11; i++) + { + if((beforeData.Energy + energyValue * i) >= energy) + { + break; + } + } + + attenuatorAngle = beforeData.AttenuatorAngle + angleValue * i; + } + + return attenuatorAngle; + } + + public double GetMaxEnergy() + { + double energy = 0; + + foreach (AttenuatorCalData data in _attenuatorCalDatas) + { + if(data.Energy > energy) + { + energy = data.Energy; + } + } + + return energy; + } + + public double GetMinEnergy() + { + double energy = double.MaxValue; + + foreach (AttenuatorCalData data in _attenuatorCalDatas) + { + if (data.Energy < energy) + { + energy = data.Energy; + } + } + + if (_attenuatorCalDatas.Count == 0) + { + energy = 0; + } + + return energy; + } + + public double GetEnergyPer1Degree() + { + if(_attenuatorCalDatas.Count < 2) + { + return 0; + } + + double maxEnergy = GetMaxEnergy(); + double minEnergy = GetMinEnergy(); + + float minAngle = _attenuatorCalDatas[0].AttenuatorAngle; + float maxAngle = _attenuatorCalDatas[_attenuatorCalDatas.Count - 1].AttenuatorAngle; + + double energy = double.Parse($"{(maxEnergy - minEnergy) / (maxAngle - minAngle):F4}"); + return energy; + } + + public void SetAttenuatorCalData(AttenuatorCalData[] attenuatorCalDatas) + { + if(attenuatorCalDatas.Length != 0) + { + _attenuatorCalDatas.Clear(); + _attenuatorCalDatas.AddRange(attenuatorCalDatas); + SaveFile(Equipment.infoFilePath + _filePath + _fileName, this); + + try + { + DateTime dt = DateTime.Now; + string path = $"{EquipmentLogManager.s_attenuatorCalLogPath}AttenuatorCalData_{dt.ToString("yyMMdd_HHmmss")}.csv"; + + using (FileStream fs = File.Open(path, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite)) + { + using (StreamWriter sw = new StreamWriter(fs)) + { + foreach (AttenuatorCalData attenuatorCalData in attenuatorCalDatas) + { + sw.WriteLine($"{attenuatorCalData.AttenuatorAngle}, {attenuatorCalData.Energy}", Encoding.Default); + } + + sw.Close(); + } + + fs.Close(); + } + + } + catch(Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + } + + public AttenuatorCalData[] GetAttenuatorCalData() + { + List<AttenuatorCalData> datas = new List<AttenuatorCalData>(); + + foreach(AttenuatorCalData data in _attenuatorCalDatas) + { + datas.Add(data.Clone()); + } + + return datas.ToArray(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Info/EquipmentInfo/EquipmentInfo.cs b/SA_LTT_UI/SA_LTT/Info/EquipmentInfo/EquipmentInfo.cs new file mode 100644 index 0000000..2ba14d8 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/EquipmentInfo/EquipmentInfo.cs @@ -0,0 +1,63 @@ +癤퓎sing SA_LTT.Base; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT.Info.EquipmentInfo +{ + public class EquipmentInfo : XmlManager<EquipmentInfo> + { + readonly string _fileName = "EquipmentInfo.xml"; + readonly string _filePath = @"Equipment\"; + + public DateTime EnergyDropCheckDate { get; set; } + public DateTime AttenuatorCalDate { get; set; } + + public EquipmentInfo() + { + EnergyDropCheckDate = DateTime.Now; + AttenuatorCalDate = DateTime.Now; + } + + public void Refresh() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath); + + if (directoryInfo.Exists == false) + { + directoryInfo.Create(); + } + + FileInfo fileInfo = new FileInfo(directoryInfo.FullName + _fileName); + + if (fileInfo.Exists == false) + { + SaveFile(fileInfo.FullName, this); + } + else + { + EquipmentInfo equipmentInfo = new EquipmentInfo(); + + equipmentInfo = ReadFile(fileInfo.FullName); + + Copy(equipmentInfo); + } + } + + public void SetEnergyDropCheckDate() + { + EnergyDropCheckDate = DateTime.Now; + + SaveFile(Equipment.infoFilePath + _filePath + _fileName, this); + } + + public void SetAttenuatorCalDate() + { + AttenuatorCalDate = DateTime.Now; + SaveFile(Equipment.infoFilePath + _filePath + _fileName, this); + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Info/FoupInfo/Foup.cs b/SA_LTT_UI/SA_LTT/Info/FoupInfo/Foup.cs new file mode 100644 index 0000000..2dc0dbd --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/FoupInfo/Foup.cs @@ -0,0 +1,34 @@ +癤퓎sing SA_LTT.Info.RecipeInfo; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT.Info.FoupInfo +{ + public enum FoupStatus + { + Empty, + Ready, + Process, + Complete, + } + + public class Foup + { + Equipment _equipment; + public FoupStatus status; + public FoupRecipe foupRecipe; + public int portNumber; + + public Foup(Equipment equipment) + { + _equipment = equipment; + + portNumber = 1; + status = FoupStatus.Empty; + foupRecipe = new FoupRecipe(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipe.cs b/SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipe.cs new file mode 100644 index 0000000..7c33db6 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipe.cs @@ -0,0 +1,53 @@ +癤퓆amespace SA_LTT.Info.RecipeInfo +{ + public class FoupRecipe + { + public string Name { get; set; } + + public string[] RecipeNames { get; set; } + + public FoupRecipe() + { + RecipeNames = new string[25]; + } + + public FoupRecipe Clone() + { + FoupRecipe clone = new FoupRecipe(); + + clone.Name = this.Name; + + for(int i =0; i< 25; i++) + { + clone.RecipeNames[i] = this.RecipeNames[i]; + } + + return clone; + } + + public static bool IsEquals(FoupRecipe recipe1, FoupRecipe recipe2) + { + bool check = true; + + if (recipe1 == null && recipe2 == null) + { + check = true; + } + else if ((recipe1 == null && recipe2 != null) || (recipe1 != null && recipe2 == null)) + { + check = false; + } + else + { + check &= recipe1.Name == recipe2.Name; + + for (int i = 0; i < 25; i++) + { + check &= recipe1.RecipeNames[i] == recipe2.RecipeNames[i]; + } + } + + return check; + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipeManager.cs b/SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipeManager.cs new file mode 100644 index 0000000..2053643 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipeManager.cs @@ -0,0 +1,121 @@ +癤퓎sing SA_LTT.Base; +using System.Collections.Generic; +using System.IO; + +namespace SA_LTT.Info.RecipeInfo +{ + public class FoupRecipeManager : XmlManager<FoupRecipe> + { + Equipment _equipment; + readonly string _extension = ".xml"; + readonly string _filePath = @"FoupRecipe\"; + + private Dictionary<string, FoupRecipe> _recipes = new Dictionary<string, FoupRecipe>(); + + public Dictionary<string, FoupRecipe> Recipes + { + get + { + return _recipes; + } + + set + { + _recipes = value; + } + } + + public FoupRecipeManager(Equipment equipment) + { + _equipment = equipment; + RefreshRecipes(); + } + + public void RefreshRecipes() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath); + + if (directoryInfo.Exists == false) + { + directoryInfo.Create(); + } + + foreach (FileInfo fileInfo in directoryInfo.GetFiles("*.xml")) + { + FoupRecipe recipe = new FoupRecipe(); + + if (TryReadFile(fileInfo.FullName, out recipe)) + { + if (Recipes.ContainsKey(recipe.Name)) + { + Recipes[recipe.Name] = recipe.Clone(); + } + else + { + Recipes.Add(recipe.Name, recipe.Clone()); + } + } + } + } + + public void SaveOrCreate(FoupRecipe recipe) + { + SaveFile(Equipment.infoFilePath + _filePath + recipe.Name + _extension, recipe); + + if (Recipes.ContainsKey(recipe.Name)) + { + Recipes[recipe.Name] = recipe.Clone(); + } + else + { + Recipes.Add(recipe.Name, recipe.Clone()); + } + } + + public void Delete(string recipeName) + { + DeleteFile(Equipment.infoFilePath + _filePath + recipeName + _extension); + + if (Recipes.ContainsKey(recipeName)) + { + Recipes.Remove(recipeName); + } + } + + public bool ExistsRecipe(string recipeName) + { + if (Recipes.ContainsKey(recipeName)) + { + return true; + } + else + { + return false; + } + } + + public FoupRecipe GetRecipe(string recipeName) + { + if (ExistsRecipe(recipeName)) + { + return Recipes[recipeName].Clone(); + } + else + { + return null; + } + } + + public FoupRecipe[] GetRecipeList() + { + List<FoupRecipe> recipeList = new List<FoupRecipe>(); + + foreach (FoupRecipe recipe in Recipes.Values) + { + recipeList.Add(recipe.Clone()); + } + + return recipeList.ToArray(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Info/RecipeInfo/Recipe.cs b/SA_LTT_UI/SA_LTT/Info/RecipeInfo/Recipe.cs new file mode 100644 index 0000000..899a6d6 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/RecipeInfo/Recipe.cs @@ -0,0 +1,758 @@ +癤퓎sing SA_LTT.Module; +using System; +using System.Collections.Generic; + +namespace SA_LTT.Info.RecipeInfo +{ + public class Recipe + { + public string Name { get; set; } + public float Radius { get; set; } + public float DistanceFromCenterToPrimaryFlat { get; set; } + public float EdgeRound { get; set; } + + public float BeamWidth { get; set; } + public float BeamHeight { get; set; } + + public List<ProcessInfo> ProcessInfoList { get; set; } + + public Recipe() + { + Name = string.Empty; + ProcessInfoList = new List<ProcessInfo>(); + ProcessInfoList.Clear(); + Radius = 75; + DistanceFromCenterToPrimaryFlat = 30; + EdgeRound = 0; + + BeamWidth = 0.1f; + BeamHeight = 0.1f; + } + + public void AddProcessInfo(ProcessInfo processInfo) + { + processInfo.Radius = Radius; + processInfo.DistanceFromCenterToPrimaryFlat = DistanceFromCenterToPrimaryFlat; + processInfo.EdgeRound = EdgeRound; + processInfo.BeamWidth = BeamWidth; + + ProcessInfoList.Add(processInfo.Clone()); + } + + public Recipe Clone() + { + Recipe clone = new Recipe(); + + clone.Name = this.Name; + clone.Radius = this.Radius; + clone.DistanceFromCenterToPrimaryFlat = this.DistanceFromCenterToPrimaryFlat; + clone.EdgeRound = this.EdgeRound; + + clone.BeamWidth = this.BeamWidth; + clone.BeamHeight = this.BeamHeight; + + clone.ProcessInfoList.AddRange(this.ProcessInfoList); + + return clone; + } + + public static bool IsEquals(Recipe recipe1, Recipe recipe2) + { + bool check = true; + + if (recipe1 == null && recipe2 == null) + { + check = true; + } + else if ((recipe1 == null && recipe2 != null) || (recipe1 != null && recipe2 == null)) + { + check = false; + } + else + { + check &= recipe1.Name == recipe2.Name; + check &= recipe1.Radius == recipe2.Radius; + check &= recipe1.DistanceFromCenterToPrimaryFlat == recipe2.DistanceFromCenterToPrimaryFlat; + check &= recipe1.EdgeRound == recipe2.EdgeRound; + + check &= recipe1.BeamWidth == recipe2.BeamWidth; + check &= recipe1.BeamHeight == recipe2.BeamHeight; + + if (recipe1.ProcessInfoList.Count == recipe2.ProcessInfoList.Count) + { + for (int i = 0; i < recipe1.ProcessInfoList.Count; i++) + { + check &= ProcessInfo.IsEquals(recipe1.ProcessInfoList[i], recipe2.ProcessInfoList[i]); + + if (check == false) + break; + } + } + else + { + check = false; + } + } + + return check; + } + } + + public struct Coord + { + public ScanMode ScanMode { get; set; } + public double X { get; set; } + public double Y { get; set; } + + public Coord(ScanMode scanMode, double x, double y) + { + this.ScanMode = scanMode; + this.X = x; + this.Y = y; + } + } + + public class ProcessInfo + { + public double Radius { get; set; } + public double DistanceFromCenterToPrimaryFlat { get; set; } + public double EdgeRound { get; set; } + + public float StartX { get; set; } + public float StartY { get; set; } + + public float Width { get; set; } + public float Height { get; set; } + + public float ProcessStartX { get; set; } + public float ProcessStartY { get; set; } + public float ProcessEndX { get; set; } + public float ProcessEndY { get; set; } + + public float BeamWidth { get; set; } + public float BeamHeight { get; set; } + + public float BeamHeightOverlap { get; set; } + + public float BeamWidthOverlap { get; set; } + + public double ScannerProcessSpeed + { + get + { + return (BeamHeight - BeamHeightOverlap) * 1000; + } + } + + public double Energy { get; set; } + + public bool IsProcessEnable { get; set; } + + public double ProcessLength { get; set; } + + public double AccTime { get; set; } + public List<Coord> ProcessList { get; set; } + + public ProcessInfo() + { + ProcessList = new List<Coord>(); + + Radius = 75; + DistanceFromCenterToPrimaryFlat = 70; + EdgeRound = 0; + + StartX = 0; + StartY = 0; + Height = 0; + Width = 0; + + BeamWidth = 0.1f; + BeamHeight = 0.1f; + AccTime = 100; + SetProcessData(); + } + + public void SetRecipeData(Recipe recipe) + { + Radius = recipe.Radius; + DistanceFromCenterToPrimaryFlat = recipe.DistanceFromCenterToPrimaryFlat; + EdgeRound = recipe.EdgeRound; + + BeamWidth = recipe.BeamWidth; + BeamHeight = recipe.BeamHeight; + } + + //媛�怨� �깮�꽦, �뼵�젣 �븷 吏� �븷留� ... �뜲�씠�� 蹂�寃� �븣 留덈떎 �빐�빞�릺�젮�굹 ... + public void SetProcessData() + { + float beamHeight = BeamHeight - BeamHeightOverlap; + beamHeight = float.Parse($"{beamHeight:F4}"); + + if (Height % beamHeight != 0) //媛�怨� �넂�씠媛� beamHeight怨� 留욊쾶 �븞�뼥�뼱吏�硫� �뵳 留욊쾶 �뼥�뼱吏��룄濡� 蹂�寃�. + { + int beamCount = (int)(Height / beamHeight); + + if (Height % beamHeight > beamHeight / 2) + { + Height = (beamCount + 1) * beamHeight; + } + else + { + Height = beamCount * beamHeight; + } + } + + if(IsProcessingAreaContainWafer()) + { + if(GetProcessStartEndCoords()) + { + CreateProcessLines(); + } + } + else + { + ProcessStartX = 0; + ProcessStartY = 0; + ProcessEndX = 0; + ProcessEndY = 0; + ProcessList.Clear(); + } + } + + //媛�怨� 踰붿쐞媛� �썾�씠�띁 �븞�뿉 �엳�뒗吏� �솗�씤. + private bool IsProcessingAreaContainWafer() + { + bool isContainsEllipse = true; + + //�썾�씠�띁 以묒떖怨� �궗媛곹삎 以묒떖 �궗�씠�쓽 嫄곕━. + + double left = StartX; + double top = StartY; + double right = left + Width; + double bottom = top - Height; + + // 0, 0 <- 以묒떖. + if ((left <= 0 && 0 <= right) || + (bottom <= 0 && 0 <= top)) + { + double processsRadius = Radius - EdgeRound; + + //�궗媛곹삎 諛섏�由� 留뚰겮 �솗�옣 + double extendRectLeft = left - processsRadius; + double extendRectTop = top + processsRadius; + double extendRectRight = right + processsRadius; + double extendRectBottom = bottom - processsRadius; + + //�솗�옣�맂 �궗媛곹삎 �븞�뿉 以묒떖�씠 �삤硫� 異⑸룎 + if ((extendRectLeft < 0 && 0 < extendRectRight) && + (extendRectBottom < 0 && 0 < extendRectTop)) + { + if (top < -DistanceFromCenterToPrimaryFlat) + { + isContainsEllipse = false; + } + else + { + isContainsEllipse = true; + } + } + else + { + isContainsEllipse = false; + } + } + else + { + //�궗媛곹삎�쓽 瑗�吏��젏�씠 �썝 �븞�뿉 �삤硫� 異⑸룎 + if (IsCoordInWafer(left, top) || + IsCoordInWafer(right, top) || + IsCoordInWafer(left, bottom) || + IsCoordInWafer(right, bottom)) + { + if (top < -(DistanceFromCenterToPrimaryFlat - EdgeRound)) + { + isContainsEllipse = false; + } + else + { + isContainsEllipse = true; + } + } + else + { + isContainsEllipse = false; + } + } + + IsProcessEnable = isContainsEllipse; + + return isContainsEllipse; + } + + //媛�怨� 踰붿쐞媛� �썾�씠�띁 �븞�뿉 �엳�쑝硫� 媛�怨� �떆�옉 醫낅즺 �쐞移� �뼸�쓬. + private bool GetProcessStartEndCoords() + { + if (IsProcessEnable == false) //媛�怨� 踰붿쐞媛� �썾�씠�띁 �븞�뿉 �뾾�쑝硫� false 諛섑솚. + return false; + + double processsRadius = Radius - EdgeRound; + + double startX, startY; + double endX, endY; + + double left = StartX; + double top = StartY; + double right = left + Width; + double bottom = top - Height; + + startX = 0; + startY = 0; + endX = 0; + endY = 0; + + //=================== Start X, Y 援ы븯湲� ========================= + if (top >= 0) + { + if (top - Height > 0) + { + startX = -Math.Sqrt(Math.Pow(processsRadius, 2) - Math.Pow(top - Height, 2)); + } + else + { + startX = -Math.Sqrt(Math.Pow(processsRadius, 2)); + } + } + else + { + startX = -Math.Sqrt(Math.Pow(processsRadius, 2) - Math.Pow(top, 2)); + } + + //Start X + if (left < 0 && startX < left) + { + startX = left; + } + else if (left >= 0 && startX < left) + { + startX = left; + } + + //Start Y + if (top > processsRadius) + { + startY = processsRadius; + } + else + { + startY = top; + } + + //================================================== + + //=================== End X, Y 援ы븯湲� ========================= + if (top >= 0) + { + if (top - Height > 0) + { + //startY = top - Height; + endX = Math.Sqrt(Math.Pow(processsRadius, 2) - Math.Pow(top - Height, 2)); + } + else + { + endX = Math.Sqrt(Math.Pow(processsRadius, 2)); + } + + //startY = top; + } + else + { + endX = Math.Sqrt(Math.Pow(processsRadius, 2) - Math.Pow(top, 2)); + } + + //End X + if (right <= processsRadius && right < endX) + { + endX = right; + } + + //End Y + if ( (top - Height) >= processsRadius) + { + endY = processsRadius; + } + else + { + endY = top - Height; + } + + if (endY < -(DistanceFromCenterToPrimaryFlat - EdgeRound)) + { + double beamHeightSize = BeamHeight - BeamHeightOverlap; + + double endHeight = top + (DistanceFromCenterToPrimaryFlat - EdgeRound); + + int beamCount = (int)(endHeight / beamHeightSize); + + if (endHeight % beamHeightSize > beamHeightSize / 2) + { + beamCount++; + } + + endY = top - (beamCount * beamHeightSize); + } + + ProcessStartX = float.Parse($"{startX:F4}"); + ProcessStartY = float.Parse($"{startY:F4}"); + ProcessEndX = float.Parse($"{endX:F4}"); + ProcessEndY = float.Parse($"{endY:F4}"); + + return true; + } + + //醫뚰몴媛� �썾�씠�띁 �븞�뿉 �엳�뒗吏� �솗�씤 + private bool IsCoordInWafer(double x, double y) + { + return Math.Pow(x, 2) + Math.Pow(y, 2) <= Math.Pow(Radius - EdgeRound, 2); + } + + //X異뺤쓣 湲곗젏�쑝濡� �썾�씠�띁 �젒�젏 Y�쐞移� 諛섑솚. + private double GetPointYOfContactOfEllips(double x, double y) + { + double position = 0; + + x = double.Parse($"{x:F4}"); + y = double.Parse($"{y:F4}"); + + position = Math.Sqrt(Math.Pow(Radius - EdgeRound, 2) - Math.Pow(x, 2)); + + position = y < 0 ? -position : position; + + position = double.Parse($"{position:F4}"); + return position; + } + + //媛�怨� 醫뚰몴 List �깮�꽦 + private bool CreateProcessLines() + { + if (IsProcessEnable == false) //媛�怨� 踰붿쐞媛� �썾�씠�띁 �븞�뿉 �뾾�쑝硫� false 諛섑솚. + return false; + + int oddCheck = 0; + ProcessLength = 0; + + double jumpY = 0; + double markY = 0; + + float beamHeightSize = BeamHeight - BeamHeightOverlap; + beamHeightSize = float.Parse($"{beamHeightSize:F4}"); + + ProcessList.Clear(); // 湲곗〈 �뜲�씠�꽣 珥덇린�솕 + bool _accLengthCheck = true; + + for (double i = ProcessStartX; i <= ProcessEndX; i += (BeamWidth - BeamWidthOverlap)) // X異� 諛⑺뼢 �깘�깋 + { + //媛�怨� �떆�옉 湲곗� + if (ProcessEndY >= 0) // 媛�怨� End 媛� 0蹂대떎 �쐞�씪 �븣, End�쐞移� 湲곗��쑝濡�. + { + if (oddCheck % 2 == 0) // 吏앹닔 (left top, start �쐞移섏뿉�꽌 �떆�옉) + { + //Jump + if (IsCoordInWafer(i, ProcessEndY + Height)) + { + jumpY = ProcessEndY + Height; + } + else + { + jumpY = GetPointYOfContactOfEllips(i, ProcessEndY + Height); + + if((jumpY % beamHeightSize) >= (beamHeightSize / 2)) + { + jumpY = ProcessEndY + (beamHeightSize * Math.Floor((jumpY - ProcessEndY) / beamHeightSize)); + } + else + { + jumpY = ProcessEndY + (beamHeightSize * Math.Ceiling((jumpY - ProcessEndY) / beamHeightSize)); + } + } + + //Mark + if (IsCoordInWafer(i, ProcessEndY)) + { + markY = ProcessEndY; + } + else + { + markY = GetPointYOfContactOfEllips(i, ProcessEndY); + + if ((markY % beamHeightSize) >= (beamHeightSize / 2)) + { + markY = ProcessEndY + (beamHeightSize * Math.Floor((markY - ProcessEndY) / beamHeightSize)); + } + else + { + markY = ProcessEndY + (beamHeightSize * Math.Ceiling((markY - ProcessEndY) / beamHeightSize)); + } + } + } + else // ���닔 (right bottom, �쐞移섏뿉�꽌 �떆�옉) + { + //Jump + if (IsCoordInWafer(i, ProcessEndY)) + { + jumpY = ProcessEndY; + } + else + { + jumpY = GetPointYOfContactOfEllips(i, ProcessEndY); + + if ((jumpY % beamHeightSize) >= (beamHeightSize / 2)) + { + jumpY = ProcessEndY + (beamHeightSize * Math.Floor((jumpY - ProcessEndY) / beamHeightSize)); + } + else + { + jumpY = ProcessEndY + (beamHeightSize * Math.Ceiling((jumpY - ProcessEndY) / beamHeightSize)); + } + } + + //Mark + if (IsCoordInWafer(i, ProcessEndY + Height)) + { + markY = ProcessEndY + Height; + } + else + { + markY = GetPointYOfContactOfEllips(i, ProcessEndY + Height); + + if ((markY % beamHeightSize) >= (beamHeightSize / 2)) + { + markY = ProcessEndY + (beamHeightSize * Math.Floor((markY - ProcessEndY) / beamHeightSize)); + } + else + { + markY = ProcessEndY + (beamHeightSize * Math.Ceiling((markY - ProcessEndY) / beamHeightSize)); + } + } + } + + if(_accLengthCheck && jumpY >= ProcessStartY) + { + _accLengthCheck = false; + AccTime = ProcessLength / ScannerProcessSpeed; + } + } + else // 媛�怨� End媛� 0蹂대떎 諛묒씪 �븣 + { + if (oddCheck % 2 == 0) // 吏앹닔 (left top, start �쐞移섏뿉�꽌 �떆�옉) + { + //Jump + if (IsCoordInWafer(i, ProcessStartY)) + { + jumpY = ProcessStartY; + } + else + { + jumpY = GetPointYOfContactOfEllips(i, ProcessStartY); + + if ((jumpY % beamHeightSize) >= (beamHeightSize / 2)) + { + jumpY = ProcessStartY - (beamHeightSize * Math.Floor((ProcessStartY - jumpY) / beamHeightSize)); + } + else + { + jumpY = ProcessStartY - (beamHeightSize * Math.Ceiling((ProcessStartY - jumpY) / beamHeightSize)); + } + } + + //Mark + if (IsCoordInWafer(i, ProcessStartY - Height)) + { + markY = ProcessStartY - Height; + } + else + { + markY = GetPointYOfContactOfEllips(i, ProcessStartY - Height); + + if ((jumpY % beamHeightSize) >= (beamHeightSize / 2)) + { + markY = ProcessStartY - (beamHeightSize * Math.Floor((ProcessStartY - markY) / beamHeightSize)); + } + else + { + markY = ProcessStartY - (beamHeightSize * Math.Ceiling((ProcessStartY - markY) / beamHeightSize)); + } + } + } + else // ���닔 (right bottom, �쐞移섏뿉�꽌 �떆�옉) + { + //Jump + if (IsCoordInWafer(i, ProcessStartY - Height)) + { + jumpY = ProcessStartY - Height; + } + else + { + jumpY = GetPointYOfContactOfEllips(i, ProcessStartY - Height); + + if ((jumpY % beamHeightSize) >= (beamHeightSize / 2)) + { + jumpY = ProcessStartY - (beamHeightSize * Math.Floor((ProcessStartY - jumpY) / beamHeightSize)); + } + else + { + jumpY = ProcessStartY - (beamHeightSize * Math.Ceiling((ProcessStartY - jumpY) / beamHeightSize)); + } + } + + //Mark + if (IsCoordInWafer(i, ProcessStartY)) + { + markY = ProcessStartY; + } + else + { + markY = GetPointYOfContactOfEllips(i, ProcessStartY); + + if ((markY % beamHeightSize) >= (beamHeightSize / 2)) + { + markY = ProcessStartY - (beamHeightSize * Math.Floor((ProcessStartY - markY) / beamHeightSize)); + } + else + { + markY = ProcessStartY - (beamHeightSize * Math.Ceiling((ProcessStartY - markY) / beamHeightSize)); + } + } + } + + if (_accLengthCheck && jumpY <= ProcessEndY) + { + _accLengthCheck = false; + AccTime = ProcessLength / ScannerProcessSpeed; + } + } + + if (jumpY < ProcessEndY) + { + jumpY = ProcessEndY; + } + + if (markY < ProcessEndY) + { + markY = ProcessEndY; + } + + jumpY = double.Parse($"{jumpY:F4}"); + markY = double.Parse($"{markY:F4}"); + i = double.Parse($"{i:F4}"); + + ProcessList.Add(new Coord(ScanMode.JUMP, i, jumpY)); + ProcessList.Add(new Coord(ScanMode.MARK, i, markY)); + + ProcessLength += Math.Abs(markY - jumpY); + //ProcessLength += Math.Abs(ProcessStartY - ProcessEndY); + ProcessLength += 0.1 + 0.1; // JumpDelay + MarkDelay; + ProcessLength += beamHeightSize; + + oddCheck++; + } + + // Process y - y = 3950.64 + // mark y -y = 3723.49 + ProcessLength = double.Parse($"{ProcessLength:F3}"); + return true; + } + + public ProcessInfo Clone() + { + ProcessInfo processInfo = new ProcessInfo(); + + processInfo.Radius = Radius; + processInfo.DistanceFromCenterToPrimaryFlat = DistanceFromCenterToPrimaryFlat; + processInfo.EdgeRound = EdgeRound; + + processInfo.StartX = StartX; + processInfo.StartY = StartY; + processInfo.Height = Height; + processInfo.Width = Width; + + processInfo.ProcessStartX = ProcessStartX; + processInfo.ProcessStartY = ProcessStartY; + processInfo.ProcessEndX = ProcessEndX; + processInfo.ProcessEndY = ProcessEndY; + + processInfo.BeamWidth = BeamWidth; + processInfo.BeamHeight = BeamHeight; + + processInfo.BeamHeightOverlap = BeamHeightOverlap; + processInfo.BeamWidthOverlap = BeamWidthOverlap; + processInfo.Energy = Energy; + + processInfo.IsProcessEnable = IsProcessEnable; + + foreach(Coord coord in ProcessList) + { + Coord copy = new Coord(coord.ScanMode, coord.X, coord.Y); + + processInfo.ProcessList.Add(copy); + } + + return processInfo; + } + + public static bool IsEquals(ProcessInfo info1, ProcessInfo info2) + { + bool check = true; + + if (info1 == null && info2 == null) + { + check = true; + } + else if ((info1 == null && info2 != null) || (info1 != null && info2 == null)) + { + check = false; + } + else + { + check &= info1.Radius == info2.Radius; + check &= info1.DistanceFromCenterToPrimaryFlat == info2.DistanceFromCenterToPrimaryFlat; + + check &= info1.StartX == info2.StartX; + check &= info1.StartY == info2.StartY; + check &= info1.Height == info2.Height; + check &= info1.Width == info2.Width; + + check &= info1.ProcessStartX == info2.ProcessStartX; + check &= info1.ProcessStartY == info2.ProcessStartY; + check &= info1.ProcessEndX == info2.ProcessEndX; + check &= info1.ProcessEndY == info2.ProcessEndY; + + check &= info1.BeamWidth == info2.BeamWidth; + + check &= info1.BeamHeightOverlap == info2.BeamHeightOverlap; + check &= info1.BeamWidthOverlap == info2.BeamWidthOverlap; + + check &= info1.IsProcessEnable == info2.IsProcessEnable; + + check &= info1.Energy == info2.Energy; + + if (info1.ProcessList.Count == info2.ProcessList.Count) + { + for (int i = 0; i < info1.ProcessList.Count; i++) + { + check &= info1.ProcessList[i].ScanMode == info2.ProcessList[i].ScanMode; + check &= info1.ProcessList[i].X == info2.ProcessList[i].X; + check &= info1.ProcessList[i].Y == info2.ProcessList[i].Y; + + if (check == false) + break; + } + } + else + { + check = false; + } + } + return check; + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Info/RecipeInfo/RecipeManager.cs b/SA_LTT_UI/SA_LTT/Info/RecipeInfo/RecipeManager.cs new file mode 100644 index 0000000..3fc6d6a --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/RecipeInfo/RecipeManager.cs @@ -0,0 +1,121 @@ +癤퓎sing SA_LTT.Base; +using System.Collections.Generic; +using System.IO; + +namespace SA_LTT.Info.RecipeInfo +{ + public class RecipeManager : XmlManager<Recipe> + { + Equipment _equipment; + readonly string _extension = ".xml"; + readonly string _filePath = @"Recipe\"; + + private Dictionary<string, Recipe> _recipes = new Dictionary<string, Recipe>(); + + public Dictionary<string, Recipe> Recipes + { + get + { + return _recipes; + } + + set + { + _recipes = value; + } + } + + public RecipeManager(Equipment equipment) + { + _equipment = equipment; + RefreshRecipes(); + } + + public void RefreshRecipes() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath); + + if (directoryInfo.Exists == false) + { + directoryInfo.Create(); + } + + foreach (FileInfo fileInfo in directoryInfo.GetFiles("*.xml")) + { + Recipe recipe = new Recipe(); + + if (TryReadFile(fileInfo.FullName, out recipe)) + { + if (Recipes.ContainsKey(recipe.Name)) + { + Recipes[recipe.Name] = recipe.Clone(); + } + else + { + Recipes.Add(recipe.Name, recipe.Clone()); + } + } + } + } + + public void SaveOrCreate(Recipe recipe) + { + SaveFile(Equipment.infoFilePath + _filePath + recipe.Name + _extension, recipe); + + if (Recipes.ContainsKey(recipe.Name)) + { + Recipes[recipe.Name] = recipe.Clone(); + } + else + { + Recipes.Add(recipe.Name, recipe.Clone()); + } + } + + public void Delete(string recipeName) + { + DeleteFile(Equipment.infoFilePath + _filePath + recipeName + _extension); + + if (Recipes.ContainsKey(recipeName)) + { + Recipes.Remove(recipeName); + } + } + + public bool ExistsRecipe(string recipeName) + { + if (Recipes.ContainsKey(recipeName)) + { + return true; + } + else + { + return false; + } + } + + public Recipe GetRecipe(string recipeName) + { + if (ExistsRecipe(recipeName)) + { + return Recipes[recipeName].Clone(); + } + else + { + return null; + } + } + + public Recipe[] GetRecipeList() + { + List<Recipe> recipeList = new List<Recipe>(); + + foreach (Recipe recipe in Recipes.Values) + { + recipeList.Add(recipe.Clone()); + } + + return recipeList.ToArray(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Info/UserInfo/User.cs b/SA_LTT_UI/SA_LTT/Info/UserInfo/User.cs new file mode 100644 index 0000000..818fead --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/UserInfo/User.cs @@ -0,0 +1,80 @@ +癤퓆amespace SA_LTT.UserInfo +{ + public enum UserLevel + { + Operator, + Engineer, + Master, + } + + public class User + { + string _name; + string _password; + UserLevel _level; + + public string Name + { + get + { + return _name; + } + + set + { + _name = value; + } + } + + public string Password + { + get + { + return _password; + } + + set + { + _password = value; + } + } + + public UserLevel Level + { + get + { + return _level; + } + + set + { + _level = value; + } + } + + public User() + { + Name = string.Empty; + Password = string.Empty; + Level = UserLevel.Operator; + } + + public User Clone() + { + User user = (User)this.MemberwiseClone(); + + return user; + } + + public bool Equals(User user) + { + bool check = true; + + check &= this.Name == user.Name; + check &= this.Password == user.Password; + check &= this.Level == user.Level; + + return check; + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Info/UserInfo/UserManager.cs b/SA_LTT_UI/SA_LTT/Info/UserInfo/UserManager.cs new file mode 100644 index 0000000..bf067f1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/UserInfo/UserManager.cs @@ -0,0 +1,154 @@ +癤퓎sing SA_LTT.Base; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT.UserInfo +{ + public delegate void UserInfoChanged(); + public class UserManager : XmlManager<User> + { + Equipment _equipment; + readonly string _extension = ".xml"; + readonly string _filePath = @"User\"; + + public event UserInfoChanged Changed; + + private Dictionary<string, User> _users = new Dictionary<string, User>(); + + private Dictionary<string, User> Users + { + get + { + return _users; + } + + set + { + _users = value; + } + } + + public UserManager(Equipment equipment) + { + _equipment = equipment; + RefreshUsers(); + } + + public void RefreshUsers() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath); + + if(directoryInfo.Exists == false) + { + directoryInfo.Create(); + } + + foreach (FileInfo fileInfo in directoryInfo.GetFiles("*.xml")) + { + User user = new User(); + + if(TryReadFile(fileInfo.FullName, out user)) + { + if (Users.ContainsKey(user.Name)) + { + Users[user.Name] = user.Clone(); + } + else + { + Users.Add(user.Name, user.Clone()); + } + } + } + + // DIT 怨꾩젙 �뾾�쓣 �떆 �깮�꽦. + if (Users.ContainsKey("DIT") == false) + { + User user = new User(); + user.Name = "DIT"; + user.Password = "1234"; + user.Level = UserLevel.Master; + + SaveOrCreate(user); + } + + // Operator 怨꾩젙 �뾾�쓣 �떆 �깮�꽦. + if (Users.ContainsKey("Operator") == false) + { + User user = new User(); + user.Name = "Operator"; + user.Password = "1234"; + user.Level = UserLevel.Operator; + + SaveOrCreate(user); + } + } + + public void SaveOrCreate(User user) + { + SaveFile(Equipment.infoFilePath + _filePath + user.Name + _extension, user); + + if (Users.ContainsKey(user.Name)) + { + Users[user.Name] = user.Clone(); + } + else + { + Users.Add(user.Name, user.Clone()); + } + + Changed?.Invoke(); + } + + public void Delete(string userName) + { + DeleteFile(Equipment.infoFilePath + _filePath + userName + _extension); + + if (Users.ContainsKey(userName)) + { + Users.Remove(userName); + } + + Changed?.Invoke(); + } + + public bool ExistsUser(string userName) + { + if(_users.ContainsKey(userName)) + { + return true; + } + else + { + return false; + } + } + + public User GetUser(string userName) + { + if(ExistsUser(userName)) + { + return _users[userName].Clone(); + } + else + { + return null; + } + } + + public User[] GetUserList() + { + List<User> userList = new List<User>(); + + foreach(User user in Users.Values) + { + userList.Add(user.Clone()); + } + + return userList.ToArray(); + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfo.cs b/SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfo.cs new file mode 100644 index 0000000..595481d --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfo.cs @@ -0,0 +1,58 @@ +癤퓎sing SA_LTT.Base; +using static SA_LTT.Info.WaferInfo.WaferInfoManager; + +namespace SA_LTT.Info.WaferInfo +{ + //Foup id�뒗 �뵲濡� �뾾�쓬. + public class WaferInfo + { + public enum WaferStatus + { + //�뾾�쓬 + Empty = 0, + //�엳�쓬 + Exist, + //�썾�씠�띁 湲곗슱�뼱吏� + Leaning, + //�썾�씠�띁 寃뱀묠 + Overlap, + } + + // Recipe�뒗 �빆紐� 留뚮뱾�뼱 �넃怨� 吏꾪뻾... + //private Recipe _recipeInfo; + + public WaferStatus IsStatus { get; set; } + + public bool IsFlip { get; set; } + + public bool IsProcessComplete { get; set; } + + public string CarrierID { get; set; } + + public string LotID { get; set; } + + public string RecipeName { get; set; } + + public WaferNumbers SourceNumber { get; set; } + + public WaferInfo() + { + IsStatus = WaferStatus.Empty; + IsFlip = false; + IsProcessComplete = false; + + LotID = string.Empty; + CarrierID = string.Empty; + + RecipeName = string.Empty; + SourceNumber = WaferNumbers.A1; + } + + public WaferInfo Clone() + { + WaferInfo info = (WaferInfo)this.MemberwiseClone(); + + return info; + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfoManager.cs b/SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfoManager.cs new file mode 100644 index 0000000..d3be0a3 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfoManager.cs @@ -0,0 +1,243 @@ +癤퓎sing SA_LTT.Base; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT.Info.WaferInfo +{ + public class WaferInfoManager : XmlManager<WaferInfo> + { + public enum WaferNumbers + { + A1, + A2, + A3, + A4, + A5, + A6, + A7, + A8, + A9, + A10, + A11, + A12, + A13, + A14, + A15, + A16, + A17, + A18, + A19, + A20, + A21, + A22, + A23, + A24, + A25, + + B1, + B2, + B3, + B4, + B5, + B6, + B7, + B8, + B9, + B10, + B11, + B12, + B13, + B14, + B15, + B16, + B17, + B18, + B19, + B20, + B21, + B22, + B23, + B24, + B25, + + Robot, + PreAligner, + Chamber, + } + + Equipment _equipment; + readonly string _filePath = @"Wafer\"; + + private Dictionary<WaferNumbers, WaferInfo> _waferInfos; + + public WaferInfoManager(Equipment equipement) + { + equipement = _equipment; + + _waferInfos = new Dictionary<WaferNumbers, WaferInfo>(); + + foreach(WaferNumbers info in Enum.GetValues(typeof(WaferNumbers))) + { + _waferInfos.Add(info, new WaferInfo()); + } + + RefreshWaferInfo(); + } + + public void RefreshWaferInfo() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath); + + if (directoryInfo.Exists == false) + { + directoryInfo.Create(); + } + + WaferInfo waferinfo = new WaferInfo(); + + //LoadPort1, 2 + for (int i = 0; i < 25; i++) + { + if (TryReadFile(directoryInfo.FullName + $"{WaferNumbers.A1 + i}.xml", out waferinfo)) + { + _waferInfos[WaferNumbers.A1 + i] = waferinfo; + } + else + { + waferinfo = new WaferInfo(); + SaveFile(directoryInfo.FullName + $"{WaferNumbers.A1 + i}.xml", waferinfo); + } + + if (TryReadFile(directoryInfo.FullName + $"{WaferNumbers.B1 + i}.xml", out waferinfo)) + { + _waferInfos[WaferNumbers.B1 + i] = waferinfo; + } + else + { + waferinfo = new WaferInfo(); + SaveFile(directoryInfo.FullName + $"{WaferNumbers.B1 + i}.xml", waferinfo); + } + } + + //Robot + if (TryReadFile(directoryInfo.FullName + $"Robot.xml", out waferinfo)) + { + _waferInfos[WaferNumbers.Robot] = waferinfo; + } + else + { + waferinfo = new WaferInfo(); + SaveFile(directoryInfo.FullName + $"Robot.xml", waferinfo); + } + + //Pre align + if (TryReadFile(directoryInfo.FullName + $"PreAligner.xml", out waferinfo)) + { + _waferInfos[WaferNumbers.PreAligner] = waferinfo; + } + else + { + waferinfo = new WaferInfo(); + SaveFile(directoryInfo.FullName + $"PreAligner.xml", waferinfo); + } + + //Chamber + if (TryReadFile(directoryInfo.FullName + $"Chamber.xml", out waferinfo)) + { + _waferInfos[WaferNumbers.Chamber] = waferinfo; + } + else + { + waferinfo = new WaferInfo(); + SaveFile(directoryInfo.FullName + $"Chamber.xml", waferinfo); + } + } + + public void MoveWaferInfo(WaferNumbers source, WaferNumbers destination) + { + _waferInfos[destination] = _waferInfos[source].Clone(); + + _waferInfos[source] = new WaferInfo(); + + SetWaferInfo(source, _waferInfos[source]); + SetWaferInfo(destination, _waferInfos[destination]); + } + + public WaferInfo GetWaferInfo(WaferNumbers waferNumber) + { + return _waferInfos[waferNumber].Clone(); + } + + public void SetWaferInfo(WaferNumbers waferNumber, WaferInfo waferInfo) + { + lock(this) + { + _waferInfos[waferNumber] = waferInfo; + + SaveFile(Equipment.infoFilePath + _filePath + $"{waferNumber.ToString()}.xml", waferInfo); + } + } + + public static bool TryParse(int stageNum, int slotNum, out WaferNumbers waferNumber) + { + waferNumber = WaferNumbers.A1; + WaferNumbers waferNum = WaferNumbers.A1; + if (stageNum == 1) + { + //port 1 + if(1 <= slotNum && slotNum <= 25) + { + waferNumber = waferNum + (slotNum - 1); + } + else + { + return false; + } + } + else if (stageNum == 2) + { + //port 2 + waferNum = WaferNumbers.B1; + + if (1 <= slotNum && slotNum <= 25) + { + waferNumber = waferNum + (slotNum - 1); + } + else + { + return false; + } + } + else if (stageNum == 3 || stageNum == 4) + { + //Aligner + if (slotNum == 1) + { + waferNumber = WaferNumbers.PreAligner; + } + else + { + return false; + } + } + else if (stageNum == 5) + { + //Chamber + if (slotNum == 1) + { + waferNumber = WaferNumbers.Chamber; + } + else + { + return false; + } + } + + return true; + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Log/EquipmentLogManager.cs b/SA_LTT_UI/SA_LTT/Log/EquipmentLogManager.cs new file mode 100644 index 0000000..d5722b1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Log/EquipmentLogManager.cs @@ -0,0 +1,122 @@ +癤퓎sing System; +using System.Text; +using log4net; +using log4net.Appender; +using log4net.Layout; +using log4net.Repository.Hierarchy; + +namespace SA_LTT +{ + /* 濡쒓렇 �뙆�씪寃쎈줈 �삎�떇�� 紐⑤몢 �삊媛숈씠 �빐�빞 �븿. + * �삎�떇 : rootPath\yyyy\mm\fileName_dd.log + * �솗�옣�옄�뒗 蹂�寃� �빐�룄 臾닿�. + */ + public class EquipmentLogManager + { + public delegate void AddProcessLogEvent(string logData); + private static readonly Lazy<EquipmentLogManager> _instatnce = new Lazy<EquipmentLogManager>(() => new EquipmentLogManager()); + + public static EquipmentLogManager Instance + { + get + { + return _instatnce.Value; + } + } + + LogCreater _exceptionLog = new LogCreater("Exception", s_exceptionLogPath); + LogCreater _alarmOccurredLog = new LogCreater("AlarmOccurred", s_alarmOccurredLogPath); + LogCreater _alarmChangedLog = new LogCreater("AlarmChanged", s_alarmChangedLogPath); + LogCreater _tmcSequenceLog = new LogCreater("TmcSequence", s_tmcSequenceLogPath); + LogCreater _pmcSequenceLog = new LogCreater("PmcSequence", s_pmcSequenceLogPath); + LogCreater _buttonLog = new LogCreater("Button", s_buttonLogPath); + LogCreater _energyDropCheckLog = new LogCreater("EnergyDropCheck", s_energyDropCheckLogPath); + LogCreater _attenuatorCalLog = new LogCreater("AttenuatorCal", s_attenuatorCalLogPath); + LogCreater _porecessLog = new LogCreater("Process", s_processLogPath); + LogCreater _preAlignLog = new LogCreater("PreAlign", s_preAlignLogPath); + LogCreater _energyMeterLog = new LogCreater("EnergyMeter", s_energyMeterLogPath); + LogCreater _energyMeasureLog = new LogCreater("EnergyMeasure", s_energyMeasureLogPath); + + + private EquipmentLogManager() + { + + } + + public event AddProcessLogEvent ProcessLogAdded; + + public static readonly string s_exceptionLogPath = $@"D:\Log\Exception\"; + public static readonly string s_alarmOccurredLogPath = $@"D:\Log\AlarmOccurred\"; + public static readonly string s_alarmChangedLogPath = $@"D:\Log\AlarmChanged\"; + public static readonly string s_tmcSequenceLogPath = $@"D:\Log\TmcSequence\"; + public static readonly string s_pmcSequenceLogPath = $@"D:\Log\PmcSequence\"; + public static readonly string s_buttonLogPath = $@"D:\Log\Button\"; + public static readonly string s_energyDropCheckLogPath = $@"D:\Log\EnergyDropCheck\"; + public static readonly string s_attenuatorCalLogPath = $@"D:\Log\AttenuatorCal\"; + public static readonly string s_processLogPath = $@"D:\Log\Process\"; + public static readonly string s_preAlignLogPath = $@"D:\Log\PreAlign\"; + public static readonly string s_energyMeterLogPath = $@"D:\Log\EnergyMeter\"; + public static readonly string s_energyMeasureLogPath = $@"D:\Log\EnergyMeasure\"; + + public void WriteExceptionLog(string message) + { + _exceptionLog.WriteLog(message); + } + + public void WriteAlarmOccurredLog(string message) + { + _alarmOccurredLog.WriteLog(message); + } + + public void WriteAlarmChangedLog(string message) + { + _alarmChangedLog.WriteLog(message); + } + + public void WriteTmcSequenceLog(string message) + { + _tmcSequenceLog.WriteLog(message); + } + + public void WritePmcSequenceLog(string message) + { + _pmcSequenceLog.WriteLog(message); + } + + public void WriteButtonLog(string message) + { + _buttonLog.WriteLog(message); + } + + public void WriteEnergyDropCheckLog(string message) + { + _energyDropCheckLog.WriteLog(message); + } + + public void WriteAttenuatorCalLog(string message) + { + _attenuatorCalLog.WriteLog(message); + } + + public void WriteProcessLog(string message) + { + _porecessLog.WriteLog(message); + ProcessLogAdded?.Invoke(message); + } + + public void WritePreAlignLog(string message) + { + _preAlignLog.WriteLog(message); + } + + public void WriteEnergyMeterLog(string message) + { + _energyMeterLog.WriteLog(message); + } + + public void WriteEnergyMeasureLog(string message) + { + _energyMeasureLog.WriteLog(message); + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Log/LogCreater.cs b/SA_LTT_UI/SA_LTT/Log/LogCreater.cs new file mode 100644 index 0000000..e12f5c0 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Log/LogCreater.cs @@ -0,0 +1,64 @@ +癤퓎sing System.Text; +using log4net; +using log4net.Appender; +using log4net.Layout; +using log4net.Repository.Hierarchy; + +namespace SA_LTT +{ + public class LogCreater + { + private string _logName; + + private string _logPath; + + private ILog _log = LogManager.GetLogger("Button"); + + public LogCreater(string logName, string logPath = @"D:\Log\") + { + _logName = logName; + _logPath = logPath; + _log = LogManager.GetLogger($"{_logName}"); + + CreateLogger(); + } + + private void CreateLogger() + { + Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); + RollingFileAppender rollingAppender = new RollingFileAppender(); + + PatternLayout layout = new PatternLayout(); + hierarchy.Configured = true; + + rollingAppender.Name = $"{_logName}_RoolingFile"; + rollingAppender.LockingModel = new RollingFileAppender.MinimalLock(); + rollingAppender.File = $@"{_logPath}\"; + rollingAppender.AppendToFile = true; + rollingAppender.DatePattern = $"yyyy\\\\MM\\\\'{_logName}'_dd'.log'"; + rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Composite; + rollingAppender.MaxSizeRollBackups = 10; + rollingAppender.MaximumFileSize = "100MB"; + rollingAppender.StaticLogFileName = false; + rollingAppender.Encoding = Encoding.UTF8; + rollingAppender.PreserveLogFileNameExtension = true; + layout = new PatternLayout("%d{yyyy/MM/dd HH:mm:ss.fff}, %m%n"); + layout.ActivateOptions(); + rollingAppender.Layout = layout; + rollingAppender.ActivateOptions(); + + hierarchy.GetLogger($"{_logName}"); + ILog log = LogManager.GetLogger($"{_logName}"); + Logger l = (Logger)log.Logger; + l.Level = log4net.Core.Level.Debug; + l.AddAppender(rollingAppender); + + _log = LogManager.GetLogger($"{_logName}"); + } + + public void WriteLog(string message) + { + _log.Debug(message); + } + } +} diff --git a/SA_LTT_UI/SA_LTT/MessageBox.Designer.cs b/SA_LTT_UI/SA_LTT/MessageBox.Designer.cs new file mode 100644 index 0000000..1e7dd97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/MessageBox.Designer.cs @@ -0,0 +1,76 @@ +癤퓆amespace SA_LTT +{ + partial class MessageBoxPad + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.btn_Close = new System.Windows.Forms.Button(); + this.tb_Message = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // btn_Close + // + this.btn_Close.Location = new System.Drawing.Point(198, 192); + this.btn_Close.Name = "btn_Close"; + this.btn_Close.Size = new System.Drawing.Size(187, 41); + this.btn_Close.TabIndex = 3; + this.btn_Close.Text = "Close"; + this.btn_Close.UseVisualStyleBackColor = true; + this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click); + // + // tb_Message + // + this.tb_Message.Font = new System.Drawing.Font("Gulim", 15F); + this.tb_Message.Location = new System.Drawing.Point(12, 12); + this.tb_Message.Multiline = true; + this.tb_Message.Name = "tb_Message"; + this.tb_Message.ReadOnly = true; + this.tb_Message.Size = new System.Drawing.Size(588, 152); + this.tb_Message.TabIndex = 2; + this.tb_Message.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // MessageBoxPad + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(612, 245); + this.Controls.Add(this.btn_Close); + this.Controls.Add(this.tb_Message); + this.Name = "MessageBoxPad"; + this.Text = "MessageBox"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MessageBoxPad_FormClosing); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btn_Close; + private System.Windows.Forms.TextBox tb_Message; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/MessageBox.cs b/SA_LTT_UI/SA_LTT/MessageBox.cs new file mode 100644 index 0000000..5159b55 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/MessageBox.cs @@ -0,0 +1,37 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT +{ + public partial class MessageBoxPad : Form + { + public MessageBoxPad(string message = "") + { + InitializeComponent(); + tb_Message.Text = message; + } + + private void btn_Close_Click(object sender, EventArgs e) + { + this.Close(); + } + + public void SetMessage(string message) + { + tb_Message.Text = message; + } + + private void MessageBoxPad_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT/MessageBox.resx b/SA_LTT_UI/SA_LTT/MessageBox.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/MessageBox.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/Attenuator.cs b/SA_LTT_UI/SA_LTT/Module/Attenuator.cs new file mode 100644 index 0000000..8e26101 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/Attenuator.cs @@ -0,0 +1,472 @@ +癤퓎sing SA_LTT.Base; +using System; +using System.Threading; + +namespace SA_LTT.Module +{ + public class Attenuator : ComPort + { + public enum MotorRunState + { + Stopped, + Accelerating, + Decelerating, + Running, + } + + public enum MicroSteppingResolution : int + { + /// <summary> + /// 1 Motor is driven in full steps mode.Waveplate holder turns once in 15600 steps. + /// </summary> + FullStep = 1, + /// <summary> + /// 2 Half step mode.Waveplate holder turns once in 31200 steps. + /// </summary> + HalfStep = 2 , + /// <summary> + /// 4 Quarter step mode.Waveplate holder turns once in 62400 steps. + /// </summary> + QuaterStep = 4, + /// <summary> + /// 8 Eight step mode.Waveplate holder turns once in 124800 steps. + /// </summary> + EightStep = 8, + /// <summary> + /// 16 Sixteen step mode.Waveplate holder turns once in 249600 steps. + /// </summary> + SixteenStep = 16, + } + + private MotorRunState _motorState; + private int _position; + private int _speed; + private int _accelerationValue; + private int _decelerationValue; + private MicroSteppingResolution _steppingResolution; + private bool _motorEnable; + + private Equipment _equipment; + private Thread t_statusUpdate; + + public double DegreePerSecondFromSpeed + { + get + { + return 14400000 / (78 * (int)SteppingResolution * (65535 - Speed)); + } + } + + public int Position + { + get + { + return _position; + } + + private set + { + _position = value; + } + } + + public double Degree + { + get + { + return Math.Round(Position * GetDegreefromSteppingResolution(), 3); + } + } + + public int Speed + { + get + { + return _speed; + } + + private set + { + _speed = value; + } + } + + public int AccelerationValue + { + get + { + return _accelerationValue; + } + + private set + { + _accelerationValue = value; + } + } + + public int DecelerationValue + { + get + { + return _decelerationValue; + } + + private set + { + _decelerationValue = value; + } + } + + public MicroSteppingResolution SteppingResolution + { + get + { + return _steppingResolution; + } + + private set + { + _steppingResolution = value; + } + } + + public bool MotorEnable + { + get + { + return _motorEnable; + } + + private set + { + _motorEnable = value; + } + } + + public MotorRunState MotorState + { + get + { + return _motorState; + } + + private set + { + _motorState = value; + } + } + + public Attenuator(Equipment equipment) + { + serialPort.PortName = "COM11"; + serialPort.BaudRate = 38400; + serialPort.Parity = System.IO.Ports.Parity.None; + serialPort.DataBits = 8; + serialPort.StopBits = System.IO.Ports.StopBits.One; + serialPort.ReadTimeout = 500; + ReceiveWaitSeconds = 0.5; + Terminator = "\n\r"; + + _steppingResolution = MicroSteppingResolution.FullStep; + + _equipment = equipment; + + t_statusUpdate = new Thread(statusUpdate); + t_statusUpdate.Start(); + } + + public void statusUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + Thread.Sleep(50); + + if (IsOpen) + { + ReadSettings(); + ReadStatus(); + } + else + { + if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0053_ATTENUATOR_DISCONNECTED)) + { + + } + else + { + if (Open() == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0053_ATTENUATOR_DISCONNECTED); + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + public void Home() + { + Write("zp"); + } + + public void Stop() + { + Write("st"); + } + + public void MoveAbsolute(float angle) + { + int position = (int)(angle / GetDegreefromSteppingResolution()); + + Write($"g {position}"); + } + + public void MoveAbsolute(int position) + { + Write($"g {position}"); + } + + public void MoveRelative(double angle) + { + int position = (int)(angle / GetDegreefromSteppingResolution()); + + Write($"m {position}"); + } + + public void MoveRelative(int position) + { + Write($"m {position}"); + } + + public void JogPositive() + { + Write($"m 2147483646"); + } + + public void JogNegative() + { + Write($"m -2147483646"); + } + + public bool IsAttenuatorAngleCorrect(float angle) + { + if (Position == (int)(angle / GetDegreefromSteppingResolution())) + { + return true; + } + else + { + return false; + } + } + + public void SetMicroSteppingResolution(MicroSteppingResolution steppingResolution) + { + if (steppingResolution == MicroSteppingResolution.SixteenStep) + { + Write($"r 6"); + } + else + { + Write($"r {(int)steppingResolution}"); + } + } + + public double GetDegreefromSteppingResolution() + { + double degree = 360.0 / (78 * (int)SteppingResolution * 200); + + return degree; + } + + public double GetDegreePerSecondFromSpeed(int speed) + { + double degreePerSecond = 14400000 / (78 * (int)SteppingResolution * (65535 - speed)); + + return degreePerSecond; + } + + public int GetSpeedFromDegreePerSecond(double degreePerSecond) + { + int speed = (int)Math.Ceiling(65535 - 14400000 / (degreePerSecond * 78 * (int)SteppingResolution)); + + return speed; + } + + /// <summary> + /// 0 is turn off. + /// </summary> + /// <param name="acceleration"></param> + public void SetAcceleration(int acceleration) + { + if(acceleration > 255) + { + acceleration = 255; + } + else if (acceleration < 0) + { + acceleration = 0; + } + + Write($"a {acceleration}"); + } + + /// <summary> + /// 0 is turn off + /// </summary> + /// <param name="deceleration"></param> + public void SetDeceleration(int deceleration) + { + if (deceleration > 255) + { + deceleration = 255; + } + else if (deceleration < 0) + { + deceleration = 0; + } + + Write($"d {deceleration}"); + } + + public void SetSpeed(int speed) + { + if (speed > 65000) + { + speed = 65000; + } + else if (speed < 1) + { + speed = 1; + } + + Write($"s {speed}"); + } + + public void SaveSetting() + { + Write("ss"); + } + + public void ReadStatus() + { + string receivedData; + + if (WriteRead("o", out receivedData)) + { + string[] status = receivedData.Split(';'); + + if (status.Length < 2) return; + + MotorState = (MotorRunState)Enum.Parse(typeof(MotorRunState), status[0]); + int position; + + int.TryParse(status[1], out position); + + this.Position = position; + } + else + { + + } + } + + public void ReadSettings() + { + try + { + string receivedData; + + if (WriteRead("pc", out receivedData)) + { + string[] settings = receivedData.Split(';'); + + if (settings.Length < 25) return; + + bool operatingMode = settings[0] == "1" ? true : false; + MotorState = (MotorRunState)Enum.Parse(typeof(MotorRunState), settings[1]); + AccelerationValue = int.Parse(settings[2]); + DecelerationValue = int.Parse(settings[3]); + Speed = int.Parse(settings[4]); + int motionCurrentValue = int.Parse(settings[5]); + int idleCurrentValue = int.Parse(settings[6]); + int stepDirCurrentvalue = int.Parse(settings[7]); + + if (settings[8] == "6") + { + SteppingResolution = MicroSteppingResolution.SixteenStep; + } + else + { + SteppingResolution = (MicroSteppingResolution)Enum.Parse(typeof(MicroSteppingResolution), settings[8]); + } + + MotorEnable = settings[9] == "1" ? true : false; + + // settings[11] �븘�슂 �뾾�쓣�벏. + // settings[12] �븘�슂 �뾾�쓣�벏. Zero position �삱 �븣留덈떎 zp:[integerValue] 由ы꽩�빐 二쇰뒗嫄�. 援녹씠 ..? + // settings[13] Reserved + // settings[14] Reserved + // settings[15] Reserved + // settings[16] �븘�슂 �뾾�쓣�벏. + + // settings[21] Reserved + // settings[22] Reserved + // settings[23] Reserved + } + } + catch(Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + + public new bool Write(string command) + { + lock (this) + { + //base.Write(command + '\r'); + + //return true; + + Terminator = null; + string data = base.WriteRead(command + '\r'); + + if (data.StartsWith(command.Split(' ')[0])) + { + return true; + } + else + { + return false; + } + } + } + + public bool WriteRead(string command, out string receivedData) + { + lock (this) + { + Terminator = "\n\r"; + string data = base.WriteRead(command + '\r'); + + if (data.StartsWith(command.Split(' ')[0])) + { + receivedData = data.Remove(0, command.Split(' ')[0].Length).Replace("\n\r", ""); + return true; + } + else + { + receivedData = string.Empty; + return false; + } + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Module/Chamber.cs b/SA_LTT_UI/SA_LTT/Module/Chamber.cs new file mode 100644 index 0000000..36f4964 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/Chamber.cs @@ -0,0 +1,425 @@ +癤퓎sing SA_LTT.Info.WaferInfo; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT.Module +{ + public class Chamber + { + private Equipment _equipment; + + public bool IsGateOpen + { + get + { + return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_GATE_OPEN]; + } + } + + public bool IsGateClose + { + get + { + return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_GATE_CLOSE]; + } + } + public bool IsGateOpenValve + { + get + { + return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_GATE_OPEN_VALVE]; + } + } + + public bool IsGateCloseValve + { + get + { + return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_GATE_CLOSE_VALVE]; + } + } + + public bool IsLiftPinUp + { + get + { + return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.WAFER_UP_CYLINDER]; + } + } + + public bool IsLiftPinDown + { + get + { + return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.WAFER_DOWN_CYLINDER]; + } + } + + public bool IsChuckVacuumOn + { + get + { + return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.VAC_CHUCK_ON]; + } + } + + public bool IsChuckVacuumSensorOn + { + get + { + return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_VACUUM_PRESSURE]; + } + } + + public bool IsN2ChamberValveOn + { + get + { + return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL]; + } + } + + public bool IsInposition + { + get + { + bool isInposition = true; + + isInposition &= _equipment.powerPmac.GetAxisStatus(PmacAxis.Y_Axis, AxisStatus.InPos); + isInposition &= _equipment.powerPmac.GetAxisStatus(PmacAxis.X_Axis, AxisStatus.InPos); + isInposition &= _equipment.powerPmac.GetAxisStatus(PmacAxis.T_Axis, AxisStatus.InPos); + + return isInposition; + } + } + + public bool IsN2MFCValveOn + { + get + { + return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL]; + } + } + + public bool IsByPassValveOn + { + get + { + return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_BYPASS_ON_SOL]; + } + } + + public bool IsAirBlowOn + { + get + { + return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.AIR_BLOW_ON]; + } + } + + public double MFCFlow + { + get + { + return _equipment.crevis.AnalogInputs[Crevis.AnalogInput.MFC_FLOW_OUT]; + } + } + + public double MFCSetPoint + { + get + { + return _equipment.crevis.AnalogOutputs[Crevis.AnalogOutput.MFC_SET_POINT]; + } + } + + public float MainCDAPressure + { + get + { + return _equipment.gr200.MainCDAPressure; + } + } + + public float MainVacuumPressure + { + get + { + return _equipment.gr200.MainVacuumPressure; + } + } + + public float N2PTPressure + { + get + { + return _equipment.gr200.N2PTPressure; + } + } + + public float MainCDAFlow + { + get + { + return _equipment.gr200.MainCDAFlow; + } + } + + public float ChamberVacuumPressure + { + get + { + return _equipment.gr200.ChamberVacuumPressure; + } + } + + public bool IsLoadPosition + { + get + { + return _equipment.powerPmac.IsLoadPosition(); + } + } + + public bool IsCenterPosition + { + get + { + return _equipment.powerPmac.IsCenterPosition(); + } + } + + public bool IsPowerMeterPosition + { + get + { + return _equipment.powerPmac.IsPowerMeterPosition(); + } + } + + public bool IsAlignPosition + { + get + { + return _equipment.powerPmac.IsAlignPosition(); + } + } + public bool IsBeamProfilePosition + { + get + { + return _equipment.powerPmac.IsBeamProfilePosition(); + } + } + + public WaferInfo WaferInfo + { + get + { + return _equipment.waferInfoManager.GetWaferInfo(WaferInfoManager.WaferNumbers.Chamber); + } + } + + public Chamber(Equipment equipment) + { + _equipment = equipment; + } + + public void GateOpen() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_CLOSE_VALVE, false); + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_OPEN_VALVE, true); + } + + public void GateClose() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_OPEN_VALVE, false); + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_CLOSE_VALVE, true); + } + + public void LiftPinUp() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_DOWN_SOL, false); + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_UP_SOL, true); + } + + public void LiftPinDown() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_UP_SOL, false); + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_DOWN_SOL, true); + } + + public void ChuckVacuumOn() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.VAC_CHUCK_ON, true); + } + + public void ChuckVacuumOff() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.VAC_CHUCK_ON, false); + } + + public void SetMFCFlow(double flow) + { + _equipment.crevis.WriteAnalog(Crevis.AnalogOutput.MFC_SET_POINT, flow); + } + + public void N2ChamberValveOn() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL, true); + } + + public void N2ChamberValveOff() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL, false); + } + + public void N2MFCValveOn() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL, true); + } + + public void N2MFCValveOff() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL, false); + } + + public void ByPassValveOn() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_BYPASS_ON_SOL, true); + } + + public void ByPassValveOff() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_BYPASS_ON_SOL, false); + } + + public void AirBlowOn() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.AIR_BLOW_ON, true); + } + + public void AirBlowOff() + { + _equipment.crevis.WriteOutput(Crevis.DigitalOutput.AIR_BLOW_ON, false); + } + + public bool MoveLoadPosition() + { + double loadPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.LoadPosX].Position; + double loadPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.LoadPosY].Position; + double loadPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.LoadPosT].Position; + + double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.LoadPosX].Speed; + double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.LoadPosY].Speed; + double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.LoadPosT].Speed; + + double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.LoadPosX].Accel; + double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.LoadPosY].Accel; + double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.LoadPosT].Accel; + + bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, loadPositionX, speedX, accX); + result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, loadPositionY, speedY, accY); + result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, loadPositionT, speedT, accT); + + return result; + } + + public bool MoveCenterPosition() + { + double loadPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.CenterPosX].Position; + double loadPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.CenterPosY].Position; + double loadPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.CenterPosT].Position; + + double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.CenterPosX].Speed; + double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.CenterPosY].Speed; + double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.CenterPosT].Speed; + + double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.CenterPosX].Accel; + double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.CenterPosY].Accel; + double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.CenterPosT].Accel; + + bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, loadPositionX, speedX, accX); + result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, loadPositionY, speedY, accY); + result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, loadPositionT, speedT, accT); + + return result; + } + + public bool MovePowerMeterPosition() + { + double powerMeterPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.PowerMeterX].Position; + double powerMeterPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.PowerMeterY].Position; + double powerMeterPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.PowerMeterT].Position; + + double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.PowerMeterX].Speed; + double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.PowerMeterY].Speed; + double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.PowerMeterT].Speed; + + double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.PowerMeterX].Accel; + double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.PowerMeterY].Accel; + double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.PowerMeterT].Accel; + + bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, powerMeterPositionX, speedX, accX); + result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, powerMeterPositionY, speedY, accY); + result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, powerMeterPositionT, speedT, accT); + + return result; + } + + + public bool MoveAlignPosition() + { + double AlignPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Position; + double AlignPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Position; + double AlignPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Position; + + double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Speed; + double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Speed; + double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Speed; + + double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Accel; + double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Accel; + double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Accel; + + bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, AlignPositionX, speedX, accX); + result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, AlignPositionY, speedY, accY); + result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, AlignPositionT, speedT, accT); + + return result; + } + + public bool MoveBeamProfilePosition() + { + double beamProfilePositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.BeamProfileX].Position; + double beamProfilePositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.BeamProfileY].Position; + double beamProfilePositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.BeamProfileT].Position; + + double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.BeamProfileX].Speed; + double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.BeamProfileY].Speed; + double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.BeamProfileT].Speed; + + double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.BeamProfileX].Accel; + double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.BeamProfileY].Accel; + double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.BeamProfileT].Accel; + + bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, beamProfilePositionX, speedX, accX); + result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, beamProfilePositionY, speedY, accY); + result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, beamProfilePositionT, speedT, accT); + + return result; + } + + public bool AllStop() + { + bool result = _equipment.powerPmac.MoveStop(PmacAxis.X_Axis); + result &= _equipment.powerPmac.MoveStop(PmacAxis.Y_Axis); + result &= _equipment.powerPmac.MoveStop(PmacAxis.T_Axis); + + return result; + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/Chiller.cs b/SA_LTT_UI/SA_LTT/Module/Chiller.cs new file mode 100644 index 0000000..daa1d54 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/Chiller.cs @@ -0,0 +1,1784 @@ +癤퓎sing System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace SA_LTT.Module +{ + public class Chiller : ComPort + { + public struct StatusFlag1 + { + private bool[] _datas; + private bool _runFlag; + private bool _operationStopAlarmFlag; + private bool _operationContinuedAlarmFlag; + private bool _reserve3; + private bool _pressUnitFlag; + private bool _remoteStatusFlag; + private bool _reserve6; + private bool _reserve7; + private bool _reserve8; + private bool _completionOfPreparationFlag; + private bool _temperatureUnitFlag; + private bool _runTimerFlag; + private bool _stopTimerFlag; + private bool _resetAfterPowerFailureFlag; + private bool _antiFreezingFlag; + private bool _automaticFluidFillingFlag; + + public bool[] Datas + { + get + { + if (_datas == null) + { + _datas = new bool[16]; + } + + return _datas; + } + + private set + { + _datas = value; + } + } + + public bool RunFlag + { + get + { + return _runFlag; + } + + private set + { + _runFlag = value; + } + } + + public bool OperationStopAlarmFlag + { + get + { + return _operationStopAlarmFlag; + } + + private set + { + _operationStopAlarmFlag = value; + } + } + + public bool OperationContinuedAlarmFlag + { + get + { + return _operationContinuedAlarmFlag; + } + + private set + { + _operationContinuedAlarmFlag = value; + } + } + + public bool Reserve3 + { + get + { + return _reserve3; + } + + private set + { + _reserve3 = value; + } + } + + public bool PressUnitFlag + { + get + { + return _pressUnitFlag; + } + + private set + { + _pressUnitFlag = value; + } + } + + public bool RemoteStatusFlag + { + get + { + return _remoteStatusFlag; + } + + private set + { + _remoteStatusFlag = value; + } + } + + public bool Reserve6 + { + get + { + return _reserve6; + } + + private set + { + _reserve6 = value; + } + } + + public bool Reserve7 + { + get + { + return _reserve7; + } + + private set + { + _reserve7 = value; + } + } + + public bool Reserve8 + { + get + { + return _reserve8; + } + + private set + { + _reserve8 = value; + } + } + + public bool CompletionOfPreparationFlag + { + get + { + return _completionOfPreparationFlag; + } + + private set + { + _completionOfPreparationFlag = value; + } + } + + public bool TemperatureUnitFlag + { + get + { + return _temperatureUnitFlag; + } + + private set + { + _temperatureUnitFlag = value; + } + } + + public bool RunTimerFlag + { + get + { + return _runTimerFlag; + } + + private set + { + _runTimerFlag = value; + } + } + + public bool StopTimerFlag + { + get + { + return _stopTimerFlag; + } + + private set + { + _stopTimerFlag = value; + } + } + + public bool ResetAfterPowerFailureFlag + { + get + { + return _resetAfterPowerFailureFlag; + } + + private set + { + _resetAfterPowerFailureFlag = value; + } + } + + public bool AntiFreezingFlag + { + get + { + return _antiFreezingFlag; + } + + private set + { + _antiFreezingFlag = value; + } + } + + public bool AutomaticFluidFillingFlag + { + get + { + return _automaticFluidFillingFlag; + } + + private set + { + _automaticFluidFillingFlag = value; + } + } + + public void SetData(byte[] bytes) + { + var bit = new BitArray(bytes); + + if (bit.Length < 16) return; + + for (int i = 0; i < 16; i++) + { + Datas[i] = bit[i]; + } + + RunFlag = bit[0]; + OperationStopAlarmFlag = bit[1]; + OperationContinuedAlarmFlag = bit[2]; + Reserve3 = bit[3]; + PressUnitFlag = bit[4]; + RemoteStatusFlag = bit[5]; + Reserve6 = bit[6]; + Reserve7 = bit[7]; + Reserve8 = bit[8]; + CompletionOfPreparationFlag = bit[9]; + TemperatureUnitFlag = bit[10]; + RunTimerFlag = bit[11]; + StopTimerFlag = bit[12]; + ResetAfterPowerFailureFlag = bit[13]; + AntiFreezingFlag = bit[14]; + AutomaticFluidFillingFlag = bit[15]; + } + } + + public struct AlarmFlag1 + { + private bool[] _datas; + private bool _lowLevelInTank; + private bool _highCirculatingFluidDischargeTemp; + private bool _circulatingFluidDischargeTempRise; + private bool _circulatingFluidDischargeTempDrop; + private bool _highCirculatingFluidReturnTemp; + private bool _highCirculatingFluidDischargePressure; + private bool _abnormalPumpOperation; + private bool _circulatingFluidDischargePressureRise; + private bool _circulatingFluidDischargePressureDrop; + private bool _highCompressorIntakeTemp; + private bool _lowCompressorIntakeTemp; + private bool _lowSuperHeatTemperature; + private bool _highCompressorDischargePressure; + private bool _reserve13; + private bool _refrigerantCircuitHighPressureDrop; + private bool _refrigerantCircuitLowPressureRise; + + public bool[] Datas + { + get + { + if (_datas == null) + { + _datas = new bool[16]; + } + + return _datas; + } + + private set + { + _datas = value; + } + } + + public bool LowLevelInTank + { + get + { + return _lowLevelInTank; + } + + private set + { + _lowLevelInTank = value; + } + } + + public bool HighCirculatingFluidDischargeTemp + { + get + { + return _highCirculatingFluidDischargeTemp; + } + + private set + { + _highCirculatingFluidDischargeTemp = value; + } + } + + public bool CirculatingFluidDischargeTempRise + { + get + { + return _circulatingFluidDischargeTempRise; + } + + private set + { + _circulatingFluidDischargeTempRise = value; + } + } + + public bool CirculatingFluidDischargeTempDrop + { + get + { + return _circulatingFluidDischargeTempDrop; + } + + private set + { + _circulatingFluidDischargeTempDrop = value; + } + } + + public bool HighCirculatingFluidReturnTemp + { + get + { + return _highCirculatingFluidReturnTemp; + } + + private set + { + _highCirculatingFluidReturnTemp = value; + } + } + + public bool HighCirculatingFluidDischargePressure + { + get + { + return _highCirculatingFluidDischargePressure; + } + + private set + { + _highCirculatingFluidDischargePressure = value; + } + } + + public bool AbnormalPumpOperation + { + get + { + return _abnormalPumpOperation; + } + + private set + { + _abnormalPumpOperation = value; + } + } + + public bool CirculatingFluidDischargePressureRise + { + get + { + return _circulatingFluidDischargePressureRise; + } + + private set + { + _circulatingFluidDischargePressureRise = value; + } + } + + public bool CirculatingFluidDischargePressureDrop + { + get + { + return _circulatingFluidDischargePressureDrop; + } + + private set + { + _circulatingFluidDischargePressureDrop = value; + } + } + + public bool HighCompressorIntakeTemp + { + get + { + return _highCompressorIntakeTemp; + } + + private set + { + _highCompressorIntakeTemp = value; + } + } + + public bool LowCompressorIntakeTemp + { + get + { + return _lowCompressorIntakeTemp; + } + + private set + { + _lowCompressorIntakeTemp = value; + } + } + + public bool LowSuperHeatTemperature + { + get + { + return _lowSuperHeatTemperature; + } + + private set + { + _lowSuperHeatTemperature = value; + } + } + + public bool HighCompressorDischargePressure + { + get + { + return _highCompressorDischargePressure; + } + + private set + { + _highCompressorDischargePressure = value; + } + } + + public bool Reserve13 + { + get + { + return _reserve13; + } + + private set + { + _reserve13 = value; + } + } + + public bool RefrigerantCircuitHighPressureDrop + { + get + { + return _refrigerantCircuitHighPressureDrop; + } + + private set + { + _refrigerantCircuitHighPressureDrop = value; + } + } + + public bool RefrigerantCircuitLowPressureRise + { + get + { + return _refrigerantCircuitLowPressureRise; + } + + private set + { + _refrigerantCircuitLowPressureRise = value; + } + } + + public void SetData(byte[] bytes) + { + if (_datas == null) + { + _datas = new bool[16]; + } + + var bit = new BitArray(bytes); + + if (bit.Length < 16) return; + + for (int i = 0; i < 16; i++) + { + _datas[i] = bit[i]; + } + + LowLevelInTank = bit[0]; + HighCirculatingFluidDischargeTemp = bit[1]; + CirculatingFluidDischargeTempRise = bit[2]; + CirculatingFluidDischargeTempDrop = bit[3]; + HighCirculatingFluidReturnTemp = bit[4]; + HighCirculatingFluidDischargePressure = bit[5]; + AbnormalPumpOperation = bit[6]; + CirculatingFluidDischargePressureRise = bit[7]; + CirculatingFluidDischargePressureDrop = bit[8]; + HighCompressorIntakeTemp = bit[9]; + LowCompressorIntakeTemp = bit[10]; + LowSuperHeatTemperature = bit[11]; + HighCompressorDischargePressure = bit[12]; + Reserve13 = bit[13]; + RefrigerantCircuitHighPressureDrop = bit[14]; + RefrigerantCircuitLowPressureRise = bit[15]; + } + } + + public struct AlarmFlag2 + { + private bool[] _datas; + private bool _refrigerantCircuitLowPressureDrop; + private bool _compressorOverload; + private bool _communicationError; + private bool _memoryError; + private bool _dcLineFuseCut; + private bool _circulatingFluidDischargeTempSensorFailure; + private bool _circulatingFluidReturnTempSensorFailure; + private bool _compressorIntankTempSensorFailure; + private bool _circulatingFluidDischargePressureSensorFailure; + private bool _compressorDischargePressureSensorFailure; + private bool _compressorIntankPressureSensorFailure; + private bool _maintenanceOfPump; + private bool _maintenanceOfFanMotor; + private bool _maintenanceOfCompressor; + private bool _contactInput1SignalDetectionAlarm; + private bool _contactInput2SignalDetectionAlarm; + + public bool[] Datas + { + get + { + if (_datas == null) + { + _datas = new bool[16]; + } + + return _datas; + } + + private set + { + _datas = value; + } + } + + public bool RefrigerantCircuitLowPressureDrop + { + get + { + return _refrigerantCircuitLowPressureDrop; + } + + private set + { + _refrigerantCircuitLowPressureDrop = value; + } + } + + public bool CompressorOverload + { + get + { + return _compressorOverload; + } + + private set + { + _compressorOverload = value; + } + } + + public bool CommunicationError + { + get + { + return _communicationError; + } + + private set + { + _communicationError = value; + } + } + + public bool MemoryError + { + get + { + return _memoryError; + } + + private set + { + _memoryError = value; + } + } + + public bool DcLineFuseCut + { + get + { + return _dcLineFuseCut; + } + + private set + { + _dcLineFuseCut = value; + } + } + + public bool CirculatingFluidDischargeTempSensorFailure + { + get + { + return _circulatingFluidDischargeTempSensorFailure; + } + + private set + { + _circulatingFluidDischargeTempSensorFailure = value; + } + } + + public bool CirculatingFluidReturnTempSensorFailure + { + get + { + return _circulatingFluidReturnTempSensorFailure; + } + + private set + { + _circulatingFluidReturnTempSensorFailure = value; + } + } + + public bool CompressorIntankTempSensorFailure + { + get + { + return _compressorIntankTempSensorFailure; + } + + private set + { + _compressorIntankTempSensorFailure = value; + } + } + + public bool CirculatingFluidDischargePressureSensorFailure + { + get + { + return _circulatingFluidDischargePressureSensorFailure; + } + + private set + { + _circulatingFluidDischargePressureSensorFailure = value; + } + } + + public bool CompressorDischargePressureSensorFailure + { + get + { + return _compressorDischargePressureSensorFailure; + } + + private set + { + _compressorDischargePressureSensorFailure = value; + } + } + + public bool CompressorIntankPressureSensorFailure + { + get + { + return _compressorIntankPressureSensorFailure; + } + + private set + { + _compressorIntankPressureSensorFailure = value; + } + } + + public bool MaintenanceOfPump + { + get + { + return _maintenanceOfPump; + } + + private set + { + _maintenanceOfPump = value; + } + } + + public bool MaintenanceOfFanMotor + { + get + { + return _maintenanceOfFanMotor; + } + + private set + { + _maintenanceOfFanMotor = value; + } + } + + public bool MaintenanceOfCompressor + { + get + { + return _maintenanceOfCompressor; + } + + private set + { + _maintenanceOfCompressor = value; + } + } + + public bool ContactInput1SignalDetectionAlarm + { + get + { + return _contactInput1SignalDetectionAlarm; + } + + private set + { + _contactInput1SignalDetectionAlarm = value; + } + } + + public bool ContactInput2SignalDetectionAlarm + { + get + { + return _contactInput2SignalDetectionAlarm; + } + + private set + { + _contactInput2SignalDetectionAlarm = value; + } + } + + public void SetData(byte[] bytes) + { + var bit = new BitArray(bytes); + + if (bit.Length < 16) return; + + for (int i = 0; i < 16; i++) + { + Datas[i] = bit[i]; + } + + RefrigerantCircuitLowPressureDrop = bit[0]; + CompressorOverload = bit[1]; + CommunicationError = bit[2]; + MemoryError = bit[3]; + DcLineFuseCut = bit[4]; + CirculatingFluidDischargeTempSensorFailure = bit[5]; + CirculatingFluidReturnTempSensorFailure = bit[6]; + CompressorIntankTempSensorFailure = bit[7]; + CirculatingFluidDischargePressureSensorFailure = bit[8]; + CompressorDischargePressureSensorFailure = bit[9]; + CompressorIntankPressureSensorFailure = bit[10]; + MaintenanceOfPump = bit[11]; + MaintenanceOfFanMotor = bit[12]; + MaintenanceOfCompressor = bit[13]; + ContactInput1SignalDetectionAlarm = bit[14]; + ContactInput2SignalDetectionAlarm = bit[15]; + } + } + + public struct AlarmFlag3 + { + private bool[] _datas; + private bool _waterLeakage; + private bool _electricResistivityConductivityLevelRise; + private bool _electricResistivityConductivityLevelDrop; + private bool _electricResistivityConductivitySensorError; + private bool _reserve4; + private bool _reserve5; + private bool _reserve6; + private bool _reserve7; + private bool _reserve8; + private bool _reserve9; + private bool _reserve10; + private bool _reserve11; + private bool _reserve12; + private bool _reserve13; + private bool _reserve14; + private bool _reserve15; + + public bool[] Datas + { + get + { + if (_datas == null) + { + _datas = new bool[16]; + } + + return _datas; + } + + private set + { + _datas = value; + } + } + + public bool WaterLeakage + { + get + { + return _waterLeakage; + } + + private set + { + _waterLeakage = value; + } + } + + public bool ElectricResistivityConductivityLevelRise + { + get + { + return _electricResistivityConductivityLevelRise; + } + + private set + { + _electricResistivityConductivityLevelRise = value; + } + } + + public bool ElectricResistivityConductivityLevelDrop + { + get + { + return _electricResistivityConductivityLevelDrop; + } + + private set + { + _electricResistivityConductivityLevelDrop = value; + } + } + + public bool ElectricResistivityConductivitySensorError + { + get + { + return _electricResistivityConductivitySensorError; + } + + private set + { + _electricResistivityConductivitySensorError = value; + } + } + + public bool Reserve4 + { + get + { + return _reserve4; + } + + private set + { + _reserve4 = value; + } + } + + public bool Reserve5 + { + get + { + return _reserve5; + } + + private set + { + _reserve5 = value; + } + } + + public bool Reserve6 + { + get + { + return _reserve6; + } + + private set + { + _reserve6 = value; + } + } + + public bool Reserve7 + { + get + { + return _reserve7; + } + + private set + { + _reserve7 = value; + } + } + + public bool Reserve8 + { + get + { + return _reserve8; + } + + private set + { + _reserve8 = value; + } + } + + public bool Reserve9 + { + get + { + return _reserve9; + } + + private set + { + _reserve9 = value; + } + } + + public bool Reserve10 + { + get + { + return _reserve10; + } + + private set + { + _reserve10 = value; + } + } + + public bool Reserve11 + { + get + { + return _reserve11; + } + + private set + { + _reserve11 = value; + } + } + + public bool Reserve12 + { + get + { + return _reserve12; + } + + private set + { + _reserve12 = value; + } + } + + public bool Reserve13 + { + get + { + return _reserve13; + } + + private set + { + _reserve13 = value; + } + } + + public bool Reserve14 + { + get + { + return _reserve14; + } + + private set + { + _reserve14 = value; + } + } + + public bool Reserve15 + { + get + { + return _reserve15; + } + + private set + { + _reserve15 = value; + } + } + + public void SetData(byte[] bytes) + { + var bit = new BitArray(bytes); + + if (bit.Length < 16) return; + + for (int i = 0; i < 16; i++) + { + Datas[i] = bit[i]; + } + + WaterLeakage = bit[0]; + ElectricResistivityConductivityLevelRise = bit[1]; + ElectricResistivityConductivityLevelDrop = bit[2]; + ElectricResistivityConductivitySensorError = bit[3]; + Reserve4 = bit[4]; + Reserve5 = bit[5]; + Reserve6 = bit[6]; + Reserve7 = bit[7]; + Reserve8 = bit[8]; + Reserve9 = bit[9]; + Reserve10 = bit[10]; + Reserve11 = bit[11]; + Reserve12 = bit[12]; + Reserve13 = bit[13]; + Reserve14 = bit[14]; + Reserve15 = bit[15]; + } + } + + public struct StatusFlag2 + { + private bool[] _datas; + + private bool _electricResistivityConductivitySettingFlag1; + private bool _electricResistivityConductivitySettingFlag2; + private bool _reserve2; + private bool _reserve3; + private bool _reserve4; + private bool _reserve5; + private bool _reserve6; + private bool _reserve7; + private bool _reserve8; + private bool _reserve9; + private bool _reserve10; + private bool _reserve11; + private bool _reserve12; + private bool _reserve13; + private bool _reserve14; + private bool _reserve15; + + public bool[] Datas + { + get + { + if (_datas == null) + { + _datas = new bool[16]; + } + + return _datas; + } + + private set + { + _datas = value; + } + } + + public bool ElectricResistivityConductivitySettingFlag1 + { + get + { + return _electricResistivityConductivitySettingFlag1; + } + + private set + { + _electricResistivityConductivitySettingFlag1 = value; + } + } + + public bool ElectricResistivityConductivitySettingFlag2 + { + get + { + return _electricResistivityConductivitySettingFlag2; + } + + private set + { + _electricResistivityConductivitySettingFlag2 = value; + } + } + + public bool Reserve2 + { + get + { + return _reserve2; + } + + private set + { + _reserve2 = value; + } + } + + public bool Reserve3 + { + get + { + return _reserve3; + } + + private set + { + _reserve3 = value; + } + } + + public bool Reserve4 + { + get + { + return _reserve4; + } + + private set + { + _reserve4 = value; + } + } + + public bool Reserve5 + { + get + { + return _reserve5; + } + + private set + { + _reserve5 = value; + } + } + + public bool Reserve6 + { + get + { + return _reserve6; + } + + private set + { + _reserve6 = value; + } + } + + public bool Reserve7 + { + get + { + return _reserve7; + } + + private set + { + _reserve7 = value; + } + } + + public bool Reserve8 + { + get + { + return _reserve8; + } + + private set + { + _reserve8 = value; + } + } + + public bool Reserve9 + { + get + { + return _reserve9; + } + + private set + { + _reserve9 = value; + } + } + + public bool Reserve10 + { + get + { + return _reserve10; + } + + private set + { + _reserve10 = value; + } + } + + public bool Reserve11 + { + get + { + return _reserve11; + } + + private set + { + _reserve11 = value; + } + } + + public bool Reserve12 + { + get + { + return _reserve12; + } + + private set + { + _reserve12 = value; + } + } + + public bool Reserve13 + { + get + { + return _reserve13; + } + + private set + { + _reserve13 = value; + } + } + + public bool Reserve14 + { + get + { + return _reserve14; + } + + private set + { + _reserve14 = value; + } + } + + public bool Reserve15 + { + get + { + return _reserve15; + } + + private set + { + _reserve15 = value; + } + } + + public void SetData(byte[] bytes) + { + var bit = new BitArray(bytes); + + if (bit.Length < 16) return; + + for (int i = 0; i < 16; i++) + { + Datas[i] = bit[i]; + } + + ElectricResistivityConductivitySettingFlag1 = bit[0]; + ElectricResistivityConductivitySettingFlag2 = bit[1]; + Reserve2 = bit[2]; + Reserve3 = bit[3]; + Reserve4 = bit[4]; + Reserve5 = bit[5]; + Reserve6 = bit[6]; + Reserve7 = bit[7]; + Reserve8 = bit[8]; + Reserve9 = bit[9]; + Reserve10 = bit[10]; + Reserve11 = bit[11]; + Reserve12 = bit[12]; + Reserve13 = bit[13]; + Reserve14 = bit[14]; + Reserve15 = bit[15]; + } + } + + Equipment _equipment; + + public StatusFlag1 statusFlag1 = new StatusFlag1(); + public AlarmFlag1 alarmFlag1 = new AlarmFlag1(); + public AlarmFlag2 alarmFlag2 = new AlarmFlag2(); + public AlarmFlag3 alarmFlag3 = new AlarmFlag3(); + public StatusFlag2 statusFlag2 = new StatusFlag2(); + + private float _circulatingFluidDischargeTemperature; + private float _circulatingFluidDischargePressure; + private float _electricResistivity; + private float _circulatingFluidSetTemperature; + + private Thread t_statusUpdate; + + public float CirculatingFluidDischargeTemperature + { + get + { + return _circulatingFluidDischargeTemperature; + } + + private set + { + _circulatingFluidDischargeTemperature = value; + } + } + + public float CirculatingFluidDischargePressure + { + get + { + return _circulatingFluidDischargePressure; + } + + private set + { + _circulatingFluidDischargePressure = value; + } + } + + public float ElectricResistivity + { + get + { + return _electricResistivity; + } + + private set + { + _electricResistivity = value; + } + } + + public float CirculatingFluidSetTemperature + { + get + { + return _circulatingFluidSetTemperature; + } + + private set + { + _circulatingFluidSetTemperature = value; + } + } + + public Chiller(Equipment equipment) + { + _equipment = equipment; + + serialPort.PortName = "COM10"; + serialPort.BaudRate = 19200; + serialPort.Parity = System.IO.Ports.Parity.Even; + serialPort.DataBits = 7; + serialPort.StopBits = System.IO.Ports.StopBits.One; + serialPort.ReadTimeout = 500; + ReceiveWaitSeconds = 0.1; + + Terminator = "\r\n"; + + t_statusUpdate = new Thread(statusUpdate); + t_statusUpdate.Start(); + } + + public void statusUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + Thread.Sleep(500); + + if (IsOpen) + { + // Todo. Command �꽕�젙. + GetStatus(); + AlarmCheck(); + } + else + { + if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0061_CHILLER_DISCONNECTED)) + { + + } + else + { + if (Open() == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0061_CHILLER_DISCONNECTED); + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + public void Run() + { + string command = ":0106000C0001EC\r\n"; + + string data = WriteRead(command); + } + + public void Stop() + { + string command = ":0106000C0000EB\r\n"; + + string data = WriteRead(command); + } + + public void GetStatus() + { + // Todo. Read Registry媛� �씠�긽�븿;; �옱�솗�씤 �븘�슂. + // 0000 遺��꽣 000C 源뚯� �씫�쓬. + string command = ":01030000000DEF\r\n"; + + string data = WriteRead(command); + + if(data == string.Empty) + { + return; + } + data = data.Replace(":", ""); + //data = "01031A00B4000000180000000100000000000000000000000000B4000160"; + string code = data.Substring(0, 2); + string function = data.Substring(2, 2); + + //�닔�젙 + string byteCount = data.Substring(4, 2); + + string dischargeTemperature = data.Substring(6, 4); + string reserved1 = data.Substring(10, 4); + string dischargePressure = data.Substring(14, 4); + string electricResistivityFluid = data.Substring(18, 4); + string statusFlag1 = data.Substring(22, 4); + string alarmFlag1 = data.Substring(26, 4); + string alarmFlag2 = data.Substring(30, 4); + string alarmFlag3 = data.Substring(34, 4); + string reserved2 = data.Substring(38, 4); + string statusFlag2 = data.Substring(42, 4); + string reserved3 = data.Substring(46, 4); + string circulatingTemperature = data.Substring(50, 4); + string commandToRun = data.Substring(54, 4); + + int fluidDischargeTemperature = int.Parse(dischargeTemperature, NumberStyles.HexNumber); + int fluidDischargePressure = int.Parse(dischargePressure, NumberStyles.HexNumber); + int electricResistivity = int.Parse(electricResistivityFluid, NumberStyles.HexNumber); + int fluidSetTemperature = int.Parse(circulatingTemperature, NumberStyles.HexNumber); + int dd = int.Parse(reserved1, NumberStyles.HexNumber); + + CirculatingFluidDischargeTemperature = fluidDischargeTemperature * 0.1f; + CirculatingFluidDischargePressure = fluidDischargePressure * 0.01f; + ElectricResistivity = electricResistivity * 0.1f; + CirculatingFluidSetTemperature = fluidSetTemperature * 0.1f; + + SetStatusFlag1(statusFlag1); + SetStatusFlag2(statusFlag2); + + SetAlarmFlag1(alarmFlag1); + SetAlarmFlag2(alarmFlag2); + SetAlarmFlag3(alarmFlag3); + } + + private void SetStatusFlag1(string statusFlag1) + { + int integerStatusFlag = int.Parse(statusFlag1, NumberStyles.HexNumber); + byte[] status = BitConverter.GetBytes(integerStatusFlag); + + this.statusFlag1.SetData(status); + } + + private void SetStatusFlag2(string statusFlag2) + { + int integerStatusFlag = int.Parse(statusFlag2, NumberStyles.HexNumber); + byte[] status = BitConverter.GetBytes(integerStatusFlag); + + this.statusFlag2.SetData(status); + } + + private void SetAlarmFlag1(string alarmFlag1) + { + int integerAlarmFlag = int.Parse(alarmFlag1, NumberStyles.HexNumber); + byte[] alarms = BitConverter.GetBytes(integerAlarmFlag); + + this.alarmFlag1.SetData(alarms); + } + + private void SetAlarmFlag2(string alarmFlag2) + { + int integerAlarmFlag = int.Parse(alarmFlag2, NumberStyles.HexNumber); + byte[] alarms = BitConverter.GetBytes(integerAlarmFlag); + + this.alarmFlag2.SetData(alarms); + } + + private void SetAlarmFlag3(string alarmFlag3) + { + int integerAlarmFlag = int.Parse(alarmFlag3, NumberStyles.HexNumber); + byte[] alarms = BitConverter.GetBytes(integerAlarmFlag); + + this.alarmFlag3.SetData(alarms); + } + + public void AlarmCheck() + { + // Alarm 1 + if(alarmFlag1.LowLevelInTank) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0400_CHILLER_LOW_LEVEL_IN_TANK); + } + if (alarmFlag1.HighCirculatingFluidDischargeTemp) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0401_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_TEMP); + } + if (alarmFlag1.CirculatingFluidDischargeTempRise) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0402_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_RISE); + } + if (alarmFlag1.CirculatingFluidDischargeTempDrop) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0403_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_DROP); + } + if (alarmFlag1.HighCirculatingFluidReturnTemp) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0404_CHILLER_HIGH_CIRCULATING_FLUID_RETURN_TEMP); + } + if (alarmFlag1.HighCirculatingFluidDischargePressure) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0405_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_PRESSURE); + } + if (alarmFlag1.AbnormalPumpOperation) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0406_CHILLER_ABNORMAL_PUMP_OPERATION); + } + if (alarmFlag1.CirculatingFluidDischargePressureRise) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0407_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_RISE); + } + if (alarmFlag1.CirculatingFluidDischargePressureDrop) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0408_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_DROP); + } + if (alarmFlag1.HighCompressorIntakeTemp) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0409_CHILLER_HIGH_COMPRESSOR_INTANK_TEMP); + } + if (alarmFlag1.LowCompressorIntakeTemp) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0410_CHILLER_LOW_COMPRESSOR_INTANK_TEMP); + } + if (alarmFlag1.LowSuperHeatTemperature) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0411_CHILLER_LOW_SUPER_HEAT_TEMPERATURE); + } + if (alarmFlag1.HighCompressorDischargePressure) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0412_CHILLER_HIGH_COMPRESSOR_DISCHARGE_PRESSURE); + } + if (alarmFlag1.RefrigerantCircuitHighPressureDrop) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0413_CHILLER_REFRIGERANT_CIRCUIT_HIGH_PRESSURE_DROP); + } + if (alarmFlag1.RefrigerantCircuitLowPressureRise) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0414_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_RISE); + } + + // Alarm 2 + if(alarmFlag2.RefrigerantCircuitLowPressureDrop) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0415_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_DROP); + } + if (alarmFlag2.CompressorOverload) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0416_CHILLER_COMPRESSOR_OVER_LOAD); + } + if (alarmFlag2.CommunicationError) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0417_CHILLER_COMMUNICATION_ERROR); + } + if (alarmFlag2.MemoryError) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0418_CHILLER_MEMORY_ERROR); + } + if (alarmFlag2.DcLineFuseCut) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0419_CHILLER_DC_LINE_FUSE_CUT); + } + if (alarmFlag2.CirculatingFluidDischargeTempSensorFailure) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0420_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_SENSOR_FAILURE); + } + if (alarmFlag2.CirculatingFluidReturnTempSensorFailure) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0421_CHILLER_CIRCULATING_FLUID_TEMP_SENSOR_FAILURE); + } + if (alarmFlag2.CompressorIntankTempSensorFailure) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0422_CHILLER_COMPRESSOR_INTANK_TEMP_SENSOR_FAILURE); + } + if (alarmFlag2.CirculatingFluidDischargePressureSensorFailure) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0423_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_SENSOR_FAILURE); + } + if (alarmFlag2.CompressorDischargePressureSensorFailure) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0424_CHILLER_COMPRESSOR_DISCHARGE_PRESSURE_SENSOR_FAILURE); + } + if (alarmFlag2.CompressorIntankPressureSensorFailure) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0425_CHILLER_COMPRESSOR_INTANK_PRESSURE_SENSOR_FAILURE); + } + if (alarmFlag2.MaintenanceOfPump) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0426_CHILLER_MAINTENANCE_OF_PUMP); + } + if (alarmFlag2.MaintenanceOfFanMotor) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0427_CHILLER_MAINTENENCE_OF_FAN_MOTOR); + } + if (alarmFlag2.MaintenanceOfCompressor) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0428_CHILLER_MAINTENENCE_OF_COMPRESSOR); + } + if (alarmFlag2.ContactInput1SignalDetectionAlarm) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0429_CHILLER_CONTACT_INPUT_1_SIGNAL_DETECTION_ALARM); + } + if (alarmFlag2.ContactInput2SignalDetectionAlarm) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0430_CHILLER_CONTACT_INPUT_2_SIGNAL_DETECTION_ALARM); + } + + // Alarm 3 + if(alarmFlag3.WaterLeakage) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0431_CHILLER_WATER_LEAKAGE); + } + if (alarmFlag3.ElectricResistivityConductivityLevelRise) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0432_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_RISE); + } + if (alarmFlag3.ElectricResistivityConductivityLevelDrop) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0433_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_DROP); + } + if (alarmFlag3.ElectricResistivityConductivitySensorError) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0434_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_SENSOR_ERROR); + } + } + + public byte GetLRC(byte[] datas) + { + byte LRC = 0x05; + + return LRC; + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/Crevis.cs b/SA_LTT_UI/SA_LTT/Module/Crevis.cs new file mode 100644 index 0000000..a65f138 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/Crevis.cs @@ -0,0 +1,372 @@ +癤퓎sing EasyModbus; +using System; +using System.Collections.Generic; +using System.Threading; + +namespace SA_LTT.Module +{ + /* + * AI AO DI*7 DO*5 + */ + public class Crevis : ModbusClient + { + //ST-1228 / 8 + public enum DigitalInput : int + { + SPARE_00, + CP_BOX_OPEN, + SPARE_02, + SPARE_03, + EMO_SW_1, + EMO_SW_2, + EMO_SW_3, + EMO_SW_4, + DOOR_LOCK_OPEN_1, + DOOR_LOCK_OPEN_2, + DOOR_LOCK_OPEN_3, + DOOR_LOCK_OPEN_4, + SERVO_MC_STATUS, + VACUUM_MC_STATUS, + SPARE_14, + SPARE_15, + CST_DETECTOR_1, + CST_DETECTOR_2, + WATER_LEAK_LASER, + WATER_LEAK_CHILLER, + SMOKE_DETECTOR_CP_BOX, + SPARE_21, + SPARE_22, + SPARE_23, + CMB_GATE_OPEN, + CMB_GATE_CLOSE, + WAFER_UP_CYLINDER, + WAFER_DOWN_CYLINDER, + LASER_SHUTTER_OPEN, + LASER_SHUTTER_CLOSE, + SPARE_30, + SPARE_31, + MAIN_CDA_PRESSURE, + MAIN_VAC_PRESSURE, + SPARE_34, + MAIN_CDA_FLOW, + CMB_VACUUM_PRESSURE, + SPARE_37, + SPARE_38, + SPARE_39, + FAN_1_RUN_CP_BOX_IN, + FAN_2_RUN_CP_BOX_IN, + FAN_3_RUN_CP_BOX_IN, + SPARE_43, + FAN_4_RUN_CP_BOX_OUT, + FAN_5_RUN_CP_BOX_OUT, + FAN_6_RUN_CP_BOX_OUT, + SPARE_47, + FAN_1_RUN_CHILLER_OUT, + FAN_2_RUN_CHILLER_OUT, + FAN_3_RUN_CHILLER_OUT, + SPARE_51, + SPARE_52, + SPARE_53, + SPARE_54, + SPARE_55, + } + + //ST-2318 / 8 + public enum DigitalOutput : int + { + SPARE_00, + SIGNAL_TOWER_RED, + SIGNAL_TOWER_YELLOW, + SIGNAL_TOWER_GREEN, + BUZZER_1, + BUZZER_2, + BUZZER_3, + BUZZER_4, + FLUORESCENT_LAMP_OFF, + SERVO_CONTROL_OFF, + LASER_LED_BOARD_ON, + SPARE_11, + VACUUM_PUMP_MC_ON, + DOOR_OPEN_RELEASE_1, + DOOR_OPEN_RELEASE_2, + SPARE_15, + CMB_GATE_OPEN_VALVE, + CMB_GATE_CLOSE_VALVE, + N2_CHAMBER_VALVE_ON_SOL, + N2_MFC_VALVE_ON_SOL, + CMB_BYPASS_ON_SOL, + WAFER_UP_SOL, + WAFER_DOWN_SOL, + LASER_SHUTTER_OPEN_SOL, + AIR_BLOW_ON, + SPARE_26, + SPARE_27, + VAC_CHUCK_ON, + SPARE_28, + SPARE_29, + SPARE_30, + SPARE_31, + SPARE_32, + SPARE_33, + SPARE_34, + SPARE_35, + SPARE_36, + SPARE_37, + SPARE_38, + SPARE_39, + } + + //ST-3444 (Analog input : 0 ~ 10V, Resolution 14bit, 0.6mV/Bit) / 4 + public enum AnalogInput : int + { + MFC_FLOW_OUT = 0, + SPARE_01 = 10, + SPARE_02 = 20, + SPARE_03 = 30, + } + + //ST-4424 (Analog output : 0 ~ 10V, Resolution 12bit, 2.44mV/Bit) / 4 + public enum AnalogOutput : int + { + MFC_SET_POINT = 0, + SPARE_01 = 10, + SPARE_02 = 20, + SPARE_03 = 30, + } + + private int _digitalInputStartAddress = 0x0040; + private int _digitalOutputStartAddress = 0x1040; + + private int _analogInputStartAddress = 0x0000; + private int _analogOutputStartAddress = 0x0800; + + public Dictionary<DigitalInput, bool> DigitalInputs = new Dictionary<DigitalInput, bool>(); + public Dictionary<DigitalOutput, bool> DigitalOutputs = new Dictionary<DigitalOutput, bool>(); + public Dictionary<AnalogInput, double> AnalogInputs = new Dictionary<AnalogInput, double>(); + public Dictionary<AnalogOutput, double> AnalogOutputs = new Dictionary<AnalogOutput, double>(); + + private Equipment _equipment; + private Thread t_statusUpdate; + + object dataLock = new object(); + + public Crevis(Equipment equipment) + { + IPAddress = "192.168.123.1"; + + foreach (DigitalInput input in Enum.GetValues(typeof(DigitalInput))) + { + DigitalInputs.Add(input, false); + } + + foreach (DigitalOutput output in Enum.GetValues(typeof(DigitalOutput))) + { + DigitalOutputs.Add(output, false); + } + + foreach (AnalogInput inputs in Enum.GetValues(typeof(AnalogInput))) + { + AnalogInputs.Add(inputs, 0); + } + + foreach (AnalogOutput output in Enum.GetValues(typeof(AnalogOutput))) + { + AnalogOutputs.Add(output, 0); + } + + _equipment = equipment; + + t_statusUpdate = new Thread(statusUpdate); + t_statusUpdate.Start(); + } + + public void statusUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + Thread.Sleep(10); + + if (Connected) + { + if(ReadDigitalInputs() == false) + { + Disconnect(); + continue; + } + if(ReadDigitalOutputs() == false) + { + Disconnect(); + continue; + } + if (ReadAnalogInputs() == false) + { + Disconnect(); + continue; + } + if (ReadAnalogOutputs() == false) + { + Disconnect(); + continue; + } + } + else + { + if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0050_CREVIS_DISCONNECTED)) + { + + } + else + { + if (Connect() == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0050_CREVIS_DISCONNECTED); + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + public new bool Connect() + { + try + { + base.Connect(); + return true; + } + catch(Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + + public bool ReadDigitalInputs() + { + lock (dataLock) + { + try + { + bool[] readValue = ReadCoils(_digitalInputStartAddress, Enum.GetValues(typeof(DigitalInput)).Length); + + for (int i = 0; i < readValue.Length; i++) + { + DigitalInputs[(DigitalInput)i] = readValue[i]; + } + + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + } + + public bool ReadDigitalOutputs() + { + lock (dataLock) + { + try + { + bool[] readValue = ReadCoils(_digitalOutputStartAddress, Enum.GetValues(typeof(DigitalOutput)).Length); + + for (int i = 0; i < readValue.Length; i++) + { + DigitalOutputs[(DigitalOutput)i] = readValue[i]; + } + + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + } + + public bool ReadAnalogInputs() + { + lock (dataLock) + { + try + { + int[] serverResponse = ReadInputRegisters(_analogInputStartAddress, AnalogInputs.Keys.Count); + + int i = 0; + foreach (AnalogInput input in Enum.GetValues(typeof(AnalogInput))) + { + AnalogInputs[input] = Math.Round(serverResponse[i] / 1638.0, 2); + i++; + } + + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + } + + public bool ReadAnalogOutputs() + { + lock (dataLock) + { + try + { + int[] serverResponse = ReadInputRegisters(_analogOutputStartAddress, AnalogOutputs.Keys.Count); + + int i = 0; + foreach (AnalogOutput output in Enum.GetValues(typeof(AnalogOutput))) + { + AnalogOutputs[output] = Math.Round(serverResponse[i] / 410.0, 2); + i++; + } + + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + } + + public void WriteOutput(DigitalOutput digitalOutput, bool value) + { + lock (dataLock) + { + if (Connected) + { + WriteSingleCoil(_digitalOutputStartAddress + (int)digitalOutput, value); + } + } + + } + + public void WriteAnalog(AnalogOutput analogOutput, double value) + { + lock (dataLock) + { + if (Connected) + { + if(analogOutput == AnalogOutput.MFC_SET_POINT) + { + WriteSingleRegister(_analogOutputStartAddress + (int)analogOutput, Convert.ToInt32(value * 1000 / 2.44)); + } + } + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/E5CC.cs b/SA_LTT_UI/SA_LTT/Module/E5CC.cs new file mode 100644 index 0000000..4a7ff43 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/E5CC.cs @@ -0,0 +1,222 @@ +癤퓎sing System; +using System.Globalization; +using System.Text; +using System.Threading; + +namespace SA_LTT.Module +{ + /// <summary> + /// Omron temp controller + /// </summary> + public class E5CC : ComPort + { + private struct VariableArea + { + public string Node; + public string slaveAddress; + public string functionCode; + public string MRC; + public string SRC; + public string responseCode; + public string readData; + } + + /// <summary> + /// Start of text + /// </summary> + private char STX = Convert.ToChar(2); + + /// <summary> + /// End of text + /// </summary> + private char EXT = Convert.ToChar(3); + + private int _temperature; + private Equipment _equipment; + private Thread t_statusUpdate; + + public int Temperature + { + get + { + return _temperature; + } + + set + { + _temperature = value; + } + } + + public E5CC(Equipment equipment) + { + serialPort.PortName = "COM6"; + serialPort.BaudRate = 9600; + serialPort.Parity = System.IO.Ports.Parity.Even; + serialPort.DataBits = 7; + serialPort.StopBits = System.IO.Ports.StopBits.Two; + serialPort.Handshake = System.IO.Ports.Handshake.RequestToSend; + serialPort.ReadTimeout = 1000; + ReceiveWaitSeconds = 0.1; + Terminator = null; + + _equipment = equipment; + t_statusUpdate = new Thread(statusUpdate); + t_statusUpdate.Start(); + } + + public void statusUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + Thread.Sleep(500); + + if (IsOpen) + { + // Todo. Command �꽕�젙. + ReadCurrentTemperature(); + } + else + { + if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0054_TEMPCONTROLER_DISCONNECTED)) + { + + } + else + { + if (Open() == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0054_TEMPCONTROLER_DISCONNECTED); + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + private char GetCyclicRedundancyCheck(string command) + { + byte[] commandBytes = Encoding.Default.GetBytes(command); + string formmatedCommand = string.Empty; + + for (int i = 1; i < commandBytes.Length; i++) + { + formmatedCommand += $"{commandBytes[i]:X2}"; + + if (i != commandBytes.Length - 1) + formmatedCommand += ","; + } + + string[] BCC_HexData = formmatedCommand.Split(','); + + int blockCheckCharacter = int.Parse(BCC_HexData[0], NumberStyles.HexNumber); + + for (int i = 1; i < BCC_HexData.Length; i++) + { + blockCheckCharacter ^= int.Parse(BCC_HexData[i], NumberStyles.HexNumber); + } + + return Convert.ToChar(blockCheckCharacter); + } + + private bool ReadVariableArea(int node, string variableType, string readStartAddress, string numberOfElements, out string receivedData) + { + receivedData = string.Empty; + + string command = $"{STX}{node:X2}0000101{variableType}{readStartAddress}00{numberOfElements}{EXT}"; + + char blockCheckCharacter = GetCyclicRedundancyCheck(command); + command += blockCheckCharacter; + + char[] bytes; + VariableArea variableArea = new VariableArea(); + if (WriteRead(command, out bytes)) + { + GetVariableArea(bytes, out variableArea); + receivedData = variableArea.readData; + return true; + } + else + { + return false; + } + } + + private void GetVariableArea(char[] commandFrame, out VariableArea variableArea) + { + variableArea = new VariableArea(); + + char[] node = new char[2]; + char[] slaveAddress = new char[2]; + char[] functionCode = new char[2]; + char[] mrc = new char[2]; + char[] src = new char[2]; + char[] responseCode = new char[4]; + char[] readData = new char[commandFrame.Length - 17]; + + Array.Copy(commandFrame, 1, node, 0, 2); + Array.Copy(commandFrame, 3, slaveAddress, 0, 2); + Array.Copy(commandFrame, 5, functionCode, 0, 2); + Array.Copy(commandFrame, 7, mrc, 0, 2); + Array.Copy(commandFrame, 9, src, 0, 2); + Array.Copy(commandFrame, 11, responseCode, 0, 4); + Array.Copy(commandFrame, 15, readData, 0, commandFrame.Length - 15 - 2); + + variableArea.Node = new string(node); + variableArea.slaveAddress = new string(slaveAddress); + variableArea.functionCode = new string(functionCode); + variableArea.MRC = new string(mrc); + variableArea.SRC = new string(src); + variableArea.responseCode = new string(responseCode); + variableArea.readData = new string(readData); + } + + public int ReadCurrentTemperature() + { + int temperature = 0; + + string receivedData; + + if (ReadVariableArea(1, "C0", "0000", $"{1:X4}", out receivedData)) + { + temperature = int.Parse(receivedData, NumberStyles.HexNumber); + } + Temperature = temperature; + return temperature; + } + + public bool WriteRead(string command, out char[] receivedData) + { + receivedData = null; + + string data = WriteRead(command); + + //data = "\u00020200000101000000000190\u0003\t"; + if (data != string.Empty) + { + char blockCheckCharacter = GetCyclicRedundancyCheck(data.Remove(data.Length - 1, 1)); + if (blockCheckCharacter == data[data.Length-1]) + { + receivedData = data.ToCharArray(); + + return true; + } + else + { + return false; + } + } + else + { + return false; + + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/FFU.cs b/SA_LTT_UI/SA_LTT/Module/FFU.cs new file mode 100644 index 0000000..a72e97a --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/FFU.cs @@ -0,0 +1,451 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace SA_LTT.Module +{ + public class FFU : ComPort + { + #region define Packet + + /// <summary> + /// Start + /// </summary> + public readonly byte STX = 0x02; + + /// <summary> + /// Read Mode + /// </summary> + public readonly byte MODE_Read = 0x8a; + + /// <summary> + /// Control Mode + /// </summary> + public readonly byte MODE_Control = 0x89; + + /// <summary> + /// Default + /// </summary> + public readonly byte MODE2 = 0x9f; + + /// <summary> + /// MCUL32 �쓽 ID媛� + /// </summary> + public byte MCUL_ID = 0x81; + + /// <summary> + /// Defualt + /// </summary> + public readonly byte DPU_ID = 0x9f; + + /// <summary> + /// FFU Controller(LCU)�쓽 泥ル쾲吏� ID 媛� + /// ID媛� 1�씤 寃쎌슦 10000001 (0x81) + /// </summary> + public byte Start_LCU_ID = 0x81; + + /// <summary> + /// FFU Controller(LCU)�쓽 留덉�留� ID 媛� + /// ID媛� 5�씤 寃쎌슦 10000101 (0x85) + /// </summary> + public byte End_LCU_ID = 0x81; + + /// <summary> + /// {MODE1+MODE2+ �� + mmAq HSV} => �븯�쐞諛붿씠�듃 + /// </summary> + //public byte Check_Sum { get; set; } + + /// <summary> + /// End + /// </summary> + public readonly byte EXT = 0x03; + + #endregion + + /// <summary> + /// Channel, FFU Status + /// </summary> + public Dictionary<int, FFUStatus> FFU_Status { get; } + + private Equipment _equipment; + private Thread t_statusUpdate; + public FFU(Equipment equipment) + { + serialPort.PortName = "COM8"; + serialPort.BaudRate = 9600; + serialPort.Parity = System.IO.Ports.Parity.None; + serialPort.DataBits = 8; + serialPort.StopBits = System.IO.Ports.StopBits.One; + Terminator = null; + + FFU_Status = new Dictionary<int, FFUStatus>(); + FFU_Status.Add(1, new FFUStatus(1)); + + _equipment = equipment; + t_statusUpdate = new Thread(statusUpdate); + t_statusUpdate.Start(); + } + + public void statusUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + Thread.Sleep(50); + + if (IsOpen) + { + foreach(int key in FFU_Status.Keys) + { + // Todo. Command �꽕�젙. + ReadFFUStatus(key); + } + } + else + { + if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0055_FFU_DISCONNECTED)) + { + + } + else + { + if (Open() == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0055_FFU_DISCONNECTED); + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + public bool ReadFFUStatus(int address) + { + try + { + if (!FFU_Status.ContainsKey(address)) + return false; + + byte Start_LCU_ID = (byte)(address | 0x80); + byte End_LCU_ID = (byte)(address | 0x80); + + List<byte> datas = new List<byte>(); + datas.Clear(); + + datas.Add(MODE_Control); + datas.Add(MODE2); + datas.Add(MCUL_ID); + datas.Add(DPU_ID); + datas.Add(Start_LCU_ID); + datas.Add(End_LCU_ID); + datas.Add(GetCheckSum(datas.ToArray())); + datas.Insert(0, STX); + datas.Add(EXT); + + byte[] rcvData; + + //Todo. Write read 諛섑솚 媛� Test �빐�빞 �뙋. + //if (WriteRead(datas.ToArray(), out rcvData)) + //{ + // FFU_Status[address].SetData_PV(rcvData[6]); + // FFU_Status[address].ChangeStatus(rcvData[7]); + // FFU_Status[address].SetData_SV(rcvData[8]); + // FFU_Status[address].SetmmAq(rcvData[9], rcvData[10]); + + // return true; + //} + //else + // return false; + + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + + public bool WritemmAqSV(double mmAq) + { + mmAq *= 100; + + try + { + if (!FFU_Status.ContainsKey(1)) + return false; + + int a = (int)(mmAq); + + string data = a.ToString("x"); + + byte daH, daL; + + if (data.Length > 4) + return false; + + if (data.Length == 4) + { + daH = Convert.ToByte(data.Substring(0, 2), 16); + daL = Convert.ToByte(data.Substring(2, 2), 16); + } + else if (data.Length == 3) + { + daH = Convert.ToByte(data.Substring(0, 1), 16); + daL = Convert.ToByte(data.Substring(1, 2), 16); + } + else + { + daH = 0x00; + daL = Convert.ToByte(data, 16); + } + + List<byte> datas = new List<byte>(); + datas.Clear(); + + datas.Add(MODE_Control); //89 + datas.Add(MODE2); //9f + datas.Add(MCUL_ID); //81 + datas.Add(DPU_ID); //9f + datas.Add(Start_LCU_ID); //81 + datas.Add(End_LCU_ID); //82 + datas.Add(daL); //01 + datas.Add(daH); //00 + datas.Add(daL); //00 + datas.Add(daH); //00 + datas.Add(daL); //32 + datas.Add(daH); //00 + datas.Add(GetCheckSum(datas.ToArray())); //7e + datas.Insert(0, STX); //02 + datas.Add(EXT); //03 + + string recvData; + + if (WriteRead(datas.ToArray(), out recvData)) + { + byte[] bytesData = Encoding.Default.GetBytes(recvData); + foreach (byte bb in recvData) + { + if (bb == 0xb9) + return true; + } + } + + return false; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + + /// <summary> + /// Check Sum 怨꾩궛 Method + /// </summary> + /// <param name="datas">Command byte 諛곗뿴</param> + /// <returns></returns> + public byte GetCheckSum(byte[] datas) + { + int sum = 0; + + foreach (byte data in datas) + { + sum += data; + } + + string proc_data = sum.ToString("x"); + + proc_data = proc_data.Substring(proc_data.Length - 2, 2); + + byte value = Convert.ToByte(proc_data, 16); + + return value; + } + + public bool WriteRead(string command, out string receivedData) + { + string data = base.WriteRead(command + '\r'); + + if (data.StartsWith(command.Split(' ')[0])) + { + receivedData = data.Remove(0, command.Split(' ')[0].Length).Replace("\n\r", ""); + return true; + } + else + { + receivedData = string.Empty; + return false; + } + } + + public bool WriteRead(byte[] command, out string receivedData) + { + string data = base.WriteRead(command); + + receivedData = data; + + return true; + } + } + + /// <summary> + /// MCUL32�뿉 �뿰寃곕릺�뼱 �엳�뒗 FFU Status + /// </summary> + public class FFUStatus + { + public enum AL_ST_Datas + { + Remote_Control_Mode = 0x80, + Local_Control_Mode = 0x81, + Thermal_Relay_Alarm = 0x82,//Not used + Open_the_door = 0x84,//Not used + Setting_Alarm = 0x88,//(SV>Max or SV<Min) - LIU MODE + RPM_Alarm = 0x90,//(PV>HSV or PV<LSV) - LIU MODE + Auto_controlling_for_Over_Current = 0xA0, //怨쇱쟾瑜� + Over_Current_Alarm = 0xC0, //Motor Alarm + No_Connection_LCU = 0x00, //�넻�떊 Alarm + } + + public FFUStatus(int LCU_ID) + { + this.LCU_ID = LCU_ID; + } + + #region Status + public bool Remote_Control_Mode { get; private set; } + public bool Local_Control_Mode { get; private set; } + public bool Thermal_Relay_Alarm { get; private set; } //Not used + public bool Open_the_door { get; private set; } //Not used + public bool Setting_Alarm { get; private set; } //LIU MODE + public bool RPM_Alarm { get; private set; } //LIU MODE + public bool Auto_controlling_for_Over_Current { get; private set; } + public bool Over_Current_Alarm { get; private set; } + public bool No_Connection_LCU { get; private set; } + #endregion + + #region Setting Parameter + + /// <summary> + /// FFU Controller(LCU)�쓽 ID 媛� + /// </summary> + public int LCU_ID { get; private set; } + + /// <summary> + /// LCU�쓽 吏��졊 �냽�룄 媛�(RPM) 0 ~ 1400RPM (0x00 ~ 0x8C) + /// </summary> + public int Data_SV { get; private set; } + + /// <summary> + /// LCU�쓽 �쁽�옱 �냽�룄 媛�(RPM) + /// </summary> + public int Data_PV { get; private set; } + + /// <summary> + /// �븬�젰�꽱�꽌 媛� (�떒�쐞 : mmAq) + /// </summary> + public double mmAq { get; private set; } + + /// <summary> + /// �븬�젰�꽱�꽌 媛� Low + /// </summary> + public byte mmAqLSV { get; private set; } + + /// <summary> + /// �븬�젰�꽱�꽌 媛� High + /// </summary> + public byte mmAqHSV { get; private set; } + #endregion + + #region Change Datas + + /// <summary> + /// Alarm, Status 蹂�寃� Method + /// </summary> + /// <param name="AL_ST">AL_ST byte Data</param> + public void ChangeStatus(byte AL_ST) + { + try + { + if ((AL_ST & (byte)AL_ST_Datas.Remote_Control_Mode) == (byte)AL_ST_Datas.Remote_Control_Mode) Remote_Control_Mode = true; + else Remote_Control_Mode = false; + + if ((AL_ST & (byte)AL_ST_Datas.Local_Control_Mode) == (byte)AL_ST_Datas.Local_Control_Mode) Local_Control_Mode = true; + else Local_Control_Mode = false; + + if ((AL_ST & (byte)AL_ST_Datas.Thermal_Relay_Alarm) == (byte)AL_ST_Datas.Thermal_Relay_Alarm) Thermal_Relay_Alarm = true; + else Thermal_Relay_Alarm = false; + + if ((AL_ST & (byte)AL_ST_Datas.Open_the_door) == (byte)AL_ST_Datas.Open_the_door) Open_the_door = true; + else Open_the_door = false; + + if ((AL_ST & (byte)AL_ST_Datas.Setting_Alarm) == (byte)AL_ST_Datas.Setting_Alarm) Setting_Alarm = true; + else Setting_Alarm = false; + + if ((AL_ST & (byte)AL_ST_Datas.RPM_Alarm) == (byte)AL_ST_Datas.RPM_Alarm) RPM_Alarm = true; + else RPM_Alarm = false; + + if ((AL_ST & (byte)AL_ST_Datas.Auto_controlling_for_Over_Current) == (byte)AL_ST_Datas.Auto_controlling_for_Over_Current) Auto_controlling_for_Over_Current = true; + else Auto_controlling_for_Over_Current = false; + + if ((AL_ST & (byte)AL_ST_Datas.Over_Current_Alarm) == (byte)AL_ST_Datas.Over_Current_Alarm) Over_Current_Alarm = true; + else Over_Current_Alarm = false; + + if ((AL_ST & (byte)AL_ST_Datas.No_Connection_LCU) == (byte)AL_ST_Datas.No_Connection_LCU) No_Connection_LCU = true; + else No_Connection_LCU = false; + } + catch (Exception) + { + + } + } + + /// <summary> + /// Data SV 蹂�寃�. + /// </summary> + /// <param name="Data_SV">Data_SV byte Data</param> + public void SetData_SV(byte Data_SV) + { + this.Data_SV = Data_SV * 10; + } + + /// <summary> + /// Data PV 蹂�寃�. + /// </summary> + /// <param name="Data_PV">Data_PV byte Data</param> + public void SetData_PV(byte Data_PV) + { + this.Data_PV = Data_PV * 10; + } + + /// <summary> + /// mmAq Data 蹂�寃� + /// </summary> + /// <param name="mmAqLSV">�븬�젰�꽱�꽌 媛�(�븯�쐞 諛붿씠�듃)</param> + /// <param name="mmAqHSV">�븬�젰�꽱�꽌 媛�(�긽�쐞 諛붿씠�듃)</param> + public void SetmmAq(byte mmAqLSV, byte mmAqHSV) + { + try + { + this.mmAqHSV = mmAqHSV; + this.mmAqLSV = mmAqLSV; + string proc_mmAq = $"{mmAqHSV.ToString("x")}{mmAqLSV.ToString("x")}"; + + this.mmAq = Convert.ToInt32(proc_mmAq, 16) / 100.0; + } + catch (Exception) + { + + } + } + #endregion + } +} diff --git a/SA_LTT_UI/SA_LTT/Module/GR200.cs b/SA_LTT_UI/SA_LTT/Module/GR200.cs new file mode 100644 index 0000000..60d609c --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/GR200.cs @@ -0,0 +1,173 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace SA_LTT.Module +{ + public class GR200 : ComPort + { + private char STX = Convert.ToChar(2); + private char EXT = '\n'; + private Dictionary<int, float> _measuredValues; + + public float MainCDAPressure + { + get + { + return _measuredValues[1]; + } + } + + public float MainVacuumPressure + { + get + { + return _measuredValues[2]; + } + } + + public float N2PTPressure + { + get + { + return _measuredValues[3]; + } + } + + public float MainCDAFlow + { + get + { + return _measuredValues[4]; + } + } + + public float ChamberVacuumPressure + { + get + { + return _measuredValues[5]; + } + } + + private Equipment _equipment; + private Thread t_statusUpdate; + + public GR200(Equipment equipment) + { + serialPort.PortName = "COM7"; + serialPort.BaudRate = 57600; + serialPort.Parity = System.IO.Ports.Parity.None; + serialPort.DataBits = 7; + serialPort.StopBits = System.IO.Ports.StopBits.One; + serialPort.Handshake = System.IO.Ports.Handshake.RequestToSend; + Terminator = "\r\n"; + + _measuredValues = new Dictionary<int, float>(); + + for (int i = 1; i <= 12; i++) + { + _measuredValues.Add(i, 0f); + } + + _equipment = equipment; + + t_statusUpdate = new Thread(statusUpdate); + t_statusUpdate.Start(); + } + + public void statusUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + Thread.Sleep(100); + + if (IsOpen) + { + ReadMeasuredValue(1); + } + else + { + if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0058_GR200_DISCONNECTED)) + { + + } + else + { + if (Open() == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0058_GR200_DISCONNECTED); + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + private string GetCommand(int channel, int bitsCount, int registerNumber) + { + return $"{channel:D2}DRS,{(bitsCount):D2},{registerNumber:D4}"; + } + + public void ReadMeasuredValue(int channel) + { + string command = GetCommand(channel, 24, 16); + string receivedData = string.Empty; + + if(WriteRead(command, out receivedData)) + { + string[] datas = receivedData.Split(','); + + int register = 1; + + if (!datas[0].Contains("NG") && datas[0].Contains("DRS")) + { + for (int i = 2; i < datas.Length; i = i + 2) + { + float fl = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToInt64(datas[i] + datas[i + 1], 16)), 0); + + if (_measuredValues.ContainsKey(register)) + { + _measuredValues[register] = fl; + } + else + { + _measuredValues.Add(register, fl); + } + + register++; + } + } + else if (datas[0].Contains("NG")) + throw new Exception($"Command NG, Address : {channel}, Command : DRS , Recv Data ="); + else + throw new Exception($"Error, Address : {channel}, Command : DRS , Recv Data ="); + } + } + + public bool WriteRead(string command, out string receivedData) + { + string data = base.WriteRead($"{STX}{command}\r{EXT}"); + + if (data.StartsWith($"{STX}")) + { + receivedData = data.Replace(STX, ' ').Replace("\r\n", ""); + return true; + } + else + { + receivedData = string.Empty; + return false; + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/ModuleBase.cs b/SA_LTT_UI/SA_LTT/Module/ModuleBase.cs new file mode 100644 index 0000000..cef4d72 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/ModuleBase.cs @@ -0,0 +1,488 @@ +癤퓎sing SA_LTT.Base; +using System; +using System.IO.Ports; +using System.Linq; +using System.Threading; + +namespace SA_LTT.Module +{ + public class ModuleBase : XmlManager<ModuleBase> + { + public string filePath = @"C:\Equipment\"; + public string fileName = "ModuleBase.xml"; + + protected SerialPort serialPort; + private XmlManager<ModuleBase> _xmlManager; + + private object _thisLock; + private bool _lockCheck; + private string _receivedData; + + private string _portName; + private int _baudRate; + private int _dataBits; + private Parity _parity; + private StopBits _stopBits; + private Handshake _handshake; + private int _readTimeout; + private int _writeTimeout; + private double _receiveWaitTime; + private string _terminator; + + public string PortName + { + get + { + return _portName; + } + + set + { + _portName = value; + serialPort.PortName = _portName; + } + } + + public int BaudRate + { + get + { + return _baudRate; + } + + set + { + _baudRate = value; + serialPort.BaudRate = _baudRate; + } + } + + public int DataBits + { + get + { + return _dataBits; + } + + set + { + _dataBits = value; + serialPort.DataBits = _dataBits; + } + } + + public Parity Parity + { + get + { + return _parity; + } + + set + { + _parity = value; + serialPort.Parity = _parity; + } + } + + public StopBits StopBits + { + get + { + return _stopBits; + } + + set + { + _stopBits = value; + serialPort.StopBits = _stopBits; + } + } + + public Handshake Handshake + { + get + { + return _handshake; + } + + set + { + _handshake = value; + serialPort.Handshake = _handshake; + } + } + + public int ReadTimeout + { + get + { + return _readTimeout; + } + + set + { + _readTimeout = value; + serialPort.ReadTimeout = _readTimeout; + } + } + + public int WriteTimeout + { + get + { + return _writeTimeout; + } + + set + { + _writeTimeout = value; + serialPort.WriteTimeout = _writeTimeout; + } + } + + public double ReceiveWaitTime + { + get + { + return _receiveWaitTime; + } + + set + { + _receiveWaitTime = value; + } + } + + public string Terminator + { + get + { + return _terminator; + } + + set + { + _terminator = value; + } + } + + public ModuleBase(string filePath = @"C:\Equipment\", string fileName = "ModuleBase.xml") + { + this.filePath = filePath; + this.fileName = fileName; + + _thisLock = new object(); + + serialPort = new SerialPort(); + + PortName = "COM1"; + BaudRate = 9600; + DataBits = 8; + Parity = Parity.None; + StopBits = StopBits.One; + Handshake = Handshake.None; + ReadTimeout = 500; + WriteTimeout = 500; + } + + public static string[] GetExistPortNames() + { + return SerialPort.GetPortNames(); + } + + public bool Open() + { + try + { + serialPort.Open(); + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + + public bool Close() + { + try + { + serialPort.Close(); + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + + protected string WriteRead(string command) + { + string receivedData = string.Empty; + + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + + try + { + _lockCheck = true; + _receivedData = string.Empty; + if (serialPort.BytesToRead > 0) serialPort.ReadExisting(); + + serialPort.BaseStream.Flush(); + + serialPort.Write(command); + + DateTime check = DateTime.Now; + + while (true) + { + if ((DateTime.Now - check).TotalMilliseconds > ReceiveWaitTime) + { + check = DateTime.Now; + break; + } + } + + while (true) + { + if (serialPort.BytesToRead > 0) + { + receivedData = serialPort.ReadExisting(); + + if (CheckTerminator(receivedData)) + { + if (Terminator == null) + { + if (serialPort.BytesToRead > 0) + continue; + } + receivedData = _receivedData; + break; + } + } + + if ((DateTime.Now - check).TotalMilliseconds > serialPort.ReadTimeout) + { + throw new TimeoutException($"{serialPort.PortName} Port Receieve Timeout"); + } + } + + return receivedData; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace + "\r\n" + e.Message); + return receivedData; + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + protected void Write(string command) + { + + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + + try + { + _lockCheck = true; + + serialPort.Write(command); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + protected string WriteRead(byte[] command) + { + string receivedData = string.Empty; + + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + + try + { + _lockCheck = true; + _receivedData = string.Empty; + if (serialPort.BytesToRead > 0) serialPort.ReadExisting(); + + serialPort.BaseStream.Flush(); + + serialPort.Write(command, 0, command.Length); + + DateTime check = DateTime.Now; + + while (true) + { + if ((DateTime.Now - check).TotalMilliseconds > ReceiveWaitTime) + { + check = DateTime.Now; + break; + } + } + + while (true) + { + if (serialPort.BytesToRead > 0) + { + receivedData = serialPort.ReadExisting(); + + if (CheckTerminator(receivedData)) + { + double aa = (DateTime.Now - check).TotalMilliseconds; + receivedData = _receivedData; + break; + } + } + + if ((DateTime.Now - check).TotalMilliseconds > serialPort.ReadTimeout) + { + throw new TimeoutException($"{serialPort.PortName} Port Receieve Timeout"); + } + } + + return receivedData; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return receivedData; + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + protected void Write(byte[] command) + { + + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + + try + { + _lockCheck = true; + + serialPort.Write(command, 0, command.Length); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + protected string Read(int timeout) + { + string receivedData = string.Empty; + DateTime check = DateTime.Now; + + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + + try + { + _lockCheck = true; + + while (true) + { + if (serialPort.BytesToRead > 0) + { + receivedData = serialPort.ReadExisting(); + + if (CheckTerminator(receivedData)) + { + receivedData = _receivedData; + break; + } + } + + if ((DateTime.Now - check).TotalMilliseconds > timeout) + { + throw new TimeoutException($"{serialPort.PortName} Port Receieve Timeout"); + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return receivedData; + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + + return receivedData; + } + + private bool CheckTerminator(string receivedData) + { + if (Terminator == null) + { + _receivedData += receivedData; + return true; + } + else + { + if (receivedData.Contains(Terminator)) + { + int terminatorLocation = receivedData.IndexOf(Terminator); + + if (receivedData.Length == terminatorLocation + Terminator.Length) + { + _receivedData += receivedData; + } + else + { + _receivedData += receivedData.Remove(terminatorLocation + Terminator.Length); + } + + return true; + } + else + { + _receivedData += receivedData; + return false; + } + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/Motor.cs b/SA_LTT_UI/SA_LTT/Module/Motor.cs new file mode 100644 index 0000000..60ee48a --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/Motor.cs @@ -0,0 +1,75 @@ +癤퓆amespace SA_LTT.Module +{ + public abstract class Motor + { + public void Home() + { + + } + + public void ReadStatus() + { + + } + + public void ReadPosition() + { + + } + + public void ReadVelocity() + { + + } + + public void MoveAbsolute() + { + + } + + public void MoveRelative() + { + + } + + public void MovePositiveJog() + { + + } + + public void MoveNegativeJog() + { + + } + + public void MoveStop() + { + + } + + public void SetSpeed() + { + + } + + public void SetAccel() + { + + } + + public void ServoOn() + { + + } + + public void ServoOff() + { + + } + + public void ResetError() + { + + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Module/PiLaser.cs b/SA_LTT_UI/SA_LTT/Module/PiLaser.cs new file mode 100644 index 0000000..3acfb8f --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/PiLaser.cs @@ -0,0 +1,3640 @@ +癤퓎sing System; +using System.Collections; +using log4net; +using System.Threading; + +namespace SA_LTT.Module +{ + #region Enum + public enum SourcesType + { + INT, + EXT, + } + + public enum TemperaturePointType + { + SHG = 0x00, + THG = 0x01, + LD1 = 0x02, + LD2 = 0x03, + LD3 = 0x04, + } + + public enum BurstFiringModeType + { + Continuous = 0x00, + SingleShot = 0x01 + } + + public enum BurstTriggerSourceType + { + Command = 0x00, + Gate = 0x01, + } + + public enum DutyControlModeType + { + Fixed = 0x00, + Track = 0x01, + } + #endregion + + // Laser Set Current, Gate Source 留먭퀬�뒗 �떎 怨좎젙媛믪쑝濡� �궗�슜�븿. + // �굹癒몄��뒗 �궗�슜 紐삵븯寃� 留됱쑝硫대맖. UI�뒗 �긽�깭媛믩쭔 �몴�떆. + /// <summary> + /// Company : Photonics Industries International, Inc. + /// Site : www.Photonix.com. + /// PI laser control class. + /// </summary> + public class PiLaser : ComPort + { + #region Enum + public enum WriteCommand + { + EnableShutter = 0x04, + SystemReset = 0x07, + EnableLDD = 0x10, + SetCurrent = 0x11, + MaxCurrent = 0x14, + PRF = 0x21, + PRFSource = 0x23, + GateSource = 0x24, + PECSource = 0x25, + FPKEnable = 0x27, + FPKRampTime = 0x28, + FPKRampRate = 0x29, + LPKEnable = 0x2B, + LPKRampTime = 0x2C, + LPKRampRate = 0x2D, + TemperatureSetPoint = 0x31, + DutyControl = 0x53, + DutyControlWidth = 0x54, + PECLevel = 0x55, + BurstStatus = 0x56, + BurstCount = 0x57, + BurstRate = 0x58, + BurstCycles = 0x59, + BurstFiringMode = 0x67, + BurstTriggerSource = 0x68, + DutyControlMode = 0x69, + } + + public enum ReadCommand + { + EnableShutter = 0x04, + ReadSoftFaults = 0x0C, + ReadBoardFaults = 0x0D, + ReadStatus = 0x0F, + EnableLDD = 0x10, + SetCurrent = 0x11, + ReadActualCurrent = 0x12, + ReadDiodeVoltage = 0x13, + MaxCurrent = 0x14, + LDDHours = 0x15, + PRF = 0x21, + PRFSource = 0x23, + GateSource = 0x24, + PECSource = 0x25, + FPKEnable = 0x27, + FPKRampTime = 0x28, + FPKRampRate = 0x29, + LPKEnable = 0x2B, + LPKRampTime = 0x2C, + LPKRampRate = 0x2D, + TemperatureSetPoint = 0x31, + ActualTemperature = 0x32, + DutyControl = 0x53, + DutyControlWidth = 0x54, + PECLevel = 0x55, + BurstStatus = 0x56, + BurstCount = 0x57, + BurstRate = 0x58, + BurstCycles = 0x59, + BurstFiringMode = 0x67, + BurstTriggerSource = 0x68, + DutyControlMode = 0x69, + PowerMonitorReading = 0x71, + FlowReading = 0x74, + HumidityReading = 0x76, + NetworkAddress = 0x98, + } + #endregion + + #region Property + /// <summary> + /// Current pi laser status. + /// </summary> + public PiLaserStatus CurrentPiLaserStatus + { + get + { + return _currentPiLaserStatus; + } + + private set + { + _currentPiLaserStatus = value; + } + } + #endregion + + #region Field + private ILog _piLaserLogger = LogManager.GetLogger("PiLaser"); + private IEnumerator _piLaserReadCommands; + + private PiLaserStatus _currentPiLaserStatus; + + private Equipment _equipment; + private Thread t_statusUpdate; + private object _lockObject; + private bool _isLock; + #endregion + + #region Construct + public PiLaser(Equipment equipment) + { + serialPort.PortName = "COM12"; + serialPort.BaudRate = 115200; + serialPort.Parity = System.IO.Ports.Parity.None; + serialPort.DataBits = 8; + serialPort.StopBits = System.IO.Ports.StopBits.One; + Terminator = "\r"; + + _equipment = equipment; + + _lockObject = new object(); + _currentPiLaserStatus = new PiLaserStatus(); + + t_statusUpdate = new Thread(statusUpdate); + t_statusUpdate.Start(); + } + #endregion + + #region Function + public void statusUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + Thread.Sleep(10); + + if (IsOpen) + { + if (_piLaserReadCommands == null || !_piLaserReadCommands.MoveNext()) + { + _piLaserReadCommands = PiLaserReads(); + } + else + { + bool value = (bool)_piLaserReadCommands.Current; + + if (value == false) + { + // Alarm : Communication Alarm. + } + } + } + else + { + // Interlock : Connection Alarm 諛쒖깮�떆 �룞�옉 �븞�릺�룄濡� 蹂�寃�. + if (!Open()) + { + // Alarm : Connection Alarm. + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + private void CheckSoftFaults() + { + + if (CurrentPiLaserStatus.CurrentSoftFaults.HfSync) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0100_LASER_SOFT_FAULT_HFSYNC); + } + + if (CurrentPiLaserStatus.CurrentSoftFaults.LddInterlock) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0101_LASER_SOFT_FAULT_LDD_INTERLOCK); + } + + if (CurrentPiLaserStatus.CurrentSoftFaults.ShutterInterlock) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0102_LASER_SOFT_FAULT_SHUTTER_INTERLOCK); + } + + if (CurrentPiLaserStatus.CurrentSoftFaults.LowExtFrequency) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0103_LASER_SOFT_FAULT_LOW_EXT_FREQUENCY); + } + } + + private void CheckBoardFaults() + { + if (CurrentPiLaserStatus.CurrentBoardFaults.Main) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0103_LASER_SOFT_FAULT_LOW_EXT_FREQUENCY); + } + + if (CurrentPiLaserStatus.CurrentBoardFaults.Common) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0105_LASER_BOARD_FAULT_COMMON); + } + + if (CurrentPiLaserStatus.CurrentBoardFaults.Temperature) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0106_LASER_BOARD_FAULT_TEMPERATURE); + } + + if (CurrentPiLaserStatus.CurrentBoardFaults.Sensor) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0107_LASER_BOARD_FAULT_SENSOR); + } + + if (CurrentPiLaserStatus.CurrentBoardFaults.PowerMonitor) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0108_LASER_BOARD_FAULT_POWER_MONITOR); + } + + if (CurrentPiLaserStatus.CurrentBoardFaults.Pulse) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0109_LASER_BOARD_FAULT_PULSE); + } + + if (CurrentPiLaserStatus.CurrentBoardFaults.Ldd) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0110_LASER_BOARD_FAULT_LDD); + } + + if (CurrentPiLaserStatus.CurrentBoardFaults.Motor) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0111_LASER_BOARD_FAULT_MOTOR); + } + } + + private void CheckSystemFaults() + { + if (CurrentPiLaserStatus.CurrentSystemFaults.Memory) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0112_LASER_SYSTEM_FAULT_MEMORY); + } + + if (CurrentPiLaserStatus.CurrentSystemFaults.SdCard) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0113_LASER_SYSTEM_FAULT_SDCARD); + } + + if (CurrentPiLaserStatus.CurrentSystemFaults.BoardCommunication) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0114_LASER_SYSTEM_FAULT_BOARD_COMMUNICATION); + } + + if (CurrentPiLaserStatus.CurrentSystemFaults.BoardState) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0115_LASER_SYSTEM_FAULT_BOARD_STATE); + } + } + + private void CheckGeneralAlarms() + { + if (CurrentPiLaserStatus.CurrentGeneralAlarms.Ldd1) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0116_LASER_GENERAL_ALARM_LDD1); + } + + if (CurrentPiLaserStatus.CurrentGeneralAlarms.Ldd2) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0117_LASER_GENERAL_ALARM_LDD2); + } + + if (CurrentPiLaserStatus.CurrentGeneralAlarms.Qsw) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0118_LASER_GENERAL_ALARM_QSW); + } + + if (CurrentPiLaserStatus.CurrentGeneralAlarms.Flow) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0119_LASER_GENERAL_ALARM_FLOW); + } + + if (CurrentPiLaserStatus.CurrentGeneralAlarms.Wet) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0120_LASER_GENERAL_ALARM_WET); + } + + if (CurrentPiLaserStatus.CurrentGeneralAlarms.Humidity) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0121_LASER_GENERAL_ALARM_HUMIDITY); + } + + if (CurrentPiLaserStatus.CurrentGeneralAlarms.HfSync) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0122_LASER_GENERAL_ALARM_HFSYNC); + } + } + + private void CheckTemperatureFaults() + { + if (CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault0) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0123_LASER_TEMPERATURE_FAULT_0); + } + + if (CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault1) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0124_LASER_TEMPERATURE_FAULT_1); + } + + if (CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault2) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0125_LASER_TEMPERATURE_FAULT_2); + } + + if (CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault3) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0126_LASER_TEMPERATURE_FAULT_3); + } + + if (CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault4) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0127_LASER_TEMPERATURE_FAULT_4); + } + + if (CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault5) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0128_LASER_TEMPERATURE_FAULT_5); + } + + if (CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault6) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0129_LASER_TEMPERATURE_FAULT_6); + } + + if (CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault7) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0130_LASER_TEMPERATURE_FAULT_7); + } + } + + private void CheckSystemStateFaults() + { + if(CurrentPiLaserStatus.CurrentSystemState.SoftFault) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0131_LASER_SOFT_FAULT); + } + + if (CurrentPiLaserStatus.CurrentSystemState.HardFault) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0132_LASER_HARD_FAULT); + } + } + + //=============================== Write ========================================== + /// <summary> + /// Write enable shutter. + /// </summary> + /// <param name="enable">true : Enable, false : Disable</param> + /// <returns></returns> + public bool WriteEnableShutter(bool enable) + { + if (_equipment.piLaser.CurrentPiLaserStatus.EnableShutter && enable == false) + { + if (_equipment.piLaser.CurrentPiLaserStatus.SetCurrent > 0) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0080_SET_CURRENT_IS_NOT_ZERO); + return false; + } + } + + var bytesData = new byte[1]; + + if (enable) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.EnableShutter, bytesData); + } + + /// <summary> + /// System reset. + /// </summary> + /// <returns></returns> + public bool WriteSystemReset() + { + return WriteData(WriteCommand.SystemReset); + } + + /// <summary> + /// Write enable laser diode driver. + /// </summary> + /// <param name="enable">true : Enable, false : Disable</param> + /// <returns></returns> + public bool WriteEnableLdd(bool enable) + { + if (_equipment.piLaser.CurrentPiLaserStatus.EnableLdd && enable == false) + { + if (_equipment.piLaser.CurrentPiLaserStatus.SetCurrent > 0) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0080_SET_CURRENT_IS_NOT_ZERO); + return false; + } + } + + var bytesData = new byte[1]; + + if (enable) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.EnableLDD, bytesData); + } + + /// <summary> + /// Write set current. + /// </summary> + /// <param name="ampere"> 0 - 100 (A)</param> + public bool WriteSetCurrent(double ampere) + { + if (CurrentPiLaserStatus.CurrentSystemStatus.LddOn == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0078_LDD_IS_NOT_ON); + return false; + } + + if (CurrentPiLaserStatus.CurrentSystemStatus.ShutterEnabled == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0079_SHUTTER_IS_NOT_OPEN); + return false; + } + + //Unit : 0.01A + ampere = ampere * 100; + + if (ampere > 10000) ampere = 10000; + else if (ampere < 0) ampere = 0; + + var ushortAmpere = ushort.Parse(ampere.ToString("F0")); + + var bytesData = BitConverter.GetBytes(ushortAmpere); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.SetCurrent, bytesData); + } + + /// <summary> + /// Write max current. + /// </summary> + /// <param name="ampere"> 0 - 100 (A)</param> + public bool WriteMaxCurrent(double ampere) + { + //Unit : 0.01A + ampere = ampere * 100; + + if (ampere > 10000) ampere = 10000; + else if (ampere < 0) ampere = 0; + + var ushortAmpere = ushort.Parse(ampere.ToString("F0")); + + var bytesData = BitConverter.GetBytes(ushortAmpere); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.MaxCurrent, bytesData); + } + + /// <summary> + /// Write pulse repetition frequency. + /// </summary> + /// <param name="hz"> 0 - 1000000 Hz</param> + public bool WritePrf(int pulseRepetitionFrequency) + { + if (pulseRepetitionFrequency > 1000000) pulseRepetitionFrequency = 1000000; + else if (pulseRepetitionFrequency < 0) pulseRepetitionFrequency = 0; + + var bytesData = new byte[3]; + + var bytesPulseRepetitionFrequency = BitConverter.GetBytes(pulseRepetitionFrequency); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesPulseRepetitionFrequency); + + bytesData[0] = bytesPulseRepetitionFrequency[1]; + bytesData[1] = bytesPulseRepetitionFrequency[2]; + bytesData[2] = bytesPulseRepetitionFrequency[3]; + + return WriteData(WriteCommand.PRF, bytesData); + } + + /// <summary> + /// Write pulse repetition frequency source. + /// </summary> + /// <param name="source">Source type</param> + /// <returns></returns> + public bool WritePrfSource(SourcesType source) + { + var bytesData = new byte[1]; + + if (source == SourcesType.EXT) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.PRFSource, bytesData); + } + + /// <summary> + /// Write gate source. + /// </summary> + /// <param name="source">Source type</param> + /// <returns></returns> + public bool WriteGateSource(SourcesType source) + { + var bytesData = new byte[1]; + + if (source == SourcesType.EXT) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.GateSource, bytesData); + } + + /// <summary> + /// Write pulse energy control source. + /// </summary> + /// <param name="source">Source type</param> + /// <returns></returns> + public bool WritePecSource(SourcesType source) + { + var bytesData = new byte[1]; + + if (source == SourcesType.EXT) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.PECSource, bytesData); + } + + /// <summary> + /// Write first pulse kill enable. + /// </summary> + /// <param name="enable">true : Enable, false : Disable</param> + /// <returns></returns> + public bool WriteFpkEnable(bool enable) + { + var bytesData = new byte[1]; + + if (enable) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.FPKEnable, bytesData); + } + + /// <summary> + /// Write first pulse kill ramp time. + /// </summary> + /// <param name="rampTime"> 0 - 655350 (ns)</param> + public bool WriteFpkRampTime(int rampTime) + { + //Units : 10ns + rampTime = (int)(rampTime * 0.1); + + if (rampTime > 65535) rampTime = 65535; + else if (rampTime < 0) rampTime = 0; + + var ushortRampTime = ushort.Parse(rampTime.ToString("F0")); + + var bytesData = BitConverter.GetBytes(ushortRampTime); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.FPKRampTime, bytesData); + } + + /// <summary> + /// Write first pulse kill ramp rate. + /// </summary> + /// <param name="rampRate"> 0 - 6553500 (ns)</param> + public bool WriteFpkRampRate(int rampRate) + { + //Units : 100ns + rampRate = (int)(rampRate * 0.01); + + if (rampRate > 65535) rampRate = 65535; + else if (rampRate < 0) rampRate = 0; + + var ushortRampRate = ushort.Parse(rampRate.ToString("F0")); + + var bytesData = BitConverter.GetBytes(ushortRampRate); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.FPKRampRate, bytesData); + } + + /// <summary> + /// Write lpk enable. + /// </summary> + /// <param name="enable">true : Enable, false : Disable</param> + /// <returns></returns> + public bool WriteLpkEnable(bool enable) + { + byte[] bytesData = new byte[1]; + + if (enable) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.LPKEnable, bytesData); + } + + /// <summary> + /// Write lpk ramp time. + /// </summary> + /// <param name="rampTime"> 0 - 655350 (ns)</param> + public bool WriteLpkRampTime(double rampTime) + { + //Units : 10ns. + rampTime = rampTime * 0.1f; + + if (rampTime > 65535) rampTime = 65535; + else if (rampTime < 0) rampTime = 0; + + var ushortRampTime = ushort.Parse(rampTime.ToString("F0")); + + var bytesData = BitConverter.GetBytes(ushortRampTime); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.LPKRampTime, bytesData); + } + + /// <summary> + /// Write lpk ramp rate. + /// </summary> + /// <param name="rampRate"> 0 - 6553500 (ns)</param> + public bool WriteLpkRampRate(int rampRate) + { + //Units : 100ns + rampRate = (int)(rampRate * 0.01); + + if (rampRate > 65535) rampRate = 65535; + else if (rampRate < 0) rampRate = 0; + + var ushortRampRate = ushort.Parse(rampRate.ToString("F0")); + + var bytesData = BitConverter.GetBytes(ushortRampRate); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.LPKRampRate, bytesData); + } + + /// <summary> + /// Write temperature set point. + /// </summary> + /// <param name="temperaturePoint">Temperature point</param> + /// <param name="temperature"> 0 - 160 �꼦</param> + /// <returns></returns> + public bool WriteTemperatureSetPoint(TemperaturePointType temperaturePoint, double temperature) + { + //Units : 0.01�꼦 + temperature = temperature * 100; + if (temperature > 16000) temperature = 16000; + else if (temperature < 0) temperature = 0; + + var ushortTemperature = ushort.Parse(temperature.ToString("F0")); + + var bytesData = BitConverter.GetBytes(ushortTemperature); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.TemperatureSetPoint, bytesData, (int)temperaturePoint); + } + + /// <summary> + /// Write duty contorl. + /// </summary> + /// <param name="enable"> true : Enable, false : Disable </param> + /// <returns></returns> + public bool WriteDutyControl(bool enable) + { + var bytesData = new byte[1]; + + if (enable) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.DutyControl, bytesData); + } + + /// <summary> + /// Write duty control width. + /// </summary> + /// <param name="dutyControlWidth">0 - (1/PRF - 0.1us)</param> + public bool WriteDutyControlWidth(double dutyControlWidth) + { + //Units : 0.1us + dutyControlWidth = dutyControlWidth * 10; + + if (dutyControlWidth > 16777215) dutyControlWidth = 16777215; + else if (dutyControlWidth < 0) dutyControlWidth = 0; + + var intDutyControlWidth = int.Parse(dutyControlWidth.ToString("F0")); + + var bytesData = new byte[3]; + + var bytesDutyControlWidth = BitConverter.GetBytes(intDutyControlWidth); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesDutyControlWidth); + + bytesData[0] = bytesDutyControlWidth[1]; + bytesData[1] = bytesDutyControlWidth[2]; + bytesData[2] = bytesDutyControlWidth[3]; + + return WriteData(WriteCommand.DutyControlWidth, bytesData); + } + + /// <summary> + /// Write pulse energy control level. + /// </summary> + /// <param name="pecLevel">0 - 100%</param> + /// <returns></returns> + public bool WritePecLevel(double pulseEnergyControlLevel) + { + //Units : 0.1% + pulseEnergyControlLevel = pulseEnergyControlLevel * 10; + + if (pulseEnergyControlLevel > 1000) pulseEnergyControlLevel = 1000; + else if (pulseEnergyControlLevel < 0) pulseEnergyControlLevel = 0; + + var ushortPulseEnergyControlLevel = ushort.Parse(pulseEnergyControlLevel.ToString("F0")); + + var bytesData = BitConverter.GetBytes(ushortPulseEnergyControlLevel); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.PECLevel, bytesData); + } + + /// <summary> + /// Write burst status. + /// </summary> + /// <param name="burstStatus">true : Enable, false : Disable</param> + /// <returns></returns> + public bool WriteBurstStatus(bool burstStatus) + { + var bytesData = new byte[1]; + + if (burstStatus) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.BurstStatus, bytesData); + } + + /// <summary> + /// Write burst count. + /// </summary> + /// <param name="burstCount">from 1 to (Burst Rate -1)</param> + public bool WriteBurstCount(ushort burstCount) + { + if (burstCount > 65535) burstCount = 65535; + else if (burstCount < 1) burstCount = 1; + + var bytesData = BitConverter.GetBytes(burstCount); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.BurstCount, bytesData); + } + + /// <summary> + /// Write burst rate. + /// </summary> + /// <param name="rate">from 1 to 65535</param> + public bool WriteBurstRate(ushort burstRate) + { + // integer divisor of PRF + if (burstRate > 65535) burstRate = 65535; + else if (burstRate < 1) burstRate = 1; + + var bytesData = BitConverter.GetBytes(burstRate); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.BurstRate, bytesData); + } + + /// <summary> + /// Write burst cycles. + /// </summary> + /// <param name="rate">from 1 to 65535 (number of bursts)</param> + public bool WriteBurstCycles(ushort burstCycles) + { + if (burstCycles > 65535) burstCycles = 65535; + else if (burstCycles < 1) burstCycles = 1; + + var bytesData = BitConverter.GetBytes(burstCycles); + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + return WriteData(WriteCommand.BurstCycles, bytesData); + } + + /// <summary> + /// Write burst firing mode. + /// </summary> + /// <param name="burstFiringMode">Brust firing mode</param> + /// <returns></returns> + public bool WriteBurstFiringMode(BurstFiringModeType burstFiringMode) + { + var bytesData = new byte[1]; + + if (burstFiringMode == BurstFiringModeType.SingleShot) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.BurstFiringMode, bytesData); + } + + /// <summary> + /// Write burst trigger source. + /// </summary> + /// <param name="source">Burst trigger source</param> + /// <returns></returns> + public bool WriteBurstTriggerSource(BurstTriggerSourceType burstTriggerSource) + { + var bytesData = new byte[1]; + + if (burstTriggerSource == BurstTriggerSourceType.Gate) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.BurstTriggerSource, bytesData); + } + + /// <summary> + /// Write duty control mode. + /// </summary> + /// <param name="dutyControlMode">Duty control mode</param> + /// <returns></returns> + public bool WriteDutyControlMode(DutyControlModeType dutyControlMode) + { + var bytesData = new byte[1]; + + if (dutyControlMode == DutyControlModeType.Track) + bytesData[0] = 0x01; + else + bytesData[0] = 0x00; + + return WriteData(WriteCommand.DutyControlMode, bytesData); + } + + //=============================== Read ========================================== + /// <summary> + /// Read enable shutter. + /// </summary> + /// <returns></returns> + public bool ReadEnableShutter() + { + var bytesData = ReadData(ReadCommand.EnableShutter); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.EnableShutter = bytesData[0] == 0x01; + return true; + } + } + + /// <summary> + /// Read soft fauls. + /// </summary> + /// <returns></returns> + public bool ReadSoftFaults() + { + var bytesdata = ReadData(ReadCommand.ReadSoftFaults); + + if (bytesdata == null) + { + return false; + } + else + { + _currentPiLaserStatus.ChangeSoftFaults(bytesdata[1]); + CheckSoftFaults(); + return true; + } + } + + /// <summary> + /// Read board faults. + /// </summary> + /// <returns></returns> + public bool ReadBoardFaults() + { + var bytesData = ReadData(ReadCommand.ReadBoardFaults); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.ChangeBoardFaults(bytesData[1]); + CheckBoardFaults(); + return true; + } + } + + /// <summary> + /// Read status. + /// </summary> + /// <returns></returns> + public bool ReadStatus() + { + var bytesData = ReadData(ReadCommand.ReadStatus); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.ChangeSystemStatus(bytesData[0]); + _currentPiLaserStatus.ChangeSystemFaults(bytesData[1]); + _currentPiLaserStatus.ChangeGeneralAlarms(bytesData[2]); + _currentPiLaserStatus.ChangeTemperatureControlFaults(bytesData[3]); + _currentPiLaserStatus.ChangeSystemState(bytesData[4]); + + CheckSystemFaults(); + CheckGeneralAlarms(); + CheckTemperatureFaults(); + CheckSystemStateFaults(); + return true; + } + } + + /// <summary> + /// Read enable ldd. + /// </summary> + /// <returns></returns> + public bool ReadEnableLdd() + { + var bytesData = ReadData(ReadCommand.EnableLDD); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.EnableLdd = bytesData[0] == 0x01; + return true; + } + } + + /// <summary> + /// Read set current. + /// </summary> + /// <returns></returns> + public bool ReadSetCurrent() + { + var bytesData = ReadData(ReadCommand.SetCurrent); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) + Array.Reverse(bytesData); + + _currentPiLaserStatus.SetCurrent = BitConverter.ToInt16(bytesData, 0) * 0.01f; + return true; + } + } + + /// <summary> + /// Read actual current. + /// </summary> + /// <returns></returns> + public bool ReadActualCurrent() + { + var bytesData = ReadData(ReadCommand.ReadActualCurrent); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.ActualCurrent = BitConverter.ToInt16(bytesData, 0) * 0.01f; + return true; + } + } + + /// <summary> + /// Read diode voltage. + /// </summary> + /// <returns></returns> + public bool ReadDiodeVoltage() + { + var bytesData = ReadData(ReadCommand.ReadDiodeVoltage); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.DiodeVoltage = BitConverter.ToInt16(bytesData, 0) * 0.01f; + return true; + } + } + + /// <summary> + /// Read max current. + /// </summary> + /// <returns></returns> + public bool ReadMaxCurrent() + { + var bytesData = ReadData(ReadCommand.MaxCurrent); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.MaxCurrent = BitConverter.ToInt16(bytesData, 0) * 0.01f; + return true; + } + } + + /// <summary> + /// Read laser diode diver hours. + /// </summary> + /// <returns></returns> + public bool ReadLddHours() + { + var bytesData = ReadData(ReadCommand.LDDHours); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.LddHours = BitConverter.ToInt32(bytesData, 0) * 0.1f; + return true; + } + } + + /// <summary> + /// Read pulse repetition frequency. + /// </summary> + /// <returns></returns> + public bool ReadPrf() + { + var bytesData = ReadData(ReadCommand.PRF); + + if (bytesData == null) + { + return false; + } + else + { + var bytesPulseRepetitionFrequency = new byte[4]; + + bytesPulseRepetitionFrequency[0] = 0; + bytesPulseRepetitionFrequency[1] = bytesData[0]; + bytesPulseRepetitionFrequency[2] = bytesData[1]; + bytesPulseRepetitionFrequency[3] = bytesData[2]; + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesPulseRepetitionFrequency); + + _currentPiLaserStatus.Prf = BitConverter.ToInt32(bytesPulseRepetitionFrequency, 0); + return true; + } + } + + /// <summary> + /// Read pulse repetition frequency source. + /// </summary> + /// <returns></returns> + public bool ReadPRFSource() + { + var bytesData = ReadData(ReadCommand.PRFSource); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.PrfSource = bytesData[0] == 0x01 ? SourcesType.EXT : SourcesType.INT; + return true; + } + } + + /// <summary> + /// Read gate source. + /// </summary> + /// <returns></returns> + public bool ReadGateSource() + { + var bytesData = ReadData(ReadCommand.GateSource); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.GateSource = bytesData[0] == 0x01 ? SourcesType.EXT : SourcesType.INT; + return true; + } + } + + /// <summary> + /// Read pulse energy control source. + /// </summary> + /// <returns></returns> + public bool ReadPecSource() + { + var bytesData = ReadData(ReadCommand.PECSource); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.PecSource = bytesData[0] == 0x01 ? SourcesType.EXT : SourcesType.INT; + return true; + } + } + + /// <summary> + /// Read first pulse kill enable. + /// </summary> + /// <returns></returns> + public bool ReadFPKEnable() + { + var data_bytes = ReadData(ReadCommand.FPKEnable); + + if (data_bytes == null) + { + return false; + } + else + { + _currentPiLaserStatus.FpkEnable = data_bytes[0] == 0x01; + return true; + } + } + + /// <summary> + /// Read first pulse kill ramp time. + /// </summary> + /// <returns></returns> + public bool ReadFpkRampTime() + { + var bytesData = ReadData(ReadCommand.FPKRampTime); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.FpkRampTime = BitConverter.ToUInt16(bytesData, 0) * 10; + return true; + } + } + + /// <summary> + /// Read first pulse kill ramp rate. + /// </summary> + /// <returns></returns> + public bool ReadFpkRampRate() + { + var bytesData = ReadData(ReadCommand.FPKRampRate); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.FpkRampRate = BitConverter.ToUInt16(bytesData, 0) * 100; + return true; + } + } + + /// <summary> + /// Read lpk enable. + /// </summary> + /// <returns></returns> + public bool ReadLpkEnable() + { + var bytesData = ReadData(ReadCommand.LPKEnable); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.LpkEnable = bytesData[0] == 0x01; + return true; + } + } + + /// <summary> + /// Read lpk ramp time. + /// </summary> + /// <returns></returns> + public bool ReadLpkRampTime() + { + var bytesData = ReadData(ReadCommand.LPKRampTime); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.LpkRampTime = BitConverter.ToUInt16(bytesData, 0) * 10; + return true; + } + } + + /// <summary> + /// Read lpk ramp rate. + /// </summary> + /// <returns></returns> + public bool ReadLpkRampRate() + { + var bytesData = ReadData(ReadCommand.LPKRampRate); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.LpkRampRate = BitConverter.ToUInt16(bytesData, 0) * 100; + return true; + } + } + + /// <summary> + /// Read temperature set point. + /// </summary> + /// <param name="temperaturePoint">Temperature point</param> + /// <returns></returns> + public bool ReadTemperatureSetPoint(TemperaturePointType temperaturePoint) + { + var bytesData = ReadData(ReadCommand.TemperatureSetPoint, (byte)temperaturePoint); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + if(temperaturePoint == TemperaturePointType.SHG) + _currentPiLaserStatus.ShgTemperatureSetPoint = BitConverter.ToInt16(bytesData, 0) * 0.01f; + if (temperaturePoint == TemperaturePointType.THG) + _currentPiLaserStatus.ThgTemperatureSetPoint = BitConverter.ToInt16(bytesData, 0) * 0.01f; + if (temperaturePoint == TemperaturePointType.LD1) + _currentPiLaserStatus.LdTemperatureSetPoint = BitConverter.ToInt16(bytesData, 0) * 0.01f; + return true; + } + } + + /// <summary> + /// Read actual temperature. + /// </summary> + /// <param name="temperaturePoint">Temperature point</param> + /// <returns></returns> + public bool ReadActualTemperature(TemperaturePointType temperaturePoint) + { + var bytesData = ReadData(ReadCommand.ActualTemperature, (byte)temperaturePoint); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + if (temperaturePoint == TemperaturePointType.SHG) + _currentPiLaserStatus.ShgActualTemperature = BitConverter.ToInt16(bytesData, 0) * 0.01f; + if (temperaturePoint == TemperaturePointType.THG) + _currentPiLaserStatus.ThgActualTemperature = BitConverter.ToInt16(bytesData, 0) * 0.01f; + if (temperaturePoint == TemperaturePointType.LD1) + _currentPiLaserStatus.LdActualTemperature = BitConverter.ToInt16(bytesData, 0) * 0.01f; + return true; + } + } + + /// <summary> + /// Read duty control. + /// </summary> + /// <returns></returns> + public bool ReadDutyControl() + { + var bytesData = ReadData(ReadCommand.DutyControl); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.DutyControl = bytesData[0] == 0x01; + return true; + } + } + + /// <summary> + /// Read duty control width. + /// </summary> + /// <returns></returns> + public bool ReadDutyControlWidth() + { + var bytesData = ReadData(ReadCommand.DutyControlWidth); + + if (bytesData == null) + { + return false; + } + else + { + var bytesDutyControlWidth = new byte[4]; + + bytesDutyControlWidth[0] = 0; + bytesDutyControlWidth[1] = bytesData[0]; + bytesDutyControlWidth[2] = bytesData[1]; + bytesDutyControlWidth[3] = bytesData[2]; + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesDutyControlWidth); + + _currentPiLaserStatus.DutyControlWidth = BitConverter.ToInt32(bytesDutyControlWidth, 0) * 0.1f; + return true; + } + } + + /// <summary> + /// Read pulse energy control level. + /// </summary> + /// <returns></returns> + public bool ReadPecLevel() + { + var bytesData = ReadData(ReadCommand.PECLevel); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + if (bytesData.Length < 2) + { + + } + else + { + _currentPiLaserStatus.PecLevel = BitConverter.ToInt16(bytesData, 0) * 0.1f; + } + return true; + } + } + + /// <summary> + /// Read burst status. + /// </summary> + /// <returns></returns> + public bool ReadBurstStatus() + { + var bytesData = ReadData(ReadCommand.BurstStatus); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.BurstStatus = bytesData[0] == 0x01; + return true; + } + } + + /// <summary> + /// Read burst count. + /// </summary> + /// <returns></returns> + public bool ReadBurstCount() + { + var bytesData = ReadData(ReadCommand.BurstCount); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.BurstCount = BitConverter.ToUInt16(bytesData, 0); + return true; + } + } + + /// <summary> + /// Read burst rate. + /// </summary> + /// <returns></returns> + public bool ReadBurstRate() + { + var bytesData = ReadData(ReadCommand.BurstRate); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.BurstRate = BitConverter.ToUInt16(bytesData, 0); + return true; + } + } + + /// <summary> + /// Read burst cycles. + /// </summary> + /// <returns></returns> + public bool ReadBurstCycles() + { + var bytesData = ReadData(ReadCommand.BurstCycles); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.BurstCycles = BitConverter.ToUInt16(bytesData, 0); + return true; + } + } + + /// <summary> + /// Read burst firing mode. + /// </summary> + /// <returns></returns> + public bool ReadBurstFiringMode() + { + var bytesData = ReadData(ReadCommand.BurstFiringMode); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.BurstFiringMode = bytesData[0] == 0x01 ? BurstFiringModeType.SingleShot : BurstFiringModeType.Continuous; + return true; + } + } + + /// <summary> + /// Read burst trigger source. + /// </summary> + /// <returns></returns> + public bool ReadBurstTriggerSource() + { + var bytesData = ReadData(ReadCommand.BurstTriggerSource); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.BurstTriggerSource = bytesData[0] == 0x01 ? BurstTriggerSourceType.Gate : BurstTriggerSourceType.Command; + return true; + } + } + + /// <summary> + /// Read duty control mode. + /// </summary> + /// <returns></returns> + public bool ReadDutyControlMode() + { + var bytesData = ReadData(ReadCommand.DutyControlMode); + + if (bytesData == null) + { + return false; + } + else + { + _currentPiLaserStatus.DutyControlMode = bytesData[0] == 0x01 ? DutyControlModeType.Fixed : DutyControlModeType.Track; + return true; + } + } + + /// <summary> + /// Read power monitor reading. + /// </summary> + /// <returns></returns> + public bool ReadPowerMonitorReading() + { + var bytesData = ReadData(ReadCommand.PowerMonitorReading); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.PowerMonitorReading = BitConverter.ToInt32(bytesData, 0) * 0.01f; + return true; + } + } + + /// <summary> + /// Read flow reading. + /// </summary> + /// <returns></returns> + public bool ReadFlowReading() + { + var bytesData = ReadData(ReadCommand.FlowReading); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.FlowReading = BitConverter.ToUInt16(bytesData, 0) * 0.1f; + return true; + } + } + + /// <summary> + /// Read humidity reading. + /// </summary> + /// <returns></returns> + public bool ReadHumidityReading() + { + var bytesData = ReadData(ReadCommand.HumidityReading); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.HumidityReading = BitConverter.ToUInt16(bytesData, 0); + return true; + } + } + + /// <summary> + /// Read network address + /// </summary> + /// <returns></returns> + public bool ReadNetworkAddress() + { + var bytesData = ReadData(ReadCommand.NetworkAddress); + + if (bytesData == null) + { + return false; + } + else + { + if (BitConverter.IsLittleEndian) Array.Reverse(bytesData); + + _currentPiLaserStatus.IpAddress = $"{bytesData[0]:D3}.{bytesData[1]:D3}.{bytesData[2]:D3}.{bytesData[3]:D3}"; + _currentPiLaserStatus.SubnetMask = $"{bytesData[4]:D3}.{bytesData[5]:D3}.{bytesData[6]:D3}.{bytesData[7]:D3}"; + _currentPiLaserStatus.Gateway = $"{bytesData[8]:D3}.{bytesData[9]:D3}.{bytesData[10]:D3}.{bytesData[11]:D3}"; + return true; + } + } + + //=============================== �뜲�씠�꽣 �쟾�넚 湲곕낯 �븿�닔 ========================================== + /// <summary> + /// 湲곗〈 �뜲�씠�꽣�뿉 Checksum 異붽��븯�뿬 byte諛곗뿴濡� 諛섑솚. + /// </summary> + /// <param name="data"></param> + /// <returns></returns> + private byte[] AddChecksum(byte[] data) + { + var bytesChecksum = new byte[data.Length + 2]; + + data.CopyTo(bytesChecksum, 0); + + var checksum = new byte[2]; + + int sum = 0; + + foreach(byte value in data) + { + sum = sum + value; + } + + checksum[0] = (byte)(sum / 256); + checksum[1] = (byte)(sum % 256); + + checksum.CopyTo(bytesChecksum, data.Length); + + return bytesChecksum; + } + + /// <summary> + /// 湲곗〈 �뜲�씠�꽣�뿉 Checksum 異붽��븯�뿬 string �삎�깭濡� 諛섑솚. + /// </summary> + /// <param name="data"></param> + /// <returns></returns> + private string AddChecksum(string data) + { + string strChecksum = string.Empty; + + int byteLength = data.Length / 2; + + var bytes = new byte[byteLength]; + + for(int i = 0; i < byteLength; i++) + { + bytes[i] = Convert.ToByte(data.Substring(i * 2, 2), 16); + } + + var checksum_bytes = AddChecksum(bytes); + + for(int i = 0; i < checksum_bytes.Length; i++) + { + strChecksum += $"{checksum_bytes[i]:X2}"; + } + + return strChecksum; + } + + /// <summary> + /// Read �썑 諛쏆� �뜲�씠�꽣�� 蹂대궦 �뜲�씠�꽣�쓽 Command媛� �씪移섑븯�뒗吏� �솗�씤. + /// </summary> + /// <param name="data"></param> + /// <param name="commands"></param> + /// <returns></returns> + private bool CheckCommand(byte data, Array commands) + { + foreach(var value in commands) + { + if(data == (int)value) + { + return true; + } + } + + return false; + } + + /// <summary> + /// Read�썑 諛쏆� �뜲�씠�꽣�쓽 Checksum�씠 �젙�솗�븳吏� �솗�씤. + /// </summary> + /// <param name="datas"></param> + /// <returns></returns> + private bool CheckChecksum(byte[] datas) + { + int dataSum = 0; + int checksumSum = 0; + + var bytesChecksum = new byte[4]; + bytesChecksum[0] = 0; + bytesChecksum[1] = 0; + bytesChecksum[2] = datas[datas.Length - 2]; + bytesChecksum[3] = datas[datas.Length - 1]; + + if (BitConverter.IsLittleEndian) Array.Reverse(bytesChecksum); + + checksumSum = BitConverter.ToInt32(bytesChecksum, 0); + + for(int i = 0; i < datas.Length - 2; i++) + { + dataSum += datas[i]; + } + + if(dataSum == checksumSum) + return true; + else + return false; + } + + /// <summary> + /// Laser�뿉 Read 紐낅졊�뼱瑜� 蹂대궪 �븣 �궗�슜. + /// </summary> + /// <param name="command"></param> + /// <param name="addressCode"></param> + /// <returns></returns> + private byte[] ReadData(ReadCommand command, int addressCode = -1) + { + if (!IsOpen) + { + //SicLogger.WritePiLaserLog($"================ Pi laser ({PortName}) is not opened. ==============="); + return null; + } + + lock (_lockObject) + { + try + { + while (_isLock) + { + Monitor.Wait(_lockObject); + } + + _isLock = true; + + while ((DateTime.Now - checkDate).TotalSeconds < 0.1) + { + + } + + string strReceivedData = string.Empty; + + string sendData; + + if (addressCode == -1) + sendData = $"010000{(int)command:X2}"; + else + sendData = $"0100{addressCode:X2}{(int)command:X2}"; + + sendData = AddChecksum(sendData) + "\r"; + + //SicLogger.WritePiLaserLog($"================ Read Data ==============="); + //SicLogger.WritePiLaserLog($"[Send] >>> {sendData.Replace("\r", "")}"); + + var bytesReceivedData = WriteRead(sendData); + + if (bytesReceivedData == null) + { + //SicLogger.WritePiLaserLog($"[Recv] <<< Recv is fail"); + return null; + } + else + { + strReceivedData = bytesReceivedData.Replace("\r", ""); + } + + //SicLogger.WritePiLaserLog($"[Recv] <<< {strReceivedData}"); + + var bytesReceivedFormatData = new byte[strReceivedData.Length / 2]; + + for (int i = 0; i < bytesReceivedFormatData.Length; i++) + { + bytesReceivedFormatData[i] = Convert.ToByte(strReceivedData.Substring(i * 2, 2), 16); + } + + if (!CheckCommand(bytesReceivedFormatData[3], Enum.GetValues(typeof(ReadCommand)))) + { + //SicLogger.WritePiLaserLog($"Command is not exist."); + return null; + } + + if (!CheckChecksum(bytesReceivedFormatData)) + { + //SicLogger.WritePiLaserLog($"Checksum is fail"); + return null; + } + + var bytesData = new byte[bytesReceivedFormatData[1]]; + + for (int i = 0; i < bytesReceivedFormatData[1]; i++) + { + bytesData[i] = bytesReceivedFormatData[4 + i]; + } + + return bytesData; + } + catch(Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return null; + } + finally + { + checkDate = DateTime.Now; + _isLock = false; + + Monitor.Pulse(_lockObject); + } + } + } + + /// <summary> + /// Laser�뿉 Write 紐낅졊�뼱瑜� 蹂대궪 �븣 �궗�슜. + /// </summary> + /// <param name="command"></param> + /// <param name="bytesData"></param> + /// <param name="addressCode"></param> + /// <returns></returns> + + DateTime checkDate = DateTime.Now; + private bool WriteData(WriteCommand command, byte[] bytesData = null, int addressCode = -1) + { + if (!IsOpen) + { + //SicLogger.WritePiLaserLog($"================ Pi laser ({PortName}) is not opened. ==============="); + return false; + } + + lock (_lockObject) + { + try + { + while (_isLock) + { + Monitor.Wait(_lockObject); + } + + _isLock = true; + + while ((DateTime.Now - checkDate).TotalSeconds < 0.1) + { + + } + + string write_data; + + if (bytesData == null) + { + if (addressCode == -1) + write_data = $"000000{(int)command:X2}"; + else + write_data = $"0000{addressCode:X2}{(int)command:X2}"; + } + else + { + if (addressCode == -1) + write_data = $"00{bytesData.Length:X2}00{(int)command:X2}"; + else + write_data = $"00{bytesData.Length:X2}{addressCode:X2}{(int)command:X2}"; + + foreach (byte data in bytesData) + { + write_data += $"{data:X2}"; + } + } + + write_data = AddChecksum(write_data) + "\r"; + + //SicLogger.WritePiLaserLog($"================ Write Data ==============="); + //SicLogger.WritePiLaserLog($"[Send] >>> {write_data.Replace("\r", "")}"); + Write(write_data); + return true; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + finally + { + checkDate = DateTime.Now; + _isLock = false; + Monitor.Pulse(_lockObject); + } + } + } + + /// <summary> + /// Pi laser read method �닚李⑥쟻�쑝濡� 遺덈윭�슦�뒗 �븿�닔. + /// </summary> + /// <returns></returns> + public IEnumerator PiLaserReads() + { + yield return ReadStatus(); + yield return ReadBoardFaults(); + yield return ReadSoftFaults(); + yield return ReadEnableShutter(); + yield return ReadEnableLdd(); + yield return ReadSetCurrent(); + yield return ReadActualCurrent(); + yield return ReadDiodeVoltage(); + yield return ReadMaxCurrent(); + yield return ReadLddHours(); + yield return ReadPrf(); + yield return ReadPRFSource(); + yield return ReadGateSource(); + yield return ReadPecSource(); + yield return ReadFPKEnable(); + yield return ReadFpkRampTime(); + yield return ReadFpkRampRate(); + yield return ReadLpkEnable(); + yield return ReadLpkRampTime(); + yield return ReadLpkRampRate(); + yield return ReadTemperatureSetPoint(TemperaturePointType.SHG); + yield return ReadTemperatureSetPoint(TemperaturePointType.THG); + yield return ReadTemperatureSetPoint(TemperaturePointType.LD1); + yield return ReadActualTemperature(TemperaturePointType.SHG); + yield return ReadActualTemperature(TemperaturePointType.THG); + yield return ReadActualTemperature(TemperaturePointType.LD1); + yield return ReadDutyControl(); + yield return ReadDutyControlWidth(); + yield return ReadPecLevel(); + yield return ReadBurstStatus(); + yield return ReadBurstCount(); + yield return ReadBurstRate(); + yield return ReadBurstFiringMode(); + yield return ReadBurstTriggerSource(); + yield return ReadDutyControlMode(); + yield return ReadPowerMonitorReading(); + yield return ReadFlowReading(); + yield return ReadHumidityReading(); + //yield return _piLaser.ReadNetworkAddress(); + } + #endregion + } + + /// <summary> + /// Pi laser status. + /// </summary> + public class PiLaserStatus + { + #region Define + public struct SoftFaults + { + #region Property + public bool HfSync + { + get + { + return _hfSync; + } + + set + { + _hfSync = value; + } + } + + public bool LddInterlock + { + get + { + return _lddInterlock; + } + + set + { + _lddInterlock = value; + } + } + + public bool ShutterInterlock + { + get + { + return _shutterInterlock; + } + + set + { + _shutterInterlock = value; + } + } + + public bool LowExtFrequency + { + get + { + return _lowExtFrequency; + } + + set + { + _lowExtFrequency = value; + } + } + #endregion + + #region Field + private bool _hfSync; + private bool _lddInterlock; + private bool _shutterInterlock; + private bool _lowExtFrequency; + #endregion + } + + public struct BoardFaults + { + #region Property + public bool Main + { + get + { + return _main; + } + + set + { + _main = value; + } + } + + public bool Common + { + get + { + return _common; + } + + set + { + _common = value; + } + } + + public bool Temperature + { + get + { + return _temperature; + } + + set + { + _temperature = value; + } + } + + public bool Sensor + { + get + { + return _sensor; + } + + set + { + _sensor = value; + } + } + + public bool PowerMonitor + { + get + { + return _powerMonitor; + } + + set + { + _powerMonitor = value; + } + } + + public bool Pulse + { + get + { + return _pulse; + } + + set + { + _pulse = value; + } + } + + public bool Ldd + { + get + { + return _ldd; + } + + set + { + _ldd = value; + } + } + + public bool Motor + { + get + { + return _motor; + } + + set + { + _motor = value; + } + } + #endregion + + #region Field + private bool _main; + private bool _common; + private bool _temperature; + private bool _sensor; + private bool _powerMonitor; + private bool _pulse; + private bool _ldd; + private bool _motor; + #endregion + } + + public struct SystemStatus + { + #region Property + /// <summary> + /// Power On + /// </summary> + public bool PowerOn + { + get + { + return _powerOn; + } + + set + { + _powerOn = value; + } + } + + /// <summary> + /// Shutter Enabled + /// </summary> + public bool ShutterEnabled + { + get + { + return _shutterEnabled; + } + + set + { + _shutterEnabled = value; + } + } + + /// <summary> + /// Key Switch + /// </summary> + public bool KeySwitch + { + get + { + return _keySwitch; + } + + set + { + _keySwitch = value; + } + } + + /// <summary> + /// Laser Diode Drive On + /// </summary> + public bool LddOn + { + get + { + return _lddOn; + } + + set + { + _lddOn = value; + } + } + + /// <summary> + /// Q Switch On + /// </summary> + public bool QswOn + { + get + { + return _qswOn; + } + + set + { + _qswOn = value; + } + } + + /// <summary> + /// Shutter Interlock + /// </summary> + public bool ShutterInterlock + { + get + { + return _shutterInterlock; + } + + set + { + _shutterInterlock = value; + } + } + + /// <summary> + /// Laser Diode Drive Interlock + /// </summary> + public bool LddInterlock + { + get + { + return _lddInterlock; + } + + set + { + _lddInterlock = value; + } + } + #endregion + + #region Field + private bool _powerOn; + private bool _shutterEnabled; + private bool _keySwitch; + private bool _lddOn; + private bool _qswOn; + private bool _shutterInterlock; + private bool _lddInterlock; + #endregion + } + + public struct SystemFaults + { + #region Property + public bool Memory + { + get + { + return _memory; + } + + set + { + _memory = value; + } + } + + public bool SdCard + { + get + { + return _sdCard; + } + + set + { + _sdCard = value; + } + } + + public bool BoardCommunication + { + get + { + return _boardCommunication; + } + + set + { + _boardCommunication = value; + } + } + + public bool BoardState + { + get + { + return _boardState; + } + + set + { + _boardState = value; + } + } + #endregion + + #region Field + private bool _memory; + private bool _sdCard; + private bool _boardCommunication; + private bool _boardState; + #endregion + } + + public struct GeneralAlarms + { + #region Property + public bool Ldd1 + { + get + { + return _ldd1; + } + + set + { + _ldd1 = value; + } + } + + public bool Ldd2 + { + get + { + return _ldd2; + } + + set + { + _ldd2 = value; + } + } + + public bool Qsw + { + get + { + return _qsw; + } + + set + { + _qsw = value; + } + } + + public bool Flow + { + get + { + return _flow; + } + + set + { + _flow = value; + } + } + + public bool Wet + { + get + { + return _wet; + } + + set + { + _wet = value; + } + } + + public bool Humidity + { + get + { + return _humidity; + } + + set + { + _humidity = value; + } + } + + public bool HfSync + { + get + { + return _hfSync; + } + + set + { + _hfSync = value; + } + } + #endregion + + #region Field + private bool _ldd1; + private bool _ldd2; + private bool _qsw; + private bool _flow; + private bool _wet; + private bool _humidity; + private bool _hfSync; + #endregion + } + + public struct TemperatureControlFaults + { + #region Property + public bool TemperatureControlFault0 + { + get + { + return _temperatureControlFault0; + } + + set + { + _temperatureControlFault0 = value; + } + } + + public bool TemperatureControlFault1 + { + get + { + return _temperatureControlFault1; + } + + set + { + _temperatureControlFault1 = value; + } + } + + public bool TemperatureControlFault2 + { + get + { + return _temperatureControlFault2; + } + + set + { + _temperatureControlFault2 = value; + } + } + + public bool TemperatureControlFault3 + { + get + { + return _temperatureControlFault3; + } + + set + { + _temperatureControlFault3 = value; + } + } + + public bool TemperatureControlFault4 + { + get + { + return _temperatureControlFault4; + } + + set + { + _temperatureControlFault4 = value; + } + } + + public bool TemperatureControlFault5 + { + get + { + return _temperatureControlFault5; + } + + set + { + _temperatureControlFault5 = value; + } + } + + public bool TemperatureControlFault6 + { + get + { + return _temperatureControlFault6; + } + + set + { + _temperatureControlFault6 = value; + } + } + + public bool TemperatureControlFault7 + { + get + { + return _temperatureControlFault7; + } + + set + { + _temperatureControlFault7 = value; + } + } + #endregion + + #region Field + private bool _temperatureControlFault0; + private bool _temperatureControlFault1; + private bool _temperatureControlFault2; + private bool _temperatureControlFault3; + private bool _temperatureControlFault4; + private bool _temperatureControlFault5; + private bool _temperatureControlFault6; + private bool _temperatureControlFault7; + #endregion + } + + public struct SystemState + { + #region Property + public bool SystemInitialization + { + get + { + return _systemInitialization; + } + + set + { + _systemInitialization = value; + } + } + + public bool Setup + { + get + { + return _setup; + } + + set + { + _setup = value; + } + } + + public bool Running + { + get + { + return _running; + } + + set + { + _running = value; + } + } + + public bool Standby + { + get + { + return _standby; + } + + set + { + _standby = value; + } + } + + public bool SoftFault + { + get + { + return _softFault; + } + + set + { + _softFault = value; + } + } + + public bool HardFault + { + get + { + return _hardFault; + } + + set + { + _hardFault = value; + } + } + #endregion + + #region Field + private bool _systemInitialization; + private bool _setup; + private bool _running; + private bool _standby; + private bool _softFault; + private bool _hardFault; + #endregion + } + #endregion + + #region Property + /// <summary> + /// Current soft faults. + /// </summary> + public SoftFaults CurrentSoftFaults + { + get + { + return _currentSoftFaults; + } + + private set + { + _currentSoftFaults = value; + } + } + + /// <summary> + /// Current board faults. + /// </summary> + public BoardFaults CurrentBoardFaults + { + get + { + return _currentBoardFaults; + } + + private set + { + _currentBoardFaults = value; + } + } + + /// <summary> + /// current system status. + /// </summary> + public SystemStatus CurrentSystemStatus + { + get + { + return _currentSystemStatus; + } + + private set + { + _currentSystemStatus = value; + } + } + + /// <summary> + /// curerent system faults. + /// </summary> + public SystemFaults CurrentSystemFaults + { + get + { + return _currentSystemFaults; + } + + private set + { + _currentSystemFaults = value; + } + } + + /// <summary> + /// Current general alarms. + /// </summary> + public GeneralAlarms CurrentGeneralAlarms + { + get + { + return _currentGeneralAlarms; + } + + private set + { + _currentGeneralAlarms = value; + } + } + + /// <summary> + /// Current temperature control faults. + /// </summary> + public TemperatureControlFaults CurrentTemperatureControlFaults + { + get + { + return _currentTemperatureControlFaults; + } + + private set + { + _currentTemperatureControlFaults = value; + } + } + + /// <summary> + /// Current systems state. + /// </summary> + public SystemState CurrentSystemState + { + get + { + return _currentSystemState; + } + + private set + { + _currentSystemState = value; + } + } + + /// <summary> + /// Enable shutter (true : Enable, false : Disable). + /// </summary> + public bool EnableShutter + { + get + { + return _enableShutter; + } + + set + { + _enableShutter = value; + } + } + + /// <summary> + /// Enable Laser diode driver (true : Enable, false : Disable). + /// </summary> + public bool EnableLdd + { + get + { + return _enableLdd; + } + + set + { + _enableLdd = value; + } + } + + /// <summary> + /// Set current (A). + /// </summary> + public float SetCurrent + { + get + { + return _setCurrent; + } + + set + { + _setCurrent = value; + } + } + + /// <summary> + /// Actual current (A). + /// </summary> + public float ActualCurrent + { + get + { + return _actualCurrent; + } + + set + { + _actualCurrent = value; + } + } + + /// <summary> + /// Diode voltage (V). + /// </summary> + public float DiodeVoltage + { + get + { + return _diodeVoltage; + } + + set + { + _diodeVoltage = value; + } + } + + /// <summary> + /// Max current (A). + /// </summary> + public float MaxCurrent + { + get + { + return _maxCurrent; + } + + set + { + _maxCurrent = value; + } + } + + /// <summary> + /// Laser diode driver hours (Hour). + /// </summary> + public float LddHours + { + get + { + return _lddHours; + } + + set + { + _lddHours = value; + } + } + + /// <summary> + /// Pulse Repetition Frequency (Hz). + /// </summary> + public int Prf + { + get + { + return _prf; + } + + set + { + _prf = value; + } + } + + /// <summary> + /// Pulse repetition frequency source. + /// </summary> + public SourcesType PrfSource + { + get + { + return _prfSource; + } + + set + { + _prfSource = value; + } + } + + /// <summary> + /// Gate source. + /// </summary> + public SourcesType GateSource + { + get + { + return _gateSource; + } + + set + { + _gateSource = value; + } + } + + /// <summary> + /// Pulse energy control source. + /// </summary> + public SourcesType PecSource + { + get + { + return _pecSource; + } + + set + { + _pecSource = value; + } + } + + /// <summary> + /// First pulse kill enable (true : Enable, false : Disable). + /// </summary> + public bool FpkEnable + { + get + { + return _fpkEnable; + } + + set + { + _fpkEnable = value; + } + } + + /// <summary> + /// First pulse kill Time (ns). + /// </summary> + public int FpkRampTime + { + get + { + return _fpkRampTime; + } + + set + { + _fpkRampTime = value; + } + } + + /// <summary> + /// First pulse kill Ramp Rate (ns) + /// </summary> + public int FpkRampRate + { + get + { + return _fpkRampRate; + } + + set + { + _fpkRampRate = value; + } + } + + /// <summary> + /// Lpk Enable (true : Enable, false : Disable). + /// </summary> + public bool LpkEnable + { + get + { + return _lpkEnable; + } + + set + { + _lpkEnable = value; + } + } + + /// <summary> + /// LPK Ramp Time (ns). + /// </summary> + public int LpkRampTime + { + get + { + return _lpkRampTime; + } + + set + { + _lpkRampTime = value; + } + } + + /// <summary> + /// LPK Ramp Rate (ns). + /// </summary> + public int LpkRampRate + { + get + { + return _lpkRampRate; + } + + set + { + _lpkRampRate = value; + } + } + + /// <summary> + /// Shg temperature set point (�꼦). + /// </summary> + public float ShgTemperatureSetPoint + { + get + { + return _shgTemperatureSetPoint; + } + + set + { + _shgTemperatureSetPoint = value; + } + } + + /// <summary> + /// Thg temperature set point (�꼦). + /// </summary> + public float ThgTemperatureSetPoint + { + get + { + return _thgTemperatureSetPoint; + } + + set + { + _thgTemperatureSetPoint = value; + } + } + + /// <summary> + /// Ld temperature set point (�꼦). + /// </summary> + public float LdTemperatureSetPoint + { + get + { + return _ldTemperatureSetPoint; + } + + set + { + _ldTemperatureSetPoint = value; + } + } + + + /// <summary> + /// Shg actual temperature (�꼦). + /// </summary> + public float ShgActualTemperature + { + get + { + return _shgActualTemperature; + } + + set + { + _shgActualTemperature = value; + } + } + + /// <summary> + /// Thg actual temperature (�꼦). + /// </summary> + public float ThgActualTemperature + { + get + { + return _thgActualTemperature; + } + + set + { + _thgActualTemperature = value; + } + } + + /// <summary> + /// Laser diode actual temperature (�꼦). + /// </summary> + public float LdActualTemperature + { + get + { + return _ldActualTemperature; + } + + set + { + _ldActualTemperature = value; + } + } + + /// <summary> + /// Duty control (true : Enable, false : Disable). + /// </summary> + public bool DutyControl + { + get + { + return _dutyControl; + } + + set + { + _dutyControl = value; + } + } + + /// <summary> + /// Duty control width (us). + /// </summary> + public float DutyControlWidth + { + get + { + return _dutyControlWidth; + } + + set + { + _dutyControlWidth = value; + } + } + + /// <summary> + /// Pulse energy control level (%). + /// </summary> + public float PecLevel + { + get + { + return _pecLevel; + } + + set + { + _pecLevel = value; + } + } + + /// <summary> + /// Burst status (true : Enable, false : Disable). + /// </summary> + public bool BurstStatus + { + get + { + return _burstStatus; + } + + set + { + _burstStatus = value; + } + } + + /// <summary> + /// Burst count. + /// </summary> + public ushort BurstCount + { + get + { + return _burstCount; + } + + set + { + _burstCount = value; + } + } + + /// <summary> + /// Burst rate. + /// </summary> + public ushort BurstRate + { + get + { + return _burstRate; + } + + set + { + _burstRate = value; + } + } + + /// <summary> + /// Burst cycles. + /// </summary> + public ushort BurstCycles + { + get + { + return _burstCycles; + } + + set + { + _burstCycles = value; + } + } + + /// <summary> + /// Burst firing mode. + /// </summary> + public BurstFiringModeType BurstFiringMode + { + get + { + return _burstFiringMode; + } + + set + { + _burstFiringMode = value; + } + } + + /// <summary> + /// Burst trigger source. + /// </summary> + public BurstTriggerSourceType BurstTriggerSource + { + get + { + return _burstTriggerSource; + } + + set + { + _burstTriggerSource = value; + } + } + + /// <summary> + /// Duty control mode. + /// </summary> + public DutyControlModeType DutyControlMode + { + get + { + return _dutyControlMode; + } + + set + { + _dutyControlMode = value; + } + } + + /// <summary> + /// Power monitor reading (W). + /// </summary> + public float PowerMonitorReading + { + get + { + return _powerMonitorReading; + } + + set + { + _powerMonitorReading = value; + } + } + + /// <summary> + /// Flow reading (L/min). + /// </summary> + public float FlowReading + { + get + { + return _flowReading; + } + + set + { + _flowReading = value; + } + } + + /// <summary> + /// Humidity reading (%). + /// </summary> + public ushort HumidityReading + { + get + { + return _humidityReading; + } + + set + { + _humidityReading = value; + } + } + + /// <summary> + /// Ip address. + /// </summary> + public string IpAddress + { + get + { + return _ipAddress; + } + + set + { + _ipAddress = value; + } + } + + /// <summary> + /// Subnet mask. + /// </summary> + public string SubnetMask + { + get + { + return _subnetMask; + } + + set + { + _subnetMask = value; + } + } + + /// <summary> + /// Gateway. + /// </summary> + public string Gateway + { + get + { + return _gateway; + } + + set + { + _gateway = value; + } + } + #endregion + + #region Field + private SoftFaults _currentSoftFaults; + private BoardFaults _currentBoardFaults; + private SystemStatus _currentSystemStatus; + private SystemFaults _currentSystemFaults; + private GeneralAlarms _currentGeneralAlarms; + private TemperatureControlFaults _currentTemperatureControlFaults; + private SystemState _currentSystemState; + + private bool _enableShutter; + private bool _enableLdd; + private float _setCurrent; + private float _actualCurrent; + private float _diodeVoltage; + private float _maxCurrent; + private float _lddHours; + private int _prf; + private SourcesType _prfSource; + private SourcesType _gateSource; + private SourcesType _pecSource; + private bool _fpkEnable; + private int _fpkRampTime; + private int _fpkRampRate; + private bool _lpkEnable; + private int _lpkRampTime; + private int _lpkRampRate; + private float _shgTemperatureSetPoint; + private float _thgTemperatureSetPoint; + private float _ldTemperatureSetPoint; + private float _shgActualTemperature; + private float _thgActualTemperature; + private float _ldActualTemperature; + private bool _dutyControl; + private float _dutyControlWidth; + private float _pecLevel; + private bool _burstStatus; + private ushort _burstCount; + private ushort _burstRate; + private ushort _burstCycles; + private BurstFiringModeType _burstFiringMode; + private BurstTriggerSourceType _burstTriggerSource; + private DutyControlModeType _dutyControlMode; + private float _powerMonitorReading; + private float _flowReading; + private ushort _humidityReading; + private string _ipAddress; + private string _subnetMask; + private string _gateway; + #endregion + + #region Construct + public PiLaserStatus() + { + _currentSoftFaults = new SoftFaults(); + _currentBoardFaults = new BoardFaults(); + _currentSystemStatus = new SystemStatus(); + _currentSystemFaults = new SystemFaults(); + _currentGeneralAlarms = new GeneralAlarms(); + _currentTemperatureControlFaults = new TemperatureControlFaults(); + _currentSystemState = new SystemState(); + + IpAddress = "000.000.000.000"; + SubnetMask = "000.000.000.000"; + Gateway = "000.000.000.000"; + } + #endregion + + #region Function + /// <summary> + /// Change soft fauls + /// </summary> + /// <param name="softFaults">Soft faults</param> + public void ChangeSoftFaults(byte softFaults) + { + var bit = new BitArray(new byte[] { softFaults }); + + _currentSoftFaults.HfSync = bit[0]; + _currentSoftFaults.LddInterlock = bit[1]; + _currentSoftFaults.ShutterInterlock = bit[2]; + _currentSoftFaults.LowExtFrequency = bit[3]; + } + + /// <summary> + /// Change board faults + /// </summary> + /// <param name="boardFaults">Board faulse</param> + public void ChangeBoardFaults(byte boardFaults) + { + var bit = new BitArray(new byte[] { boardFaults }); + + _currentBoardFaults.Main = bit[0]; + _currentBoardFaults.Common = bit[1]; + _currentBoardFaults.Temperature = bit[2]; + _currentBoardFaults.Sensor = bit[3]; + _currentBoardFaults.PowerMonitor = bit[4]; + _currentBoardFaults.Pulse = bit[5]; + _currentBoardFaults.Ldd = bit[6]; + _currentBoardFaults.Motor = bit[7]; + } + + /// <summary> + /// Change system status. + /// </summary> + /// <param name="systemStatus">System status</param> + public void ChangeSystemStatus(byte systemStatus) + { + var bit = new BitArray(new byte[] { systemStatus }); + + _currentSystemStatus.PowerOn = bit[0]; + _currentSystemStatus.ShutterEnabled= bit[1]; + _currentSystemStatus.KeySwitch = bit[2]; + _currentSystemStatus.LddOn = bit[3]; + _currentSystemStatus.QswOn = bit[4]; + _currentSystemStatus.ShutterInterlock = bit[5]; + _currentSystemStatus.LddInterlock = bit[6]; + } + + /// <summary> + /// Change system faults + /// </summary> + /// <param name="systemFaults">System faults</param> + public void ChangeSystemFaults(byte systemFaults) + { + var bit = new BitArray(new byte[] { systemFaults }); + + _currentSystemFaults.Memory = bit[0]; + _currentSystemFaults.SdCard = bit[1]; + _currentSystemFaults.BoardCommunication = bit[2]; + _currentSystemFaults.BoardState = bit[3]; + } + + /// <summary> + /// Change general alrams + /// </summary> + /// <param name="generalAlarms">General alarms</param> + public void ChangeGeneralAlarms(byte generalAlarms) + { + var bit = new BitArray(new byte[] { generalAlarms }); + + _currentGeneralAlarms.Ldd1 = bit[0]; + _currentGeneralAlarms.Ldd2 = bit[1]; + _currentGeneralAlarms.Qsw = bit[2]; + _currentGeneralAlarms.Flow = bit[3]; + _currentGeneralAlarms.Wet = bit[4]; + _currentGeneralAlarms.Humidity = bit[5]; + _currentGeneralAlarms.HfSync = bit[6]; + } + + /// <summary> + /// Change temperature control faults + /// </summary> + /// <param name="temperatureControlFaults">Temperature control faults</param> + public void ChangeTemperatureControlFaults(byte temperatureControlFaults) + { + var bit = new BitArray(new byte[] { temperatureControlFaults }); + + _currentTemperatureControlFaults.TemperatureControlFault0 = bit[0]; + _currentTemperatureControlFaults.TemperatureControlFault1 = bit[1]; + _currentTemperatureControlFaults.TemperatureControlFault2 = bit[2]; + _currentTemperatureControlFaults.TemperatureControlFault3 = bit[3]; + _currentTemperatureControlFaults.TemperatureControlFault4 = bit[4]; + _currentTemperatureControlFaults.TemperatureControlFault5 = bit[5]; + _currentTemperatureControlFaults.TemperatureControlFault6 = bit[6]; + _currentTemperatureControlFaults.TemperatureControlFault7 = bit[7]; + } + + /// <summary> + /// Change system state + /// </summary> + /// <param name="systemState">System state</param> + public void ChangeSystemState(byte systemState) + { + var bit = new BitArray(new byte[] { systemState }); + + _currentSystemState.SystemInitialization = bit[0]; + _currentSystemState.Setup = bit[1]; + _currentSystemState.Running = bit[2]; + _currentSystemState.Standby = bit[3]; + _currentSystemState.SoftFault = bit[4]; + _currentSystemState.HardFault = bit[5]; + } + #endregion + } +} diff --git a/SA_LTT_UI/SA_LTT/Module/PowerMeter.cs b/SA_LTT_UI/SA_LTT/Module/PowerMeter.cs new file mode 100644 index 0000000..be32359 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/PowerMeter.cs @@ -0,0 +1,468 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace SA_LTT.Module +{ + public delegate void EnergyMeasuredEvent(double energy); + + public class PowerMeter : ComPort + { + public enum MeasurementMode + { + QueryPresentMeasurementMode, + Passive, + Power, + Energy, + Exposure, + PowerWithPosition, + ReservedForFutureUse, + LuxForPD300_CIESensors, + DosageForPD300_RMSensors, + HoldModeForBC20Sensors, + ContinuousForBC20Sensors, + ReservedForFutureUse2, + PowerFromPulse, + } + + private Equipment _equipment; + private Thread t_statusUpdate; + private bool _enable; + private string _ErrorDescription; + private bool _flag; + private double _energy; + private double _energyPerUnitArea; + private MeasurementMode _currentMeasurementMode; + private List<double> _measurementsEnergy; + private List<double> _measurementsEnergyPerUnitArea; + + private DateTime _measurementChangedTime = DateTime.Now; + private double _measurementChangedWaitTime = 3; + public event EnergyMeasuredEvent EnergyMeasured; + + + public string ErrorDescription + { + get + { + return _ErrorDescription; + } + + private set + { + _ErrorDescription = value; + } + } + + public bool Flag + { + get + { + return _flag; + } + + private set + { + _flag = value; + } + } + + public MeasurementMode CurrentMeasurementMode + { + get + { + return _currentMeasurementMode; + } + + private set + { + _currentMeasurementMode = value; + } + } + + public double Energy + { + get + { + return _energy; + } + + private set + { + _energy = value; + } + } + + public double MeasurementAverageEnergy + { + get + { + double energy = 0; + + if (MeasurementsEnergy.Count > 0) + { + energy = MeasurementsEnergy.Average(); + energy = double.Parse($"{energy:F7}"); + } + + return energy; + } + } + + public double MeasurementMaxEnergy + { + get + { + double energy = 0; + + if (MeasurementsEnergy.Count > 0) + { + energy = MeasurementsEnergy.Max(); + energy = double.Parse($"{energy:F7}"); + } + + return energy; + } + } + + public double MeasurementMinEnergy + { + get + { + double energy = 0; + + if (MeasurementsEnergy.Count > 0) + { + energy = MeasurementsEnergy.Min(); + energy = double.Parse($"{energy:F7}"); + } + + return energy; + } + } + + public List<double> MeasurementsEnergy + { + get + { + return _measurementsEnergy; + } + + private set + { + _measurementsEnergy = value; + } + } + + public double EnergyPerUnitArea + { + get + { + return _energyPerUnitArea; + } + + set + { + _energyPerUnitArea = value; + } + } + + public double MeasurementAverageEnergyPerUnitArea + { + get + { + double energy = 0; + + if (MeasurementsEnergyPerUnitArea.Count > 0) + { + energy = MeasurementsEnergyPerUnitArea.Average(); + energy = double.Parse($"{energy:F4}"); + } + + return energy; + } + } + + public double MeasurementMaxEnergyPerUnitArea + { + get + { + double energy = 0; + + if (MeasurementsEnergyPerUnitArea.Count > 0) + { + energy = MeasurementsEnergyPerUnitArea.Max(); + energy = double.Parse($"{energy:F4}"); + } + + return energy; + } + } + + public double MeasurementMinEnergyPerUnitArea + { + get + { + double energy = 0; + + if (MeasurementsEnergyPerUnitArea.Count > 0) + { + energy = MeasurementsEnergyPerUnitArea.Min(); + energy = double.Parse($"{energy:F4}"); + } + + return energy; + } + } + + public List<double> MeasurementsEnergyPerUnitArea + { + get + { + return _measurementsEnergyPerUnitArea; + } + + set + { + _measurementsEnergyPerUnitArea = value; + } + } + + public bool Enable + { + get + { + return _enable; + } + + private set + { + _enable = value; + } + } + + public PowerMeter(Equipment equipment) + { + serialPort.PortName = "COM3"; + serialPort.BaudRate = 115200; + serialPort.Parity = System.IO.Ports.Parity.None; + serialPort.DataBits = 8; + serialPort.StopBits = System.IO.Ports.StopBits.One; + serialPort.ReadTimeout = 1000; + Terminator = "\r\n"; + + _equipment = equipment; + + MeasurementsEnergy = new List<double>(); + MeasurementsEnergyPerUnitArea = new List<double>(); + + t_statusUpdate = new Thread(statusUpdate); + t_statusUpdate.Start(); + } + + public void statusUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + Thread.Sleep(100); + + if (IsOpen) + { + if ((DateTime.Now - _measurementChangedTime).TotalSeconds < _measurementChangedWaitTime) + { + Enable = false; + continue; + } + else + { + Enable = true; + } + + + GetMeasurementMode(); + + if (CurrentMeasurementMode == MeasurementMode.Energy) + { + if(_equipment.chamber.IsPowerMeterPosition) + { + ReadEnergy(); + } + } + } + else + { + if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0059_POWERMETER_DISCONNECTED)) + { + Close(); + } + else + { + if (Open() == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0059_POWERMETER_DISCONNECTED); + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + public double ReadEnergy() + { + try + { + double energy = 0; + + string flag = WriteRead("EF"); + + if (flag.Contains("1")) + { + Flag = true; + string energyData = WriteRead("SE"); + + if(double.TryParse(energyData, out energy)) + { + Energy = energy; + EnergyPerUnitArea = Energy / (_equipment.settingParameterManager.SettingParameter.BeamHeight * _equipment.settingParameterManager.SettingParameter.BeamWidth); + + Energy = double.Parse($"{Energy:F7}"); + EnergyPerUnitArea = double.Parse($"{EnergyPerUnitArea * 100:F4}"); + + EquipmentLogManager.Instance.WriteEnergyMeterLog($"{energy}"); + if (MeasurementsEnergy.Count >= int.MaxValue - 1000) + { + ResetMeasurementsEnergy(); + } + + MeasurementsEnergy.Add(Energy); + MeasurementsEnergyPerUnitArea.Add(EnergyPerUnitArea); + + EnergyMeasured?.Invoke(EnergyPerUnitArea); + + ErrorDescription = string.Empty; + } + else + { + Close(); + Energy = energy; + ErrorDescription = energyData; + } + } + else + { + Flag = false; + Energy = 0; + EnergyPerUnitArea = 0; + } + + return energy; + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + return 0; + } + } + + public bool SetPowerMode() + { + if ((DateTime.Now - _measurementChangedTime).TotalSeconds < _measurementChangedWaitTime) + { + return false; + } + + string result = WriteRead($"MM{MeasurementMode.Power:d}"); + + if (result.Contains("2")) + { + _currentMeasurementMode = MeasurementMode.Power; + Enable = false; + _measurementChangedTime = DateTime.Now; + return true; + } + else + { + return false; + } + } + + public bool SetEnergyMode() + { + if ((DateTime.Now - _measurementChangedTime).TotalSeconds < _measurementChangedWaitTime) + { + return false; + } + + string result = WriteRead($"MM{MeasurementMode.Energy:d}"); + + if(result.Contains("3")) + { + _currentMeasurementMode = MeasurementMode.Energy; + Enable = false; + _measurementChangedTime = DateTime.Now; + return true; + } + else + { + return false; + } + } + + public MeasurementMode GetMeasurementMode() + { + MeasurementMode measurementMode = MeasurementMode.QueryPresentMeasurementMode; + + string mode = WriteRead("MM"); + + int modeNumber; + + if(int.TryParse(mode, out modeNumber)) + { + measurementMode = (MeasurementMode)modeNumber; + + if(measurementMode != MeasurementMode.Energy) + { + SetEnergyMode(); + } + } + + CurrentMeasurementMode = measurementMode; + + return measurementMode; + } + + public void ResetMeasurementsEnergy() + { + MeasurementsEnergy.Clear(); + MeasurementsEnergyPerUnitArea.Clear(); + } + + public bool ResetEnergyMeter() + { + return SetPowerMode(); + } + + private new string WriteRead(string command) + { + string data = base.WriteRead("$" + command + "\r"); + + if(data == "") + { + return null; + } + else + { + return data.Replace("\r\n", "").Replace("*",""); + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Module/PowerPmacCtrl.cs b/SA_LTT_UI/SA_LTT/Module/PowerPmacCtrl.cs new file mode 100644 index 0000000..c3551d4 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/PowerPmacCtrl.cs @@ -0,0 +1,1497 @@ +癤퓎sing System; +using System.Text; +using System.Threading; +using System.IO; +using System.Runtime.InteropServices; +using System.Collections.Generic; +using System.Xml.Serialization; + + +namespace SA_LTT.Module +{ + public enum DTK_MODE_TYPE + { + DM_GPASCII = 0, + DM_GETSENDS_0 = 1, + DM_GETSENDS_1 = 2, + DM_GETSENDS_2 = 3, + DM_GETSENDS_3 = 4, + DM_GETSENDS_4 = 5, + DM_SECURE_SHELL = 10 + }; + + public enum DTK_STATUS + { + DS_Ok = 0, + DS_Exception = 1, + DS_TimeOut = 2, + DS_Connected = 3, + DS_NotConnected = 4, + DS_Failed = 5, + DS_GetSendMode = 6, + DS_InvalidDevice = 11, + DS_InvalidCommand = 12, + DS_InvalidResponse = 13, + DS_DataRemains = 21, + DS_CmdLengthExceeds = 23, + DS_ResLengthExceeds = 24, + DS_RunningDownload = 41, + DS_RunningRead = 42, + DS_DATimeOut = 102, + DS_DANotConnected = 104, + DS_DAFailed = 105, + }; + + public enum DTK_RESET_TYPE + { + DR_Reset = 0, + DR_FullReset = 1 + }; + + public enum DTK_DOWNLOAD_TYPE + { + DT_Progress = 0, + DT_StringA = 1, + DT_StringW = 2 + }; + + public enum DTK_DOWNLOAD_MODE + { + DM_File_Download = 0, + DM_File_DownExec = 1, + DM_File_DownExecDel = 2, + DM_File_DirectBuffer = 6, + DM_File_DownAuto = 11 + }; + + public enum MotionDirection + { + Plus, + Minus, + Stop + } + + public enum SimulCommand + { + //異⑸룎諛⑹� Alarm + STOP, + JOGP, + JOGN, + ABS, + REL, + + enMax, + } + + public enum AxisType + { + SERVO = 0, + STEPPING, + LINEAR, + } + + public enum AxisStatus + { + TriggerMove, + HomeInProgress, + NLimit_HW, + PLimit_HW, + FeWarn, //Alarm + FeFatal, //Alarm + LimitStop, //Alarm + AmpFault, + NLimit_SW, + PLimit_SW, + I2TFault, //Alarm + TriggerNotFound, + AmpWarn, + EncLoss, //Alarm + Bit_14, + Bit_15, + HomeComplete, + DesVelZero, + ClosedRoop, + InPos, + ServoOn, + Bit_21, + BlockRequest, + PhaseFound, + TriggerSpeedSel, + GantryHomed, + SpindleMotor2, + SpindleMotor1, + Bit_28, + Bit_29, + Bit_30, + Bit_31, + + enMax, + } + + public enum PmacAxis + { + Y_Axis, + X_Axis, + T_Axis, + + + enMax, + } + + public enum EnTeachData + { + LoadPosX = 0, + CenterPosX, + BeamProfileX, + PowerMeterX, + AlignX, + TestX, + enMaxX, + + LoadPosY = 0, + CenterPosY, + BeamProfileY, + PowerMeterY, + AlignY, + TestY, + enMaxY, + + LoadPosT = 0, + CenterPosT, + BeamProfileT, + PowerMeterT, + AlignT, + TestT, + enMaxT, + } + + public struct COPYDATASTRUCT + { + public IntPtr dwData; + public UInt32 cbData; + [MarshalAs(UnmanagedType.LPStr)] + public string lpData; + } + + public class PowerPmacCtrl + { + const string dllName = "PowerPmac32.dll"; // 32Bit �뵆�옯�뤌�씪 �븣 �솢�꽦�솕 + //const string dllName = "PowerPmac64.dll"; // 64Bit �뵆�옯�뤌�씪 �븣 �솢�꽦�솕 + + public delegate void PDOWNLOAD_PROGRESS(Int32 nPercent); + public delegate void PDOWNLOAD_MESSAGE_A(String lpMessage); + public delegate void PRECEIVE_PROC_A(String lpReveive); + + public const UInt32 WM_MESSAGE_DOWNLOAD = 0x1216; + public const UInt32 WM_MESSAGE_RECEIVE = 0x1217; + + private string _ip; + private UInt32 _ipAddress; + + private uint _deviceID = 9999; + private bool m_bConnected = false; + + private static object _objLock = new object(); + + Equipment _equipment; + + #region �삤�뵂 �씪�씠釉뚮윭由� + // �씤�옄瑜� NULL濡� �븷 寃쎌슦 DTKDeviceSelect �븿�닔瑜� �궗�슜�븯�뿬 �옣移섎�� �뿰寃고빐�빞 �븳�떎. + [DllImport(dllName)] + public static extern UInt32 DTKPowerPmacOpen(UInt32 dwIPAddress, UInt32 uMode); + + // �씪�씠釉뚮━由� �겢濡쒖쫰 + [DllImport(dllName)] + public static extern UInt32 DTKPowerPmacClose(UInt32 uDeviceID); + + // �벑濡앸맂 �뵒諛붿씠�뒪 媛��닔 + [DllImport(dllName)] + public static extern UInt32 DTKGetDeviceCount(out Int32 pnDeviceCount); + + // IP Address �솗�씤 + [DllImport(dllName)] + public static extern UInt32 DTKGetIPAddress(UInt32 uDeviceID, out UInt32 pdwIPAddress); + + // �옣移섎�� �뿰寃� + [DllImport(dllName)] + public static extern UInt32 DTKConnect(UInt32 uDeviceID); + + // �옣移섎�� �빐�젣 + [DllImport(dllName)] + public static extern UInt32 DTKDisconnect(UInt32 uDeviceID); + + // �옣移섍� �뿰寃곕릺�뿀�뒗吏� �솗�씤 + [DllImport(dllName)] + public static extern UInt32 DTKIsConnected(UInt32 uDeviceID, out Int32 pbConnected); + + // Echo Mode �꽕�젙 + [DllImport(dllName)] + public static extern UInt32 DTKSetEchoMode(UInt32 uDeviceID, UInt32 uEchoMode); + + // Echo Mode �솗�씤 + [DllImport(dllName)] + public static extern UInt32 DTKGetEchoMode(UInt32 uDeviceID, out UInt32 puEchoMode); + + [DllImport(dllName)] + public static extern UInt32 DTKGetResponseA(UInt32 uDeviceID, Byte[] lpCommand, Byte[] lpResponse, Int32 nLength); + + [DllImport(dllName)] + public static extern UInt32 DTKSendCommandA(UInt32 uDeviceID, Byte[] lpCommand); + + [DllImport(dllName)] + public static extern UInt32 DTKAbort(UInt32 uDeviceID); + [DllImport(dllName)] + public static extern UInt32 DTKDownloadA(UInt32 uDeviceID, Byte[] lpDownload, UInt32 uDowoload, IntPtr hDownloadWnd, PDOWNLOAD_PROGRESS lpDownloadProgress, PDOWNLOAD_MESSAGE_A lpDownloadMessage); + + [DllImport(dllName)] + public static extern UInt32 DTKSetReceiveA(UInt32 uDeviceID, IntPtr hReceiveWnd, PRECEIVE_PROC_A lpReveiveProc); + + // �븘�옒�쓽 �븿�닔援곗� CPU �넻�떊�뀑�뾽�썑 �궗�슜 媛��뒫 + [DllImport(dllName)] + public static extern UInt32 DTKGetUserMem(UInt32 uDeviceID, UInt32 uAddress, Int32 nSize, SByte[] pValue); + + [DllImport(dllName)] + public static extern UInt32 DTKSetUserMem(UInt32 uDeviceID, UInt32 uAddress, Int32 nSize, SByte[] pValue); + + [DllImport(dllName)] + public static extern UInt32 DTKGetUserMemChar(UInt32 uDeviceID, Int32 nIndex, out Byte pchValue); + + [DllImport(dllName)] + public static extern UInt32 DTKSetUserMemChar(UInt32 uDeviceID, Int32 nIndex, Byte chValue); + + [DllImport(dllName)] + public static extern UInt32 DTKGetUserMemShort(UInt32 uDeviceID, Int32 nIndex, out short pnValue); + + [DllImport(dllName)] + public static extern UInt32 DTKSetUserMemShort(UInt32 uDeviceID, Int32 nIndex, short nValue); + + [DllImport(dllName)] + public static extern UInt32 DTKGetUserMemInteger(UInt32 uDeviceID, Int32 nIndex, out Int32 pnValue); + + [DllImport(dllName)] + public static extern UInt32 DTKSetUserMemInteger(UInt32 uDeviceID, Int32 nIndex, Int32 nValue); + + [DllImport(dllName)] + public static extern UInt32 DTKGetUserMemUInteger(UInt32 uDeviceID, Int32 nIndex, out UInt32 puValue); + + [DllImport(dllName)] + public static extern UInt32 DTKSetUserMemUInteger(UInt32 uDeviceID, Int32 nIndex, UInt32 uValue); + + [DllImport(dllName)] + public static extern UInt32 DTKGetUserMemFloat(UInt32 uDeviceID, Int32 nIndex, out float pfVlaue); + + [DllImport(dllName)] + public static extern UInt32 DTKSetUserMemFloat(UInt32 uDeviceID, Int32 nIndex, float fValue); + + [DllImport(dllName)] + public static extern UInt32 DTKGetUserMemDouble(UInt32 uDeviceID, Int32 nIndex, out Double pdValue); + + [DllImport(dllName)] + public static extern UInt32 DTKSetUserMemDouble(UInt32 uDeviceID, Int32 nIndex, Double dValue); + #endregion + + public PowerPmacCtrl(Equipment equipment) + { + _equipment = equipment; + //異뺤젙蹂� Load + LoadMotorData(); + + ThreadInit(); + ThreadStart(); + } + + Thread PmacThread; + Thread SimulationThread; + private void ThreadInit() + { + PmacThread = new Thread(DataUpdate); + //SimulationThread = new Thread(Simulation_Th); + } + + private void ThreadStart() + { + //if (!_parentForm.m_bSimulationMode) + PmacThread.Start(); + //else + // SimulationThread.Start(); + } + + private int GetDeviceID(string ip, DTK_MODE_TYPE type) + { + try + { + _ip = ip; + string[] strIP = _ip.Split('.'); + + _ipAddress = (Convert.ToUInt32(strIP[0]) << 24) | (Convert.ToUInt32(strIP[1]) << 16) | (Convert.ToUInt32(strIP[2]) << 8) | Convert.ToUInt32(strIP[3]); + uint deviceID = DTKPowerPmacOpen(_ipAddress, (uint)type); + + return (int)deviceID; + } + catch(Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return -1; + } + } + + private bool Connect(string ip, DTK_MODE_TYPE type = DTK_MODE_TYPE.DM_GPASCII) + { + if (IsOpen()) + return true; + + int deviceID = GetDeviceID(ip, type); + + if(deviceID == -1) + { + return false; + } + + uint result = PowerPmacCtrl.DTKConnect((uint)deviceID); + + if((DTK_STATUS)result == DTK_STATUS.DS_Ok) + { + //�꽦怨� + _deviceID = (uint)deviceID; + m_bConnected = true; + return true; + } + else + { + if((DTK_STATUS)result == DTK_STATUS.DS_Connected) + { + //�씠誘� �뿰寃곕릺�뼱 �엳�쓬 + } + else if ((DTK_STATUS)result == DTK_STATUS.DS_Failed) + { + //�뿰寃� �떎�뙣 + m_bConnected = false; + } + else if ((DTK_STATUS)result == DTK_STATUS.DS_InvalidDevice) + { + //�쑀�슚�븯吏� �븡�� �옣移� 踰덊샇 + m_bConnected = false; + } + + PowerPmacCtrl.DTKPowerPmacClose((uint)deviceID); + return false; + } + } + + public bool DisConnect() + { + if(_deviceID == 9999) + { + return false; + } + + uint result = PowerPmacCtrl.DTKDisconnect(_deviceID); + + m_bConnected = false; + if ((DTK_STATUS)result == DTK_STATUS.DS_Ok) + { + //�꽦怨� + DTKPowerPmacClose(_deviceID); + + return true; + } + else + { + if ((DTK_STATUS)result == DTK_STATUS.DS_Failed) + { + //�뿰寃� 醫낅즺 �떎�뙣 + } + else if ((DTK_STATUS)result == DTK_STATUS.DS_InvalidDevice) + { + //�쑀�슚�븯吏� �븡�� �옣移� 踰덊샇 + } + + return false; + } + } + + public bool Open() + { + return Connect("192.168.0.200"); + } + + public bool IsOpen() + { + return m_bConnected; + } + + public bool PMACSendData(string Command, ref string sResponse) + { + bool bResult = false; + + try + { + Monitor.Enter(_objLock); + + if (IsOpen() == false) + { + return false; + } + + byte[] commandBytes = Encoding.ASCII.GetBytes(Command); + byte[] receivedBytes = new byte[1024]; + uint result = PowerPmacCtrl.DTKGetResponseA(_deviceID, commandBytes, receivedBytes, receivedBytes.GetLength(0)); + + if ((DTK_STATUS)result == DTK_STATUS.DS_Ok) + { + sResponse = Encoding.Default.GetString(receivedBytes).TrimEnd('\0'); + bResult = true; + } + else + { + if ((DTK_STATUS)result == DTK_STATUS.DS_NotConnected) + { + //�넻�떊紐⑤뱶媛� GetSend �긽�깭�엫 + _equipment.alarmManager.Occur(AlarmCode.AL_0300_POWER_PMAC_NOT_CONNECTED); + } + else if ((DTK_STATUS)result == DTK_STATUS.DS_InvalidDevice) + { + //�쑀�슚�븯吏� �븡�� �옣移� 踰덊샇 + _equipment.alarmManager.Occur(AlarmCode.AL_0301_POWER_PMAC_INVALID_DEVICE); + } + else if ((DTK_STATUS)result == DTK_STATUS.DS_InvalidCommand) + { + //�쑀�슚�븯吏� �븡�� 紐낅졊�뼱 (NULL) + _equipment.alarmManager.Occur(AlarmCode.AL_0302_POWER_PMAC_INVALID_COMMAND); + } + else if ((DTK_STATUS)result == DTK_STATUS.DS_InvalidResponse) + { + //�쑀�슚�븯吏� �븡�� �쓳�떟 踰꾪띁(NULL) + _equipment.alarmManager.Occur(AlarmCode.AL_0303_POWER_PMAC_INVALID_RESPONSE); + } + else if ((DTK_STATUS)result == DTK_STATUS.DS_DataRemains) + { + //�닔�떊 踰꾪띁�뿉 �뜲�씠�꽣媛� �궓�븘 �엳�쓬 + _equipment.alarmManager.Occur(AlarmCode.AL_0304_POWER_PMAC_DATA_REAMINS); + } + else if ((DTK_STATUS)result == DTK_STATUS.DS_CmdLengthExceeds) + { + //紐낅졊�뼱 �뜲�씠�꽣 湲몄씠 珥덇낵 + _equipment.alarmManager.Occur(AlarmCode.AL_0305_POWER_PMAC_CMD_LENGTH_EXCEEDS); + } + else if ((DTK_STATUS)result == DTK_STATUS.DS_ResLengthExceeds) + { + //�쓳�떟 �뜲�씠�꽣 湲몄씠 珥덇낵 + _equipment.alarmManager.Occur(AlarmCode.AL_0306_POWER_PMAC_RES_LENGTH_EXCEEDS); + } + else if ((DTK_STATUS)result == DTK_STATUS.DS_RunningDownload) + { + //�떎�슫濡쒕뱶 以� + _equipment.alarmManager.Occur(AlarmCode.AL_0307_POWER_PMAC_RUNNING_DOWNLOAD); + } + else if (result >= 1000) + { + //�넻�떊 �삤瑜� (湲곗닠 吏��썝 �슂泥�) + _equipment.alarmManager.Occur(AlarmCode.AL_0308_POWER_PMAC_ERROR); + } + + sResponse = string.Empty; + bResult = false; + } + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + finally + { + Monitor.Exit(_objLock); + } + + return bResult; + } + + private double[] m_dAxisActualPos = new double[(int)PmacAxis.enMax]; + private double[] m_dAxisHomePos = new double[(int)PmacAxis.enMax]; + private double[] m_dAxisActualVel = new double[(int)PmacAxis.enMax]; + private bool[,] m_bAxisStatus = new bool[(int)PmacAxis.enMax, (int)AxisStatus.enMax]; + private int[] m_nUmacAddress = new int[(int)PmacAxis.enMax]; + private int[] m_nAxisPMacNo = new int[(int)PmacAxis.enMax]; + private int[] m_nAxisEnumNo = new int[(int)PmacAxis.enMax]; + private int[] m_nIValueAxisNo = new int[(int)PmacAxis.enMax]; + private double[] m_dScaleFactor = new double[(int)PmacAxis.enMax]; + private int[] m_nAxisTimeOut = new int[(int)PmacAxis.enMax]; + private int[] m_nAxisHommingTimeOut = new int[(int)PmacAxis.enMax]; + private double[] m_dAxisHommingSpeed = new double[(int)PmacAxis.enMax]; + private string[] m_strAxisName = new string[(int)PmacAxis.enMax]; + private double[] m_dAxisSWPlusLimit = new double[(int)PmacAxis.enMax]; + private double[] m_dAxisSWMinusLimit = new double[(int)PmacAxis.enMax]; + private double[] m_dTargetPos = new double[(int)PmacAxis.enMax]; + private double[] m_dTargetSpeed = new double[(int)PmacAxis.enMax]; + private double[] m_dTeachPosX = new double[(int)EnTeachData.enMaxX]; + private double[] m_dTeachPosY = new double[(int)EnTeachData.enMaxY]; + private double[] m_dTeachPosT = new double[(int)EnTeachData.enMaxT]; + private double[] m_dTeachVelX = new double[(int)EnTeachData.enMaxX]; + private double[] m_dTeachVelY = new double[(int)EnTeachData.enMaxY]; + private double[] m_dTeachVelT = new double[(int)EnTeachData.enMaxT]; + private double[] m_dTeachAccX = new double[(int)EnTeachData.enMaxX]; + private double[] m_dTeachAccY = new double[(int)EnTeachData.enMaxY]; + private double[] m_dTeachAccT = new double[(int)EnTeachData.enMaxT]; + + public void SetAxisHomePos(PmacAxis axis, double dPos) + { + m_dAxisHomePos[(int)axis] = dPos; + } + + public double GetAxisHomePos(PmacAxis axis) + { + return m_dAxisHomePos[(int)axis]; + } + + + public void SetAxisActualPos(PmacAxis axis, double dPos) + { + m_dAxisActualPos[(int)axis] = dPos; + } + + public double GetAxisActualPos(PmacAxis axis) + { + return m_dAxisActualPos[(int)axis]; + } + + + public void SetAxisActualSpeed(PmacAxis axis, double dVel) + { + m_dAxisActualVel[(int)axis] = dVel; + } + + public double GetAxisActualSpeed(PmacAxis axis) + { + return m_dAxisActualVel[(int)axis]; + } + + + public void SetAxisStatus(PmacAxis axis, AxisStatus statusName, bool bstatusValue) + { + m_bAxisStatus[(int)axis, (int)statusName] = bstatusValue; + } + + public bool GetAxisStatus(PmacAxis axis, AxisStatus statusName) + { + return m_bAxisStatus[(int)axis, (int)statusName]; + } + + public double GetAxisTargetPos(PmacAxis axis) + { + return m_dTargetPos[(int)axis]; + } + + public double GetAxisTargetSpeed(PmacAxis axis) + { + return m_dTargetSpeed[(int)axis]; + } + + public double GetMotorScaleFactor(PmacAxis axis) + { + return m_dScaleFactor[(int)axis]; + } + + private void SetAxisName(PmacAxis axis, string strName) + { + m_strAxisName[(int)axis] = strName; + } + public string GetAxisName(PmacAxis axis) + { + return m_strAxisName[(int)axis]; + } + + private void SetAxisPMacNum(PmacAxis axis, int axisNo) + { + m_nAxisPMacNo[(int)axis] = axisNo; + } + public int GetAxisPMacNum(PmacAxis axis) + { + return m_nAxisPMacNo[(int)axis]; + } + + private void SetAxisEnumNum(PmacAxis axis, int axisNo) + { + m_nAxisEnumNo[(int)axis] = axisNo; + } + public int GetAxisEnumNum(PmacAxis axis) + { + return m_nAxisEnumNo[(int)axis]; + } + + //private void SetIValueAxisNum(int axis, int axisNo) + //{ + // m_nIValueAxisNo[axis] = axisNo; + //} + //public int GetIValueAxisNum(UmacAxis axis) + //{ + // return m_nIValueAxisNo[(int)axis]; + //} + private void SetMotorScaleFactor(PmacAxis axis, double dValue) + { + m_dScaleFactor[(int)axis] = dValue; + } + + public int GetAxisTimeOutSecond(PmacAxis axis) + { + return m_nAxisTimeOut[(int)axis]; + } + private void SetAxisTimeOutSecond(PmacAxis axis, int nMillisecond) + { + m_nAxisTimeOut[(int)axis] = nMillisecond; + } + + public int GetAxisHommingTimeOutSecond(PmacAxis axis) + { + return m_nAxisHommingTimeOut[(int)axis]; + } + private void SetAxisHommingTimeOutSecond(PmacAxis axis, int nMillisecond) + { + m_nAxisHommingTimeOut[(int)axis] = nMillisecond; + } + + public double GetAxisHommingSpeed(PmacAxis axis) + { + return m_dAxisHommingSpeed[(int)axis]; + } + private void SetAxisHommingSpeed(PmacAxis axis, double dSpeed) + { + m_dAxisHommingSpeed[(int)axis] = dSpeed; + } + + + public double GetAxisSWPlusLimit(PmacAxis axis) + { + return m_dAxisSWPlusLimit[(int)axis]; + } + + private void SetAxisSWPlusLimit(PmacAxis axis, double dMaxPos) + { + m_dAxisSWPlusLimit[(int)axis] = dMaxPos; + } + + public double GetAxisSWMinusLimit(PmacAxis axis) + { + return m_dAxisSWMinusLimit[(int)axis]; + } + + private void SetAxisSWMinusLimit(PmacAxis axis, double dMinPos) + { + m_dAxisSWMinusLimit[(int)axis] = dMinPos; + } + + public double[] GetAxisTeachData(PmacAxis axis, EnTeachData teach) + { + double[] dTeach = new double[3]; + + switch(axis) + { + case PmacAxis.X_Axis: + dTeach[0] = m_dTeachPosX[(int)teach]; + dTeach[1] = m_dTeachVelX[(int)teach]; + dTeach[2] = m_dTeachAccX[(int)teach]; + break; + + case PmacAxis.Y_Axis: + dTeach[0] = m_dTeachPosY[(int)teach]; + dTeach[1] = m_dTeachVelY[(int)teach]; + dTeach[2] = m_dTeachAccY[(int)teach]; + break; + + case PmacAxis.T_Axis: + dTeach[0] = m_dTeachPosT[(int)teach]; + dTeach[1] = m_dTeachVelT[(int)teach]; + dTeach[2] = m_dTeachAccT[(int)teach]; + break; + + default: + break; + + } + return dTeach; + } + + private void SetAxisTeachData(PmacAxis axis, EnTeachData teach, double[] dData) + { + switch (axis) + { + case PmacAxis.X_Axis: + m_dTeachPosX[(int)teach] = dData[0]; + m_dTeachVelX[(int)teach] = dData[1]; + m_dTeachAccX[(int)teach] = dData[2]; + break; + + case PmacAxis.Y_Axis: + m_dTeachPosY[(int)teach] = dData[0]; + m_dTeachVelY[(int)teach] = dData[1]; + m_dTeachAccY[(int)teach] = dData[2]; + break; + + case PmacAxis.T_Axis: + m_dTeachPosT[(int)teach] = dData[0]; + m_dTeachVelT[(int)teach] = dData[1]; + m_dTeachAccT[(int)teach] = dData[2]; + break; + + default: + break; + + } + } + + public List<AxisInfo> m_AxisAllList = new List<AxisInfo>(); + + public string LoadMotorData() + { + string strRtn = ""; + double[] dTemp = new double[3]; + try + { + string sIO_path = Equipment.settingFilePath; + string strDir = sIO_path + @"MotorData\"; + if (!Directory.Exists(strDir) && strDir != string.Empty) + { + Directory.CreateDirectory(strDir); + } + string strFilePath = strDir + "MotorData" + ".xml"; + + using (FileStream fs = new FileStream(strFilePath, FileMode.Open)) + { + XmlSerializer xs = new XmlSerializer(typeof(List<AxisInfo>)); + m_AxisAllList = xs.Deserialize(fs) as List<AxisInfo>; + strRtn = "Servo Data Load Success! BoardNo:"; + } + + for (int i = 0; i < (int)PmacAxis.enMax; i++) + { + SetAxisPMacNum((PmacAxis)i, m_AxisAllList[i].AxisNo); + SetAxisEnumNum((PmacAxis)i, m_AxisAllList[i].EnumAxisNo); + SetAxisName((PmacAxis)i, m_AxisAllList[i].Name); + SetMotorScaleFactor((PmacAxis)i, m_AxisAllList[i].Scale); + SetAxisTimeOutSecond((PmacAxis)i, m_AxisAllList[i].Timeout); + SetAxisHommingTimeOutSecond((PmacAxis)i, m_AxisAllList[i].HommingTimeout); + SetAxisHommingSpeed((PmacAxis)i, m_AxisAllList[i].HommingSpeed); + SetAxisSWPlusLimit((PmacAxis)i, m_AxisAllList[i].SWPlusLimit); + SetAxisSWMinusLimit((PmacAxis)i, m_AxisAllList[i].SWMinusLimit); + for (int j = 0; j < m_AxisAllList[i].TeachList.Count; j++) + { + dTemp[0] = m_AxisAllList[i].TeachList[j].Position; + dTemp[1] = m_AxisAllList[i].TeachList[j].Speed; + dTemp[2] = m_AxisAllList[i].TeachList[j].Accel; + SetAxisTeachData((PmacAxis)i, (EnTeachData)j, dTemp); + } + + + } + } + catch (System.Exception ex) + { + strRtn = "Servo Data Load Fail! BoardNo:" + " " + ex.Message; + } + return strRtn; + } + + public bool SaveMotorData() + { + bool bRtn = false; + string strRtn = ""; + try + { + string sIO_path = Equipment.settingFilePath; + string strDir = sIO_path + @"MotorData\"; + if (!Directory.Exists(strDir) && strDir != string.Empty) + { + Directory.CreateDirectory(strDir); + } + string strFilePath = strDir + "MotorData" + ".xml"; + + using (FileStream fs = new FileStream(strFilePath, FileMode.Create)) + { + XmlSerializer xs = new XmlSerializer(typeof(List<AxisInfo>)); + xs.Serialize(fs, m_AxisAllList); + bRtn = true; + strRtn = "Servo Data Save Success! "; + } + } + catch (System.Exception ex) + { + strRtn = "Servo Data Save Fail! BoardNo:" + " " + ex.Message; + bRtn = false; + } + + return bRtn; + } + + private void ParsingAxisData(PmacAxis axis, string strData) + { + string[] strParsingData; + string[] strParsingData2; + string strStatus; + uint nStatus; + uint nBit = 0x80000000; + uint nBitResult = 0; + int nCnt = 0; + double dActPos, dHomePos; + double dPos, dVel; + bool bStatus = false; + + strParsingData = strData.Split('\n'); + + //Pos + //ActPos + strParsingData2 = strParsingData[nCnt].Split('='); + dActPos = Convert.ToDouble(strParsingData2[1]); + nCnt++; + //HomePos + strParsingData2 = strParsingData[nCnt].Split('='); + dHomePos = Convert.ToDouble(strParsingData2[1]); + SetAxisHomePos(axis, dHomePos); + nCnt++; + //CalculatedPos + dPos = dActPos - dHomePos; + dPos = dPos / GetMotorScaleFactor(axis); + dPos = Math.Round(dPos, 4); + SetAxisActualPos(axis, dPos); + + + //Speed + strParsingData2 = strParsingData[nCnt].Split('='); + dVel = Convert.ToDouble(strParsingData2[1]); + dVel = dVel * 5000.0 / GetMotorScaleFactor(axis); + dVel = Math.Round(dVel, 4); + SetAxisActualSpeed(axis, dVel); + nCnt++; + + //Status + strParsingData2 = strParsingData[nCnt].Split('='); + strStatus = strParsingData2[1].Replace("$", ""); + strStatus = strStatus.Replace("\r", ""); + nStatus = Convert.ToUInt32(strStatus, 16); + nCnt++; + + for (int i = 0; i < (int)AxisStatus.enMax; i++) + { + if (i == (int)AxisStatus.HomeComplete || i == (int)AxisStatus.HomeInProgress) + continue; + + nBitResult = nStatus & nBit; + bStatus = nBitResult == nBit ? true : false; + SetAxisStatus(axis, (AxisStatus)i, bStatus); + nBit = nBit / 2; + } + + //Home Complete + strParsingData2 = strParsingData[nCnt].Split('='); + bStatus = Convert.ToInt32(strParsingData2[1]) == 1; + SetAxisStatus(axis, AxisStatus.HomeComplete, bStatus); + nCnt++; + + //Home Progress + strParsingData2 = strParsingData[nCnt].Split('='); + bStatus = Convert.ToInt32(strParsingData2[1]) == 1; + SetAxisStatus(axis, AxisStatus.HomeInProgress, bStatus); + nCnt++; + } + + public void DataUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + bool dataCheck = true; + if (/*!_parentForm.m_bSimulationMode && */IsOpen()) + { + for (int i = 0; i < (int)PmacAxis.enMax; i++) + { + dataCheck &= GetCtrlData(PmacAxis.Y_Axis + i); + + Thread.Sleep(10); + } + + if (dataCheck == false) + { + DisConnect(); + } + else + { + AlarmCheck(); + } + continue; + } + else + { + m_bConnected = false; + //if (!_parentForm.m_bSimulationMode) + if(Open() == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0060_POWER_PMAC_DISCONNECTED); + } + } + + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + } + + private void AlarmCheck() + { + if (GetAxisStatus(PmacAxis.Y_Axis, AxisStatus.NLimit_HW)) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0320_MOTOR_Y_NEGATIVE_LIMIT); + } + if (GetAxisStatus(PmacAxis.Y_Axis, AxisStatus.PLimit_HW)) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0321_MOTOR_Y_POSITIVE_LIMIT); + } + + if (GetAxisStatus(PmacAxis.X_Axis, AxisStatus.NLimit_HW)) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0340_MOTOR_X_NEGATIVE_LIMIT); + } + if (GetAxisStatus(PmacAxis.X_Axis, AxisStatus.PLimit_HW)) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0341_MOTOR_X_POSITIVE_LIMIT); + } + + if (GetAxisStatus(PmacAxis.X_Axis, AxisStatus.NLimit_HW)) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0360_MOTOR_T_NEGATIVE_LIMIT); + } + if (GetAxisStatus(PmacAxis.X_Axis, AxisStatus.PLimit_HW)) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0361_MOTOR_T_POSITIVE_LIMIT); + } + } + + private bool GetCtrlData(PmacAxis axis) + { + try + { + bool bResult = false; + //ActPos, HomePos, ActVel, Status + string strMsg = string.Format($"Motor[{(GetAxisPMacNum(axis))}].ActPos Motor[{(GetAxisPMacNum(axis))}].HomePos Motor[{(GetAxisPMacNum(axis))}].ActVel Motor[{(GetAxisPMacNum(axis))}].Status[0] Mtr_StCompHome({(GetAxisPMacNum(axis))}) Mtr_StIngHome({(GetAxisPMacNum(axis))})"); + string strReturnMsg = ""; + + bResult = PMACSendData(strMsg, ref strReturnMsg); + ParsingAxisData(axis, strReturnMsg); + return true; + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + return false; + } + } + + public bool ServoOnOff(PmacAxis axis, bool bOn) + { + string strCmd = ""; + if (bOn) + strCmd = string.Format($"Mtr_Cmd({ GetAxisPMacNum(axis)})=Mtr_010_ExeServoOn"); + else + strCmd = string.Format($"Mtr_Cmd({ GetAxisPMacNum(axis)})=Mtr_020_ExeServoOff"); + + string sReceive = null; + + //if (!MotionInterlockCheck(AxisID, Pos)) + // return false; + + try + { + PMACSendData(strCmd, ref sReceive); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + + return true; + } + + //public AlarmCode SetHommingSpeed_Limit(PmacAxis axis) + //{ + // AlarmCode eResult = AlarmCode.AL_0000_OK; + + // string strCmd = string.Format($"Mtr_SetHomeJVel({GetAxisNum(axis)})"); + + // string sReceive = null; + + // //if (!MotionInterlockCheck(AxisID, Pos)) + // // return false; + + // try + // { + // PMACSendData(strCmd, ref sReceive); + // } + // catch (Exception ee) + // { + // //_parentForm.WriteToDebugLog(string.Format("UMacCtrl: MoveAbs_AxisNum{0}", axis) + ee.ToString()); + // } + + // return eResult; + //} + + public bool StartHomming(PmacAxis axis) + { + string strCmd = string.Format($"Mtr_Cmd({ GetAxisPMacNum(axis)})=Mtr_030_ExeHome"); + + string sReceive = null; + + //if (!MotionInterlockCheck(AxisID, Pos)) + // return false; + + try + { + PMACSendData(strCmd, ref sReceive); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + + return true; + } + + public bool ClearError(PmacAxis axis) + { + string strCmd = string.Format($"Mtr_Cmd({ GetAxisPMacNum(axis)})=Mtr_090_ExeErrClear"); + + string sReceive = null; + + //if (!MotionInterlockCheck(AxisID, Pos)) + // return false; + + try + { + PMACSendData(strCmd, ref sReceive); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + + return true; + } + + public void ClearErrorAll() + { + ClearError(PmacAxis.X_Axis); + ClearError(PmacAxis.Y_Axis); + ClearError(PmacAxis.T_Axis); + } + + public bool MoveAbs(PmacAxis AxisID, double dPos, double dVel, double dAcc/* = 300*/) + { + // Position, Speed�뿉 ���븳 Convert媛믪쓣 怨꾩궛�빐�꽌 蹂대궡�빞 �븳�떎. + double dPosToCnt = dPos * GetMotorScaleFactor(AxisID) /*+ GetAxisHomePos(AxisID)*/; + double dSpeedToCnt = dVel * GetMotorScaleFactor(AxisID) / 1000.0; + + m_dTargetPos[(int)AxisID] = dPos; + m_dTargetSpeed[(int)AxisID] = dVel; + + ////SimulationMode + //if (_parentForm.m_bSimulationMode) + //{ + // m_SimulCommand[(int)AxisID] = SimulCommand.ABS; + // return eResult; + //} + + //eResult = MotionInterlockCheck(AxisID, dPos); + //if (eResult != Alarm_List.AL_OK) + // return eResult; + + string strCmd = string.Format("Motor[{0}].JogTa={1} Motor[{0}].JogSpeed={2} #{0}J={3}", GetAxisPMacNum(AxisID), dAcc, dSpeedToCnt, dPosToCnt); + + string sReceive = null; + + //if (!MotionInterlockCheck(AxisID, Pos)) + // return false; + + try + { + PMACSendData(strCmd, ref sReceive); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + + //return true; + + //if (GetAxisStatus(AxisID, AxisStatus.Error)) + // eResult = Alarm_List.AL_STAGE_Y_AXIS_ALARM + axis; + + return true; + } + + + + public bool MoveRel(PmacAxis AxisID, double Pos, double Vel, double Acc/* = 300*/) + { + // Position, Speed�뿉 ���븳 Convert媛믪쓣 怨꾩궛�빐�꽌 蹂대궡�빞 �븳�떎. + + double dAddPos = Pos + GetAxisActualPos(AxisID); + double dPosToCnt = dAddPos * GetMotorScaleFactor(AxisID); + double dSpeedToCnt = Vel * GetMotorScaleFactor(AxisID) / 1000.0; + + m_dTargetPos[(int)AxisID] = dAddPos; + m_dTargetSpeed[(int)AxisID] = Vel; + + //SimulationMode - �벐�젮硫� �궡�젮�몢怨�! + //if (_parentForm.m_bSimulationMode) + //{ + // m_SimulCommand[(int)AxisID] = SimulCommand.REL; + // return eResult; + //} + + string strCmd = string.Format("Motor[{0}].JogTa={1} Motor[{0}].JogSpeed={2} #{0}J={3}", GetAxisPMacNum(AxisID), Acc, dSpeedToCnt, dPosToCnt); + + string sReceive = null; + + //�굹以묒뿉 �씤�꽣�씫 異붽��븯硫� �뿬湲곗뿉!!! + //eResult = MotionInterlockCheck(AxisID, dAddPos); + + //if (eResult != AlarmCode.AL_0000_OK) + // return eResult; + + try + { + PMACSendData(strCmd, ref sReceive); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + + //if (GetAxisStatus(AxisID, AxisStatus.Error)) + // eResult = Alarm_List.AL_STAGE_Y_AXIS_ALARM + axis; + return true; + //return true; + } + + public bool MoveJog(PmacAxis AxisID, double Vel, MotionDirection dir) + { + int axis = (int)AxisID; + double dSpeedToCnt = Vel * GetMotorScaleFactor(AxisID) / 1000.0; + string sReceive = null; + + //SimulationMode + //if (_parentForm.m_bSimulationMode) + //{ + // if (dir == MotionDirection.Plus) + // { + // m_dTargetSpeed[(int)AxisID] = Vel; + // m_SimulCommand[(int)AxisID] = SimulCommand.JOGP; + // } + // else + // { + // m_dTargetSpeed[(int)AxisID] = -Vel; + // m_SimulCommand[(int)AxisID] = SimulCommand.JOGN; + // } + // return eResult; + //} + + // set Speed + string strCmd = string.Format("Motor[{0}].JogSpeed={1}", GetAxisPMacNum(AxisID), dSpeedToCnt); + PMACSendData(strCmd, ref sReceive); + + // Jog move + if (dir == MotionDirection.Plus) + strCmd = string.Format("#{0}J+", GetAxisPMacNum(AxisID)); + else if (dir == MotionDirection.Minus) + strCmd = string.Format("#{0}J-", GetAxisPMacNum(AxisID)); + + return PMACSendData(strCmd, ref sReceive); + } + + public bool MoveStop(PmacAxis AxisID) + { + string sReceive = null; + + //��怨� �젣怨� 諛⑹떇�쑝濡� �벐�옄! + string strCmd = string.Format("Mtr_Cmd({0})=Mtr_080_ExeStop", GetAxisPMacNum(AxisID)); + PMACSendData(strCmd, ref sReceive); + + return true; + } + public bool MoveXYTStop() + { + MoveStop(PmacAxis.X_Axis); + MoveStop(PmacAxis.Y_Axis); + MoveStop(PmacAxis.T_Axis); + + return true; + } + + public bool IsLoadPosition() + { + bool isMotorXLoadPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.LoadPosX].Position, GetAxisActualPos(PmacAxis.X_Axis)); + bool isMotorYLoadPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.LoadPosY].Position, GetAxisActualPos(PmacAxis.Y_Axis)); + bool isMotorTLoadPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.LoadPosT].Position, GetAxisActualPos(PmacAxis.T_Axis)); + + return isMotorXLoadPosition && isMotorYLoadPosition && isMotorTLoadPosition; + } + + public bool IsCenterPosition() + { + bool isMotorXCenterPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.CenterPosX].Position, GetAxisActualPos(PmacAxis.X_Axis)); + bool isMotorYCenterPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.CenterPosY].Position, GetAxisActualPos(PmacAxis.Y_Axis)); + bool isMotorTCenterPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.CenterPosT].Position, GetAxisActualPos(PmacAxis.T_Axis)); + + return isMotorXCenterPosition && isMotorYCenterPosition && isMotorTCenterPosition; + } + + public bool IsPowerMeterPosition() + { + bool isMotorXPowerMeterPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.PowerMeterX].Position, GetAxisActualPos(PmacAxis.X_Axis)); + bool isMotorYPowerMeterPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.PowerMeterY].Position, GetAxisActualPos(PmacAxis.Y_Axis)); + bool isMotorTPowerMeterPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.PowerMeterT].Position, GetAxisActualPos(PmacAxis.T_Axis)); + + return isMotorXPowerMeterPosition && isMotorYPowerMeterPosition && isMotorTPowerMeterPosition; + } + + public bool IsAlignPosition() + { + bool isMotorXAlignPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Position, GetAxisActualPos(PmacAxis.X_Axis)); + bool isMotorYAlignPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Position, GetAxisActualPos(PmacAxis.Y_Axis)); + bool isMotorTAlignPosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Position, GetAxisActualPos(PmacAxis.T_Axis)); + + return isMotorXAlignPosition && isMotorYAlignPosition && isMotorTAlignPosition; + } + + public bool IsBeamProfilePosition() + { + bool isMotorXBeamProfilePosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.BeamProfileX].Position, GetAxisActualPos(PmacAxis.X_Axis)); + bool isMotorYBeamProfilePosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.BeamProfileY].Position, GetAxisActualPos(PmacAxis.Y_Axis)); + bool isMotorTBeamProfilePosition = InpositionCheck(m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.BeamProfileT].Position, GetAxisActualPos(PmacAxis.T_Axis)); + + return isMotorXBeamProfilePosition && isMotorYBeamProfilePosition && isMotorTBeamProfilePosition; + } + + public bool InpositionCheck(double tagetPosition, double currentPosition, double inpositionRange = 1) + { + if(tagetPosition - inpositionRange <= currentPosition && currentPosition <= tagetPosition + inpositionRange) + { + return true; + } + else + { + return false; + } + } + //public bool WriteRead(string command, out string receivedData) + //{ + // /* 2022 09 23 : Test + // * command : motor[1].ActPos motor[1].ActVel motor[1].AmpFault motor[1].HomeComplete motor[1].InPos motor[1].AmpEna motor[1].ServoCtrl + // * receivedData : Motor[1].ActPos=3659750.146484375\r\nMotor[1].ActVel=0\r\nMotor[1].AmpFault=0\r\nMotor[1].HomeComplete=1\r\nMotor[1].InPos=0\r\nMotor[1].AmpEna=0\r\nMotor[1].ServoCtrl=0\r\n + // */ + + // byte[] commandBytes = Encoding.ASCII.GetBytes(command); + // byte[] receivedBytes = new byte[1024]; + // uint result = PowerPmac.DTKGetResponseA(_deviceID, commandBytes, receivedBytes, receivedBytes.GetLength(0)); + + // if ((DTK_STATUS)result == DTK_STATUS.DS_Ok) + // { + // receivedData = Encoding.Default.GetString(receivedBytes).TrimEnd('\0'); + // return true; + // } + // else + // { + // if ((DTK_STATUS)result == DTK_STATUS.DS_NotConnected) + // { + // //�넻�떊紐⑤뱶媛� GetSend �긽�깭�엫 + // } + // else if ((DTK_STATUS)result == DTK_STATUS.DS_InvalidDevice) + // { + // //�쑀�슚�븯吏� �븡�� �옣移� 踰덊샇 + // } + // else if ((DTK_STATUS)result == DTK_STATUS.DS_InvalidCommand) + // { + // //�쑀�슚�븯吏� �븡�� 紐낅졊�뼱 (NULL) + // } + // else if ((DTK_STATUS)result == DTK_STATUS.DS_InvalidResponse) + // { + // //�쑀�슚�븯吏� �븡�� �쓳�떟 踰꾪띁(NULL) + // } + // else if ((DTK_STATUS)result == DTK_STATUS.DS_DataRemains) + // { + // //�닔�떊 踰꾪띁�뿉 �뜲�씠�꽣媛� �궓�븘 �엳�쓬 + // } + // else if ((DTK_STATUS)result == DTK_STATUS.DS_CmdLengthExceeds) + // { + // //紐낅졊�뼱 �뜲�씠�꽣 湲몄씠 珥덇낵 + // } + // else if ((DTK_STATUS)result == DTK_STATUS.DS_ResLengthExceeds) + // { + // //�쓳�떟 �뜲�씠�꽣 湲몄씠 珥덇낵 + // } + // else if ((DTK_STATUS)result == DTK_STATUS.DS_RunningDownload) + // { + // //�떎�슫濡쒕뱶 以� + // } + // else if (result >= 1000) + // { + // //�넻�떊 �삤瑜� (湲곗닠 吏��썝 �슂泥�) + // } + + // receivedData = string.Empty; + // return false; + // } + //} + } + + [Serializable] + public class AxisInfo + { + public AxisInfo() + { + } + public AxisInfo(int nAxisNo_1Base) + { + _AxisNo = nAxisNo_1Base; + _EnumAxisNo = nAxisNo_1Base; + _UseAxis = false; + _AxisType = AxisType.SERVO; + _Name = ""; + _HommingCmd = ""; + _HomeEndCmd = ""; + _PlcNo = 0; + _dScale = 0; + _dSWPlusLimit = 100000; + _dSWMinusLimit = 0; + _nTimeout = 10000; + } + + private int _AxisNo; + private int _EnumAxisNo; + private bool _UseAxis; + private AxisType _AxisType; + private string _Name; + private string _HommingCmd; + private string _HomeEndCmd; + private int _PlcNo; + private double _dScale; + private double _dSWPlusLimit; + private double _dSWMinusLimit; + private int _nTimeout; + private int _nHommingTimeout; + private double _dHommingSpeed; + private List<Teach_Data> _TeachData = new List<Teach_Data>(); + + public int EnumAxisNo + { + get { return _EnumAxisNo; } + set { _EnumAxisNo = value; } + } + + public int AxisNo + { + get { return _AxisNo; } + set { _AxisNo = value; } + } + + //public bool UseAxis + //{ + // get { return _UseAxis; } + // set { _UseAxis = value; } + //} + public AxisType AxisType + { + get { return _AxisType; } + set { _AxisType = value; } + } + public string Name + { + get { return _Name; } + set { _Name = value; } + } + public string HommingCmd + { + get { return _HommingCmd; } + set { _HommingCmd = value; } + } + public string HomeEndCmd + { + get { return _HomeEndCmd; } + set { _HomeEndCmd = value; } + } + public double Scale + { + get { return _dScale; } + set { _dScale = value; } + } + public double SWPlusLimit + { + get { return _dSWPlusLimit; } + set { _dSWPlusLimit = value; } + } + public double SWMinusLimit + { + get { return _dSWMinusLimit; } + set { _dSWMinusLimit = value; } + } + public int Timeout + { + get { return _nTimeout; } + set { _nTimeout = value; } + } + + public int HommingTimeout + { + get { return _nHommingTimeout; } + set { _nHommingTimeout = value; } + } + + public double HommingSpeed + { + get { return _dHommingSpeed; } + set { _dHommingSpeed = value; } + } + + public List<Teach_Data> TeachList + { + get { return _TeachData; } + set { _TeachData = value; } + } + } + + [Serializable] + public class Teach_Data + { + public Teach_Data() + { + _Teach_Name = ""; + _dPositon = 0; + _dSpeed = 0; + _dAccel = 0; + } + private string _Teach_Name; + private double _dPositon; + private double _dSpeed; + private double _dAccel; + + public string Name + { + get { return _Teach_Name; } + set { _Teach_Name = value; } + } + public double Position + { + get { return _dPositon; } + set { _dPositon = value; } + } + public double Speed + { + get { return _dSpeed; } + set { _dSpeed = value; } + } + public double Accel + { + get { return _dAccel; } + set { _dAccel = value; } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/PreAligner.cs b/SA_LTT_UI/SA_LTT/Module/PreAligner.cs new file mode 100644 index 0000000..6f2c827 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/PreAligner.cs @@ -0,0 +1,1053 @@ +癤퓎sing System; +using System.Threading; + +namespace SA_LTT.Module +{ + public class PreAligner : ComPort + { + public enum ErrorCode + { + None, + PinUpError, + PinDownError, + VaccumError, + NoWafer, + WaferLimitErrorAfterAlign, + NotFoundNotch, + StageLimitError = 9, + InvalidAlignCommand, + ChuckArrangeError, + WaferAlignCCDOver, + WaferLimitErrorBeforeAlign, + RetractHome = 16, + WaferExist, + CCDModuleError = 30, + AlignerTypeError = 50, + CommandError = 999, + } + + private Equipment _equipment; + private Thread t_statusUpdate; + private Thread t_commandWriteRead; + private string _version; + + private double _positionX; + private double _positionY; + private double _positionT; + + private bool _isWaferExist; + private bool _isVacuumOn; + private bool _isHome; + private bool _isAlignRun; + + private bool _lockCheck; + private object _thisLock = new object(); + + private int waitTime = 100; + public ErrorCode error; + + private SequenceTimer _timer = new SequenceTimer(); + + public string Version + { + get + { + return _version; + } + + set + { + _version = value; + } + } + + public double PositionX + { + get + { + return _positionX; + } + + set + { + _positionX = value; + } + } + + public double PositionY + { + get + { + return _positionY; + } + + set + { + _positionY = value; + } + } + + public double PositionT + { + get + { + return _positionT; + } + + set + { + _positionT = value; + } + } + + public bool IsHome + { + get + { + return _isHome; + } + + set + { + _isHome = value; + } + } + + public bool IsWaferExist + { + get + { + return _isWaferExist; + } + + set + { + _isWaferExist = value; + } + } + + public bool IsVacuumOn + { + get + { + return _isVacuumOn; + } + + set + { + _isVacuumOn = value; + } + } + + public bool IsAlignRun + { + get + { + return _isAlignRun; + } + + set + { + _isAlignRun = value; + } + } + + public bool IsRunEnable + { + get + { + if(IsOpen && (t_commandWriteRead == null || t_commandWriteRead.ThreadState == ThreadState.Stopped)) + { + return true; + } + else + { + return false; + } + } + } + + public PreAligner(Equipment equipment) + { + serialPort.PortName = "COM4"; + serialPort.DataBits = 8; + serialPort.Parity = System.IO.Ports.Parity.None; + serialPort.StopBits = System.IO.Ports.StopBits.One; + serialPort.BaudRate = 19200; + ReceiveWaitSeconds = 0.1; + Terminator = null; + + _equipment = equipment; + + error = ErrorCode.None; + t_statusUpdate = new Thread(statusUpdate); + t_statusUpdate.Start(); + } + + public void statusUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + Thread.Sleep(waitTime); + + if (IsOpen) + { + if (IsRunEnable) + { + ReadPosition(); + ReadStatus(); + } + } + else + { + if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0051_PRE_ALIGNER_DISCONNECTED)) + { + + } + else + { + if (Open() == false) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0051_PRE_ALIGNER_DISCONNECTED); + } + else + { + if (ReadVersion() == false) + { + Close(); + } + else + { + //Home(); + } + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + public void Align(double angle) + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + IsAlignRun = true; + + if (angle < 0) + { + angle = 0; + } + else if (angle > 359.999) + { + angle = 359.999; + } + + string str = WriteRead($"ALIGN {angle:f3}"); + string str1 = Read(10); + //ALIGN 90.000\rEND\r + + string[] datas = str.Split('\r'); + + if (datas.Length == 3 && datas[1].Contains("ERR")) + { + string errorCode = datas[1].Split(' ')[1]; + + error = (ErrorCode)Enum.Parse(typeof(ErrorCode), errorCode); + SetAlarmCode(error); + } + + datas = str1.Split('\r'); + + if (datas.Length == 3 && datas[1].Contains("ERR")) + { + string errorCode = datas[1].Split(' ')[1]; + + error = (ErrorCode)Enum.Parse(typeof(ErrorCode), errorCode); + SetAlarmCode(error); + } + + Thread.Sleep(100); + + string log = WriteRead($"RQ POSITION"); + EquipmentLogManager.Instance.WritePreAlignLog("Result : " + log.Replace('\r', ' ')); + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + IsAlignRun = false; + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + ); + + t_commandWriteRead.Start(); + } + + /// <summary> + /// �뼹�씪�씤 �씠�썑�뿉 媛곷룄 蹂�寃� + /// </summary> + /// <param name="angle"></param> + public void Again(double angle) + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + IsAlignRun = true; + + if (angle < 0) + { + angle = 0; + } + else if (angle > 359.999) + { + angle = 359.999; + } + + string str = WriteRead($"AGAIN {angle:f3}"); + + string[] datas = str.Split('\r'); + + if (datas.Length == 3 && datas[1].Contains("ERR")) + { + error = (ErrorCode)Enum.Parse(typeof(ErrorCode), datas[1].Split(' ')[1]); + SetAlarmCode(error); + } + + Thread.Sleep(waitTime); + //AGAIN 0.000\rEND\r + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + IsAlignRun = false; + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + }); + + t_commandWriteRead.Start(); + } + + public bool ReadVersion() + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string receivedData = WriteRead($"VER"); + string[] datas = receivedData.Split('\r'); + + if (datas.Length == 3) + { + Version = datas[1]; + return true; + } + else + { + return false; + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + public void Home() + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"HOME"); + str = Read(20); + //HOME\rEND\r + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + }); + + t_commandWriteRead.Start(); + } + + public void VacuumOn() + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"VAC ON"); + str = Read(5); + + string[] datas = str.Split('\r'); + + if (datas.Length == 3 && datas[1].Contains("ERR")) + { + error = (ErrorCode)Enum.Parse(typeof(ErrorCode), datas[1].Split(' ')[1]); + SetAlarmCode(error); + } + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + }); + + t_commandWriteRead.Start(); + } + + public void VacuumOff() + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"VAC OFF"); + + string[] datas = str.Split('\r'); + + if (datas.Length == 3 && datas[1].Contains("ERR")) + { + error = (ErrorCode)Enum.Parse(typeof(ErrorCode), datas[1].Split(' ')[1]); + SetAlarmCode(error); + } + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + }); + + t_commandWriteRead.Start(); + } + + public void PinUp() + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + t_commandWriteRead.Start(); + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"PIN UP"); + //PIN UP\r + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + }); + } + + public void PinDown() + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"PIN DN"); + //PIN DN\r + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + }); + + t_commandWriteRead.Start(); + } + + public void ReadStatus() + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"STATUS"); + //STATUS\r[0:ON 1:OFF] VAC:1 WF1:1 WF2:0 START:1 CLR:1 HOME:1 IN4:1 RUN:1 WAF:0 VAC:1 ALM:0\r + string[] datas = str.Split('\r'); + + if(datas.Length == 3) + { + string[] status = datas[1].Split(' '); + + IsHome = status[7].Split(':')[1] == "0" ? true : false; + IsWaferExist = status[10].Split(':')[1] == "0" ? true : false; + IsVacuumOn = status[11].Split(':')[1] == "0" ? true : false; + } + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + public void ReadLog() + { + string str = WriteRead($"RQ LOG"); + + + } + public void ReadAlarmCode() + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + + }); + + t_commandWriteRead.Start(); + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"ALARM CODE"); + str = Read(20); + //ALARM CODE\rNO_ALARM\r + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + public void ReadPinStatus() + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + + }); + + t_commandWriteRead.Start(); + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"RQ PIN"); + //RQ PIN\r + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + public void ReadWaferStatus() + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + + }); + + t_commandWriteRead.Start(); + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"RQ WAFER"); + //RQ WAFER\r + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + public void ReadVaccumStatus() + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + + }); + + t_commandWriteRead.Start(); + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"RQ VAC"); + //RQ VAC\r[OFF]\r + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + public void ReadParameter() + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"RQ PARA"); + str = Read(3); + //"RQ PARA\r\rVER 1.2(DX)-01\rTYPE 1\rDEEP 0.6\rDEEX 1.5\rRETRY 5\rSET 000.00\rOFFSET +000.000\rWIDTH 5\rWAFER SIZE 300\rBASE LENGTH 142\rLOOP 1\rRESET 1\rLOG 1\rVAC KEEP 0\rRESPONSE 1\rWP 0\rDIST" + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + public void ReadPosition() + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string receivedData = WriteRead("RQ POSITION"); + + string[] datas = receivedData.Split('\r'); + + if (datas.Length == 3) + { + string[] positions = datas[1].Split(' '); + PositionX = double.Parse(positions[1]); + PositionY = double.Parse(positions[2]); + PositionT = double.Parse(positions[3]); + } + else + { + + } + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + public void Center() + { + if (IsRunEnable == false) return; + + t_commandWriteRead = new Thread(() => + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"CENTER"); + + string[] datas = str.Split('\r'); + + if (datas.Length == 3 && datas[1].Contains("ERR")) + { + error = (ErrorCode)Enum.Parse(typeof(ErrorCode), datas[1].Split(' ')[1]); + SetAlarmCode(error); + } + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + }); + + t_commandWriteRead.Start(); + } + + public void SetAlignOffset(double offset) + { + lock (_thisLock) + { + while (_lockCheck) + Monitor.Wait(_thisLock); + try + { + _lockCheck = true; + + string str = WriteRead($"OFFSET {offset:3f}"); + + Thread.Sleep(waitTime); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _lockCheck = false; + Monitor.Pulse(_thisLock); + } + } + } + + //=================================================================== + public new bool Write(string command) + { + string data = base.WriteRead(command + "\r"); + + if (data != string.Empty) + { + return true; + } + else + { + return false; + } + } + + public new string WriteRead(string command) + { + string receivedData = string.Empty; + + receivedData = base.WriteRead(command + "\r"); + + if (receivedData.StartsWith(command.Split(' ')[0])) + { + return receivedData; + } + else + { + if (receivedData.Contains("ERR")) + { + string errorCode = receivedData.Split(' ')[1].Replace("\r", ""); + if (Enum.TryParse(errorCode, out error)) + { + SetAlarmCode(error); + } + //Error 異붽�. + } + + return "-1"; + } + } + + public bool WriteRead(string command, out string receivedData) + { + string data = base.WriteRead(command + '\r'); + + if (data.StartsWith(command.Split(' ')[0])) + { + receivedData = data.Remove(0, command.Split(' ')[0].Length).Replace("\r", ""); + return true; + } + else + { + receivedData = string.Empty; + return false; + } + } + + private void SetAlarmCode(ErrorCode errorCode) + { + EquipmentLogManager.Instance.WritePreAlignLog($"Error Code : {(int)errorCode} : {errorCode.ToString()}"); + + switch (errorCode) + { + case ErrorCode.PinUpError: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0500_PREALIGNER_PIN_UP_ERROR); + break; + } + case ErrorCode.PinDownError: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0501_PREALIGNER_PIN_DOWN_ERROR); + break; + } + case ErrorCode.VaccumError: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0502_PREALIGNER_VACCUM_ERROR); + break; + } + case ErrorCode.NoWafer: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0503_PREALIGNER_NO_WAFER); + break; + } + case ErrorCode.WaferLimitErrorAfterAlign: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0504_PREALIGNER_WAFER_LIMIT_ERROR_AFTER_ALIGN); + break; + } + case ErrorCode.NotFoundNotch: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0505_PREALIGNER_NOT_FOUND_NOTCH); + break; + } + case ErrorCode.StageLimitError: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0506_PREALIGNER_STAGE_LIMIT_ERROR); + break; + } + case ErrorCode.InvalidAlignCommand: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0507_PREALIGNER_INVALID_ALIGN_COMMAND); + break; + } + case ErrorCode.ChuckArrangeError: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0508_PREALIGNER_CHUCK_ARRANGE_ERROR); + break; + } + case ErrorCode.WaferAlignCCDOver: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0509_PREALIGNER_WAFER_ALIGN_CCD_OVER); + break; + } + case ErrorCode.WaferLimitErrorBeforeAlign: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0510_PREALIGNER_WAFER_LIMIT_ERROR_BEFORE_ALIGN); + break; + } + case ErrorCode.RetractHome: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0511_PREALIGNER_RETRACT_HOME); + break; + } + case ErrorCode.WaferExist: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0512_PREALIGNER_WAFER_EXIST); + break; + } + case ErrorCode.CCDModuleError: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0513_PREALIGNER_CCD_MODULE_ERROR); + break; + } + case ErrorCode.AlignerTypeError: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0514_PREALIGNER_ALIGNER_TYPE_ERROR); + break; + } + case ErrorCode.CommandError: + { + _equipment.alarmManager.Occur(AlarmCode.AL_0515_PREALIGNER_COMMAND_ERROR); + break; + } + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/RTC5/RTC5Wrap.cs b/SA_LTT_UI/SA_LTT/Module/RTC5/RTC5Wrap.cs new file mode 100644 index 0000000..6a8147f --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/RTC5/RTC5Wrap.cs @@ -0,0 +1,6286 @@ +癤퓎sing System; +using System.Runtime.InteropServices; + +namespace SA_LTT.Module.RTC5 +{ + /// <summary> + /// Notice that the construction of the RTC5Import object or an initial + /// call of any RTC5Import method may throw a TypeInitializationException + /// exception, which indicates that the required DLL is missing or the + /// import of a particular DLL function failed. In order to analyze and + /// properly handle such an error condition you need to catch that + /// TypeInitializationException type exception. + /// </summary> + public class RTC5Wrap + { + const int TableSize = 1024; + const int SampleArraySize = 1024 * 1024; + const int SignalSize = 4; + const int TransformSize = 132130; + const int SignalSize2 = 8; + + const string DLL_NAMEx86 = "RTC5DLL.dll"; // DLL's 32-bit version. + const string DLL_NAMEx64 = "RTC5DLLx64.dll"; // DLL's 64-bit version. + + class FunctionImporter + { + static string DllName; + + [DllImport("Kernel32.dll")] + private extern static IntPtr LoadLibrary(string path); + + [DllImport("kernel32.dll")] + public extern static bool FreeLibrary(IntPtr hModule); + + [DllImport("Kernel32.dll")] + private extern static IntPtr GetProcAddress(IntPtr hModule, + string procName); + + static IntPtr hModule; + + static FunctionImporter instance = null; + + protected FunctionImporter(string DllName) + { + hModule = LoadLibrary(DllName); + } + + ~FunctionImporter() + { + if (hModule != IntPtr.Zero) + FreeLibrary(hModule); + } + + public static Delegate Import<T>(string functionName) + { + if (instance == null) + { + DllName = (Marshal.SizeOf(typeof(IntPtr)) == 4) ? DLL_NAMEx86 : DLL_NAMEx64; + instance = new FunctionImporter(DllName); + + if (hModule == IntPtr.Zero) + throw new System.IO. + FileNotFoundException(DllName + " not found. "); + } + var functionAddress = GetProcAddress(hModule, functionName); + try + { + return Marshal. + GetDelegateForFunctionPointer(functionAddress, typeof(T)); + } + catch (Exception ex) + { + if ((ex is ArgumentException) || (ex is ArgumentNullException)) + throw new EntryPointNotFoundException(functionName); + else throw; + } + } + } + + #region RTC5FunctionDelegates + public delegate uint init_rtc5_dllDelegate(); + public delegate void free_rtc5_dllDelegate(); + public delegate void set_rtc4_modeDelegate(); + public delegate void set_rtc5_modeDelegate(); + public delegate uint get_rtc_modeDelegate(); + public delegate uint n_get_errorDelegate(uint CardNo); + public delegate uint n_get_last_errorDelegate(uint CardNo); + public delegate void n_reset_errorDelegate(uint CardNo, uint Code); + public delegate uint n_set_verifyDelegate(uint CardNo, uint Verify); + public delegate uint get_errorDelegate(); + public delegate uint get_last_errorDelegate(); + public delegate void reset_errorDelegate(uint Code); + public delegate uint set_verifyDelegate(uint Verify); + public delegate uint verify_checksumDelegate(string Name); + public delegate uint read_abc_from_fileDelegate(string Name, out double A, out double B, out double C); + public delegate uint write_abc_to_fileDelegate(string Name, double A, double B, double C); + public delegate uint rtc5_count_cardsDelegate(); + public delegate uint acquire_rtcDelegate(uint CardNo); + public delegate uint release_rtcDelegate(uint CardNo); + public delegate uint select_rtcDelegate(uint CardNo); + public delegate uint get_dll_versionDelegate(); + public delegate uint n_get_serial_numberDelegate(uint CardNo); + public delegate uint n_get_hex_versionDelegate(uint CardNo); + public delegate uint n_get_rtc_versionDelegate(uint CardNo); + public delegate uint get_serial_numberDelegate(); + public delegate uint get_hex_versionDelegate(); + public delegate uint get_rtc_versionDelegate(); + public delegate uint n_load_program_fileDelegate(uint CardNo, string Path); + public delegate void n_sync_slavesDelegate(uint CardNo); + public delegate uint n_get_sync_statusDelegate(uint CardNo); + public delegate uint n_load_correction_fileDelegate(uint CardNo, string Name, uint No, uint Dim); + public delegate uint n_load_zoom_correction_fileDelegate(uint CardNo, string Name, uint No); + public delegate uint n_load_z_tableDelegate(uint CardNo, double A, double B, double C); + public delegate void n_select_cor_tableDelegate(uint CardNo, uint HeadA, uint HeadB); + public delegate uint n_set_dsp_modeDelegate(uint CardNo, uint Mode); + public delegate int n_load_stretch_tableDelegate(uint CardNo, string Name, int No); + public delegate void n_number_of_correction_tablesDelegate(uint CardNo, uint Number); + public delegate double n_get_head_paraDelegate(uint CardNo, uint HeadNo, uint ParaNo); + public delegate double n_get_table_paraDelegate(uint CardNo, uint TableNo, uint ParaNo); + public delegate uint load_program_fileDelegate(string Path); + public delegate void sync_slavesDelegate(); + public delegate uint get_sync_statusDelegate(); + public delegate uint load_correction_fileDelegate(string Name, uint No, uint Dim); + public delegate uint load_zoom_correction_fileDelegate(string Name, uint No); + public delegate uint load_z_tableDelegate(double A, double B, double C); + public delegate void select_cor_tableDelegate(uint HeadA, uint HeadB); + public delegate uint set_dsp_modeDelegate(uint Mode); + public delegate int load_stretch_tableDelegate(string Name, int No); + public delegate void number_of_correction_tablesDelegate(uint Number); + public delegate double get_head_paraDelegate(uint HeadNo, uint ParaNo); + public delegate double get_table_paraDelegate(uint TableNo, uint ParaNo); + public delegate void n_config_listDelegate(uint CardNo, uint Mem1, uint Mem2); + public delegate void n_get_config_listDelegate(uint CardNo); + public delegate uint n_save_diskDelegate(uint CardNo, string Name, uint Mode); + public delegate uint n_load_diskDelegate(uint CardNo, string Name, uint Mode); + public delegate uint n_get_list_spaceDelegate(uint CardNo); + public delegate void config_listDelegate(uint Mem1, uint Mem2); + public delegate void get_config_listDelegate(); + public delegate uint save_diskDelegate(string Name, uint Mode); + public delegate uint load_diskDelegate(string Name, uint Mode); + public delegate uint get_list_spaceDelegate(); + public delegate void n_set_start_list_posDelegate(uint CardNo, uint ListNo, uint Pos); + public delegate void n_set_start_listDelegate(uint CardNo, uint ListNo); + public delegate void n_set_start_list_1Delegate(uint CardNo); + public delegate void n_set_start_list_2Delegate(uint CardNo); + public delegate void n_set_input_pointerDelegate(uint CardNo, uint Pos); + public delegate uint n_load_listDelegate(uint CardNo, uint ListNo, uint Pos); + public delegate void n_load_subDelegate(uint CardNo, uint Index); + public delegate void n_load_charDelegate(uint CardNo, uint Char); + public delegate void n_load_text_tableDelegate(uint CardNo, uint Index); + public delegate void n_get_list_pointerDelegate(uint CardNo, out uint ListNo, out uint Pos); + public delegate uint n_get_input_pointerDelegate(uint CardNo); + public delegate void set_start_list_posDelegate(uint ListNo, uint Pos); + public delegate void set_start_listDelegate(uint ListNo); + public delegate void set_start_list_1Delegate(); + public delegate void set_start_list_2Delegate(); + public delegate void set_input_pointerDelegate(uint Pos); + public delegate uint load_listDelegate(uint ListNo, uint Pos); + public delegate void load_subDelegate(uint Index); + public delegate void load_charDelegate(uint Char); + public delegate void load_text_tableDelegate(uint Index); + public delegate void get_list_pointerDelegate(out uint ListNo, out uint Pos); + public delegate uint get_input_pointerDelegate(); + public delegate void n_execute_list_posDelegate(uint CardNo, uint ListNo, uint Pos); + public delegate void n_execute_at_pointerDelegate(uint CardNo, uint Pos); + public delegate void n_execute_listDelegate(uint CardNo, uint ListNo); + public delegate void n_execute_list_1Delegate(uint CardNo); + public delegate void n_execute_list_2Delegate(uint CardNo); + public delegate void n_get_out_pointerDelegate(uint CardNo, out uint ListNo, out uint Pos); + public delegate void execute_list_posDelegate(uint ListNo, uint Pos); + public delegate void execute_at_pointerDelegate(uint Pos); + public delegate void execute_listDelegate(uint ListNo); + public delegate void execute_list_1Delegate(); + public delegate void execute_list_2Delegate(); + public delegate void get_out_pointerDelegate(out uint ListNo, out uint Pos); + public delegate void n_auto_change_posDelegate(uint CardNo, uint Pos); + public delegate void n_start_loopDelegate(uint CardNo); + public delegate void n_quit_loopDelegate(uint CardNo); + public delegate void n_pause_listDelegate(uint CardNo); + public delegate void n_restart_listDelegate(uint CardNo); + public delegate void n_release_waitDelegate(uint CardNo); + public delegate void n_stop_executionDelegate(uint CardNo); + public delegate void n_set_pause_list_condDelegate(uint CardNo, uint Mask1, uint Mask0); + public delegate void n_set_pause_list_not_condDelegate(uint CardNo, uint Mask1, uint Mask0); + public delegate void n_auto_changeDelegate(uint CardNo); + public delegate void n_stop_listDelegate(uint CardNo); + public delegate uint n_get_wait_statusDelegate(uint CardNo); + public delegate uint n_read_statusDelegate(uint CardNo); + public delegate void n_get_statusDelegate(uint CardNo, out uint Status, out uint Pos); + public delegate void auto_change_posDelegate(uint Pos); + public delegate void start_loopDelegate(); + public delegate void quit_loopDelegate(); + public delegate void pause_listDelegate(); + public delegate void restart_listDelegate(); + public delegate void release_waitDelegate(); + public delegate void stop_executionDelegate(); + public delegate void set_pause_list_condDelegate(uint Mask1, uint Mask0); + public delegate void set_pause_list_not_condDelegate(uint Mask1, uint Mask0); + public delegate void auto_changeDelegate(); + public delegate void stop_listDelegate(); + public delegate uint get_wait_statusDelegate(); + public delegate uint read_statusDelegate(); + public delegate void get_statusDelegate(out uint Status, out uint Pos); + public delegate void n_set_extstartposDelegate(uint CardNo, uint Pos); + public delegate void n_set_max_countsDelegate(uint CardNo, uint Counts); + public delegate void n_set_control_modeDelegate(uint CardNo, uint Mode); + public delegate void n_simulate_ext_stopDelegate(uint CardNo); + public delegate void n_simulate_ext_start_ctrlDelegate(uint CardNo); + public delegate uint n_get_countsDelegate(uint CardNo); + public delegate uint n_get_startstop_infoDelegate(uint CardNo); + public delegate void set_extstartposDelegate(uint Pos); + public delegate void set_max_countsDelegate(uint Counts); + public delegate void set_control_modeDelegate(uint Mode); + public delegate void simulate_ext_stopDelegate(); + public delegate void simulate_ext_start_ctrlDelegate(); + public delegate uint get_countsDelegate(); + public delegate uint get_startstop_infoDelegate(); + public delegate void n_copy_dst_srcDelegate(uint CardNo, uint Dst, uint Src, uint Mode); + public delegate void n_set_char_pointerDelegate(uint CardNo, uint Char, uint Pos); + public delegate void n_set_sub_pointerDelegate(uint CardNo, uint Index, uint Pos); + public delegate void n_set_text_table_pointerDelegate(uint CardNo, uint Index, uint Pos); + public delegate void n_set_char_tableDelegate(uint CardNo, uint Index, uint Pos); + public delegate uint n_get_char_pointerDelegate(uint CardNo, uint Char); + public delegate uint n_get_sub_pointerDelegate(uint CardNo, uint Index); + public delegate uint n_get_text_table_pointerDelegate(uint CardNo, uint Index); + public delegate void copy_dst_srcDelegate(uint Dst, uint Src, uint Mode); + public delegate void set_char_pointerDelegate(uint Char, uint Pos); + public delegate void set_sub_pointerDelegate(uint Index, uint Pos); + public delegate void set_text_table_pointerDelegate(uint Index, uint Pos); + public delegate void set_char_tableDelegate(uint Index, uint Pos); + public delegate uint get_char_pointerDelegate(uint Char); + public delegate uint get_sub_pointerDelegate(uint Index); + public delegate uint get_text_table_pointerDelegate(uint Index); + public delegate void n_time_updateDelegate(uint CardNo); + public delegate void n_set_serial_stepDelegate(uint CardNo, uint No, uint Step); + public delegate void n_select_serial_setDelegate(uint CardNo, uint No); + public delegate void n_set_serialDelegate(uint CardNo, uint No); + public delegate double n_get_serialDelegate(uint CardNo); + public delegate double n_get_list_serialDelegate(uint CardNo, out uint SetNo); + public delegate void time_updateDelegate(); + public delegate void set_serial_stepDelegate(uint No, uint Step); + public delegate void select_serial_setDelegate(uint No); + public delegate void set_serialDelegate(uint No); + public delegate double get_serialDelegate(); + public delegate double get_list_serialDelegate(out uint SetNo); + public delegate void n_write_io_port_maskDelegate(uint CardNo, uint Value, uint Mask); + public delegate void n_write_8bit_portDelegate(uint CardNo, uint Value); + public delegate uint n_read_io_portDelegate(uint CardNo); + public delegate uint n_read_io_port_bufferDelegate(uint CardNo, uint Index, out uint Value, out int XPos, out int YPos, out uint Time); + public delegate uint n_get_io_statusDelegate(uint CardNo); + public delegate uint n_read_analog_inDelegate(uint CardNo); + public delegate void n_write_da_xDelegate(uint CardNo, uint x, uint Value); + public delegate void n_set_laser_off_defaultDelegate(uint CardNo, uint AnalogOut1, uint AnalogOut2, uint DigitalOut); + public delegate void n_set_port_defaultDelegate(uint CardNo, uint Port, uint Value); + public delegate void n_write_io_portDelegate(uint CardNo, uint Value); + public delegate void n_write_da_1Delegate(uint CardNo, uint Value); + public delegate void n_write_da_2Delegate(uint CardNo, uint Value); + public delegate void write_io_port_maskDelegate(uint Value, uint Mask); + public delegate void write_8bit_portDelegate(uint Value); + public delegate uint read_io_portDelegate(); + public delegate uint read_io_port_bufferDelegate(uint Index, out uint Value, out int XPos, out int YPos, out uint Time); + public delegate uint get_io_statusDelegate(); + public delegate uint read_analog_inDelegate(); + public delegate void write_da_xDelegate(uint x, uint Value); + public delegate void set_laser_off_defaultDelegate(uint AnalogOut1, uint AnalogOut2, uint DigitalOut); + public delegate void set_port_defaultDelegate(uint Port, uint Value); + public delegate void write_io_portDelegate(uint Value); + public delegate void write_da_1Delegate(uint Value); + public delegate void write_da_2Delegate(uint Value); + public delegate void n_disable_laserDelegate(uint CardNo); + public delegate void n_enable_laserDelegate(uint CardNo); + public delegate void n_laser_signal_onDelegate(uint CardNo); + public delegate void n_laser_signal_offDelegate(uint CardNo); + public delegate void n_set_standbyDelegate(uint CardNo, uint HalfPeriod, uint PulseLength); + public delegate void n_set_laser_pulses_ctrlDelegate(uint CardNo, uint HalfPeriod, uint PulseLength); + public delegate void n_set_firstpulse_killerDelegate(uint CardNo, uint Length); + public delegate void n_set_qswitch_delayDelegate(uint CardNo, uint Delay); + public delegate void n_set_laser_modeDelegate(uint CardNo, uint Mode); + public delegate void n_set_laser_controlDelegate(uint CardNo, uint Ctrl); + public delegate void n_set_laser_pin_outDelegate(uint CardNo, uint Pins); + public delegate uint n_get_laser_pin_inDelegate(uint CardNo); + public delegate void n_set_softstart_levelDelegate(uint CardNo, uint Index, uint Level); + public delegate void n_set_softstart_modeDelegate(uint CardNo, uint Mode, uint Number, uint Delay); + public delegate uint n_set_auto_laser_controlDelegate(uint CardNo, uint Ctrl, uint Value, uint Mode, uint MinValue, uint MaxValue); + public delegate uint n_set_auto_laser_paramsDelegate(uint CardNo, uint Ctrl, uint Value, uint MinValue, uint MaxValue); + public delegate int n_load_auto_laser_controlDelegate(uint CardNo, string Name, uint No); + public delegate int n_load_position_controlDelegate(uint CardNo, string Name, uint No); + public delegate void n_set_default_pixelDelegate(uint CardNo, uint PulseLength); + public delegate void n_get_standbyDelegate(uint CardNo, out uint HalfPeriod, out uint PulseLength); + public delegate void n_set_pulse_pickingDelegate(uint CardNo, uint No); + public delegate void n_set_pulse_picking_lengthDelegate(uint CardNo, uint Length); + public delegate void n_config_laser_signalsDelegate(uint CardNo, uint Config); + public delegate void disable_laserDelegate(); + public delegate void enable_laserDelegate(); + public delegate void laser_signal_onDelegate(); + public delegate void laser_signal_offDelegate(); + public delegate void set_standbyDelegate(uint HalfPeriod, uint PulseLength); + public delegate void set_laser_pulses_ctrlDelegate(uint HalfPeriod, uint PulseLength); + public delegate void set_firstpulse_killerDelegate(uint Length); + public delegate void set_qswitch_delayDelegate(uint Delay); + public delegate void set_laser_modeDelegate(uint Mode); + public delegate void set_laser_controlDelegate(uint Ctrl); + public delegate void set_laser_pin_outDelegate(uint Pins); + public delegate uint get_laser_pin_inDelegate(); + public delegate void set_softstart_levelDelegate(uint Index, uint Level); + public delegate void set_softstart_modeDelegate(uint Mode, uint Number, uint Delay); + public delegate uint set_auto_laser_controlDelegate(uint Ctrl, uint Value, uint Mode, uint MinValue, uint MaxValue); + public delegate uint set_auto_laser_paramsDelegate(uint Ctrl, uint Value, uint MinValue, uint MaxValue); + public delegate int load_auto_laser_controlDelegate(string Name, uint No); + public delegate int load_position_controlDelegate(string Name, uint No); + public delegate void set_default_pixelDelegate(uint PulseLength); + public delegate void get_standbyDelegate(out uint HalfPeriod, out uint PulseLength); + public delegate void set_pulse_pickingDelegate(uint No); + public delegate void set_pulse_picking_lengthDelegate(uint Length); + public delegate void config_laser_signalsDelegate(uint Config); + public delegate void n_set_ext_start_delayDelegate(uint CardNo, int Delay, uint EncoderNo); + public delegate void n_set_rot_centerDelegate(uint CardNo, int X, int Y); + public delegate void n_simulate_encoderDelegate(uint CardNo, uint EncoderNo); + public delegate uint n_get_marking_infoDelegate(uint CardNo); + public delegate void n_set_encoder_speed_ctrlDelegate(uint CardNo, uint EncoderNo, double Speed, double Smooth); + public delegate void n_set_mcbsp_xDelegate(uint CardNo, double ScaleX); + public delegate void n_set_mcbsp_yDelegate(uint CardNo, double ScaleY); + public delegate void n_set_mcbsp_rotDelegate(uint CardNo, double Resolution); + public delegate void n_set_mcbsp_matrixDelegate(uint CardNo); + public delegate void n_set_mcbsp_global_xDelegate(uint CardNo, double ScaleX); + public delegate void n_set_mcbsp_global_yDelegate(uint CardNo, double ScaleY); + public delegate void n_set_mcbsp_global_rotDelegate(uint CardNo, double Resolution); + public delegate void n_set_mcbsp_global_matrixDelegate(uint CardNo); + public delegate void n_set_mcbsp_inDelegate(uint CardNo, uint Mode, double Scale); + public delegate void n_set_multi_mcbsp_inDelegate(uint CardNo, uint Ctrl, uint P, uint Mode); + public delegate void n_set_fly_tracking_errorDelegate(uint CardNo, uint TrackingErrorX, uint TrackingErrorY); + public delegate int n_load_fly_2d_tableDelegate(uint CardNo, string Name, uint No); + public delegate void n_init_fly_2dDelegate(uint CardNo, int OffsetX, int OffsetY); + public delegate void n_get_fly_2d_offsetDelegate(uint CardNo, out int OffsetX, out int OffsetY); + public delegate void n_get_encoderDelegate(uint CardNo, out int Encoder0, out int Encoder1); + public delegate void n_read_encoderDelegate(uint CardNo, out int Encoder0_1, out int Encoder1_1, out int Encoder0_2, out int Encoder1_2); + public delegate int n_get_mcbspDelegate(uint CardNo); + public delegate int n_read_mcbspDelegate(uint CardNo, uint No); + public delegate int n_read_multi_mcbspDelegate(uint CardNo, uint No); + public delegate void n_clear_fly_overflow_ctrlDelegate(uint CardNo, uint Mode); + public delegate void set_ext_start_delayDelegate(int Delay, uint EncoderNo); + public delegate void set_rot_centerDelegate(int X, int Y); + public delegate void simulate_encoderDelegate(uint EncoderNo); + public delegate uint get_marking_infoDelegate(); + public delegate void set_encoder_speed_ctrlDelegate(uint EncoderNo, double Speed, double Smooth); + public delegate void set_mcbsp_xDelegate(double ScaleX); + public delegate void set_mcbsp_yDelegate(double ScaleY); + public delegate void set_mcbsp_rotDelegate(double Resolution); + public delegate void set_mcbsp_matrixDelegate(); + public delegate void set_mcbsp_global_xDelegate(double ScaleX); + public delegate void set_mcbsp_global_yDelegate(double ScaleY); + public delegate void set_mcbsp_global_rotDelegate(double Resolution); + public delegate void set_mcbsp_global_matrixDelegate(); + public delegate void set_mcbsp_inDelegate(uint Mode, double Scale); + public delegate void set_multi_mcbsp_inDelegate(uint Ctrl, uint P, uint Mode); + public delegate void set_fly_tracking_errorDelegate(uint TrackingErrorX, uint TrackingErrorY); + public delegate int load_fly_2d_tableDelegate(string Name, uint No); + public delegate void init_fly_2dDelegate(int OffsetX, int OffsetY); + public delegate void get_fly_2d_offsetDelegate(out int OffsetX, out int OffsetY); + public delegate void get_encoderDelegate(out int Encoder0, out int Encoder1); + public delegate void read_encoderDelegate(out int Encoder0_1, out int Encoder1_1, out int Encoder0_2, out int Encoder1_2); + public delegate int get_mcbspDelegate(); + public delegate int read_mcbspDelegate(uint No); + public delegate int read_multi_mcbspDelegate(uint No); + public delegate void clear_fly_overflow_ctrlDelegate(uint Mode); + public delegate double n_get_timeDelegate(uint CardNo); + public delegate double n_get_lap_timeDelegate(uint CardNo); + public delegate void n_measurement_statusDelegate(uint CardNo, out uint Busy, out uint Pos); + public delegate void n_get_waveformDelegate(uint CardNo, uint Channel, uint Number, [MarshalAs(UnmanagedType.LPArray, SizeConst = SampleArraySize)]int[] Ptr); + public delegate void n_bounce_suppDelegate(uint CardNo, uint Length); + public delegate void n_home_position_xyzDelegate(uint CardNo, int XHome, int YHome, int ZHome); + public delegate void n_home_positionDelegate(uint CardNo, int XHome, int YHome); + public delegate void n_rs232_configDelegate(uint CardNo, uint BaudRate); + public delegate void n_rs232_write_dataDelegate(uint CardNo, uint Data); + public delegate void n_rs232_write_textDelegate(uint CardNo, string pData); + public delegate uint n_rs232_read_dataDelegate(uint CardNo); + public delegate uint n_set_mcbsp_freqDelegate(uint CardNo, uint Freq); + public delegate void n_mcbsp_initDelegate(uint CardNo, uint XDelay, uint RDelay); + public delegate void n_mcbsp_init_spiDelegate(uint CardNo, uint ClockLevel, uint ClockDelay); + public delegate uint n_get_overrunDelegate(uint CardNo); + public delegate uint n_get_master_slaveDelegate(uint CardNo); + public delegate void n_get_transformDelegate(uint CardNo, uint Number, [MarshalAs(UnmanagedType.LPArray, SizeConst = SampleArraySize)]int[] Ptr1, [MarshalAs(UnmanagedType.LPArray, SizeConst = SampleArraySize)]int[] Ptr2, [MarshalAs(UnmanagedType.LPArray, SizeConst = TransformSize)]uint[] Ptr, uint Code); + public delegate void n_stop_triggerDelegate(uint CardNo); + public delegate void n_move_toDelegate(uint CardNo, uint Pos); + public delegate void n_set_enduring_wobbelDelegate(uint CardNo, uint CenterX, uint CenterY, uint CenterZ, uint LimitHi, uint LimitLo, double ScaleX, double ScaleY, double ScaleZ); + public delegate void n_set_enduring_wobbel_2Delegate(uint CardNo, uint CenterX, uint CenterY, uint CenterZ, uint LimitHi, uint LimitLo, double ScaleX, double ScaleY, double ScaleZ); + public delegate void n_set_free_variableDelegate(uint CardNo, uint VarNo, uint Value); + public delegate uint n_get_free_variableDelegate(uint CardNo, uint VarNo); + public delegate void n_set_mcbsp_out_ptrDelegate(uint CardNo, uint Number, [MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize2)]uint[] SignalPtr); + public delegate void n_periodic_toggleDelegate(uint CardNo, uint Port, uint Mask, uint P1, uint P2, uint Count, uint Start); + public delegate uint n_load_wobbel_powerDelegate(uint CardNo, uint TableNo, [MarshalAs(UnmanagedType.LPArray, SizeConst = SampleArraySize)]int[] Ptr, int Flag); + public delegate double get_timeDelegate(); + public delegate double get_lap_timeDelegate(); + public delegate void measurement_statusDelegate(out uint Busy, out uint Pos); + public delegate void get_waveformDelegate(uint Channel, uint Number, [MarshalAs(UnmanagedType.LPArray, SizeConst = SampleArraySize)]int[] Ptr); + public delegate void bounce_suppDelegate(uint Length); + public delegate void home_position_xyzDelegate(int XHome, int YHome, int ZHome); + public delegate void home_positionDelegate(int XHome, int YHome); + public delegate void rs232_configDelegate(uint BaudRate); + public delegate void rs232_write_dataDelegate(uint Data); + public delegate void rs232_write_textDelegate(string pData); + public delegate uint rs232_read_dataDelegate(); + public delegate uint set_mcbsp_freqDelegate(uint Freq); + public delegate void mcbsp_initDelegate(uint XDelay, uint RDelay); + public delegate void mcbsp_init_spiDelegate(uint ClockLevel, uint ClockDelay); + public delegate uint get_overrunDelegate(); + public delegate uint get_master_slaveDelegate(); + public delegate void get_transformDelegate(uint Number, [MarshalAs(UnmanagedType.LPArray, SizeConst = SampleArraySize)]int[] Ptr1, [MarshalAs(UnmanagedType.LPArray, SizeConst = SampleArraySize)]int[] Ptr2, [MarshalAs(UnmanagedType.LPArray, SizeConst = TransformSize)]uint[] Ptr, uint Code); + public delegate void stop_triggerDelegate(); + public delegate void move_toDelegate(uint Pos); + public delegate void set_enduring_wobbelDelegate(uint CenterX, uint CenterY, uint CenterZ, uint LimitHi, uint LimitLo, double ScaleX, double ScaleY, double ScaleZ); + public delegate void set_enduring_wobbel_2Delegate(uint CenterX, uint CenterY, uint CenterZ, uint LimitHi, uint LimitLo, double ScaleX, double ScaleY, double ScaleZ); + public delegate void set_free_variableDelegate(uint VarNo, uint Value); + public delegate uint get_free_variableDelegate(uint VarNo); + public delegate void set_mcbsp_out_ptrDelegate(uint Number, [MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize2)]uint[] SignalPtr); + public delegate void periodic_toggleDelegate(uint Port, uint Mask, uint P1, uint P2, uint Count, uint Start); + public delegate uint load_wobbel_powerDelegate(uint TableNo, [MarshalAs(UnmanagedType.LPArray, SizeConst = SampleArraySize)]int[] Ptr, int Flag); + public delegate void n_set_defocusDelegate(uint CardNo, int Shift); + public delegate void n_set_defocus_offsetDelegate(uint CardNo, int Shift); + public delegate void n_goto_xyzDelegate(uint CardNo, int X, int Y, int Z); + public delegate void n_set_zoomDelegate(uint CardNo, uint Zoom); + public delegate void n_goto_xyDelegate(uint CardNo, int X, int Y); + public delegate int n_get_z_distanceDelegate(uint CardNo, int X, int Y, int Z); + public delegate void set_defocusDelegate(int Shift); + public delegate void set_defocus_offsetDelegate(int Shift); + public delegate void goto_xyzDelegate(int X, int Y, int Z); + public delegate void goto_xyDelegate(int X, int Y); + public delegate void set_zoomDelegate(uint Zoom); + public delegate int get_z_distanceDelegate(int X, int Y, int Z); + public delegate void n_set_offset_xyzDelegate(uint CardNo, uint HeadNo, int XOffset, int YOffset, int ZOffset, uint at_once); + public delegate void n_set_offsetDelegate(uint CardNo, uint HeadNo, int XOffset, int YOffset, uint at_once); + public delegate void n_set_matrixDelegate(uint CardNo, uint HeadNo, double M11, double M12, double M21, double M22, uint at_once); + public delegate void n_set_angleDelegate(uint CardNo, uint HeadNo, double Angle, uint at_once); + public delegate void n_set_scaleDelegate(uint CardNo, uint HeadNo, double Scale, uint at_once); + public delegate void n_apply_mcbspDelegate(uint CardNo, uint HeadNo, uint at_once); + public delegate uint n_upload_transformDelegate(uint CardNo, uint HeadNo, [MarshalAs(UnmanagedType.LPArray, SizeConst = TransformSize)]uint[] Ptr); + public delegate void set_offset_xyzDelegate(uint HeadNo, int XOffset, int YOffset, int ZOffset, uint at_once); + public delegate void set_offsetDelegate(uint HeadNo, int XOffset, int YOffset, uint at_once); + public delegate void set_matrixDelegate(uint HeadNo, double M11, double M12, double M21, double M22, uint at_once); + public delegate void set_angleDelegate(uint HeadNo, double Angle, uint at_once); + public delegate void set_scaleDelegate(uint HeadNo, double Scale, uint at_once); + public delegate void apply_mcbspDelegate(uint HeadNo, uint at_once); + public delegate uint upload_transformDelegate(uint HeadNo, [MarshalAs(UnmanagedType.LPArray, SizeConst = TransformSize)]uint[] Ptr); + public delegate uint transformDelegate(out int Sig1, out int Sig2, [MarshalAs(UnmanagedType.LPArray, SizeConst = TransformSize)]uint[] Ptr, uint Code); + public delegate void n_set_delay_modeDelegate(uint CardNo, uint VarPoly, uint DirectMove3D, uint EdgeLevel, uint MinJumpDelay, uint JumpLengthLimit); + public delegate void n_set_jump_speed_ctrlDelegate(uint CardNo, double Speed); + public delegate void n_set_mark_speed_ctrlDelegate(uint CardNo, double Speed); + public delegate void n_set_sky_writing_paraDelegate(uint CardNo, double Timelag, int LaserOnShift, uint Nprev, uint Npost); + public delegate void n_set_sky_writing_limitDelegate(uint CardNo, double CosAngle); + public delegate void n_set_sky_writing_modeDelegate(uint CardNo, uint Mode); + public delegate int n_load_varpolydelayDelegate(uint CardNo, string Name, uint No); + public delegate void n_set_hiDelegate(uint CardNo, uint HeadNo, double GalvoGainX, double GalvoGainY, int GalvoOffsetX, int GalvoOffsetY); + public delegate void n_get_hi_posDelegate(uint CardNo, uint HeadNo, out int X1, out int X2, out int Y1, out int Y2); + public delegate uint n_auto_calDelegate(uint CardNo, uint HeadNo, uint Command); + public delegate uint n_get_auto_calDelegate(uint CardNo, uint HeadNo); + public delegate uint n_write_hi_posDelegate(uint CardNo, uint HeadNo, int X1, int X2, int Y1, int Y2); + public delegate void n_set_sky_writingDelegate(uint CardNo, double Timelag, int LaserOnShift); + public delegate void n_get_hi_dataDelegate(uint CardNo, out int X1, out int X2, out int Y1, out int Y2); + public delegate void set_delay_modeDelegate(uint VarPoly, uint DirectMove3D, uint EdgeLevel, uint MinJumpDelay, uint JumpLengthLimit); + public delegate void set_jump_speed_ctrlDelegate(double Speed); + public delegate void set_mark_speed_ctrlDelegate(double Speed); + public delegate void set_sky_writing_paraDelegate(double Timelag, int LaserOnShift, uint Nprev, uint Npost); + public delegate void set_sky_writing_limitDelegate(double CosAngle); + public delegate void set_sky_writing_modeDelegate(uint Mode); + public delegate int load_varpolydelayDelegate(string Name, uint No); + public delegate void set_hiDelegate(uint HeadNo, double GalvoGainX, double GalvoGainY, int GalvoOffsetX, int GalvoOffsetY); + public delegate void get_hi_posDelegate(uint HeadNo, out int X1, out int X2, out int Y1, out int Y2); + public delegate uint auto_calDelegate(uint HeadNo, uint Command); + public delegate uint get_auto_calDelegate(uint HeadNo); + public delegate uint write_hi_posDelegate(uint HeadNo, int X1, int X2, int Y1, int Y2); + public delegate void set_sky_writingDelegate(double Timelag, int LaserOnShift); + public delegate void get_hi_dataDelegate(out int X1, out int X2, out int Y1, out int Y2); + public delegate void n_send_user_dataDelegate(uint CardNo, uint Head, uint Axis, int Data0, int Data1, int Data2, int Data3, int Data4); + public delegate int n_read_user_dataDelegate(uint CardNo, uint Head, uint Axis, out int Data0, out int Data1, out int Data2, out int Data3, out int Data4); + public delegate void n_control_commandDelegate(uint CardNo, uint Head, uint Axis, uint Data); + public delegate int n_get_valueDelegate(uint CardNo, uint Signal); + public delegate void n_get_valuesDelegate(uint CardNo, [MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize)]uint[] SignalPtr, [MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize)]int[] ResultPtr); + public delegate void n_get_galvo_controlsDelegate(uint CardNo, [MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize2)]int[] SignalPtr, [MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize)]int[] ResultPtr); + public delegate uint n_get_head_statusDelegate(uint CardNo, uint Head); + public delegate int n_set_jump_modeDelegate(uint CardNo, int Flag, uint Length, int VA1, int VA2, int VB1, int VB2, int JA1, int JA2, int JB1, int JB2); + public delegate int n_load_jump_table_offsetDelegate(uint CardNo, string Name, uint No, uint PosAck, int Offset, uint MinDelay, uint MaxDelay, uint ListPos); + public delegate uint n_get_jump_tableDelegate(uint CardNo, [MarshalAs(UnmanagedType.LPArray, SizeConst = TableSize)]ushort[] Ptr); + public delegate uint n_set_jump_tableDelegate(uint CardNo, [MarshalAs(UnmanagedType.LPArray, SizeConst = TableSize)]ushort[] Ptr); + public delegate int n_load_jump_tableDelegate(uint CardNo, string Name, uint No, uint PosAck, uint MinDelay, uint MaxDelay, uint ListPos); + public delegate void send_user_dataDelegate(uint Head, uint Axis, int Data0, int Data1, int Data2, int Data3, int Data4); + public delegate int read_user_dataDelegate(uint Head, uint Axis, out int Data0, out int Data1, out int Data2, out int Data3, out int Data4); + public delegate void control_commandDelegate(uint Head, uint Axis, uint Data); + public delegate int get_valueDelegate(uint Signal); + public delegate void get_valuesDelegate([MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize)]uint[] SignalPtr, [MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize)]int[] ResultPtr); + public delegate void get_galvo_controlsDelegate([MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize2)]int[] SignalPtr, [MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize)]int[] ResultPtr); + public delegate uint get_head_statusDelegate(uint Head); + public delegate int set_jump_modeDelegate(int Flag, uint Length, int VA1, int VA2, int VB1, int VB2, int JA1, int JA2, int JB1, int JB2); + public delegate int load_jump_table_offsetDelegate(string Name, uint No, uint PosAck, int Offset, uint MinDelay, uint MaxDelay, uint ListPos); + public delegate uint get_jump_tableDelegate([MarshalAs(UnmanagedType.LPArray, SizeConst = TableSize)]ushort[] Ptr); + public delegate uint set_jump_tableDelegate([MarshalAs(UnmanagedType.LPArray, SizeConst = TableSize)]ushort[] Ptr); + public delegate int load_jump_tableDelegate(string Name, uint No, uint PosAck, uint MinDelay, uint MaxDelay, uint ListPos); + public delegate void n_stepper_initDelegate(uint CardNo, uint No, uint Period, int Dir, int Pos, uint Tol, uint Enable, uint WaitTime); + public delegate void n_stepper_enableDelegate(uint CardNo, int Enable1, int Enable2); + public delegate void n_stepper_disable_switchDelegate(uint CardNo, int Disable1, int Disable2); + public delegate void n_stepper_controlDelegate(uint CardNo, int Period1, int Period2); + public delegate void n_stepper_abs_noDelegate(uint CardNo, uint No, int Pos, uint WaitTime); + public delegate void n_stepper_rel_noDelegate(uint CardNo, uint No, int dPos, uint WaitTime); + public delegate void n_stepper_absDelegate(uint CardNo, int Pos1, int Pos2, uint WaitTime); + public delegate void n_stepper_relDelegate(uint CardNo, int dPos1, int dPos2, uint WaitTime); + public delegate void n_get_stepper_statusDelegate(uint CardNo, out uint Status1, out int Pos1, out uint Status2, out int Pos2); + public delegate void stepper_initDelegate(uint No, uint Period, int Dir, int Pos, uint Tol, uint Enable, uint WaitTime); + public delegate void stepper_enableDelegate(int Enable1, int Enable2); + public delegate void stepper_disable_switchDelegate(int Disable1, int Disable2); + public delegate void stepper_controlDelegate(int Period1, int Period2); + public delegate void stepper_abs_noDelegate(uint No, int Pos, uint WaitTime); + public delegate void stepper_rel_noDelegate(uint No, int dPos, uint WaitTime); + public delegate void stepper_absDelegate(int Pos1, int Pos2, uint WaitTime); + public delegate void stepper_relDelegate(int dPos1, int dPos2, uint WaitTime); + public delegate void get_stepper_statusDelegate(out uint Status1, out int Pos1, out uint Status2, out int Pos2); + public delegate void n_select_cor_table_listDelegate(uint CardNo, uint HeadA, uint HeadB); + public delegate void select_cor_table_listDelegate(uint HeadA, uint HeadB); + public delegate void n_list_nopDelegate(uint CardNo); + public delegate void n_list_continueDelegate(uint CardNo); + public delegate void n_list_nextDelegate(uint CardNo); + public delegate void n_long_delayDelegate(uint CardNo, uint Delay); + public delegate void n_set_end_of_listDelegate(uint CardNo); + public delegate void n_set_waitDelegate(uint CardNo, uint WaitWord); + public delegate void n_list_jump_posDelegate(uint CardNo, uint Pos); + public delegate void n_list_jump_relDelegate(uint CardNo, int Pos); + public delegate void n_list_repeatDelegate(uint CardNo); + public delegate void n_list_untilDelegate(uint CardNo, uint Number); + public delegate void n_range_checkingDelegate(uint CardNo, uint HeadNo, uint Mode, uint Data); + public delegate void n_set_list_jumpDelegate(uint CardNo, uint Pos); + public delegate void list_nopDelegate(); + public delegate void list_continueDelegate(); + public delegate void list_nextDelegate(); + public delegate void long_delayDelegate(uint Delay); + public delegate void set_end_of_listDelegate(); + public delegate void set_waitDelegate(uint WaitWord); + public delegate void list_jump_posDelegate(uint Pos); + public delegate void list_jump_relDelegate(int Pos); + public delegate void list_repeatDelegate(); + public delegate void list_untilDelegate(uint Number); + public delegate void range_checkingDelegate(uint HeadNo, uint Mode, uint Data); + public delegate void set_list_jumpDelegate(uint Pos); + public delegate void n_set_extstartpos_listDelegate(uint CardNo, uint Pos); + public delegate void n_set_control_mode_listDelegate(uint CardNo, uint Mode); + public delegate void n_simulate_ext_startDelegate(uint CardNo, int Delay, uint EncoderNo); + public delegate void set_extstartpos_listDelegate(uint Pos); + public delegate void set_control_mode_listDelegate(uint Mode); + public delegate void simulate_ext_startDelegate(int Delay, uint EncoderNo); + public delegate void n_list_returnDelegate(uint CardNo); + public delegate void n_list_call_repeatDelegate(uint CardNo, uint Pos, uint Number); + public delegate void n_list_call_abs_repeatDelegate(uint CardNo, uint Pos, uint Number); + public delegate void n_list_callDelegate(uint CardNo, uint Pos); + public delegate void n_list_call_absDelegate(uint CardNo, uint Pos); + public delegate void n_sub_call_repeatDelegate(uint CardNo, uint Index, uint Number); + public delegate void n_sub_call_abs_repeatDelegate(uint CardNo, uint Index, uint Number); + public delegate void n_sub_callDelegate(uint CardNo, uint Index); + public delegate void n_sub_call_absDelegate(uint CardNo, uint Index); + public delegate void list_returnDelegate(); + public delegate void list_call_repeatDelegate(uint Pos, uint Number); + public delegate void list_call_abs_repeatDelegate(uint Pos, uint Number); + public delegate void list_callDelegate(uint Pos); + public delegate void list_call_absDelegate(uint Pos); + public delegate void sub_call_repeatDelegate(uint Index, uint Number); + public delegate void sub_call_abs_repeatDelegate(uint Index, uint Number); + public delegate void sub_callDelegate(uint Index); + public delegate void sub_call_absDelegate(uint Index); + public delegate void n_list_call_condDelegate(uint CardNo, uint Mask1, uint Mask0, uint Pos); + public delegate void n_list_call_abs_condDelegate(uint CardNo, uint Mask1, uint Mask0, uint Pos); + public delegate void n_sub_call_condDelegate(uint CardNo, uint Mask1, uint Mask0, uint Pos); + public delegate void n_sub_call_abs_condDelegate(uint CardNo, uint Mask1, uint Mask0, uint Pos); + public delegate void n_list_jump_pos_condDelegate(uint CardNo, uint Mask1, uint Mask0, uint Index); + public delegate void n_list_jump_rel_condDelegate(uint CardNo, uint Mask1, uint Mask0, int Index); + public delegate void n_if_condDelegate(uint CardNo, uint Mask1, uint Mask0); + public delegate void n_if_not_condDelegate(uint CardNo, uint Mask1, uint Mask0); + public delegate void n_if_pin_condDelegate(uint CardNo, uint Mask1, uint Mask0); + public delegate void n_if_not_pin_condDelegate(uint CardNo, uint Mask1, uint Mask0); + public delegate void n_switch_ioportDelegate(uint CardNo, uint MaskBits, uint ShiftBits); + public delegate void n_list_jump_condDelegate(uint CardNo, uint Mask1, uint Mask0, uint Pos); + public delegate void list_call_condDelegate(uint Mask1, uint Mask0, uint Pos); + public delegate void list_call_abs_condDelegate(uint Mask1, uint Mask0, uint Pos); + public delegate void sub_call_condDelegate(uint Mask1, uint Mask0, uint Index); + public delegate void sub_call_abs_condDelegate(uint Mask1, uint Mask0, uint Index); + public delegate void list_jump_pos_condDelegate(uint Mask1, uint Mask0, uint Pos); + public delegate void list_jump_rel_condDelegate(uint Mask1, uint Mask0, int Pos); + public delegate void if_condDelegate(uint Mask1, uint Mask0); + public delegate void if_not_condDelegate(uint Mask1, uint Mask0); + public delegate void if_pin_condDelegate(uint Mask1, uint Mask0); + public delegate void if_not_pin_condDelegate(uint Mask1, uint Mask0); + public delegate void switch_ioportDelegate(uint MaskBits, uint ShiftBits); + public delegate void list_jump_condDelegate(uint Mask1, uint Mask0, uint Pos); + public delegate void n_select_char_setDelegate(uint CardNo, uint No); + public delegate void n_mark_textDelegate(uint CardNo, string Text); + public delegate void n_mark_text_absDelegate(uint CardNo, string Text); + public delegate void n_mark_charDelegate(uint CardNo, uint Char); + public delegate void n_mark_char_absDelegate(uint CardNo, uint Char); + public delegate void select_char_setDelegate(uint No); + public delegate void mark_textDelegate(string Text); + public delegate void mark_text_absDelegate(string Text); + public delegate void mark_charDelegate(uint Char); + public delegate void mark_char_absDelegate(uint Char); + public delegate void n_mark_serialDelegate(uint CardNo, uint Mode, uint Digits); + public delegate void n_mark_serial_absDelegate(uint CardNo, uint Mode, uint Digits); + public delegate void n_mark_dateDelegate(uint CardNo, uint Part, uint Mode); + public delegate void n_mark_date_absDelegate(uint CardNo, uint Part, uint Mode); + public delegate void n_mark_timeDelegate(uint CardNo, uint Part, uint Mode); + public delegate void n_mark_time_absDelegate(uint CardNo, uint Part, uint Mode); + public delegate void n_select_serial_set_listDelegate(uint CardNo, uint No); + public delegate void n_set_serial_step_listDelegate(uint CardNo, uint No, uint Step); + public delegate void n_time_fix_f_offDelegate(uint CardNo, uint FirstDay, uint Offset); + public delegate void n_time_fix_fDelegate(uint CardNo, uint FirstDay); + public delegate void n_time_fixDelegate(uint CardNo); + public delegate void mark_serialDelegate(uint Mode, uint Digits); + public delegate void mark_serial_absDelegate(uint Mode, uint Digits); + public delegate void mark_dateDelegate(uint Part, uint Mode); + public delegate void mark_date_absDelegate(uint Part, uint Mode); + public delegate void mark_timeDelegate(uint Part, uint Mode); + public delegate void mark_time_absDelegate(uint Part, uint Mode); + public delegate void time_fix_f_offDelegate(uint FirstDay, uint Offset); + public delegate void select_serial_set_listDelegate(uint No); + public delegate void set_serial_step_listDelegate(uint No, uint Step); + public delegate void time_fix_fDelegate(uint FirstDay); + public delegate void time_fixDelegate(); + public delegate void n_clear_io_cond_listDelegate(uint CardNo, uint Mask1, uint Mask0, uint Mask); + public delegate void n_set_io_cond_listDelegate(uint CardNo, uint Mask1, uint Mask0, uint Mask); + public delegate void n_write_io_port_mask_listDelegate(uint CardNo, uint Value, uint Mask); + public delegate void n_write_8bit_port_listDelegate(uint CardNo, uint Value); + public delegate void n_read_io_port_listDelegate(uint CardNo); + public delegate void n_write_da_x_listDelegate(uint CardNo, uint x, uint Value); + public delegate void n_write_io_port_listDelegate(uint CardNo, uint Value); + public delegate void n_write_da_1_listDelegate(uint CardNo, uint Value); + public delegate void n_write_da_2_listDelegate(uint CardNo, uint Value); + public delegate void clear_io_cond_listDelegate(uint Mask1, uint Mask0, uint MaskClear); + public delegate void set_io_cond_listDelegate(uint Mask1, uint Mask0, uint MaskSet); + public delegate void write_io_port_mask_listDelegate(uint Value, uint Mask); + public delegate void write_8bit_port_listDelegate(uint Value); + public delegate void read_io_port_listDelegate(); + public delegate void write_da_x_listDelegate(uint x, uint Value); + public delegate void write_io_port_listDelegate(uint Value); + public delegate void write_da_1_listDelegate(uint Value); + public delegate void write_da_2_listDelegate(uint Value); + public delegate void n_laser_signal_on_listDelegate(uint CardNo); + public delegate void n_laser_signal_off_listDelegate(uint CardNo); + public delegate void n_para_laser_on_pulses_listDelegate(uint CardNo, uint Period, uint Pulses, uint P); + public delegate void n_laser_on_pulses_listDelegate(uint CardNo, uint Period, uint Pulses); + public delegate void n_laser_on_listDelegate(uint CardNo, uint Period); + public delegate void n_set_laser_delaysDelegate(uint CardNo, int LaserOnDelay, uint LaserOffDelay); + public delegate void n_set_standby_listDelegate(uint CardNo, uint HalfPeriod, uint PulseLength); + public delegate void n_set_laser_pulsesDelegate(uint CardNo, uint HalfPeriod, uint PulseLength); + public delegate void n_set_firstpulse_killer_listDelegate(uint CardNo, uint Length); + public delegate void n_set_qswitch_delay_listDelegate(uint CardNo, uint Delay); + public delegate void n_set_laser_pin_out_listDelegate(uint CardNo, uint Pins); + public delegate void n_set_vector_controlDelegate(uint CardNo, uint Ctrl, uint Value); + public delegate void n_set_default_pixel_listDelegate(uint CardNo, uint PulseLength); + public delegate void n_set_port_default_listDelegate(uint CardNo, uint Port, uint Value); + public delegate void n_set_auto_laser_params_listDelegate(uint CardNo, uint Ctrl, uint Value, uint MinValue, uint MaxValue); + public delegate void n_set_pulse_picking_listDelegate(uint CardNo, uint No); + public delegate void n_set_softstart_level_listDelegate(uint CardNo, uint Index, uint Level1, uint Level2, uint Level3); + public delegate void n_set_softstart_mode_listDelegate(uint CardNo, uint Mode, uint Number, uint Delay); + public delegate void n_config_laser_signals_listDelegate(uint CardNo, uint Config); + public delegate void n_set_laser_timingDelegate(uint CardNo, uint HalfPeriod, uint PulseLength1, uint PulseLength2, uint TimeBase); + public delegate void laser_signal_on_listDelegate(); + public delegate void laser_signal_off_listDelegate(); + public delegate void para_laser_on_pulses_listDelegate(uint Period, uint Pulses, uint P); + public delegate void laser_on_pulses_listDelegate(uint Period, uint Pulses); + public delegate void laser_on_listDelegate(uint Period); + public delegate void set_laser_delaysDelegate(int LaserOnDelay, uint LaserOffDelay); + public delegate void set_standby_listDelegate(uint HalfPeriod, uint PulseLength); + public delegate void set_laser_pulsesDelegate(uint HalfPeriod, uint PulseLength); + public delegate void set_firstpulse_killer_listDelegate(uint Length); + public delegate void set_qswitch_delay_listDelegate(uint Delay); + public delegate void set_laser_pin_out_listDelegate(uint Pins); + public delegate void set_vector_controlDelegate(uint Ctrl, uint Value); + public delegate void set_default_pixel_listDelegate(uint PulseLength); + public delegate void set_port_default_listDelegate(uint Port, uint Value); + public delegate void set_auto_laser_params_listDelegate(uint Ctrl, uint Value, uint MinValue, uint MaxValue); + public delegate void set_pulse_picking_listDelegate(uint No); + public delegate void set_softstart_level_listDelegate(uint Index, uint Level1, uint Level2, uint Level3); + public delegate void set_softstart_mode_listDelegate(uint Mode, uint Number, uint Delay); + public delegate void config_laser_signals_listDelegate(uint Config); + public delegate void set_laser_timingDelegate(uint HalfPeriod, uint PulseLength1, uint PulseLength2, uint TimeBase); + public delegate void n_fly_return_zDelegate(uint CardNo, int X, int Y, int Z); + public delegate void n_fly_returnDelegate(uint CardNo, int X, int Y); + public delegate void n_set_rot_center_listDelegate(uint CardNo, int X, int Y); + public delegate void n_set_ext_start_delay_listDelegate(uint CardNo, int Delay, uint EncoderNo); + public delegate void n_set_fly_xDelegate(uint CardNo, double ScaleX); + public delegate void n_set_fly_yDelegate(uint CardNo, double ScaleY); + public delegate void n_set_fly_zDelegate(uint CardNo, double ScaleZ, uint EndoderNo); + public delegate void n_set_fly_rotDelegate(uint CardNo, double Resolution); + public delegate void n_set_fly_2dDelegate(uint CardNo, double ScaleX, double ScaleY); + public delegate void n_set_fly_x_posDelegate(uint CardNo, double ScaleX); + public delegate void n_set_fly_y_posDelegate(uint CardNo, double ScaleY); + public delegate void n_set_fly_rot_posDelegate(uint CardNo, double Resolution); + public delegate void n_set_fly_limitsDelegate(uint CardNo, int Xmin, int Xmax, int Ymin, int Ymax); + public delegate void n_set_fly_limits_zDelegate(uint CardNo, int Zmin, int Zmax); + public delegate void n_if_fly_x_overflowDelegate(uint CardNo, int Mode); + public delegate void n_if_fly_y_overflowDelegate(uint CardNo, int Mode); + public delegate void n_if_fly_z_overflowDelegate(uint CardNo, int Mode); + public delegate void n_if_not_fly_x_overflowDelegate(uint CardNo, int Mode); + public delegate void n_if_not_fly_y_overflowDelegate(uint CardNo, int Mode); + public delegate void n_if_not_fly_z_overflowDelegate(uint CardNo, int Mode); + public delegate void n_clear_fly_overflowDelegate(uint CardNo, uint Mode); + public delegate void n_set_mcbsp_x_listDelegate(uint CardNo, double ScaleX); + public delegate void n_set_mcbsp_y_listDelegate(uint CardNo, double ScaleY); + public delegate void n_set_mcbsp_rot_listDelegate(uint CardNo, double Resolution); + public delegate void n_set_mcbsp_matrix_listDelegate(uint CardNo); + public delegate void n_set_mcbsp_global_x_listDelegate(uint CardNo, double ScaleX); + public delegate void n_set_mcbsp_global_y_listDelegate(uint CardNo, double ScaleY); + public delegate void n_set_mcbsp_global_rot_listDelegate(uint CardNo, double Resolution); + public delegate void n_set_mcbsp_global_matrix_listDelegate(uint CardNo); + public delegate void n_set_mcbsp_in_listDelegate(uint CardNo, uint Mode, double Scale); + public delegate void n_set_multi_mcbsp_in_listDelegate(uint CardNo, uint Ctrl, uint P, uint Mode); + public delegate void n_wait_for_encoder_modeDelegate(uint CardNo, int Value, uint EncoderNo, int Mode); + public delegate void n_wait_for_mcbspDelegate(uint CardNo, uint Axis, int Value, int Mode); + public delegate void n_set_encoder_speedDelegate(uint CardNo, uint EncoderNo, double Speed, double Smooth); + public delegate void n_get_mcbsp_listDelegate(uint CardNo); + public delegate void n_store_encoderDelegate(uint CardNo, uint Pos); + public delegate void n_wait_for_encoder_in_rangeDelegate(uint CardNo, int EncXmin, int EncXmax, int EncYmin, int EncYmax); + public delegate void n_activate_fly_xyDelegate(uint CardNo, double ScaleX, double ScaleY); + public delegate void n_activate_fly_2dDelegate(uint CardNo, double ScaleX, double ScaleY); + public delegate void n_activate_fly_xy_encoderDelegate(uint CardNo, double ScaleX, double ScaleY, int EncX, int EncY); + public delegate void n_activate_fly_2d_encoderDelegate(uint CardNo, double ScaleX, double ScaleY, int EncX, int EncY); + public delegate void n_if_not_activatedDelegate(uint CardNo); + public delegate void n_park_positionDelegate(uint CardNo, uint Mode, int X, int Y); + public delegate void n_park_returnDelegate(uint CardNo, uint Mode, int X, int Y); + public delegate void n_wait_for_encoderDelegate(uint CardNo, int Value, uint EncoderNo); + public delegate void fly_return_zDelegate(int X, int Y, int Z); + public delegate void fly_returnDelegate(int X, int Y); + public delegate void set_rot_center_listDelegate(int X, int Y); + public delegate void set_ext_start_delay_listDelegate(int Delay, uint EncoderNo); + public delegate void set_fly_xDelegate(double ScaleX); + public delegate void set_fly_yDelegate(double ScaleY); + public delegate void set_fly_zDelegate(double ScaleZ, uint EncoderNo); + public delegate void set_fly_rotDelegate(double Resolution); + public delegate void set_fly_2dDelegate(double ScaleX, double ScaleY); + public delegate void set_fly_x_posDelegate(double ScaleX); + public delegate void set_fly_y_posDelegate(double ScaleY); + public delegate void set_fly_rot_posDelegate(double Resolution); + public delegate void set_fly_limitsDelegate(int Xmin, int Xmax, int Ymin, int Ymax); + public delegate void set_fly_limits_zDelegate(int Zmin, int Zmax); + public delegate void if_fly_x_overflowDelegate(int Mode); + public delegate void if_fly_y_overflowDelegate(int Mode); + public delegate void if_fly_z_overflowDelegate(int Mode); + public delegate void if_not_fly_x_overflowDelegate(int Mode); + public delegate void if_not_fly_y_overflowDelegate(int Mode); + public delegate void if_not_fly_z_overflowDelegate(int Mode); + public delegate void clear_fly_overflowDelegate(uint Mode); + public delegate void set_mcbsp_x_listDelegate(double ScaleX); + public delegate void set_mcbsp_y_listDelegate(double ScaleY); + public delegate void set_mcbsp_rot_listDelegate(double Resolution); + public delegate void set_mcbsp_matrix_listDelegate(); + public delegate void set_mcbsp_global_x_listDelegate(double ScaleX); + public delegate void set_mcbsp_global_y_listDelegate(double ScaleY); + public delegate void set_mcbsp_global_rot_listDelegate(double Resolution); + public delegate void set_mcbsp_global_matrix_listDelegate(); + public delegate void set_mcbsp_in_listDelegate(uint Mode, double Scale); + public delegate void set_multi_mcbsp_in_listDelegate(uint Ctrl, uint P, uint Mode); + public delegate void wait_for_encoder_modeDelegate(int Value, uint EncoderNo, int Mode); + public delegate void wait_for_mcbspDelegate(uint Axis, int Value, int Mode); + public delegate void set_encoder_speedDelegate(uint EncoderNo, double Speed, double Smooth); + public delegate void get_mcbsp_listDelegate(); + public delegate void store_encoderDelegate(uint Pos); + public delegate void wait_for_encoder_in_rangeDelegate(int EncXmin, int EncXmax, int EncYmin, int EncYmax); + public delegate void activate_fly_xyDelegate(double ScaleX, double ScaleY); + public delegate void activate_fly_2dDelegate(double ScaleX, double ScaleY); + public delegate void activate_fly_xy_encoderDelegate(double ScaleX, double ScaleY, int EncX, int EncY); + public delegate void activate_fly_2d_encoderDelegate(double ScaleX, double ScaleY, int EncX, int EncY); + public delegate void if_not_activatedDelegate(); + public delegate void park_positionDelegate(uint Mode, int X, int Y); + public delegate void park_returnDelegate(uint Mode, int X, int Y); + public delegate void wait_for_encoderDelegate(int Value, uint EncoderNo); + public delegate void n_save_and_restart_timerDelegate(uint CardNo); + public delegate void n_set_wobbelDelegate(uint CardNo, uint Transversal, uint Longitudinal, double Freq); + public delegate void n_set_wobbel_modeDelegate(uint CardNo, uint Transversal, uint Longitudinal, double Freq, int Mode); + public delegate void n_set_wobbel_mode_phaseDelegate(uint CardNo, uint Transversal, uint Longitudinal, double Freq, int Mode, double Phase); + public delegate void n_set_wobbel_directionDelegate(uint CardNo, int dX, int dY); + public delegate void n_set_wobbel_controlDelegate(uint CardNo, uint Ctrl, uint Value, uint MinValue, uint MaxValue); + public delegate void n_set_wobbel_vectorDelegate(uint CardNo, double dTrans, double dLong, uint Period, double dPower); + public delegate void n_set_wobbel_offsetDelegate(uint CardNo, int OffsetTrans, int OffsetLong); + public delegate void n_load_wobbel_power_listDelegate(uint CardNo, uint TableNo, [MarshalAs(UnmanagedType.LPArray, SizeConst = SampleArraySize)]int[] Ptr, int Flag); + public delegate void n_set_wobbel_power_angleDelegate(uint CardNo, uint Angle); + public delegate void n_set_triggerDelegate(uint CardNo, uint Period, uint Signal1, uint Signal2); + public delegate void n_set_trigger4Delegate(uint CardNo, uint Period, uint Signal1, uint Signal2, uint Signal3, uint Signal4); + public delegate void n_set_pixel_line_3dDelegate(uint CardNo, uint Channel, uint HalfPeriod, double dX, double dY, double dZ); + public delegate void n_set_pixel_lineDelegate(uint CardNo, uint Channel, uint HalfPeriod, double dX, double dY); + public delegate void n_stretch_pixel_lineDelegate(uint CardNo, uint Delay, uint Period); + public delegate void n_set_n_pixelDelegate(uint CardNo, uint PulseLength, uint AnalogOut, uint Number); + public delegate void n_set_pixelDelegate(uint CardNo, uint PulseLength, uint AnalogOut); + public delegate void n_rs232_write_text_listDelegate(uint CardNo, string pData); + public delegate void n_set_mcbsp_outDelegate(uint CardNo, uint Signal1, uint Signal2); + public delegate void n_set_mcbsp_out_ptr_listDelegate(uint CardNo, uint Number, [MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize2)]uint[] SignalPtr); + public delegate void n_cammingDelegate(uint CardNo, uint FirstPos, uint NPos, uint No, uint Ctrl, double Scale, uint Code); + public delegate void n_periodic_toggle_listDelegate(uint CardNo, uint Port, uint Mask, uint P1, uint P2, uint Count, uint Start); + public delegate void n_micro_vector_abs_3dDelegate(uint CardNo, int X, int Y, int Z, int LasOn, int LasOf); + public delegate void n_micro_vector_rel_3dDelegate(uint CardNo, int dX, int dY, int dZ, int LasOn, int LasOf); + public delegate void n_micro_vector_absDelegate(uint CardNo, int X, int Y, int LasOn, int LasOf); + public delegate void n_micro_vector_relDelegate(uint CardNo, int dX, int dY, int LasOn, int LasOf); + public delegate void n_set_free_variable_listDelegate(uint CardNo, uint VarNo, uint Value); + public delegate void n_jump_abs_drill_2Delegate(uint CardNo, int X, int Y, uint DrillTime, int XOff, int YOff); + public delegate void n_jump_rel_drill_2Delegate(uint CardNo, int dX, int dY, uint DrillTime, int XOff, int YOff); + public delegate void n_jump_abs_drillDelegate(uint CardNo, int X, int Y, uint DrillTime); + public delegate void n_jump_rel_drillDelegate(uint CardNo, int dX, int dY, uint DrillTime); + public delegate void save_and_restart_timerDelegate(); + public delegate void set_wobbelDelegate(uint Transversal, uint Longitudinal, double Freq); + public delegate void set_wobbel_modeDelegate(uint Transversal, uint Longitudinal, double Freq, int Mode); + public delegate void set_wobbel_mode_phaseDelegate(uint Transversal, uint Longitudinal, double Freq, int Mode, double Phase); + public delegate void set_wobbel_directionDelegate(int dX, int dY); + public delegate void set_wobbel_controlDelegate(uint Ctrl, uint Value, uint MinValue, uint MaxValue); + public delegate void set_wobbel_vectorDelegate(double dTrans, double dLong, uint Period, double dPower); + public delegate void set_wobbel_offsetDelegate(int OffsetTrans, int OffsetLong); + public delegate void load_wobbel_power_listDelegate(uint TableNo, [MarshalAs(UnmanagedType.LPArray, SizeConst = SampleArraySize)]int[] Ptr, int Flag); + public delegate void set_wobbel_power_angleDelegate(uint Angle); + public delegate void set_triggerDelegate(uint Period, uint Signal1, uint Signal2); + public delegate void set_trigger4Delegate(uint Period, uint Signal1, uint Signal2, uint Signal3, uint Signal4); + public delegate void set_pixel_line_3dDelegate(uint Channel, uint HalfPeriod, double dX, double dY, double dZ); + public delegate void set_pixel_lineDelegate(uint Channel, uint HalfPeriod, double dX, double dY); + public delegate void stretch_pixel_lineDelegate(uint Delay, uint Period); + public delegate void set_n_pixelDelegate(uint PulseLength, uint AnalogOut, uint Number); + public delegate void set_pixelDelegate(uint PulseLength, uint AnalogOut); + public delegate void rs232_write_text_listDelegate(string pData); + public delegate void set_mcbsp_outDelegate(uint Signal1, uint Signal2); + public delegate void set_mcbsp_out_ptr_listDelegate(uint Number, [MarshalAs(UnmanagedType.LPArray, SizeConst = SignalSize2)]uint[] SignalPtr); + public delegate void cammingDelegate(uint FirstPos, uint NPos, uint No, uint Ctrl, double Scale, uint Code); + public delegate void periodic_toggle_listDelegate(uint Port, uint Mask, uint P1, uint P2, uint Count, uint Start); + public delegate void micro_vector_abs_3dDelegate(int X, int Y, int Z, int LasOn, int LasOf); + public delegate void micro_vector_rel_3dDelegate(int dX, int dY, int dZ, int LasOn, int LasOf); + public delegate void micro_vector_absDelegate(int X, int Y, int LasOn, int LasOf); + public delegate void micro_vector_relDelegate(int dX, int dY, int LasOn, int LasOf); + public delegate void set_free_variable_listDelegate(uint VarNo, uint Value); + public delegate void jump_abs_drill_2Delegate(int X, int Y, uint DrillTime, int XOff, int YOff); + public delegate void jump_rel_drill_2Delegate(int dX, int dY, uint DrillTime, int XOff, int YOff); + public delegate void jump_abs_drillDelegate(int X, int Y, uint DrillTime); + public delegate void jump_rel_drillDelegate(int dX, int dY, uint DrillTime); + public delegate void n_timed_mark_abs_3dDelegate(uint CardNo, int X, int Y, int Z, double T); + public delegate void n_timed_mark_rel_3dDelegate(uint CardNo, int dX, int dY, int dZ, double T); + public delegate void n_timed_mark_absDelegate(uint CardNo, int X, int Y, double T); + public delegate void n_timed_mark_relDelegate(uint CardNo, int dX, int dY, double T); + public delegate void timed_mark_abs_3dDelegate(int X, int Y, int Z, double T); + public delegate void timed_mark_rel_3dDelegate(int dX, int dY, int dZ, double T); + public delegate void timed_mark_absDelegate(int X, int Y, double T); + public delegate void timed_mark_relDelegate(int dX, int dY, double T); + public delegate void n_mark_abs_3dDelegate(uint CardNo, int X, int Y, int Z); + public delegate void n_mark_rel_3dDelegate(uint CardNo, int dX, int dY, int dZ); + public delegate void n_mark_absDelegate(uint CardNo, int X, int Y); + public delegate void n_mark_relDelegate(uint CardNo, int dX, int dY); + public delegate void mark_abs_3dDelegate(int X, int Y, int Z); + public delegate void mark_rel_3dDelegate(int dX, int dY, int dZ); + public delegate void mark_absDelegate(int X, int Y); + public delegate void mark_relDelegate(int dX, int dY); + public delegate void n_timed_jump_abs_3dDelegate(uint CardNo, int X, int Y, int Z, double T); + public delegate void n_timed_jump_rel_3dDelegate(uint CardNo, int dX, int dY, int dZ, double T); + public delegate void n_timed_jump_absDelegate(uint CardNo, int X, int Y, double T); + public delegate void n_timed_jump_relDelegate(uint CardNo, int dX, int dY, double T); + public delegate void timed_jump_abs_3dDelegate(int X, int Y, int Z, double T); + public delegate void timed_jump_rel_3dDelegate(int dX, int dY, int dZ, double T); + public delegate void timed_jump_absDelegate(int X, int Y, double T); + public delegate void timed_jump_relDelegate(int dX, int dY, double T); + public delegate void n_jump_abs_3dDelegate(uint CardNo, int X, int Y, int Z); + public delegate void n_jump_rel_3dDelegate(uint CardNo, int dX, int dY, int dZ); + public delegate void n_jump_absDelegate(uint CardNo, int X, int Y); + public delegate void n_jump_relDelegate(uint CardNo, int dX, int dY); + public delegate void jump_abs_3dDelegate(int X, int Y, int Z); + public delegate void jump_rel_3dDelegate(int dX, int dY, int dZ); + public delegate void jump_absDelegate(int X, int Y); + public delegate void jump_relDelegate(int dX, int dY); + public delegate void n_para_mark_abs_3dDelegate(uint CardNo, int X, int Y, int Z, uint P); + public delegate void n_para_mark_rel_3dDelegate(uint CardNo, int dX, int dY, int dZ, uint P); + public delegate void n_para_mark_absDelegate(uint CardNo, int X, int Y, uint P); + public delegate void n_para_mark_relDelegate(uint CardNo, int dX, int dY, uint P); + public delegate void para_mark_abs_3dDelegate(int X, int Y, int Z, uint P); + public delegate void para_mark_rel_3dDelegate(int dX, int dY, int dZ, uint P); + public delegate void para_mark_absDelegate(int X, int Y, uint P); + public delegate void para_mark_relDelegate(int dX, int dY, uint P); + public delegate void n_para_jump_abs_3dDelegate(uint CardNo, int X, int Y, int Z, uint P); + public delegate void n_para_jump_rel_3dDelegate(uint CardNo, int dX, int dY, int dZ, uint P); + public delegate void n_para_jump_absDelegate(uint CardNo, int X, int Y, uint P); + public delegate void n_para_jump_relDelegate(uint CardNo, int dX, int dY, uint P); + public delegate void para_jump_abs_3dDelegate(int X, int Y, int Z, uint P); + public delegate void para_jump_rel_3dDelegate(int dX, int dY, int dZ, uint P); + public delegate void para_jump_absDelegate(int X, int Y, uint P); + public delegate void para_jump_relDelegate(int dX, int dY, uint P); + public delegate void n_timed_para_mark_abs_3dDelegate(uint CardNo, int X, int Y, int Z, uint P, double T); + public delegate void n_timed_para_mark_rel_3dDelegate(uint CardNo, int dX, int dY, int dZ, uint P, double T); + public delegate void n_timed_para_jump_abs_3dDelegate(uint CardNo, int X, int Y, int Z, uint P, double T); + public delegate void n_timed_para_jump_rel_3dDelegate(uint CardNo, int dX, int dY, int dZ, uint P, double T); + public delegate void n_timed_para_mark_absDelegate(uint CardNo, int X, int Y, uint P, double T); + public delegate void n_timed_para_mark_relDelegate(uint CardNo, int dX, int dY, uint P, double T); + public delegate void n_timed_para_jump_absDelegate(uint CardNo, int X, int Y, uint P, double T); + public delegate void n_timed_para_jump_relDelegate(uint CardNo, int dX, int dY, uint P, double T); + public delegate void timed_para_mark_abs_3dDelegate(int X, int Y, int Z, uint P, double T); + public delegate void timed_para_mark_rel_3dDelegate(int dX, int dY, int dZ, uint P, double T); + public delegate void timed_para_jump_abs_3dDelegate(int X, int Y, int Z, uint P, double T); + public delegate void timed_para_jump_rel_3dDelegate(int dX, int dY, int dZ, uint P, double T); + public delegate void timed_para_mark_absDelegate(int X, int Y, uint P, double T); + public delegate void timed_para_mark_relDelegate(int dX, int dY, uint P, double T); + public delegate void timed_para_jump_absDelegate(int X, int Y, uint P, double T); + public delegate void timed_para_jump_relDelegate(int dX, int dY, uint P, double T); + public delegate void n_set_defocus_listDelegate(uint CardNo, int Shift); + public delegate void n_set_defocus_offset_listDelegate(uint CardNo, int Shift); + public delegate void n_set_zoom_listDelegate(uint CardNo, uint Zoom); + public delegate void set_defocus_listDelegate(int Shift); + public delegate void set_defocus_offset_listDelegate(int Shift); + public delegate void set_zoom_listDelegate(uint Zoom); + public delegate void n_timed_arc_absDelegate(uint CardNo, int X, int Y, double Angle, double T); + public delegate void n_timed_arc_relDelegate(uint CardNo, int dX, int dY, double Angle, double T); + public delegate void timed_arc_absDelegate(int X, int Y, double Angle, double T); + public delegate void timed_arc_relDelegate(int dX, int dY, double Angle, double T); + public delegate void n_arc_abs_3dDelegate(uint CardNo, int X, int Y, int Z, double Angle); + public delegate void n_arc_rel_3dDelegate(uint CardNo, int dX, int dY, int dZ, double Angle); + public delegate void n_arc_absDelegate(uint CardNo, int X, int Y, double Angle); + public delegate void n_arc_relDelegate(uint CardNo, int dX, int dY, double Angle); + public delegate void n_set_ellipseDelegate(uint CardNo, uint A, uint B, double Phi0, double Phi); + public delegate void n_mark_ellipse_absDelegate(uint CardNo, int X, int Y, double Alpha); + public delegate void n_mark_ellipse_relDelegate(uint CardNo, int dX, int dY, double Alpha); + public delegate void arc_abs_3dDelegate(int X, int Y, int Z, double Angle); + public delegate void arc_rel_3dDelegate(int dX, int dY, int dZ, double Angle); + public delegate void arc_absDelegate(int X, int Y, double Angle); + public delegate void arc_relDelegate(int dX, int dY, double Angle); + public delegate void set_ellipseDelegate(uint A, uint B, double Phi0, double Phi); + public delegate void mark_ellipse_absDelegate(int X, int Y, double Alpha); + public delegate void mark_ellipse_relDelegate(int dX, int dY, double Alpha); + public delegate void n_set_offset_xyz_listDelegate(uint CardNo, uint HeadNo, int XOffset, int YOffset, int ZOffset, uint at_once); + public delegate void n_set_offset_listDelegate(uint CardNo, uint HeadNo, int XOffset, int YOffset, uint at_once); + public delegate void n_set_matrix_listDelegate(uint CardNo, uint HeadNo, uint Ind1, uint Ind2, double Mij, uint at_once); + public delegate void n_set_angle_listDelegate(uint CardNo, uint HeadNo, double Angle, uint at_once); + public delegate void n_set_scale_listDelegate(uint CardNo, uint HeadNo, double Scale, uint at_once); + public delegate void n_apply_mcbsp_listDelegate(uint CardNo, uint HeadNo, uint at_once); + public delegate void set_offset_xyz_listDelegate(uint HeadNo, int XOffset, int YOffset, int ZOffset, uint at_once); + public delegate void set_offset_listDelegate(uint HeadNo, int XOffset, int YOffset, uint at_once); + public delegate void set_matrix_listDelegate(uint HeadNo, uint Ind1, uint Ind2, double Mij, uint at_once); + public delegate void set_angle_listDelegate(uint HeadNo, double Angle, uint at_once); + public delegate void set_scale_listDelegate(uint HeadNo, double Scale, uint at_once); + public delegate void apply_mcbsp_listDelegate(uint HeadNo, uint at_once); + public delegate void n_set_mark_speedDelegate(uint CardNo, double Speed); + public delegate void n_set_jump_speedDelegate(uint CardNo, double Speed); + public delegate void n_set_sky_writing_para_listDelegate(uint CardNo, double Timelag, int LaserOnShift, uint Nprev, uint Npost); + public delegate void n_set_sky_writing_listDelegate(uint CardNo, double Timelag, int LaserOnShift); + public delegate void n_set_sky_writing_limit_listDelegate(uint CardNo, double CosAngle); + public delegate void n_set_sky_writing_mode_listDelegate(uint CardNo, uint Mode); + public delegate void n_set_scanner_delaysDelegate(uint CardNo, uint Jump, uint Mark, uint Polygon); + public delegate void n_set_jump_mode_listDelegate(uint CardNo, int Flag); + public delegate void n_enduring_wobbelDelegate(uint CardNo); + public delegate void n_set_delay_mode_listDelegate(uint CardNo, uint VarPoly, uint DirectMove3D, uint EdgeLevel, uint MinJumpDelay, uint JumpLengthLimit); + public delegate void set_mark_speedDelegate(double Speed); + public delegate void set_jump_speedDelegate(double Speed); + public delegate void set_sky_writing_para_listDelegate(double Timelag, int LaserOnShift, uint Nprev, uint Npost); + public delegate void set_sky_writing_listDelegate(double Timelag, int LaserOnShift); + public delegate void set_sky_writing_limit_listDelegate(double CosAngle); + public delegate void set_sky_writing_mode_listDelegate(uint Mode); + public delegate void set_scanner_delaysDelegate(uint Jump, uint Mark, uint Polygon); + public delegate void set_jump_mode_listDelegate(int Flag); + public delegate void enduring_wobbelDelegate(); + public delegate void set_delay_mode_listDelegate(uint VarPoly, uint DirectMove3D, uint EdgeLevel, uint MinJumpDelay, uint JumpLengthLimit); + public delegate void n_stepper_enable_listDelegate(uint CardNo, int Enable1, int Enable2); + public delegate void n_stepper_control_listDelegate(uint CardNo, int Period1, int Period2); + public delegate void n_stepper_abs_no_listDelegate(uint CardNo, uint No, int Pos); + public delegate void n_stepper_rel_no_listDelegate(uint CardNo, uint No, int dPos); + public delegate void n_stepper_abs_listDelegate(uint CardNo, int Pos1, int Pos2); + public delegate void n_stepper_rel_listDelegate(uint CardNo, int dPos1, int dPos2); + public delegate void n_stepper_waitDelegate(uint CardNo, uint No); + public delegate void stepper_enable_listDelegate(int Enable1, int Enable2); + public delegate void stepper_control_listDelegate(int Period1, int Period2); + public delegate void stepper_abs_no_listDelegate(uint No, int Pos); + public delegate void stepper_rel_no_listDelegate(uint No, int dPos); + public delegate void stepper_abs_listDelegate(int Pos1, int Pos2); + public delegate void stepper_rel_listDelegate(int dPos1, int dPos2); + public delegate void stepper_waitDelegate(uint No); + #endregion + + #region RTC5UserFunctions + /// <summary> + /// uint init_rtc5_dll(); + /// </summary> + public static init_rtc5_dllDelegate init_rtc5_dll; + + /// <summary> + /// void free_rtc5_dll(); + /// </summary> + public static free_rtc5_dllDelegate free_rtc5_dll; + + /// <summary> + /// void set_rtc4_mode(); + /// </summary> + public static set_rtc4_modeDelegate set_rtc4_mode; + + /// <summary> + /// void set_rtc5_mode(); + /// </summary> + public static set_rtc5_modeDelegate set_rtc5_mode; + + /// <summary> + /// uint get_rtc_mode(); + /// </summary> + public static get_rtc_modeDelegate get_rtc_mode; + + /// <summary> + /// uint n_get_error(uint CardNo); + /// </summary> + public static n_get_errorDelegate n_get_error; + + /// <summary> + /// uint n_get_last_error(uint CardNo); + /// </summary> + public static n_get_last_errorDelegate n_get_last_error; + + /// <summary> + /// void n_reset_error(uint CardNo, uint Code); + /// </summary> + public static n_reset_errorDelegate n_reset_error; + + /// <summary> + /// uint n_set_verify(uint CardNo, uint Verify); + /// </summary> + public static n_set_verifyDelegate n_set_verify; + + /// <summary> + /// uint get_error(); + /// </summary> + public static get_errorDelegate get_error; + + /// <summary> + /// uint get_last_error(); + /// </summary> + public static get_last_errorDelegate get_last_error; + + /// <summary> + /// void reset_error(uint Code); + /// </summary> + public static reset_errorDelegate reset_error; + + /// <summary> + /// uint set_verify(uint Verify); + /// </summary> + public static set_verifyDelegate set_verify; + + /// <summary> + /// uint verify_checksum(string Name); + /// </summary> + public static verify_checksumDelegate verify_checksum; + + /// <summary> + /// uint read_abc_from_file(string Name, out double A, out double B, out double C); + /// </summary> + public static read_abc_from_fileDelegate read_abc_from_file; + + /// <summary> + /// uint write_abc_to_file(string Name, double A, double B, double C); + /// </summary> + public static write_abc_to_fileDelegate write_abc_to_file; + + /// <summary> + /// uint rtc5_count_cards(); + /// </summary> + public static rtc5_count_cardsDelegate rtc5_count_cards; + + /// <summary> + /// uint acquire_rtc(uint CardNo); + /// </summary> + public static acquire_rtcDelegate acquire_rtc; + + /// <summary> + /// uint release_rtc(uint CardNo); + /// </summary> + public static release_rtcDelegate release_rtc; + + /// <summary> + /// uint select_rtc(uint CardNo); + /// </summary> + public static select_rtcDelegate select_rtc; + + /// <summary> + /// uint get_dll_version(); + /// </summary> + public static get_dll_versionDelegate get_dll_version; + + /// <summary> + /// uint n_get_serial_number(uint CardNo); + /// </summary> + public static n_get_serial_numberDelegate n_get_serial_number; + + /// <summary> + /// uint n_get_hex_version(uint CardNo); + /// </summary> + public static n_get_hex_versionDelegate n_get_hex_version; + + /// <summary> + /// uint n_get_rtc_version(uint CardNo); + /// </summary> + public static n_get_rtc_versionDelegate n_get_rtc_version; + + /// <summary> + /// uint get_serial_number(); + /// </summary> + public static get_serial_numberDelegate get_serial_number; + + /// <summary> + /// uint get_hex_version(); + /// </summary> + public static get_hex_versionDelegate get_hex_version; + + /// <summary> + /// uint get_rtc_version(); + /// </summary> + public static get_rtc_versionDelegate get_rtc_version; + + /// <summary> + /// uint n_load_program_file(uint CardNo, string Path); + /// </summary> + public static n_load_program_fileDelegate n_load_program_file; + + /// <summary> + /// void n_sync_slaves(uint CardNo); + /// </summary> + public static n_sync_slavesDelegate n_sync_slaves; + + /// <summary> + /// uint n_get_sync_status(uint CardNo); + /// </summary> + public static n_get_sync_statusDelegate n_get_sync_status; + + /// <summary> + /// uint n_load_correction_file(uint CardNo, string Name, uint No, uint Dim); + /// </summary> + public static n_load_correction_fileDelegate n_load_correction_file; + + /// <summary> + /// uint n_load_zoom_correction_file(uint CardNo, string Name, uint No); + /// </summary> + public static n_load_zoom_correction_fileDelegate n_load_zoom_correction_file; + + /// <summary> + /// uint n_load_z_table(uint CardNo, double A, double B, double C); + /// </summary> + public static n_load_z_tableDelegate n_load_z_table; + + /// <summary> + /// void n_select_cor_table(uint CardNo, uint HeadA, uint HeadB); + /// </summary> + public static n_select_cor_tableDelegate n_select_cor_table; + + /// <summary> + /// uint n_set_dsp_mode(uint CardNo, uint Mode); + /// </summary> + public static n_set_dsp_modeDelegate n_set_dsp_mode; + + /// <summary> + /// int n_load_stretch_table(uint CardNo, string Name, int No); + /// </summary> + public static n_load_stretch_tableDelegate n_load_stretch_table; + + /// <summary> + /// void n_number_of_correction_tables(uint CardNo, uint Number); + /// </summary> + public static n_number_of_correction_tablesDelegate n_number_of_correction_tables; + + /// <summary> + /// double n_get_head_para(uint CardNo, uint HeadNo, uint ParaNo); + /// </summary> + public static n_get_head_paraDelegate n_get_head_para; + + /// <summary> + /// double n_get_table_para(uint CardNo, uint TableNo, uint ParaNo); + /// </summary> + public static n_get_table_paraDelegate n_get_table_para; + + /// <summary> + /// uint load_program_file(string Path); + /// </summary> + public static load_program_fileDelegate load_program_file; + + /// <summary> + /// void sync_slaves(); + /// </summary> + public static sync_slavesDelegate sync_slaves; + + /// <summary> + /// uint get_sync_status(); + /// </summary> + public static get_sync_statusDelegate get_sync_status; + + /// <summary> + /// uint load_correction_file(string Name, uint No, uint Dim); + /// </summary> + public static load_correction_fileDelegate load_correction_file; + + /// <summary> + /// uint load_zoom_correction_file(string Name, uint No); + /// </summary> + public static load_zoom_correction_fileDelegate load_zoom_correction_file; + + /// <summary> + /// uint load_z_table(double A, double B, double C); + /// </summary> + public static load_z_tableDelegate load_z_table; + + /// <summary> + /// void select_cor_table(uint HeadA, uint HeadB); + /// </summary> + public static select_cor_tableDelegate select_cor_table; + + /// <summary> + /// uint set_dsp_mode(uint Mode); + /// </summary> + public static set_dsp_modeDelegate set_dsp_mode; + + /// <summary> + /// int load_stretch_table(string Name, int No); + /// </summary> + public static load_stretch_tableDelegate load_stretch_table; + + /// <summary> + /// void number_of_correction_tables(uint Number); + /// </summary> + public static number_of_correction_tablesDelegate number_of_correction_tables; + + /// <summary> + /// double get_head_para(uint HeadNo, uint ParaNo); + /// </summary> + public static get_head_paraDelegate get_head_para; + + /// <summary> + /// double get_table_para(uint TableNo, uint ParaNo); + /// </summary> + public static get_table_paraDelegate get_table_para; + + /// <summary> + /// void n_config_list(uint CardNo, uint Mem1, uint Mem2); + /// </summary> + public static n_config_listDelegate n_config_list; + + /// <summary> + /// void n_get_config_list(uint CardNo); + /// </summary> + public static n_get_config_listDelegate n_get_config_list; + + /// <summary> + /// uint n_save_disk(uint CardNo, string Name, uint Mode); + /// </summary> + public static n_save_diskDelegate n_save_disk; + + /// <summary> + /// uint n_load_disk(uint CardNo, string Name, uint Mode); + /// </summary> + public static n_load_diskDelegate n_load_disk; + + /// <summary> + /// uint n_get_list_space(uint CardNo); + /// </summary> + public static n_get_list_spaceDelegate n_get_list_space; + + /// <summary> + /// void config_list(uint Mem1, uint Mem2); + /// </summary> + public static config_listDelegate config_list; + + /// <summary> + /// void get_config_list(); + /// </summary> + public static get_config_listDelegate get_config_list; + + /// <summary> + /// uint save_disk(string Name, uint Mode); + /// </summary> + public static save_diskDelegate save_disk; + + /// <summary> + /// uint load_disk(string Name, uint Mode); + /// </summary> + public static load_diskDelegate load_disk; + + /// <summary> + /// uint get_list_space(); + /// </summary> + public static get_list_spaceDelegate get_list_space; + + /// <summary> + /// void n_set_start_list_pos(uint CardNo, uint ListNo, uint Pos); + /// </summary> + public static n_set_start_list_posDelegate n_set_start_list_pos; + + /// <summary> + /// void n_set_start_list(uint CardNo, uint ListNo); + /// </summary> + public static n_set_start_listDelegate n_set_start_list; + + /// <summary> + /// void n_set_start_list_1(uint CardNo); + /// </summary> + public static n_set_start_list_1Delegate n_set_start_list_1; + + /// <summary> + /// void n_set_start_list_2(uint CardNo); + /// </summary> + public static n_set_start_list_2Delegate n_set_start_list_2; + + /// <summary> + /// void n_set_input_pointer(uint CardNo, uint Pos); + /// </summary> + public static n_set_input_pointerDelegate n_set_input_pointer; + + /// <summary> + /// uint n_load_list(uint CardNo, uint ListNo, uint Pos); + /// </summary> + public static n_load_listDelegate n_load_list; + + /// <summary> + /// void n_load_sub(uint CardNo, uint Index); + /// </summary> + public static n_load_subDelegate n_load_sub; + + /// <summary> + /// void n_load_char(uint CardNo, uint Char); + /// </summary> + public static n_load_charDelegate n_load_char; + + /// <summary> + /// void n_load_text_table(uint CardNo, uint Index); + /// </summary> + public static n_load_text_tableDelegate n_load_text_table; + + /// <summary> + /// void n_get_list_pointer(uint CardNo, out uint ListNo, out uint Pos); + /// </summary> + public static n_get_list_pointerDelegate n_get_list_pointer; + + /// <summary> + /// uint n_get_input_pointer(uint CardNo); + /// </summary> + public static n_get_input_pointerDelegate n_get_input_pointer; + + /// <summary> + /// void set_start_list_pos(uint ListNo, uint Pos); + /// </summary> + public static set_start_list_posDelegate set_start_list_pos; + + /// <summary> + /// void set_start_list(uint ListNo); + /// </summary> + public static set_start_listDelegate set_start_list; + + /// <summary> + /// void set_start_list_1(); + /// </summary> + public static set_start_list_1Delegate set_start_list_1; + + /// <summary> + /// void set_start_list_2(); + /// </summary> + public static set_start_list_2Delegate set_start_list_2; + + /// <summary> + /// void set_input_pointer(uint Pos); + /// </summary> + public static set_input_pointerDelegate set_input_pointer; + + /// <summary> + /// uint load_list(uint ListNo, uint Pos); + /// </summary> + public static load_listDelegate load_list; + + /// <summary> + /// void load_sub(uint Index); + /// </summary> + public static load_subDelegate load_sub; + + /// <summary> + /// void load_char(uint Char); + /// </summary> + public static load_charDelegate load_char; + + /// <summary> + /// void load_text_table(uint Index); + /// </summary> + public static load_text_tableDelegate load_text_table; + + /// <summary> + /// void get_list_pointer(out uint ListNo, out uint Pos); + /// </summary> + public static get_list_pointerDelegate get_list_pointer; + + /// <summary> + /// uint get_input_pointer(); + /// </summary> + public static get_input_pointerDelegate get_input_pointer; + + /// <summary> + /// void n_execute_list_pos(uint CardNo, uint ListNo, uint Pos); + /// </summary> + public static n_execute_list_posDelegate n_execute_list_pos; + + /// <summary> + /// void n_execute_at_pointer(uint CardNo, uint Pos); + /// </summary> + public static n_execute_at_pointerDelegate n_execute_at_pointer; + + /// <summary> + /// void n_execute_list(uint CardNo, uint ListNo); + /// </summary> + public static n_execute_listDelegate n_execute_list; + + /// <summary> + /// void n_execute_list_1(uint CardNo); + /// </summary> + public static n_execute_list_1Delegate n_execute_list_1; + + /// <summary> + /// void n_execute_list_2(uint CardNo); + /// </summary> + public static n_execute_list_2Delegate n_execute_list_2; + + /// <summary> + /// void n_get_out_pointer(uint CardNo, out uint ListNo, out uint Pos); + /// </summary> + public static n_get_out_pointerDelegate n_get_out_pointer; + + /// <summary> + /// void execute_list_pos(uint ListNo, uint Pos); + /// </summary> + public static execute_list_posDelegate execute_list_pos; + + /// <summary> + /// void execute_at_pointer(uint Pos); + /// </summary> + public static execute_at_pointerDelegate execute_at_pointer; + + /// <summary> + /// void execute_list(uint ListNo); + /// </summary> + public static execute_listDelegate execute_list; + + /// <summary> + /// void execute_list_1(); + /// </summary> + public static execute_list_1Delegate execute_list_1; + + /// <summary> + /// void execute_list_2(); + /// </summary> + public static execute_list_2Delegate execute_list_2; + + /// <summary> + /// void get_out_pointer(out uint ListNo, out uint Pos); + /// </summary> + public static get_out_pointerDelegate get_out_pointer; + + /// <summary> + /// void n_auto_change_pos(uint CardNo, uint Pos); + /// </summary> + public static n_auto_change_posDelegate n_auto_change_pos; + + /// <summary> + /// void n_start_loop(uint CardNo); + /// </summary> + public static n_start_loopDelegate n_start_loop; + + /// <summary> + /// void n_quit_loop(uint CardNo); + /// </summary> + public static n_quit_loopDelegate n_quit_loop; + + /// <summary> + /// void n_pause_list(uint CardNo); + /// </summary> + public static n_pause_listDelegate n_pause_list; + + /// <summary> + /// void n_restart_list(uint CardNo); + /// </summary> + public static n_restart_listDelegate n_restart_list; + + /// <summary> + /// void n_release_wait(uint CardNo); + /// </summary> + public static n_release_waitDelegate n_release_wait; + + /// <summary> + /// void n_stop_execution(uint CardNo); + /// </summary> + public static n_stop_executionDelegate n_stop_execution; + + /// <summary> + /// void n_set_pause_list_cond(uint CardNo, uint Mask1, uint Mask0); + /// </summary> + public static n_set_pause_list_condDelegate n_set_pause_list_cond; + + /// <summary> + /// void n_set_pause_list_not_cond(uint CardNo, uint Mask1, uint Mask0); + /// </summary> + public static n_set_pause_list_not_condDelegate n_set_pause_list_not_cond; + + /// <summary> + /// void n_auto_change(uint CardNo); + /// </summary> + public static n_auto_changeDelegate n_auto_change; + + /// <summary> + /// void n_stop_list(uint CardNo); + /// </summary> + public static n_stop_listDelegate n_stop_list; + + /// <summary> + /// uint n_get_wait_status(uint CardNo); + /// </summary> + public static n_get_wait_statusDelegate n_get_wait_status; + + /// <summary> + /// uint n_read_status(uint CardNo); + /// </summary> + public static n_read_statusDelegate n_read_status; + + /// <summary> + /// void n_get_status(uint CardNo, out uint Status, out uint Pos); + /// </summary> + public static n_get_statusDelegate n_get_status; + + /// <summary> + /// void auto_change_pos(uint Pos); + /// </summary> + public static auto_change_posDelegate auto_change_pos; + + /// <summary> + /// void start_loop(); + /// </summary> + public static start_loopDelegate start_loop; + + /// <summary> + /// void quit_loop(); + /// </summary> + public static quit_loopDelegate quit_loop; + + /// <summary> + /// void pause_list(); + /// </summary> + public static pause_listDelegate pause_list; + + /// <summary> + /// void restart_list(); + /// </summary> + public static restart_listDelegate restart_list; + + /// <summary> + /// void release_wait(); + /// </summary> + public static release_waitDelegate release_wait; + + /// <summary> + /// void stop_execution(); + /// </summary> + public static stop_executionDelegate stop_execution; + + /// <summary> + /// void set_pause_list_cond(uint Mask1, uint Mask0); + /// </summary> + public static set_pause_list_condDelegate set_pause_list_cond; + + /// <summary> + /// void set_pause_list_not_cond(uint Mask1, uint Mask0); + /// </summary> + public static set_pause_list_not_condDelegate set_pause_list_not_cond; + + /// <summary> + /// void auto_change(); + /// </summary> + public static auto_changeDelegate auto_change; + + /// <summary> + /// void stop_list(); + /// </summary> + public static stop_listDelegate stop_list; + + /// <summary> + /// uint get_wait_status(); + /// </summary> + public static get_wait_statusDelegate get_wait_status; + + /// <summary> + /// uint read_status(); + /// </summary> + public static read_statusDelegate read_status; + + /// <summary> + /// void get_status(out uint Status, out uint Pos); + /// </summary> + public static get_statusDelegate get_status; + + /// <summary> + /// void n_set_extstartpos(uint CardNo, uint Pos); + /// </summary> + public static n_set_extstartposDelegate n_set_extstartpos; + + /// <summary> + /// void n_set_max_counts(uint CardNo, uint Counts); + /// </summary> + public static n_set_max_countsDelegate n_set_max_counts; + + /// <summary> + /// void n_set_control_mode(uint CardNo, uint Mode); + /// </summary> + public static n_set_control_modeDelegate n_set_control_mode; + + /// <summary> + /// void n_simulate_ext_stop(uint CardNo); + /// </summary> + public static n_simulate_ext_stopDelegate n_simulate_ext_stop; + + /// <summary> + /// void n_simulate_ext_start_ctrl(uint CardNo); + /// </summary> + public static n_simulate_ext_start_ctrlDelegate n_simulate_ext_start_ctrl; + + /// <summary> + /// uint n_get_counts(uint CardNo); + /// </summary> + public static n_get_countsDelegate n_get_counts; + + /// <summary> + /// uint n_get_startstop_info(uint CardNo); + /// </summary> + public static n_get_startstop_infoDelegate n_get_startstop_info; + + /// <summary> + /// void set_extstartpos(uint Pos); + /// </summary> + public static set_extstartposDelegate set_extstartpos; + + /// <summary> + /// void set_max_counts(uint Counts); + /// </summary> + public static set_max_countsDelegate set_max_counts; + + /// <summary> + /// void set_control_mode(uint Mode); + /// </summary> + public static set_control_modeDelegate set_control_mode; + + /// <summary> + /// void simulate_ext_stop(); + /// </summary> + public static simulate_ext_stopDelegate simulate_ext_stop; + + /// <summary> + /// void simulate_ext_start_ctrl(); + /// </summary> + public static simulate_ext_start_ctrlDelegate simulate_ext_start_ctrl; + + /// <summary> + /// uint get_counts(); + /// </summary> + public static get_countsDelegate get_counts; + + /// <summary> + /// uint get_startstop_info(); + /// </summary> + public static get_startstop_infoDelegate get_startstop_info; + + /// <summary> + /// void n_copy_dst_src(uint CardNo, uint Dst, uint Src, uint Mode); + /// </summary> + public static n_copy_dst_srcDelegate n_copy_dst_src; + + /// <summary> + /// void n_set_char_pointer(uint CardNo, uint Char, uint Pos); + /// </summary> + public static n_set_char_pointerDelegate n_set_char_pointer; + + /// <summary> + /// void n_set_sub_pointer(uint CardNo, uint Index, uint Pos); + /// </summary> + public static n_set_sub_pointerDelegate n_set_sub_pointer; + + /// <summary> + /// void n_set_text_table_pointer(uint CardNo, uint Index, uint Pos); + /// </summary> + public static n_set_text_table_pointerDelegate n_set_text_table_pointer; + + /// <summary> + /// void n_set_char_table(uint CardNo, uint Index, uint Pos); + /// </summary> + public static n_set_char_tableDelegate n_set_char_table; + + /// <summary> + /// uint n_get_char_pointer(uint CardNo, uint Char); + /// </summary> + public static n_get_char_pointerDelegate n_get_char_pointer; + + /// <summary> + /// uint n_get_sub_pointer(uint CardNo, uint Index); + /// </summary> + public static n_get_sub_pointerDelegate n_get_sub_pointer; + + /// <summary> + /// uint n_get_text_table_pointer(uint CardNo, uint Index); + /// </summary> + public static n_get_text_table_pointerDelegate n_get_text_table_pointer; + + /// <summary> + /// void copy_dst_src(uint Dst, uint Src, uint Mode); + /// </summary> + public static copy_dst_srcDelegate copy_dst_src; + + /// <summary> + /// void set_char_pointer(uint Char, uint Pos); + /// </summary> + public static set_char_pointerDelegate set_char_pointer; + + /// <summary> + /// void set_sub_pointer(uint Index, uint Pos); + /// </summary> + public static set_sub_pointerDelegate set_sub_pointer; + + /// <summary> + /// void set_text_table_pointer(uint Index, uint Pos); + /// </summary> + public static set_text_table_pointerDelegate set_text_table_pointer; + + /// <summary> + /// void set_char_table(uint Index, uint Pos); + /// </summary> + public static set_char_tableDelegate set_char_table; + + /// <summary> + /// uint get_char_pointer(uint Char); + /// </summary> + public static get_char_pointerDelegate get_char_pointer; + + /// <summary> + /// uint get_sub_pointer(uint Index); + /// </summary> + public static get_sub_pointerDelegate get_sub_pointer; + + /// <summary> + /// uint get_text_table_pointer(uint Index); + /// </summary> + public static get_text_table_pointerDelegate get_text_table_pointer; + + /// <summary> + /// void n_time_update(uint CardNo); + /// </summary> + public static n_time_updateDelegate n_time_update; + + /// <summary> + /// void n_set_serial_step(uint CardNo, uint No, uint Step); + /// </summary> + public static n_set_serial_stepDelegate n_set_serial_step; + + /// <summary> + /// void n_select_serial_set(uint CardNo, uint No); + /// </summary> + public static n_select_serial_setDelegate n_select_serial_set; + + /// <summary> + /// void n_set_serial(uint CardNo, uint No); + /// </summary> + public static n_set_serialDelegate n_set_serial; + + /// <summary> + /// double n_get_serial(uint CardNo); + /// </summary> + public static n_get_serialDelegate n_get_serial; + + /// <summary> + /// double n_get_list_serial(uint CardNo, out uint SetNo); + /// </summary> + public static n_get_list_serialDelegate n_get_list_serial; + + /// <summary> + /// void time_update(); + /// </summary> + public static time_updateDelegate time_update; + + /// <summary> + /// void set_serial_step(uint No, uint Step); + /// </summary> + public static set_serial_stepDelegate set_serial_step; + + /// <summary> + /// void select_serial_set(uint No); + /// </summary> + public static select_serial_setDelegate select_serial_set; + + /// <summary> + /// void set_serial(uint No); + /// </summary> + public static set_serialDelegate set_serial; + + /// <summary> + /// double get_serial(); + /// </summary> + public static get_serialDelegate get_serial; + + /// <summary> + /// double get_list_serial(out uint SetNo); + /// </summary> + public static get_list_serialDelegate get_list_serial; + + /// <summary> + /// void n_write_io_port_mask(uint CardNo, uint Value, uint Mask); + /// </summary> + public static n_write_io_port_maskDelegate n_write_io_port_mask; + + /// <summary> + /// void n_write_8bit_port(uint CardNo, uint Value); + /// </summary> + public static n_write_8bit_portDelegate n_write_8bit_port; + + /// <summary> + /// uint n_read_io_port(uint CardNo); + /// </summary> + public static n_read_io_portDelegate n_read_io_port; + + /// <summary> + /// uint n_read_io_port_buffer(uint CardNo, uint Index, out uint Value, out int XPos, out int YPos, out uint Time); + /// </summary> + public static n_read_io_port_bufferDelegate n_read_io_port_buffer; + + /// <summary> + /// uint n_get_io_status(uint CardNo); + /// </summary> + public static n_get_io_statusDelegate n_get_io_status; + + /// <summary> + /// uint n_read_analog_in(uint CardNo); + /// </summary> + public static n_read_analog_inDelegate n_read_analog_in; + + /// <summary> + /// void n_write_da_x(uint CardNo, uint x, uint Value); + /// </summary> + public static n_write_da_xDelegate n_write_da_x; + + /// <summary> + /// void n_set_laser_off_default(uint CardNo, uint AnalogOut1, uint AnalogOut2, uint DigitalOut); + /// </summary> + public static n_set_laser_off_defaultDelegate n_set_laser_off_default; + + /// <summary> + /// void n_set_port_default(uint CardNo, uint Port, uint Value); + /// </summary> + public static n_set_port_defaultDelegate n_set_port_default; + + /// <summary> + /// void n_write_io_port(uint CardNo, uint Value); + /// </summary> + public static n_write_io_portDelegate n_write_io_port; + + /// <summary> + /// void n_write_da_1(uint CardNo, uint Value); + /// </summary> + public static n_write_da_1Delegate n_write_da_1; + + /// <summary> + /// void n_write_da_2(uint CardNo, uint Value); + /// </summary> + public static n_write_da_2Delegate n_write_da_2; + + /// <summary> + /// void write_io_port_mask(uint Value, uint Mask); + /// </summary> + public static write_io_port_maskDelegate write_io_port_mask; + + /// <summary> + /// void write_8bit_port(uint Value); + /// </summary> + public static write_8bit_portDelegate write_8bit_port; + + /// <summary> + /// uint read_io_port(); + /// </summary> + public static read_io_portDelegate read_io_port; + + /// <summary> + /// uint read_io_port_buffer(uint Index, out uint Value, out int XPos, out int YPos, out uint Time); + /// </summary> + public static read_io_port_bufferDelegate read_io_port_buffer; + + /// <summary> + /// uint get_io_status(); + /// </summary> + public static get_io_statusDelegate get_io_status; + + /// <summary> + /// uint read_analog_in(); + /// </summary> + public static read_analog_inDelegate read_analog_in; + + /// <summary> + /// void write_da_x(uint x, uint Value); + /// </summary> + public static write_da_xDelegate write_da_x; + + /// <summary> + /// void set_laser_off_default(uint AnalogOut1, uint AnalogOut2, uint DigitalOut); + /// </summary> + public static set_laser_off_defaultDelegate set_laser_off_default; + + /// <summary> + /// void set_port_default(uint Port, uint Value); + /// </summary> + public static set_port_defaultDelegate set_port_default; + + /// <summary> + /// void write_io_port(uint Value); + /// </summary> + public static write_io_portDelegate write_io_port; + + /// <summary> + /// void write_da_1(uint Value); + /// </summary> + public static write_da_1Delegate write_da_1; + + /// <summary> + /// void write_da_2(uint Value); + /// </summary> + public static write_da_2Delegate write_da_2; + + /// <summary> + /// void n_disable_laser(uint CardNo); + /// </summary> + public static n_disable_laserDelegate n_disable_laser; + + /// <summary> + /// void n_enable_laser(uint CardNo); + /// </summary> + public static n_enable_laserDelegate n_enable_laser; + + /// <summary> + /// void n_laser_signal_on(uint CardNo); + /// </summary> + public static n_laser_signal_onDelegate n_laser_signal_on; + + /// <summary> + /// void n_laser_signal_off(uint CardNo); + /// </summary> + public static n_laser_signal_offDelegate n_laser_signal_off; + + /// <summary> + /// void n_set_standby(uint CardNo, uint HalfPeriod, uint PulseLength); + /// </summary> + public static n_set_standbyDelegate n_set_standby; + + /// <summary> + /// void n_set_laser_pulses_ctrl(uint CardNo, uint HalfPeriod, uint PulseLength); + /// </summary> + public static n_set_laser_pulses_ctrlDelegate n_set_laser_pulses_ctrl; + + /// <summary> + /// void n_set_firstpulse_killer(uint CardNo, uint Length); + /// </summary> + public static n_set_firstpulse_killerDelegate n_set_firstpulse_killer; + + /// <summary> + /// void n_set_qswitch_delay(uint CardNo, uint Delay); + /// </summary> + public static n_set_qswitch_delayDelegate n_set_qswitch_delay; + + /// <summary> + /// void n_set_laser_mode(uint CardNo, uint Mode); + /// </summary> + public static n_set_laser_modeDelegate n_set_laser_mode; + + /// <summary> + /// void n_set_laser_control(uint CardNo, uint Ctrl); + /// </summary> + public static n_set_laser_controlDelegate n_set_laser_control; + + /// <summary> + /// void n_set_laser_pin_out(uint CardNo, uint Pins); + /// </summary> + public static n_set_laser_pin_outDelegate n_set_laser_pin_out; + + /// <summary> + /// uint n_get_laser_pin_in(uint CardNo); + /// </summary> + public static n_get_laser_pin_inDelegate n_get_laser_pin_in; + + /// <summary> + /// void n_set_softstart_level(uint CardNo, uint Index, uint Level); + /// </summary> + public static n_set_softstart_levelDelegate n_set_softstart_level; + + /// <summary> + /// void n_set_softstart_mode(uint CardNo, uint Mode, uint Number, uint Delay); + /// </summary> + public static n_set_softstart_modeDelegate n_set_softstart_mode; + + /// <summary> + /// uint n_set_auto_laser_control(uint CardNo, uint Ctrl, uint Value, uint Mode, uint MinValue, uint MaxValue); + /// </summary> + public static n_set_auto_laser_controlDelegate n_set_auto_laser_control; + + /// <summary> + /// uint n_set_auto_laser_params(uint CardNo, uint Ctrl, uint Value, uint MinValue, uint MaxValue); + /// </summary> + public static n_set_auto_laser_paramsDelegate n_set_auto_laser_params; + + /// <summary> + /// int n_load_auto_laser_control(uint CardNo, string Name, uint No); + /// </summary> + public static n_load_auto_laser_controlDelegate n_load_auto_laser_control; + + /// <summary> + /// int n_load_position_control(uint CardNo, string Name, uint No); + /// </summary> + public static n_load_position_controlDelegate n_load_position_control; + + /// <summary> + /// void n_set_default_pixel(uint CardNo, uint PulseLength); + /// </summary> + public static n_set_default_pixelDelegate n_set_default_pixel; + + /// <summary> + /// void n_get_standby(uint CardNo, out uint HalfPeriod, out uint PulseLength); + /// </summary> + public static n_get_standbyDelegate n_get_standby; + + /// <summary> + /// void n_set_pulse_picking(uint CardNo, uint No); + /// </summary> + public static n_set_pulse_pickingDelegate n_set_pulse_picking; + + /// <summary> + /// void n_set_pulse_picking_length(uint CardNo, uint Length); + /// </summary> + public static n_set_pulse_picking_lengthDelegate n_set_pulse_picking_length; + + /// <summary> + /// void n_config_laser_signals(uint CardNo, uint Config); + /// </summary> + public static n_config_laser_signalsDelegate n_config_laser_signals; + + /// <summary> + /// void disable_laser(); + /// </summary> + public static disable_laserDelegate disable_laser; + + /// <summary> + /// void enable_laser(); + /// </summary> + public static enable_laserDelegate enable_laser; + + /// <summary> + /// void laser_signal_on(); + /// </summary> + public static laser_signal_onDelegate laser_signal_on; + + /// <summary> + /// void laser_signal_off(); + /// </summary> + public static laser_signal_offDelegate laser_signal_off; + + /// <summary> + /// void set_standby(uint HalfPeriod, uint PulseLength); + /// </summary> + public static set_standbyDelegate set_standby; + + /// <summary> + /// void set_laser_pulses_ctrl(uint HalfPeriod, uint PulseLength); + /// </summary> + public static set_laser_pulses_ctrlDelegate set_laser_pulses_ctrl; + + /// <summary> + /// void set_firstpulse_killer(uint Length); + /// </summary> + public static set_firstpulse_killerDelegate set_firstpulse_killer; + + /// <summary> + /// void set_qswitch_delay(uint Delay); + /// </summary> + public static set_qswitch_delayDelegate set_qswitch_delay; + + /// <summary> + /// void set_laser_mode(uint Mode); + /// </summary> + public static set_laser_modeDelegate set_laser_mode; + + /// <summary> + /// void set_laser_control(uint Ctrl); + /// </summary> + public static set_laser_controlDelegate set_laser_control; + + /// <summary> + /// void set_laser_pin_out(uint Pins); + /// </summary> + public static set_laser_pin_outDelegate set_laser_pin_out; + + /// <summary> + /// uint get_laser_pin_in(); + /// </summary> + public static get_laser_pin_inDelegate get_laser_pin_in; + + /// <summary> + /// void set_softstart_level(uint Index, uint Level); + /// </summary> + public static set_softstart_levelDelegate set_softstart_level; + + /// <summary> + /// void set_softstart_mode(uint Mode, uint Number, uint Delay); + /// </summary> + public static set_softstart_modeDelegate set_softstart_mode; + + /// <summary> + /// uint set_auto_laser_control(uint Ctrl, uint Value, uint Mode, uint MinValue, uint MaxValue); + /// </summary> + public static set_auto_laser_controlDelegate set_auto_laser_control; + + /// <summary> + /// uint set_auto_laser_params(uint Ctrl, uint Value, uint MinValue, uint MaxValue); + /// </summary> + public static set_auto_laser_paramsDelegate set_auto_laser_params; + + /// <summary> + /// int load_auto_laser_control(string Name, uint No); + /// </summary> + public static load_auto_laser_controlDelegate load_auto_laser_control; + + /// <summary> + /// int load_position_control(string Name, uint No); + /// </summary> + public static load_position_controlDelegate load_position_control; + + /// <summary> + /// void set_default_pixel(uint PulseLength); + /// </summary> + public static set_default_pixelDelegate set_default_pixel; + + /// <summary> + /// void get_standby(out uint HalfPeriod, out uint PulseLength); + /// </summary> + public static get_standbyDelegate get_standby; + + /// <summary> + /// void set_pulse_picking(uint No); + /// </summary> + public static set_pulse_pickingDelegate set_pulse_picking; + + /// <summary> + /// void set_pulse_picking_length(uint Length); + /// </summary> + public static set_pulse_picking_lengthDelegate set_pulse_picking_length; + + /// <summary> + /// void config_laser_signals(uint Config); + /// </summary> + public static config_laser_signalsDelegate config_laser_signals; + + /// <summary> + /// void n_set_ext_start_delay(uint CardNo, int Delay, uint EncoderNo); + /// </summary> + public static n_set_ext_start_delayDelegate n_set_ext_start_delay; + + /// <summary> + /// void n_set_rot_center(uint CardNo, int X, int Y); + /// </summary> + public static n_set_rot_centerDelegate n_set_rot_center; + + /// <summary> + /// void n_simulate_encoder(uint CardNo, uint EncoderNo); + /// </summary> + public static n_simulate_encoderDelegate n_simulate_encoder; + + /// <summary> + /// uint n_get_marking_info(uint CardNo); + /// </summary> + public static n_get_marking_infoDelegate n_get_marking_info; + + /// <summary> + /// void n_set_encoder_speed_ctrl(uint CardNo, uint EncoderNo, double Speed, double Smooth); + /// </summary> + public static n_set_encoder_speed_ctrlDelegate n_set_encoder_speed_ctrl; + + /// <summary> + /// void n_set_mcbsp_x(uint CardNo, double ScaleX); + /// </summary> + public static n_set_mcbsp_xDelegate n_set_mcbsp_x; + + /// <summary> + /// void n_set_mcbsp_y(uint CardNo, double ScaleY); + /// </summary> + public static n_set_mcbsp_yDelegate n_set_mcbsp_y; + + /// <summary> + /// void n_set_mcbsp_rot(uint CardNo, double Resolution); + /// </summary> + public static n_set_mcbsp_rotDelegate n_set_mcbsp_rot; + + /// <summary> + /// void n_set_mcbsp_matrix(uint CardNo); + /// </summary> + public static n_set_mcbsp_matrixDelegate n_set_mcbsp_matrix; + + /// <summary> + /// void n_set_mcbsp_global_x(uint CardNo, double ScaleX); + /// </summary> + public static n_set_mcbsp_global_xDelegate n_set_mcbsp_global_x; + + /// <summary> + /// void n_set_mcbsp_global_y(uint CardNo, double ScaleY); + /// </summary> + public static n_set_mcbsp_global_yDelegate n_set_mcbsp_global_y; + + /// <summary> + /// void n_set_mcbsp_global_rot(uint CardNo, double Resolution); + /// </summary> + public static n_set_mcbsp_global_rotDelegate n_set_mcbsp_global_rot; + + /// <summary> + /// void n_set_mcbsp_global_matrix(uint CardNo); + /// </summary> + public static n_set_mcbsp_global_matrixDelegate n_set_mcbsp_global_matrix; + + /// <summary> + /// void n_set_mcbsp_in(uint CardNo, uint Mode, double Scale); + /// </summary> + public static n_set_mcbsp_inDelegate n_set_mcbsp_in; + + /// <summary> + /// void n_set_multi_mcbsp_in(uint CardNo, uint Ctrl, uint P, uint Mode); + /// </summary> + public static n_set_multi_mcbsp_inDelegate n_set_multi_mcbsp_in; + + /// <summary> + /// void n_set_fly_tracking_error(uint CardNo, uint TrackingErrorX, uint TrackingErrorY); + /// </summary> + public static n_set_fly_tracking_errorDelegate n_set_fly_tracking_error; + + /// <summary> + /// int n_load_fly_2d_table(uint CardNo, string Name, uint No); + /// </summary> + public static n_load_fly_2d_tableDelegate n_load_fly_2d_table; + + /// <summary> + /// void n_init_fly_2d(uint CardNo, int OffsetX, int OffsetY); + /// </summary> + public static n_init_fly_2dDelegate n_init_fly_2d; + + /// <summary> + /// void n_get_fly_2d_offset(uint CardNo, out int OffsetX, out int OffsetY); + /// </summary> + public static n_get_fly_2d_offsetDelegate n_get_fly_2d_offset; + + /// <summary> + /// void n_get_encoder(uint CardNo, out int Encoder0, out int Encoder1); + /// </summary> + public static n_get_encoderDelegate n_get_encoder; + + /// <summary> + /// void n_read_encoder(uint CardNo, out int Encoder0_1, out int Encoder1_1, out int Encoder0_2, out int Encoder1_2); + /// </summary> + public static n_read_encoderDelegate n_read_encoder; + + /// <summary> + /// int n_get_mcbsp(uint CardNo); + /// </summary> + public static n_get_mcbspDelegate n_get_mcbsp; + + /// <summary> + /// int n_read_mcbsp(uint CardNo, uint No); + /// </summary> + public static n_read_mcbspDelegate n_read_mcbsp; + + /// <summary> + /// int n_read_multi_mcbsp(uint CardNo, uint No); + /// </summary> + public static n_read_multi_mcbspDelegate n_read_multi_mcbsp; + + /// <summary> + /// void n_clear_fly_overflow_ctrl(uint CardNo, uint Mode); + /// </summary> + public static n_clear_fly_overflow_ctrlDelegate n_clear_fly_overflow_ctrl; + + /// <summary> + /// void set_ext_start_delay(int Delay, uint EncoderNo); + /// </summary> + public static set_ext_start_delayDelegate set_ext_start_delay; + + /// <summary> + /// void set_rot_center(int X, int Y); + /// </summary> + public static set_rot_centerDelegate set_rot_center; + + /// <summary> + /// void simulate_encoder(uint EncoderNo); + /// </summary> + public static simulate_encoderDelegate simulate_encoder; + + /// <summary> + /// uint get_marking_info(); + /// </summary> + public static get_marking_infoDelegate get_marking_info; + + /// <summary> + /// void set_encoder_speed_ctrl(uint EncoderNo, double Speed, double Smooth); + /// </summary> + public static set_encoder_speed_ctrlDelegate set_encoder_speed_ctrl; + + /// <summary> + /// void set_mcbsp_x(double ScaleX); + /// </summary> + public static set_mcbsp_xDelegate set_mcbsp_x; + + /// <summary> + /// void set_mcbsp_y(double ScaleY); + /// </summary> + public static set_mcbsp_yDelegate set_mcbsp_y; + + /// <summary> + /// void set_mcbsp_rot(double Resolution); + /// </summary> + public static set_mcbsp_rotDelegate set_mcbsp_rot; + + /// <summary> + /// void set_mcbsp_matrix(); + /// </summary> + public static set_mcbsp_matrixDelegate set_mcbsp_matrix; + + /// <summary> + /// void set_mcbsp_global_x(double ScaleX); + /// </summary> + public static set_mcbsp_global_xDelegate set_mcbsp_global_x; + + /// <summary> + /// void set_mcbsp_global_y(double ScaleY); + /// </summary> + public static set_mcbsp_global_yDelegate set_mcbsp_global_y; + + /// <summary> + /// void set_mcbsp_global_rot(double Resolution); + /// </summary> + public static set_mcbsp_global_rotDelegate set_mcbsp_global_rot; + + /// <summary> + /// void set_mcbsp_global_matrix(); + /// </summary> + public static set_mcbsp_global_matrixDelegate set_mcbsp_global_matrix; + + /// <summary> + /// void set_mcbsp_in(uint Mode, double Scale); + /// </summary> + public static set_mcbsp_inDelegate set_mcbsp_in; + + /// <summary> + /// void set_multi_mcbsp_in(uint Ctrl, uint P, uint Mode); + /// </summary> + public static set_multi_mcbsp_inDelegate set_multi_mcbsp_in; + + /// <summary> + /// void set_fly_tracking_error(uint TrackingErrorX, uint TrackingErrorY); + /// </summary> + public static set_fly_tracking_errorDelegate set_fly_tracking_error; + + /// <summary> + /// int load_fly_2d_table(string Name, uint No); + /// </summary> + public static load_fly_2d_tableDelegate load_fly_2d_table; + + /// <summary> + /// void init_fly_2d(int OffsetX, int OffsetY); + /// </summary> + public static init_fly_2dDelegate init_fly_2d; + + /// <summary> + /// void get_fly_2d_offset(out int OffsetX, out int OffsetY); + /// </summary> + public static get_fly_2d_offsetDelegate get_fly_2d_offset; + + /// <summary> + /// void get_encoder(out int Encoder0, out int Encoder1); + /// </summary> + public static get_encoderDelegate get_encoder; + + /// <summary> + /// void read_encoder(out int Encoder0_1, out int Encoder1_1, out int Encoder0_2, out int Encoder1_2); + /// </summary> + public static read_encoderDelegate read_encoder; + + /// <summary> + /// int get_mcbsp(); + /// </summary> + public static get_mcbspDelegate get_mcbsp; + + /// <summary> + /// int read_mcbsp(uint No); + /// </summary> + public static read_mcbspDelegate read_mcbsp; + + /// <summary> + /// int read_multi_mcbsp(uint No); + /// </summary> + public static read_multi_mcbspDelegate read_multi_mcbsp; + + /// <summary> + /// void clear_fly_overflow_ctrl(uint Mode); + /// </summary> + public static clear_fly_overflow_ctrlDelegate clear_fly_overflow_ctrl; + + /// <summary> + /// double n_get_time(uint CardNo); + /// </summary> + public static n_get_timeDelegate n_get_time; + + /// <summary> + /// double n_get_lap_time(uint CardNo); + /// </summary> + public static n_get_lap_timeDelegate n_get_lap_time; + + /// <summary> + /// void n_measurement_status(uint CardNo, out uint Busy, out uint Pos); + /// </summary> + public static n_measurement_statusDelegate n_measurement_status; + + /// <summary> + /// void n_get_waveform(uint CardNo, uint Channel, uint Number, int[] Ptr); + /// </summary> + public static n_get_waveformDelegate n_get_waveform; + + /// <summary> + /// void n_bounce_supp(uint CardNo, uint Length); + /// </summary> + public static n_bounce_suppDelegate n_bounce_supp; + + /// <summary> + /// void n_home_position_xyz(uint CardNo, int XHome, int YHome, int ZHome); + /// </summary> + public static n_home_position_xyzDelegate n_home_position_xyz; + + /// <summary> + /// void n_home_position(uint CardNo, int XHome, int YHome); + /// </summary> + public static n_home_positionDelegate n_home_position; + + /// <summary> + /// void n_rs232_config(uint CardNo, uint BaudRate); + /// </summary> + public static n_rs232_configDelegate n_rs232_config; + + /// <summary> + /// void n_rs232_write_data(uint CardNo, uint Data); + /// </summary> + public static n_rs232_write_dataDelegate n_rs232_write_data; + + /// <summary> + /// void n_rs232_write_text(uint CardNo, string pData); + /// </summary> + public static n_rs232_write_textDelegate n_rs232_write_text; + + /// <summary> + /// uint n_rs232_read_data(uint CardNo); + /// </summary> + public static n_rs232_read_dataDelegate n_rs232_read_data; + + /// <summary> + /// uint n_set_mcbsp_freq(uint CardNo, uint Freq); + /// </summary> + public static n_set_mcbsp_freqDelegate n_set_mcbsp_freq; + + /// <summary> + /// void n_mcbsp_init(uint CardNo, uint XDelay, uint RDelay); + /// </summary> + public static n_mcbsp_initDelegate n_mcbsp_init; + + /// <summary> + /// void n_mcbsp_init_spi(uint CardNo, uint ClockLevel, uint ClockDelay); + /// </summary> + public static n_mcbsp_init_spiDelegate n_mcbsp_init_spi; + + /// <summary> + /// uint n_get_overrun(uint CardNo); + /// </summary> + public static n_get_overrunDelegate n_get_overrun; + + /// <summary> + /// uint n_get_master_slave(uint CardNo); + /// </summary> + public static n_get_master_slaveDelegate n_get_master_slave; + + /// <summary> + /// void n_get_transform(uint CardNo, uint Number, int[] Ptr1, int[] Ptr2, uint[] Ptr, uint Code); + /// </summary> + public static n_get_transformDelegate n_get_transform; + + /// <summary> + /// void n_stop_trigger(uint CardNo); + /// </summary> + public static n_stop_triggerDelegate n_stop_trigger; + + /// <summary> + /// void n_move_to(uint CardNo, uint Pos); + /// </summary> + public static n_move_toDelegate n_move_to; + + /// <summary> + /// void n_set_enduring_wobbel(uint CardNo, uint CenterX, uint CenterY, uint CenterZ, uint LimitHi, uint LimitLo, double ScaleX, double ScaleY, double ScaleZ); + /// </summary> + public static n_set_enduring_wobbelDelegate n_set_enduring_wobbel; + + /// <summary> + /// void n_set_enduring_wobbel_2(uint CardNo, uint CenterX, uint CenterY, uint CenterZ, uint LimitHi, uint LimitLo, double ScaleX, double ScaleY, double ScaleZ); + /// </summary> + public static n_set_enduring_wobbel_2Delegate n_set_enduring_wobbel_2; + + /// <summary> + /// void n_set_free_variable(uint CardNo, uint VarNo, uint Value); + /// </summary> + public static n_set_free_variableDelegate n_set_free_variable; + + /// <summary> + /// uint n_get_free_variable(uint CardNo, uint VarNo); + /// </summary> + public static n_get_free_variableDelegate n_get_free_variable; + + /// <summary> + /// void n_set_mcbsp_out_ptr(uint CardNo, uint Number, uint[] SignalPtr); + /// </summary> + public static n_set_mcbsp_out_ptrDelegate n_set_mcbsp_out_ptr; + + /// <summary> + /// void n_periodic_toggle(uint CardNo, uint Port, uint Mask, uint P1, uint P2, uint Count, uint Start); + /// </summary> + public static n_periodic_toggleDelegate n_periodic_toggle; + + /// <summary> + /// uint n_load_wobbel_power(uint CardNo, uint TableNo, int[] Ptr, int Flag); + /// </summary> + public static n_load_wobbel_powerDelegate n_load_wobbel_power; + + /// <summary> + /// double get_time(); + /// </summary> + public static get_timeDelegate get_time; + + /// <summary> + /// double get_lap_time(); + /// </summary> + public static get_lap_timeDelegate get_lap_time; + + /// <summary> + /// void measurement_status(out uint Busy, out uint Pos); + /// </summary> + public static measurement_statusDelegate measurement_status; + + /// <summary> + /// void get_waveform(uint Channel, uint Number, int[] Ptr); + /// </summary> + public static get_waveformDelegate get_waveform; + + /// <summary> + /// void bounce_supp(uint Length); + /// </summary> + public static bounce_suppDelegate bounce_supp; + + /// <summary> + /// void home_position_xyz(int XHome, int YHome, int ZHome); + /// </summary> + public static home_position_xyzDelegate home_position_xyz; + + /// <summary> + /// void home_position(int XHome, int YHome); + /// </summary> + public static home_positionDelegate home_position; + + /// <summary> + /// void rs232_config(uint BaudRate); + /// </summary> + public static rs232_configDelegate rs232_config; + + /// <summary> + /// void rs232_write_data(uint Data); + /// </summary> + public static rs232_write_dataDelegate rs232_write_data; + + /// <summary> + /// void rs232_write_text(string pData); + /// </summary> + public static rs232_write_textDelegate rs232_write_text; + + /// <summary> + /// uint rs232_read_data(); + /// </summary> + public static rs232_read_dataDelegate rs232_read_data; + + /// <summary> + /// uint set_mcbsp_freq(uint Freq); + /// </summary> + public static set_mcbsp_freqDelegate set_mcbsp_freq; + + /// <summary> + /// void mcbsp_init(uint XDelay, uint RDelay); + /// </summary> + public static mcbsp_initDelegate mcbsp_init; + + /// <summary> + /// void mcbsp_init_spi(uint ClockLevel, uint ClockDelay); + /// </summary> + public static mcbsp_init_spiDelegate mcbsp_init_spi; + + /// <summary> + /// uint get_overrun(); + /// </summary> + public static get_overrunDelegate get_overrun; + + /// <summary> + /// uint get_master_slave(); + /// </summary> + public static get_master_slaveDelegate get_master_slave; + + /// <summary> + /// void get_transform(uint Number, int[] Ptr1, int[] Ptr2, uint[] Ptr, uint Code); + /// </summary> + public static get_transformDelegate get_transform; + + /// <summary> + /// void stop_trigger(); + /// </summary> + public static stop_triggerDelegate stop_trigger; + + /// <summary> + /// void move_to(uint Pos); + /// </summary> + public static move_toDelegate move_to; + + /// <summary> + /// void set_enduring_wobbel(uint CenterX, uint CenterY, uint CenterZ, uint LimitHi, uint LimitLo, double ScaleX, double ScaleY, double ScaleZ); + /// </summary> + public static set_enduring_wobbelDelegate set_enduring_wobbel; + + /// <summary> + /// void set_enduring_wobbel_2(uint CenterX, uint CenterY, uint CenterZ, uint LimitHi, uint LimitLo, double ScaleX, double ScaleY, double ScaleZ); + /// </summary> + public static set_enduring_wobbel_2Delegate set_enduring_wobbel_2; + + /// <summary> + /// void set_free_variable(uint VarNo, uint Value); + /// </summary> + public static set_free_variableDelegate set_free_variable; + + /// <summary> + /// uint get_free_variable(uint VarNo); + /// </summary> + public static get_free_variableDelegate get_free_variable; + + /// <summary> + /// void set_mcbsp_out_ptr(uint Number, uint[] SignalPtr); + /// </summary> + public static set_mcbsp_out_ptrDelegate set_mcbsp_out_ptr; + + /// <summary> + /// void periodic_toggle(uint Port, uint Mask, uint P1, uint P2, uint Count, uint Start); + /// </summary> + public static periodic_toggleDelegate periodic_toggle; + + /// <summary> + /// uint load_wobbel_power(uint TableNo, int[] Ptr, int Flag); + /// </summary> + public static load_wobbel_powerDelegate load_wobbel_power; + + /// <summary> + /// void n_set_defocus(uint CardNo, int Shift); + /// </summary> + public static n_set_defocusDelegate n_set_defocus; + + /// <summary> + /// void n_set_defocus_offset(uint CardNo, int Shift); + /// </summary> + public static n_set_defocus_offsetDelegate n_set_defocus_offset; + + /// <summary> + /// void n_goto_xyz(uint CardNo, int X, int Y, int Z); + /// </summary> + public static n_goto_xyzDelegate n_goto_xyz; + + /// <summary> + /// void n_set_zoom(uint CardNo, uint Zoom); + /// </summary> + public static n_set_zoomDelegate n_set_zoom; + + /// <summary> + /// void n_goto_xy(uint CardNo, int X, int Y); + /// </summary> + public static n_goto_xyDelegate n_goto_xy; + + /// <summary> + /// int n_get_z_distance(uint CardNo, int X, int Y, int Z); + /// </summary> + public static n_get_z_distanceDelegate n_get_z_distance; + + /// <summary> + /// void set_defocus(int Shift); + /// </summary> + public static set_defocusDelegate set_defocus; + + /// <summary> + /// void set_defocus_offset(int Shift); + /// </summary> + public static set_defocus_offsetDelegate set_defocus_offset; + + /// <summary> + /// void goto_xyz(int X, int Y, int Z); + /// </summary> + public static goto_xyzDelegate goto_xyz; + + /// <summary> + /// void goto_xy(int X, int Y); + /// </summary> + public static goto_xyDelegate goto_xy; + + /// <summary> + /// void set_zoom(uint Zoom); + /// </summary> + public static set_zoomDelegate set_zoom; + + /// <summary> + /// int get_z_distance(int X, int Y, int Z); + /// </summary> + public static get_z_distanceDelegate get_z_distance; + + /// <summary> + /// void n_set_offset_xyz(uint CardNo, uint HeadNo, int XOffset, int YOffset, int ZOffset, uint at_once); + /// </summary> + public static n_set_offset_xyzDelegate n_set_offset_xyz; + + /// <summary> + /// void n_set_offset(uint CardNo, uint HeadNo, int XOffset, int YOffset, uint at_once); + /// </summary> + public static n_set_offsetDelegate n_set_offset; + + /// <summary> + /// void n_set_matrix(uint CardNo, uint HeadNo, double M11, double M12, double M21, double M22, uint at_once); + /// </summary> + public static n_set_matrixDelegate n_set_matrix; + + /// <summary> + /// void n_set_angle(uint CardNo, uint HeadNo, double Angle, uint at_once); + /// </summary> + public static n_set_angleDelegate n_set_angle; + + /// <summary> + /// void n_set_scale(uint CardNo, uint HeadNo, double Scale, uint at_once); + /// </summary> + public static n_set_scaleDelegate n_set_scale; + + /// <summary> + /// void n_apply_mcbsp(uint CardNo, uint HeadNo, uint at_once); + /// </summary> + public static n_apply_mcbspDelegate n_apply_mcbsp; + + /// <summary> + /// uint n_upload_transform(uint CardNo, uint HeadNo, uint[] Ptr); + /// </summary> + public static n_upload_transformDelegate n_upload_transform; + + /// <summary> + /// void set_offset_xyz(uint HeadNo, int XOffset, int YOffset, int ZOffset, uint at_once); + /// </summary> + public static set_offset_xyzDelegate set_offset_xyz; + + /// <summary> + /// void set_offset(uint HeadNo, int XOffset, int YOffset, uint at_once); + /// </summary> + public static set_offsetDelegate set_offset; + + /// <summary> + /// void set_matrix(uint HeadNo, double M11, double M12, double M21, double M22, uint at_once); + /// </summary> + public static set_matrixDelegate set_matrix; + + /// <summary> + /// void set_angle(uint HeadNo, double Angle, uint at_once); + /// </summary> + public static set_angleDelegate set_angle; + + /// <summary> + /// void set_scale(uint HeadNo, double Scale, uint at_once); + /// </summary> + public static set_scaleDelegate set_scale; + + /// <summary> + /// void apply_mcbsp(uint HeadNo, uint at_once); + /// </summary> + public static apply_mcbspDelegate apply_mcbsp; + + /// <summary> + /// uint upload_transform(uint HeadNo, uint[] Ptr); + /// </summary> + public static upload_transformDelegate upload_transform; + + /// <summary> + /// uint transform(out int Sig1, out int Sig2, uint[] Ptr, uint Code); + /// </summary> + public static transformDelegate transform; + + /// <summary> + /// void n_set_delay_mode(uint CardNo, uint VarPoly, uint DirectMove3D, uint EdgeLevel, uint MinJumpDelay, uint JumpLengthLimit); + /// </summary> + public static n_set_delay_modeDelegate n_set_delay_mode; + + /// <summary> + /// void n_set_jump_speed_ctrl(uint CardNo, double Speed); + /// </summary> + public static n_set_jump_speed_ctrlDelegate n_set_jump_speed_ctrl; + + /// <summary> + /// void n_set_mark_speed_ctrl(uint CardNo, double Speed); + /// </summary> + public static n_set_mark_speed_ctrlDelegate n_set_mark_speed_ctrl; + + /// <summary> + /// void n_set_sky_writing_para(uint CardNo, double Timelag, int LaserOnShift, uint Nprev, uint Npost); + /// </summary> + public static n_set_sky_writing_paraDelegate n_set_sky_writing_para; + + /// <summary> + /// void n_set_sky_writing_limit(uint CardNo, double CosAngle); + /// </summary> + public static n_set_sky_writing_limitDelegate n_set_sky_writing_limit; + + /// <summary> + /// void n_set_sky_writing_mode(uint CardNo, uint Mode); + /// </summary> + public static n_set_sky_writing_modeDelegate n_set_sky_writing_mode; + + /// <summary> + /// int n_load_varpolydelay(uint CardNo, string Name, uint No); + /// </summary> + public static n_load_varpolydelayDelegate n_load_varpolydelay; + + /// <summary> + /// void n_set_hi(uint CardNo, uint HeadNo, double GalvoGainX, double GalvoGainY, int GalvoOffsetX, int GalvoOffsetY); + /// </summary> + public static n_set_hiDelegate n_set_hi; + + /// <summary> + /// void n_get_hi_pos(uint CardNo, uint HeadNo, out int X1, out int X2, out int Y1, out int Y2); + /// </summary> + public static n_get_hi_posDelegate n_get_hi_pos; + + /// <summary> + /// uint n_auto_cal(uint CardNo, uint HeadNo, uint Command); + /// </summary> + public static n_auto_calDelegate n_auto_cal; + + /// <summary> + /// uint n_get_auto_cal(uint CardNo, uint HeadNo); + /// </summary> + public static n_get_auto_calDelegate n_get_auto_cal; + + /// <summary> + /// uint n_write_hi_pos(uint CardNo, uint HeadNo, int X1, int X2, int Y1, int Y2); + /// </summary> + public static n_write_hi_posDelegate n_write_hi_pos; + + /// <summary> + /// void n_set_sky_writing(uint CardNo, double Timelag, int LaserOnShift); + /// </summary> + public static n_set_sky_writingDelegate n_set_sky_writing; + + /// <summary> + /// void n_get_hi_data(uint CardNo, out int X1, out int X2, out int Y1, out int Y2); + /// </summary> + public static n_get_hi_dataDelegate n_get_hi_data; + + /// <summary> + /// void set_delay_mode(uint VarPoly, uint DirectMove3D, uint EdgeLevel, uint MinJumpDelay, uint JumpLengthLimit); + /// </summary> + public static set_delay_modeDelegate set_delay_mode; + + /// <summary> + /// void set_jump_speed_ctrl(double Speed); + /// </summary> + public static set_jump_speed_ctrlDelegate set_jump_speed_ctrl; + + /// <summary> + /// void set_mark_speed_ctrl(double Speed); + /// </summary> + public static set_mark_speed_ctrlDelegate set_mark_speed_ctrl; + + /// <summary> + /// void set_sky_writing_para(double Timelag, int LaserOnShift, uint Nprev, uint Npost); + /// </summary> + public static set_sky_writing_paraDelegate set_sky_writing_para; + + /// <summary> + /// void set_sky_writing_limit(double CosAngle); + /// </summary> + public static set_sky_writing_limitDelegate set_sky_writing_limit; + + /// <summary> + /// void set_sky_writing_mode(uint Mode); + /// </summary> + public static set_sky_writing_modeDelegate set_sky_writing_mode; + + /// <summary> + /// int load_varpolydelay(string Name, uint No); + /// </summary> + public static load_varpolydelayDelegate load_varpolydelay; + + /// <summary> + /// void set_hi(uint HeadNo, double GalvoGainX, double GalvoGainY, int GalvoOffsetX, int GalvoOffsetY); + /// </summary> + public static set_hiDelegate set_hi; + + /// <summary> + /// void get_hi_pos(uint HeadNo, out int X1, out int X2, out int Y1, out int Y2); + /// </summary> + public static get_hi_posDelegate get_hi_pos; + + /// <summary> + /// uint auto_cal(uint HeadNo, uint Command); + /// </summary> + public static auto_calDelegate auto_cal; + + /// <summary> + /// uint get_auto_cal(uint HeadNo); + /// </summary> + public static get_auto_calDelegate get_auto_cal; + + /// <summary> + /// uint write_hi_pos(uint HeadNo, int X1, int X2, int Y1, int Y2); + /// </summary> + public static write_hi_posDelegate write_hi_pos; + + /// <summary> + /// void set_sky_writing(double Timelag, int LaserOnShift); + /// </summary> + public static set_sky_writingDelegate set_sky_writing; + + /// <summary> + /// void get_hi_data(out int X1, out int X2, out int Y1, out int Y2); + /// </summary> + public static get_hi_dataDelegate get_hi_data; + + /// <summary> + /// void n_send_user_data(uint CardNo, uint Head, uint Axis, int Data0, int Data1, int Data2, int Data3, int Data4); + /// </summary> + public static n_send_user_dataDelegate n_send_user_data; + + /// <summary> + /// int n_read_user_data(uint CardNo, uint Head, uint Axis, out int Data0, out int Data1, out int Data2, out int Data3, out int Data4); + /// </summary> + public static n_read_user_dataDelegate n_read_user_data; + + /// <summary> + /// void n_control_command(uint CardNo, uint Head, uint Axis, uint Data); + /// </summary> + public static n_control_commandDelegate n_control_command; + + /// <summary> + /// int n_get_value(uint CardNo, uint Signal); + /// </summary> + public static n_get_valueDelegate n_get_value; + + /// <summary> + /// void n_get_values(uint CardNo, uint[] SignalPtr, int[] ResultPtr); + /// </summary> + public static n_get_valuesDelegate n_get_values; + + /// <summary> + /// void n_get_galvo_controls(uint CardNo, int[] SignalPtr, int[] ResultPtr); + /// </summary> + public static n_get_galvo_controlsDelegate n_get_galvo_controls; + + /// <summary> + /// uint n_get_head_status(uint CardNo, uint Head); + /// </summary> + public static n_get_head_statusDelegate n_get_head_status; + + /// <summary> + /// int n_set_jump_mode(uint CardNo, int Flag, uint Length, int VA1, int VA2, int VB1, int VB2, int JA1, int JA2, int JB1, int JB2); + /// </summary> + public static n_set_jump_modeDelegate n_set_jump_mode; + + /// <summary> + /// int n_load_jump_table_offset(uint CardNo, string Name, uint No, uint PosAck, int Offset, uint MinDelay, uint MaxDelay, uint ListPos); + /// </summary> + public static n_load_jump_table_offsetDelegate n_load_jump_table_offset; + + /// <summary> + /// uint n_get_jump_table(uint CardNo, ushort[] Ptr); + /// </summary> + public static n_get_jump_tableDelegate n_get_jump_table; + + /// <summary> + /// uint n_set_jump_table(uint CardNo, ushort[] Ptr); + /// </summary> + public static n_set_jump_tableDelegate n_set_jump_table; + + /// <summary> + /// int n_load_jump_table(uint CardNo, string Name, uint No, uint PosAck, uint MinDelay, uint MaxDelay, uint ListPos); + /// </summary> + public static n_load_jump_tableDelegate n_load_jump_table; + + /// <summary> + /// void send_user_data(uint Head, uint Axis, int Data0, int Data1, int Data2, int Data3, int Data4); + /// </summary> + public static send_user_dataDelegate send_user_data; + + /// <summary> + /// int read_user_data(uint Head, uint Axis, out int Data0, out int Data1, out int Data2, out int Data3, out int Data4); + /// </summary> + public static read_user_dataDelegate read_user_data; + + /// <summary> + /// void control_command(uint Head, uint Axis, uint Data); + /// </summary> + public static control_commandDelegate control_command; + + /// <summary> + /// int get_value(uint Signal); + /// </summary> + public static get_valueDelegate get_value; + + /// <summary> + /// void get_values(uint[] SignalPtr, int[] ResultPtr); + /// </summary> + public static get_valuesDelegate get_values; + + /// <summary> + /// void get_galvo_controls(int[] SignalPtr, int[] ResultPtr); + /// </summary> + public static get_galvo_controlsDelegate get_galvo_controls; + + /// <summary> + /// uint get_head_status(uint Head); + /// </summary> + public static get_head_statusDelegate get_head_status; + + /// <summary> + /// int set_jump_mode(int Flag, uint Length, int VA1, int VA2, int VB1, int VB2, int JA1, int JA2, int JB1, int JB2); + /// </summary> + public static set_jump_modeDelegate set_jump_mode; + + /// <summary> + /// int load_jump_table_offset(string Name, uint No, uint PosAck, int Offset, uint MinDelay, uint MaxDelay, uint ListPos); + /// </summary> + public static load_jump_table_offsetDelegate load_jump_table_offset; + + /// <summary> + /// uint get_jump_table(ushort[] Ptr); + /// </summary> + public static get_jump_tableDelegate get_jump_table; + + /// <summary> + /// uint set_jump_table(ushort[] Ptr); + /// </summary> + public static set_jump_tableDelegate set_jump_table; + + /// <summary> + /// int load_jump_table(string Name, uint No, uint PosAck, uint MinDelay, uint MaxDelay, uint ListPos); + /// </summary> + public static load_jump_tableDelegate load_jump_table; + + /// <summary> + /// void n_stepper_init(uint CardNo, uint No, uint Period, int Dir, int Pos, uint Tol, uint Enable, uint WaitTime); + /// </summary> + public static n_stepper_initDelegate n_stepper_init; + + /// <summary> + /// void n_stepper_enable(uint CardNo, int Enable1, int Enable2); + /// </summary> + public static n_stepper_enableDelegate n_stepper_enable; + + /// <summary> + /// void n_stepper_disable_switch(uint CardNo, int Disable1, int Disable2); + /// </summary> + public static n_stepper_disable_switchDelegate n_stepper_disable_switch; + + /// <summary> + /// void n_stepper_control(uint CardNo, int Period1, int Period2); + /// </summary> + public static n_stepper_controlDelegate n_stepper_control; + + /// <summary> + /// void n_stepper_abs_no(uint CardNo, uint No, int Pos, uint WaitTime); + /// </summary> + public static n_stepper_abs_noDelegate n_stepper_abs_no; + + /// <summary> + /// void n_stepper_rel_no(uint CardNo, uint No, int dPos, uint WaitTime); + /// </summary> + public static n_stepper_rel_noDelegate n_stepper_rel_no; + + /// <summary> + /// void n_stepper_abs(uint CardNo, int Pos1, int Pos2, uint WaitTime); + /// </summary> + public static n_stepper_absDelegate n_stepper_abs; + + /// <summary> + /// void n_stepper_rel(uint CardNo, int dPos1, int dPos2, uint WaitTime); + /// </summary> + public static n_stepper_relDelegate n_stepper_rel; + + /// <summary> + /// void n_get_stepper_status(uint CardNo, out uint Status1, out int Pos1, out uint Status2, out int Pos2); + /// </summary> + public static n_get_stepper_statusDelegate n_get_stepper_status; + + /// <summary> + /// void stepper_init(uint No, uint Period, int Dir, int Pos, uint Tol, uint Enable, uint WaitTime); + /// </summary> + public static stepper_initDelegate stepper_init; + + /// <summary> + /// void stepper_enable(int Enable1, int Enable2); + /// </summary> + public static stepper_enableDelegate stepper_enable; + + /// <summary> + /// void stepper_disable_switch(int Disable1, int Disable2); + /// </summary> + public static stepper_disable_switchDelegate stepper_disable_switch; + + /// <summary> + /// void stepper_control(int Period1, int Period2); + /// </summary> + public static stepper_controlDelegate stepper_control; + + /// <summary> + /// void stepper_abs_no(uint No, int Pos, uint WaitTime); + /// </summary> + public static stepper_abs_noDelegate stepper_abs_no; + + /// <summary> + /// void stepper_rel_no(uint No, int dPos, uint WaitTime); + /// </summary> + public static stepper_rel_noDelegate stepper_rel_no; + + /// <summary> + /// void stepper_abs(int Pos1, int Pos2, uint WaitTime); + /// </summary> + public static stepper_absDelegate stepper_abs; + + /// <summary> + /// void stepper_rel(int dPos1, int dPos2, uint WaitTime); + /// </summary> + public static stepper_relDelegate stepper_rel; + + /// <summary> + /// void get_stepper_status(out uint Status1, out int Pos1, out uint Status2, out int Pos2); + /// </summary> + public static get_stepper_statusDelegate get_stepper_status; + + /// <summary> + /// void n_select_cor_table_list(uint CardNo, uint HeadA, uint HeadB); + /// </summary> + public static n_select_cor_table_listDelegate n_select_cor_table_list; + + /// <summary> + /// void select_cor_table_list(uint HeadA, uint HeadB); + /// </summary> + public static select_cor_table_listDelegate select_cor_table_list; + + /// <summary> + /// void n_list_nop(uint CardNo); + /// </summary> + public static n_list_nopDelegate n_list_nop; + + /// <summary> + /// void n_list_continue(uint CardNo); + /// </summary> + public static n_list_continueDelegate n_list_continue; + + /// <summary> + /// void n_list_next(uint CardNo); + /// </summary> + public static n_list_nextDelegate n_list_next; + + /// <summary> + /// void n_long_delay(uint CardNo, uint Delay); + /// </summary> + public static n_long_delayDelegate n_long_delay; + + /// <summary> + /// void n_set_end_of_list(uint CardNo); + /// </summary> + public static n_set_end_of_listDelegate n_set_end_of_list; + + /// <summary> + /// void n_set_wait(uint CardNo, uint WaitWord); + /// </summary> + public static n_set_waitDelegate n_set_wait; + + /// <summary> + /// void n_list_jump_pos(uint CardNo, uint Pos); + /// </summary> + public static n_list_jump_posDelegate n_list_jump_pos; + + /// <summary> + /// void n_list_jump_rel(uint CardNo, int Pos); + /// </summary> + public static n_list_jump_relDelegate n_list_jump_rel; + + /// <summary> + /// void n_list_repeat(uint CardNo); + /// </summary> + public static n_list_repeatDelegate n_list_repeat; + + /// <summary> + /// void n_list_until(uint CardNo, uint Number); + /// </summary> + public static n_list_untilDelegate n_list_until; + + /// <summary> + /// void n_range_checking(uint CardNo, uint HeadNo, uint Mode, uint Data); + /// </summary> + public static n_range_checkingDelegate n_range_checking; + + /// <summary> + /// void n_set_list_jump(uint CardNo, uint Pos); + /// </summary> + public static n_set_list_jumpDelegate n_set_list_jump; + + /// <summary> + /// void list_nop(); + /// </summary> + public static list_nopDelegate list_nop; + + /// <summary> + /// void list_continue(); + /// </summary> + public static list_continueDelegate list_continue; + + /// <summary> + /// void list_next(); + /// </summary> + public static list_nextDelegate list_next; + + /// <summary> + /// void long_delay(uint Delay); + /// </summary> + public static long_delayDelegate long_delay; + + /// <summary> + /// void set_end_of_list(); + /// </summary> + public static set_end_of_listDelegate set_end_of_list; + + /// <summary> + /// void set_wait(uint WaitWord); + /// </summary> + public static set_waitDelegate set_wait; + + /// <summary> + /// void list_jump_pos(uint Pos); + /// </summary> + public static list_jump_posDelegate list_jump_pos; + + /// <summary> + /// void list_jump_rel(int Pos); + /// </summary> + public static list_jump_relDelegate list_jump_rel; + + /// <summary> + /// void list_repeat(); + /// </summary> + public static list_repeatDelegate list_repeat; + + /// <summary> + /// void list_until(uint Number); + /// </summary> + public static list_untilDelegate list_until; + + /// <summary> + /// void range_checking(uint HeadNo, uint Mode, uint Data); + /// </summary> + public static range_checkingDelegate range_checking; + + /// <summary> + /// void set_list_jump(uint Pos); + /// </summary> + public static set_list_jumpDelegate set_list_jump; + + /// <summary> + /// void n_set_extstartpos_list(uint CardNo, uint Pos); + /// </summary> + public static n_set_extstartpos_listDelegate n_set_extstartpos_list; + + /// <summary> + /// void n_set_control_mode_list(uint CardNo, uint Mode); + /// </summary> + public static n_set_control_mode_listDelegate n_set_control_mode_list; + + /// <summary> + /// void n_simulate_ext_start(uint CardNo, int Delay, uint EncoderNo); + /// </summary> + public static n_simulate_ext_startDelegate n_simulate_ext_start; + + /// <summary> + /// void set_extstartpos_list(uint Pos); + /// </summary> + public static set_extstartpos_listDelegate set_extstartpos_list; + + /// <summary> + /// void set_control_mode_list(uint Mode); + /// </summary> + public static set_control_mode_listDelegate set_control_mode_list; + + /// <summary> + /// void simulate_ext_start(int Delay, uint EncoderNo); + /// </summary> + public static simulate_ext_startDelegate simulate_ext_start; + + /// <summary> + /// void n_list_return(uint CardNo); + /// </summary> + public static n_list_returnDelegate n_list_return; + + /// <summary> + /// void n_list_call_repeat(uint CardNo, uint Pos, uint Number); + /// </summary> + public static n_list_call_repeatDelegate n_list_call_repeat; + + /// <summary> + /// void n_list_call_abs_repeat(uint CardNo, uint Pos, uint Number); + /// </summary> + public static n_list_call_abs_repeatDelegate n_list_call_abs_repeat; + + /// <summary> + /// void n_list_call(uint CardNo, uint Pos); + /// </summary> + public static n_list_callDelegate n_list_call; + + /// <summary> + /// void n_list_call_abs(uint CardNo, uint Pos); + /// </summary> + public static n_list_call_absDelegate n_list_call_abs; + + /// <summary> + /// void n_sub_call_repeat(uint CardNo, uint Index, uint Number); + /// </summary> + public static n_sub_call_repeatDelegate n_sub_call_repeat; + + /// <summary> + /// void n_sub_call_abs_repeat(uint CardNo, uint Index, uint Number); + /// </summary> + public static n_sub_call_abs_repeatDelegate n_sub_call_abs_repeat; + + /// <summary> + /// void n_sub_call(uint CardNo, uint Index); + /// </summary> + public static n_sub_callDelegate n_sub_call; + + /// <summary> + /// void n_sub_call_abs(uint CardNo, uint Index); + /// </summary> + public static n_sub_call_absDelegate n_sub_call_abs; + + /// <summary> + /// void list_return(); + /// </summary> + public static list_returnDelegate list_return; + + /// <summary> + /// void list_call_repeat(uint Pos, uint Number); + /// </summary> + public static list_call_repeatDelegate list_call_repeat; + + /// <summary> + /// void list_call_abs_repeat(uint Pos, uint Number); + /// </summary> + public static list_call_abs_repeatDelegate list_call_abs_repeat; + + /// <summary> + /// void list_call(uint Pos); + /// </summary> + public static list_callDelegate list_call; + + /// <summary> + /// void list_call_abs(uint Pos); + /// </summary> + public static list_call_absDelegate list_call_abs; + + /// <summary> + /// void sub_call_repeat(uint Index, uint Number); + /// </summary> + public static sub_call_repeatDelegate sub_call_repeat; + + /// <summary> + /// void sub_call_abs_repeat(uint Index, uint Number); + /// </summary> + public static sub_call_abs_repeatDelegate sub_call_abs_repeat; + + /// <summary> + /// void sub_call(uint Index); + /// </summary> + public static sub_callDelegate sub_call; + + /// <summary> + /// void sub_call_abs(uint Index); + /// </summary> + public static sub_call_absDelegate sub_call_abs; + + /// <summary> + /// void n_list_call_cond(uint CardNo, uint Mask1, uint Mask0, uint Pos); + /// </summary> + public static n_list_call_condDelegate n_list_call_cond; + + /// <summary> + /// void n_list_call_abs_cond(uint CardNo, uint Mask1, uint Mask0, uint Pos); + /// </summary> + public static n_list_call_abs_condDelegate n_list_call_abs_cond; + + /// <summary> + /// void n_sub_call_cond(uint CardNo, uint Mask1, uint Mask0, uint Pos); + /// </summary> + public static n_sub_call_condDelegate n_sub_call_cond; + + /// <summary> + /// void n_sub_call_abs_cond(uint CardNo, uint Mask1, uint Mask0, uint Pos); + /// </summary> + public static n_sub_call_abs_condDelegate n_sub_call_abs_cond; + + /// <summary> + /// void n_list_jump_pos_cond(uint CardNo, uint Mask1, uint Mask0, uint Index); + /// </summary> + public static n_list_jump_pos_condDelegate n_list_jump_pos_cond; + + /// <summary> + /// void n_list_jump_rel_cond(uint CardNo, uint Mask1, uint Mask0, int Index); + /// </summary> + public static n_list_jump_rel_condDelegate n_list_jump_rel_cond; + + /// <summary> + /// void n_if_cond(uint CardNo, uint Mask1, uint Mask0); + /// </summary> + public static n_if_condDelegate n_if_cond; + + /// <summary> + /// void n_if_not_cond(uint CardNo, uint Mask1, uint Mask0); + /// </summary> + public static n_if_not_condDelegate n_if_not_cond; + + /// <summary> + /// void n_if_pin_cond(uint CardNo, uint Mask1, uint Mask0); + /// </summary> + public static n_if_pin_condDelegate n_if_pin_cond; + + /// <summary> + /// void n_if_not_pin_cond(uint CardNo, uint Mask1, uint Mask0); + /// </summary> + public static n_if_not_pin_condDelegate n_if_not_pin_cond; + + /// <summary> + /// void n_switch_ioport(uint CardNo, uint MaskBits, uint ShiftBits); + /// </summary> + public static n_switch_ioportDelegate n_switch_ioport; + + /// <summary> + /// void n_list_jump_cond(uint CardNo, uint Mask1, uint Mask0, uint Pos); + /// </summary> + public static n_list_jump_condDelegate n_list_jump_cond; + + /// <summary> + /// void list_call_cond(uint Mask1, uint Mask0, uint Pos); + /// </summary> + public static list_call_condDelegate list_call_cond; + + /// <summary> + /// void list_call_abs_cond(uint Mask1, uint Mask0, uint Pos); + /// </summary> + public static list_call_abs_condDelegate list_call_abs_cond; + + /// <summary> + /// void sub_call_cond(uint Mask1, uint Mask0, uint Index); + /// </summary> + public static sub_call_condDelegate sub_call_cond; + + /// <summary> + /// void sub_call_abs_cond(uint Mask1, uint Mask0, uint Index); + /// </summary> + public static sub_call_abs_condDelegate sub_call_abs_cond; + + /// <summary> + /// void list_jump_pos_cond(uint Mask1, uint Mask0, uint Pos); + /// </summary> + public static list_jump_pos_condDelegate list_jump_pos_cond; + + /// <summary> + /// void list_jump_rel_cond(uint Mask1, uint Mask0, int Pos); + /// </summary> + public static list_jump_rel_condDelegate list_jump_rel_cond; + + /// <summary> + /// void if_cond(uint Mask1, uint Mask0); + /// </summary> + public static if_condDelegate if_cond; + + /// <summary> + /// void if_not_cond(uint Mask1, uint Mask0); + /// </summary> + public static if_not_condDelegate if_not_cond; + + /// <summary> + /// void if_pin_cond(uint Mask1, uint Mask0); + /// </summary> + public static if_pin_condDelegate if_pin_cond; + + /// <summary> + /// void if_not_pin_cond(uint Mask1, uint Mask0); + /// </summary> + public static if_not_pin_condDelegate if_not_pin_cond; + + /// <summary> + /// void switch_ioport(uint MaskBits, uint ShiftBits); + /// </summary> + public static switch_ioportDelegate switch_ioport; + + /// <summary> + /// void list_jump_cond(uint Mask1, uint Mask0, uint Pos); + /// </summary> + public static list_jump_condDelegate list_jump_cond; + + /// <summary> + /// void n_select_char_set(uint CardNo, uint No); + /// </summary> + public static n_select_char_setDelegate n_select_char_set; + + /// <summary> + /// void n_mark_text(uint CardNo, string Text); + /// </summary> + public static n_mark_textDelegate n_mark_text; + + /// <summary> + /// void n_mark_text_abs(uint CardNo, string Text); + /// </summary> + public static n_mark_text_absDelegate n_mark_text_abs; + + /// <summary> + /// void n_mark_char(uint CardNo, uint Char); + /// </summary> + public static n_mark_charDelegate n_mark_char; + + /// <summary> + /// void n_mark_char_abs(uint CardNo, uint Char); + /// </summary> + public static n_mark_char_absDelegate n_mark_char_abs; + + /// <summary> + /// void select_char_set(uint No); + /// </summary> + public static select_char_setDelegate select_char_set; + + /// <summary> + /// void mark_text(string Text); + /// </summary> + public static mark_textDelegate mark_text; + + /// <summary> + /// void mark_text_abs(string Text); + /// </summary> + public static mark_text_absDelegate mark_text_abs; + + /// <summary> + /// void mark_char(uint Char); + /// </summary> + public static mark_charDelegate mark_char; + + /// <summary> + /// void mark_char_abs(uint Char); + /// </summary> + public static mark_char_absDelegate mark_char_abs; + + /// <summary> + /// void n_mark_serial(uint CardNo, uint Mode, uint Digits); + /// </summary> + public static n_mark_serialDelegate n_mark_serial; + + /// <summary> + /// void n_mark_serial_abs(uint CardNo, uint Mode, uint Digits); + /// </summary> + public static n_mark_serial_absDelegate n_mark_serial_abs; + + /// <summary> + /// void n_mark_date(uint CardNo, uint Part, uint Mode); + /// </summary> + public static n_mark_dateDelegate n_mark_date; + + /// <summary> + /// void n_mark_date_abs(uint CardNo, uint Part, uint Mode); + /// </summary> + public static n_mark_date_absDelegate n_mark_date_abs; + + /// <summary> + /// void n_mark_time(uint CardNo, uint Part, uint Mode); + /// </summary> + public static n_mark_timeDelegate n_mark_time; + + /// <summary> + /// void n_mark_time_abs(uint CardNo, uint Part, uint Mode); + /// </summary> + public static n_mark_time_absDelegate n_mark_time_abs; + + /// <summary> + /// void n_select_serial_set_list(uint CardNo, uint No); + /// </summary> + public static n_select_serial_set_listDelegate n_select_serial_set_list; + + /// <summary> + /// void n_set_serial_step_list(uint CardNo, uint No, uint Step); + /// </summary> + public static n_set_serial_step_listDelegate n_set_serial_step_list; + + /// <summary> + /// void n_time_fix_f_off(uint CardNo, uint FirstDay, uint Offset); + /// </summary> + public static n_time_fix_f_offDelegate n_time_fix_f_off; + + /// <summary> + /// void n_time_fix_f(uint CardNo, uint FirstDay); + /// </summary> + public static n_time_fix_fDelegate n_time_fix_f; + + /// <summary> + /// void n_time_fix(uint CardNo); + /// </summary> + public static n_time_fixDelegate n_time_fix; + + /// <summary> + /// void mark_serial(uint Mode, uint Digits); + /// </summary> + public static mark_serialDelegate mark_serial; + + /// <summary> + /// void mark_serial_abs(uint Mode, uint Digits); + /// </summary> + public static mark_serial_absDelegate mark_serial_abs; + + /// <summary> + /// void mark_date(uint Part, uint Mode); + /// </summary> + public static mark_dateDelegate mark_date; + + /// <summary> + /// void mark_date_abs(uint Part, uint Mode); + /// </summary> + public static mark_date_absDelegate mark_date_abs; + + /// <summary> + /// void mark_time(uint Part, uint Mode); + /// </summary> + public static mark_timeDelegate mark_time; + + /// <summary> + /// void mark_time_abs(uint Part, uint Mode); + /// </summary> + public static mark_time_absDelegate mark_time_abs; + + /// <summary> + /// void time_fix_f_off(uint FirstDay, uint Offset); + /// </summary> + public static time_fix_f_offDelegate time_fix_f_off; + + /// <summary> + /// void select_serial_set_list(uint No); + /// </summary> + public static select_serial_set_listDelegate select_serial_set_list; + + /// <summary> + /// void set_serial_step_list(uint No, uint Step); + /// </summary> + public static set_serial_step_listDelegate set_serial_step_list; + + /// <summary> + /// void time_fix_f(uint FirstDay); + /// </summary> + public static time_fix_fDelegate time_fix_f; + + /// <summary> + /// void time_fix(); + /// </summary> + public static time_fixDelegate time_fix; + + /// <summary> + /// void n_clear_io_cond_list(uint CardNo, uint Mask1, uint Mask0, uint Mask); + /// </summary> + public static n_clear_io_cond_listDelegate n_clear_io_cond_list; + + /// <summary> + /// void n_set_io_cond_list(uint CardNo, uint Mask1, uint Mask0, uint Mask); + /// </summary> + public static n_set_io_cond_listDelegate n_set_io_cond_list; + + /// <summary> + /// void n_write_io_port_mask_list(uint CardNo, uint Value, uint Mask); + /// </summary> + public static n_write_io_port_mask_listDelegate n_write_io_port_mask_list; + + /// <summary> + /// void n_write_8bit_port_list(uint CardNo, uint Value); + /// </summary> + public static n_write_8bit_port_listDelegate n_write_8bit_port_list; + + /// <summary> + /// void n_read_io_port_list(uint CardNo); + /// </summary> + public static n_read_io_port_listDelegate n_read_io_port_list; + + /// <summary> + /// void n_write_da_x_list(uint CardNo, uint x, uint Value); + /// </summary> + public static n_write_da_x_listDelegate n_write_da_x_list; + + /// <summary> + /// void n_write_io_port_list(uint CardNo, uint Value); + /// </summary> + public static n_write_io_port_listDelegate n_write_io_port_list; + + /// <summary> + /// void n_write_da_1_list(uint CardNo, uint Value); + /// </summary> + public static n_write_da_1_listDelegate n_write_da_1_list; + + /// <summary> + /// void n_write_da_2_list(uint CardNo, uint Value); + /// </summary> + public static n_write_da_2_listDelegate n_write_da_2_list; + + /// <summary> + /// void clear_io_cond_list(uint Mask1, uint Mask0, uint MaskClear); + /// </summary> + public static clear_io_cond_listDelegate clear_io_cond_list; + + /// <summary> + /// void set_io_cond_list(uint Mask1, uint Mask0, uint MaskSet); + /// </summary> + public static set_io_cond_listDelegate set_io_cond_list; + + /// <summary> + /// void write_io_port_mask_list(uint Value, uint Mask); + /// </summary> + public static write_io_port_mask_listDelegate write_io_port_mask_list; + + /// <summary> + /// void write_8bit_port_list(uint Value); + /// </summary> + public static write_8bit_port_listDelegate write_8bit_port_list; + + /// <summary> + /// void read_io_port_list(); + /// </summary> + public static read_io_port_listDelegate read_io_port_list; + + /// <summary> + /// void write_da_x_list(uint x, uint Value); + /// </summary> + public static write_da_x_listDelegate write_da_x_list; + + /// <summary> + /// void write_io_port_list(uint Value); + /// </summary> + public static write_io_port_listDelegate write_io_port_list; + + /// <summary> + /// void write_da_1_list(uint Value); + /// </summary> + public static write_da_1_listDelegate write_da_1_list; + + /// <summary> + /// void write_da_2_list(uint Value); + /// </summary> + public static write_da_2_listDelegate write_da_2_list; + + /// <summary> + /// void n_laser_signal_on_list(uint CardNo); + /// </summary> + public static n_laser_signal_on_listDelegate n_laser_signal_on_list; + + /// <summary> + /// void n_laser_signal_off_list(uint CardNo); + /// </summary> + public static n_laser_signal_off_listDelegate n_laser_signal_off_list; + + /// <summary> + /// void n_para_laser_on_pulses_list(uint CardNo, uint Period, uint Pulses, uint P); + /// </summary> + public static n_para_laser_on_pulses_listDelegate n_para_laser_on_pulses_list; + + /// <summary> + /// void n_laser_on_pulses_list(uint CardNo, uint Period, uint Pulses); + /// </summary> + public static n_laser_on_pulses_listDelegate n_laser_on_pulses_list; + + /// <summary> + /// void n_laser_on_list(uint CardNo, uint Period); + /// </summary> + public static n_laser_on_listDelegate n_laser_on_list; + + /// <summary> + /// void n_set_laser_delays(uint CardNo, int LaserOnDelay, uint LaserOffDelay); + /// </summary> + public static n_set_laser_delaysDelegate n_set_laser_delays; + + /// <summary> + /// void n_set_standby_list(uint CardNo, uint HalfPeriod, uint PulseLength); + /// </summary> + public static n_set_standby_listDelegate n_set_standby_list; + + /// <summary> + /// void n_set_laser_pulses(uint CardNo, uint HalfPeriod, uint PulseLength); + /// </summary> + public static n_set_laser_pulsesDelegate n_set_laser_pulses; + + /// <summary> + /// void n_set_firstpulse_killer_list(uint CardNo, uint Length); + /// </summary> + public static n_set_firstpulse_killer_listDelegate n_set_firstpulse_killer_list; + + /// <summary> + /// void n_set_qswitch_delay_list(uint CardNo, uint Delay); + /// </summary> + public static n_set_qswitch_delay_listDelegate n_set_qswitch_delay_list; + + /// <summary> + /// void n_set_laser_pin_out_list(uint CardNo, uint Pins); + /// </summary> + public static n_set_laser_pin_out_listDelegate n_set_laser_pin_out_list; + + /// <summary> + /// void n_set_vector_control(uint CardNo, uint Ctrl, uint Value); + /// </summary> + public static n_set_vector_controlDelegate n_set_vector_control; + + /// <summary> + /// void n_set_default_pixel_list(uint CardNo, uint PulseLength); + /// </summary> + public static n_set_default_pixel_listDelegate n_set_default_pixel_list; + + /// <summary> + /// void n_set_port_default_list(uint CardNo, uint Port, uint Value); + /// </summary> + public static n_set_port_default_listDelegate n_set_port_default_list; + + /// <summary> + /// void n_set_auto_laser_params_list(uint CardNo, uint Ctrl, uint Value, uint MinValue, uint MaxValue); + /// </summary> + public static n_set_auto_laser_params_listDelegate n_set_auto_laser_params_list; + + /// <summary> + /// void n_set_pulse_picking_list(uint CardNo, uint No); + /// </summary> + public static n_set_pulse_picking_listDelegate n_set_pulse_picking_list; + + /// <summary> + /// void n_set_softstart_level_list(uint CardNo, uint Index, uint Level1, uint Level2, uint Level3); + /// </summary> + public static n_set_softstart_level_listDelegate n_set_softstart_level_list; + + /// <summary> + /// void n_set_softstart_mode_list(uint CardNo, uint Mode, uint Number, uint Delay); + /// </summary> + public static n_set_softstart_mode_listDelegate n_set_softstart_mode_list; + + /// <summary> + /// void n_config_laser_signals_list(uint CardNo, uint Config); + /// </summary> + public static n_config_laser_signals_listDelegate n_config_laser_signals_list; + + /// <summary> + /// void n_set_laser_timing(uint CardNo, uint HalfPeriod, uint PulseLength1, uint PulseLength2, uint TimeBase); + /// </summary> + public static n_set_laser_timingDelegate n_set_laser_timing; + + /// <summary> + /// void laser_signal_on_list(); + /// </summary> + public static laser_signal_on_listDelegate laser_signal_on_list; + + /// <summary> + /// void laser_signal_off_list(); + /// </summary> + public static laser_signal_off_listDelegate laser_signal_off_list; + + /// <summary> + /// void para_laser_on_pulses_list(uint Period, uint Pulses, uint P); + /// </summary> + public static para_laser_on_pulses_listDelegate para_laser_on_pulses_list; + + /// <summary> + /// void laser_on_pulses_list(uint Period, uint Pulses); + /// </summary> + public static laser_on_pulses_listDelegate laser_on_pulses_list; + + /// <summary> + /// void laser_on_list(uint Period); + /// </summary> + public static laser_on_listDelegate laser_on_list; + + /// <summary> + /// void set_laser_delays(int LaserOnDelay, uint LaserOffDelay); + /// </summary> + public static set_laser_delaysDelegate set_laser_delays; + + /// <summary> + /// void set_standby_list(uint HalfPeriod, uint PulseLength); + /// </summary> + public static set_standby_listDelegate set_standby_list; + + /// <summary> + /// void set_laser_pulses(uint HalfPeriod, uint PulseLength); + /// </summary> + public static set_laser_pulsesDelegate set_laser_pulses; + + /// <summary> + /// void set_firstpulse_killer_list(uint Length); + /// </summary> + public static set_firstpulse_killer_listDelegate set_firstpulse_killer_list; + + /// <summary> + /// void set_qswitch_delay_list(uint Delay); + /// </summary> + public static set_qswitch_delay_listDelegate set_qswitch_delay_list; + + /// <summary> + /// void set_laser_pin_out_list(uint Pins); + /// </summary> + public static set_laser_pin_out_listDelegate set_laser_pin_out_list; + + /// <summary> + /// void set_vector_control(uint Ctrl, uint Value); + /// </summary> + public static set_vector_controlDelegate set_vector_control; + + /// <summary> + /// void set_default_pixel_list(uint PulseLength); + /// </summary> + public static set_default_pixel_listDelegate set_default_pixel_list; + + /// <summary> + /// void set_port_default_list(uint Port, uint Value); + /// </summary> + public static set_port_default_listDelegate set_port_default_list; + + /// <summary> + /// void set_auto_laser_params_list(uint Ctrl, uint Value, uint MinValue, uint MaxValue); + /// </summary> + public static set_auto_laser_params_listDelegate set_auto_laser_params_list; + + /// <summary> + /// void set_pulse_picking_list(uint No); + /// </summary> + public static set_pulse_picking_listDelegate set_pulse_picking_list; + + /// <summary> + /// void set_softstart_level_list(uint Index, uint Level1, uint Level2, uint Level3); + /// </summary> + public static set_softstart_level_listDelegate set_softstart_level_list; + + /// <summary> + /// void set_softstart_mode_list(uint Mode, uint Number, uint Delay); + /// </summary> + public static set_softstart_mode_listDelegate set_softstart_mode_list; + + /// <summary> + /// void config_laser_signals_list(uint Config); + /// </summary> + public static config_laser_signals_listDelegate config_laser_signals_list; + + /// <summary> + /// void set_laser_timing(uint HalfPeriod, uint PulseLength1, uint PulseLength2, uint TimeBase); + /// </summary> + public static set_laser_timingDelegate set_laser_timing; + + /// <summary> + /// void n_fly_return_z(uint CardNo, int X, int Y, int Z); + /// </summary> + public static n_fly_return_zDelegate n_fly_return_z; + + /// <summary> + /// void n_fly_return(uint CardNo, int X, int Y); + /// </summary> + public static n_fly_returnDelegate n_fly_return; + + /// <summary> + /// void n_set_rot_center_list(uint CardNo, int X, int Y); + /// </summary> + public static n_set_rot_center_listDelegate n_set_rot_center_list; + + /// <summary> + /// void n_set_ext_start_delay_list(uint CardNo, int Delay, uint EncoderNo); + /// </summary> + public static n_set_ext_start_delay_listDelegate n_set_ext_start_delay_list; + + /// <summary> + /// void n_set_fly_x(uint CardNo, double ScaleX); + /// </summary> + public static n_set_fly_xDelegate n_set_fly_x; + + /// <summary> + /// void n_set_fly_y(uint CardNo, double ScaleY); + /// </summary> + public static n_set_fly_yDelegate n_set_fly_y; + + /// <summary> + /// void n_set_fly_z(uint CardNo, double ScaleZ, uint EndoderNo); + /// </summary> + public static n_set_fly_zDelegate n_set_fly_z; + + /// <summary> + /// void n_set_fly_rot(uint CardNo, double Resolution); + /// </summary> + public static n_set_fly_rotDelegate n_set_fly_rot; + + /// <summary> + /// void n_set_fly_2d(uint CardNo, double ScaleX, double ScaleY); + /// </summary> + public static n_set_fly_2dDelegate n_set_fly_2d; + + /// <summary> + /// void n_set_fly_x_pos(uint CardNo, double ScaleX); + /// </summary> + public static n_set_fly_x_posDelegate n_set_fly_x_pos; + + /// <summary> + /// void n_set_fly_y_pos(uint CardNo, double ScaleY); + /// </summary> + public static n_set_fly_y_posDelegate n_set_fly_y_pos; + + /// <summary> + /// void n_set_fly_rot_pos(uint CardNo, double Resolution); + /// </summary> + public static n_set_fly_rot_posDelegate n_set_fly_rot_pos; + + /// <summary> + /// void n_set_fly_limits(uint CardNo, int Xmin, int Xmax, int Ymin, int Ymax); + /// </summary> + public static n_set_fly_limitsDelegate n_set_fly_limits; + + /// <summary> + /// void n_set_fly_limits_z(uint CardNo, int Zmin, int Zmax); + /// </summary> + public static n_set_fly_limits_zDelegate n_set_fly_limits_z; + + /// <summary> + /// void n_if_fly_x_overflow(uint CardNo, int Mode); + /// </summary> + public static n_if_fly_x_overflowDelegate n_if_fly_x_overflow; + + /// <summary> + /// void n_if_fly_y_overflow(uint CardNo, int Mode); + /// </summary> + public static n_if_fly_y_overflowDelegate n_if_fly_y_overflow; + + /// <summary> + /// void n_if_fly_z_overflow(uint CardNo, int Mode); + /// </summary> + public static n_if_fly_z_overflowDelegate n_if_fly_z_overflow; + + /// <summary> + /// void n_if_not_fly_x_overflow(uint CardNo, int Mode); + /// </summary> + public static n_if_not_fly_x_overflowDelegate n_if_not_fly_x_overflow; + + /// <summary> + /// void n_if_not_fly_y_overflow(uint CardNo, int Mode); + /// </summary> + public static n_if_not_fly_y_overflowDelegate n_if_not_fly_y_overflow; + + /// <summary> + /// void n_if_not_fly_z_overflow(uint CardNo, int Mode); + /// </summary> + public static n_if_not_fly_z_overflowDelegate n_if_not_fly_z_overflow; + + /// <summary> + /// void n_clear_fly_overflow(uint CardNo, uint Mode); + /// </summary> + public static n_clear_fly_overflowDelegate n_clear_fly_overflow; + + /// <summary> + /// void n_set_mcbsp_x_list(uint CardNo, double ScaleX); + /// </summary> + public static n_set_mcbsp_x_listDelegate n_set_mcbsp_x_list; + + /// <summary> + /// void n_set_mcbsp_y_list(uint CardNo, double ScaleY); + /// </summary> + public static n_set_mcbsp_y_listDelegate n_set_mcbsp_y_list; + + /// <summary> + /// void n_set_mcbsp_rot_list(uint CardNo, double Resolution); + /// </summary> + public static n_set_mcbsp_rot_listDelegate n_set_mcbsp_rot_list; + + /// <summary> + /// void n_set_mcbsp_matrix_list(uint CardNo); + /// </summary> + public static n_set_mcbsp_matrix_listDelegate n_set_mcbsp_matrix_list; + + /// <summary> + /// void n_set_mcbsp_global_x_list(uint CardNo, double ScaleX); + /// </summary> + public static n_set_mcbsp_global_x_listDelegate n_set_mcbsp_global_x_list; + + /// <summary> + /// void n_set_mcbsp_global_y_list(uint CardNo, double ScaleY); + /// </summary> + public static n_set_mcbsp_global_y_listDelegate n_set_mcbsp_global_y_list; + + /// <summary> + /// void n_set_mcbsp_global_rot_list(uint CardNo, double Resolution); + /// </summary> + public static n_set_mcbsp_global_rot_listDelegate n_set_mcbsp_global_rot_list; + + /// <summary> + /// void n_set_mcbsp_global_matrix_list(uint CardNo); + /// </summary> + public static n_set_mcbsp_global_matrix_listDelegate n_set_mcbsp_global_matrix_list; + + /// <summary> + /// void n_set_mcbsp_in_list(uint CardNo, uint Mode, double Scale); + /// </summary> + public static n_set_mcbsp_in_listDelegate n_set_mcbsp_in_list; + + /// <summary> + /// void n_set_multi_mcbsp_in_list(uint CardNo, uint Ctrl, uint P, uint Mode); + /// </summary> + public static n_set_multi_mcbsp_in_listDelegate n_set_multi_mcbsp_in_list; + + /// <summary> + /// void n_wait_for_encoder_mode(uint CardNo, int Value, uint EncoderNo, int Mode); + /// </summary> + public static n_wait_for_encoder_modeDelegate n_wait_for_encoder_mode; + + /// <summary> + /// void n_wait_for_mcbsp(uint CardNo, uint Axis, int Value, int Mode); + /// </summary> + public static n_wait_for_mcbspDelegate n_wait_for_mcbsp; + + /// <summary> + /// void n_set_encoder_speed(uint CardNo, uint EncoderNo, double Speed, double Smooth); + /// </summary> + public static n_set_encoder_speedDelegate n_set_encoder_speed; + + /// <summary> + /// void n_get_mcbsp_list(uint CardNo); + /// </summary> + public static n_get_mcbsp_listDelegate n_get_mcbsp_list; + + /// <summary> + /// void n_store_encoder(uint CardNo, uint Pos); + /// </summary> + public static n_store_encoderDelegate n_store_encoder; + + /// <summary> + /// void n_wait_for_encoder_in_range(uint CardNo, int EncXmin, int EncXmax, int EncYmin, int EncYmax); + /// </summary> + public static n_wait_for_encoder_in_rangeDelegate n_wait_for_encoder_in_range; + + /// <summary> + /// void n_activate_fly_xy(uint CardNo, double ScaleX, double ScaleY); + /// </summary> + public static n_activate_fly_xyDelegate n_activate_fly_xy; + + /// <summary> + /// void n_activate_fly_2d(uint CardNo, double ScaleX, double ScaleY); + /// </summary> + public static n_activate_fly_2dDelegate n_activate_fly_2d; + + /// <summary> + /// void n_activate_fly_xy_encoder(uint CardNo, double ScaleX, double ScaleY, int EncX, int EncY); + /// </summary> + public static n_activate_fly_xy_encoderDelegate n_activate_fly_xy_encoder; + + /// <summary> + /// void n_activate_fly_2d_encoder(uint CardNo, double ScaleX, double ScaleY, int EncX, int EncY); + /// </summary> + public static n_activate_fly_2d_encoderDelegate n_activate_fly_2d_encoder; + + /// <summary> + /// void n_if_not_activated(uint CardNo); + /// </summary> + public static n_if_not_activatedDelegate n_if_not_activated; + + /// <summary> + /// void n_park_position(uint CardNo, uint Mode, int X, int Y); + /// </summary> + public static n_park_positionDelegate n_park_position; + + /// <summary> + /// void n_park_return(uint CardNo, uint Mode, int X, int Y); + /// </summary> + public static n_park_returnDelegate n_park_return; + + /// <summary> + /// void n_wait_for_encoder(uint CardNo, int Value, uint EncoderNo); + /// </summary> + public static n_wait_for_encoderDelegate n_wait_for_encoder; + + /// <summary> + /// void fly_return_z(int X, int Y, int Z); + /// </summary> + public static fly_return_zDelegate fly_return_z; + + /// <summary> + /// void fly_return(int X, int Y); + /// </summary> + public static fly_returnDelegate fly_return; + + /// <summary> + /// void set_rot_center_list(int X, int Y); + /// </summary> + public static set_rot_center_listDelegate set_rot_center_list; + + /// <summary> + /// void set_ext_start_delay_list(int Delay, uint EncoderNo); + /// </summary> + public static set_ext_start_delay_listDelegate set_ext_start_delay_list; + + /// <summary> + /// void set_fly_x(double ScaleX); + /// </summary> + public static set_fly_xDelegate set_fly_x; + + /// <summary> + /// void set_fly_y(double ScaleY); + /// </summary> + public static set_fly_yDelegate set_fly_y; + + /// <summary> + /// void set_fly_z(double ScaleZ, uint EncoderNo); + /// </summary> + public static set_fly_zDelegate set_fly_z; + + /// <summary> + /// void set_fly_rot(double Resolution); + /// </summary> + public static set_fly_rotDelegate set_fly_rot; + + /// <summary> + /// void set_fly_2d(double ScaleX, double ScaleY); + /// </summary> + public static set_fly_2dDelegate set_fly_2d; + + /// <summary> + /// void set_fly_x_pos(double ScaleX); + /// </summary> + public static set_fly_x_posDelegate set_fly_x_pos; + + /// <summary> + /// void set_fly_y_pos(double ScaleY); + /// </summary> + public static set_fly_y_posDelegate set_fly_y_pos; + + /// <summary> + /// void set_fly_rot_pos(double Resolution); + /// </summary> + public static set_fly_rot_posDelegate set_fly_rot_pos; + + /// <summary> + /// void set_fly_limits(int Xmin, int Xmax, int Ymin, int Ymax); + /// </summary> + public static set_fly_limitsDelegate set_fly_limits; + + /// <summary> + /// void set_fly_limits_z(int Zmin, int Zmax); + /// </summary> + public static set_fly_limits_zDelegate set_fly_limits_z; + + /// <summary> + /// void if_fly_x_overflow(int Mode); + /// </summary> + public static if_fly_x_overflowDelegate if_fly_x_overflow; + + /// <summary> + /// void if_fly_y_overflow(int Mode); + /// </summary> + public static if_fly_y_overflowDelegate if_fly_y_overflow; + + /// <summary> + /// void if_fly_z_overflow(int Mode); + /// </summary> + public static if_fly_z_overflowDelegate if_fly_z_overflow; + + /// <summary> + /// void if_not_fly_x_overflow(int Mode); + /// </summary> + public static if_not_fly_x_overflowDelegate if_not_fly_x_overflow; + + /// <summary> + /// void if_not_fly_y_overflow(int Mode); + /// </summary> + public static if_not_fly_y_overflowDelegate if_not_fly_y_overflow; + + /// <summary> + /// void if_not_fly_z_overflow(int Mode); + /// </summary> + public static if_not_fly_z_overflowDelegate if_not_fly_z_overflow; + + /// <summary> + /// void clear_fly_overflow(uint Mode); + /// </summary> + public static clear_fly_overflowDelegate clear_fly_overflow; + + /// <summary> + /// void set_mcbsp_x_list(double ScaleX); + /// </summary> + public static set_mcbsp_x_listDelegate set_mcbsp_x_list; + + /// <summary> + /// void set_mcbsp_y_list(double ScaleY); + /// </summary> + public static set_mcbsp_y_listDelegate set_mcbsp_y_list; + + /// <summary> + /// void set_mcbsp_rot_list(double Resolution); + /// </summary> + public static set_mcbsp_rot_listDelegate set_mcbsp_rot_list; + + /// <summary> + /// void set_mcbsp_matrix_list(); + /// </summary> + public static set_mcbsp_matrix_listDelegate set_mcbsp_matrix_list; + + /// <summary> + /// void set_mcbsp_global_x_list(double ScaleX); + /// </summary> + public static set_mcbsp_global_x_listDelegate set_mcbsp_global_x_list; + + /// <summary> + /// void set_mcbsp_global_y_list(double ScaleY); + /// </summary> + public static set_mcbsp_global_y_listDelegate set_mcbsp_global_y_list; + + /// <summary> + /// void set_mcbsp_global_rot_list(double Resolution); + /// </summary> + public static set_mcbsp_global_rot_listDelegate set_mcbsp_global_rot_list; + + /// <summary> + /// void set_mcbsp_global_matrix_list(); + /// </summary> + public static set_mcbsp_global_matrix_listDelegate set_mcbsp_global_matrix_list; + + /// <summary> + /// void set_mcbsp_in_list(uint Mode, double Scale); + /// </summary> + public static set_mcbsp_in_listDelegate set_mcbsp_in_list; + + /// <summary> + /// void set_multi_mcbsp_in_list(uint Ctrl, uint P, uint Mode); + /// </summary> + public static set_multi_mcbsp_in_listDelegate set_multi_mcbsp_in_list; + + /// <summary> + /// void wait_for_encoder_mode(int Value, uint EncoderNo, int Mode); + /// </summary> + public static wait_for_encoder_modeDelegate wait_for_encoder_mode; + + /// <summary> + /// void wait_for_mcbsp(uint Axis, int Value, int Mode); + /// </summary> + public static wait_for_mcbspDelegate wait_for_mcbsp; + + /// <summary> + /// void set_encoder_speed(uint EncoderNo, double Speed, double Smooth); + /// </summary> + public static set_encoder_speedDelegate set_encoder_speed; + + /// <summary> + /// void get_mcbsp_list(); + /// </summary> + public static get_mcbsp_listDelegate get_mcbsp_list; + + /// <summary> + /// void store_encoder(uint Pos); + /// </summary> + public static store_encoderDelegate store_encoder; + + /// <summary> + /// void wait_for_encoder_in_range(int EncXmin, int EncXmax, int EncYmin, int EncYmax); + /// </summary> + public static wait_for_encoder_in_rangeDelegate wait_for_encoder_in_range; + + /// <summary> + /// void activate_fly_xy(double ScaleX, double ScaleY); + /// </summary> + public static activate_fly_xyDelegate activate_fly_xy; + + /// <summary> + /// void activate_fly_2d(double ScaleX, double ScaleY); + /// </summary> + public static activate_fly_2dDelegate activate_fly_2d; + + /// <summary> + /// void activate_fly_xy_encoder(double ScaleX, double ScaleY, int EncX, int EncY); + /// </summary> + public static activate_fly_xy_encoderDelegate activate_fly_xy_encoder; + + /// <summary> + /// void activate_fly_2d_encoder(double ScaleX, double ScaleY, int EncX, int EncY); + /// </summary> + public static activate_fly_2d_encoderDelegate activate_fly_2d_encoder; + + /// <summary> + /// void if_not_activated(); + /// </summary> + public static if_not_activatedDelegate if_not_activated; + + /// <summary> + /// void park_position(uint Mode, int X, int Y); + /// </summary> + public static park_positionDelegate park_position; + + /// <summary> + /// void park_return(uint Mode, int X, int Y); + /// </summary> + public static park_returnDelegate park_return; + + /// <summary> + /// void wait_for_encoder(int Value, uint EncoderNo); + /// </summary> + public static wait_for_encoderDelegate wait_for_encoder; + + /// <summary> + /// void n_save_and_restart_timer(uint CardNo); + /// </summary> + public static n_save_and_restart_timerDelegate n_save_and_restart_timer; + + /// <summary> + /// void n_set_wobbel(uint CardNo, uint Transversal, uint Longitudinal, double Freq); + /// </summary> + public static n_set_wobbelDelegate n_set_wobbel; + + /// <summary> + /// void n_set_wobbel_mode(uint CardNo, uint Transversal, uint Longitudinal, double Freq, int Mode); + /// </summary> + public static n_set_wobbel_modeDelegate n_set_wobbel_mode; + + /// <summary> + /// void n_set_wobbel_mode_phase(uint CardNo, uint Transversal, uint Longitudinal, double Freq, int Mode, double Phase); + /// </summary> + public static n_set_wobbel_mode_phaseDelegate n_set_wobbel_mode_phase; + + /// <summary> + /// void n_set_wobbel_direction(uint CardNo, int dX, int dY); + /// </summary> + public static n_set_wobbel_directionDelegate n_set_wobbel_direction; + + /// <summary> + /// void n_set_wobbel_control(uint CardNo, uint Ctrl, uint Value, uint MinValue, uint MaxValue); + /// </summary> + public static n_set_wobbel_controlDelegate n_set_wobbel_control; + + /// <summary> + /// void n_set_wobbel_vector(uint CardNo, double dTrans, double dLong, uint Period, double dPower); + /// </summary> + public static n_set_wobbel_vectorDelegate n_set_wobbel_vector; + + /// <summary> + /// void n_set_wobbel_offset(uint CardNo, int OffsetTrans, int OffsetLong); + /// </summary> + public static n_set_wobbel_offsetDelegate n_set_wobbel_offset; + + /// <summary> + /// void n_load_wobbel_power_list(uint CardNo, uint TableNo, int[] Ptr, int Flag); + /// </summary> + public static n_load_wobbel_power_listDelegate n_load_wobbel_power_list; + + /// <summary> + /// void n_set_wobbel_power_angle(uint CardNo, uint Angle); + /// </summary> + public static n_set_wobbel_power_angleDelegate n_set_wobbel_power_angle; + + /// <summary> + /// void n_set_trigger(uint CardNo, uint Period, uint Signal1, uint Signal2); + /// </summary> + public static n_set_triggerDelegate n_set_trigger; + + /// <summary> + /// void n_set_trigger4(uint CardNo, uint Period, uint Signal1, uint Signal2, uint Signal3, uint Signal4); + /// </summary> + public static n_set_trigger4Delegate n_set_trigger4; + + /// <summary> + /// void n_set_pixel_line_3d(uint CardNo, uint Channel, uint HalfPeriod, double dX, double dY, double dZ); + /// </summary> + public static n_set_pixel_line_3dDelegate n_set_pixel_line_3d; + + /// <summary> + /// void n_set_pixel_line(uint CardNo, uint Channel, uint HalfPeriod, double dX, double dY); + /// </summary> + public static n_set_pixel_lineDelegate n_set_pixel_line; + + /// <summary> + /// void n_stretch_pixel_line(uint CardNo, uint Delay, uint Period); + /// </summary> + public static n_stretch_pixel_lineDelegate n_stretch_pixel_line; + + /// <summary> + /// void n_set_n_pixel(uint CardNo, uint PulseLength, uint AnalogOut, uint Number); + /// </summary> + public static n_set_n_pixelDelegate n_set_n_pixel; + + /// <summary> + /// void n_set_pixel(uint CardNo, uint PulseLength, uint AnalogOut); + /// </summary> + public static n_set_pixelDelegate n_set_pixel; + + /// <summary> + /// void n_rs232_write_text_list(uint CardNo, string pData); + /// </summary> + public static n_rs232_write_text_listDelegate n_rs232_write_text_list; + + /// <summary> + /// void n_set_mcbsp_out(uint CardNo, uint Signal1, uint Signal2); + /// </summary> + public static n_set_mcbsp_outDelegate n_set_mcbsp_out; + + /// <summary> + /// void n_set_mcbsp_out_ptr_list(uint CardNo, uint Number, uint[] SignalPtr); + /// </summary> + public static n_set_mcbsp_out_ptr_listDelegate n_set_mcbsp_out_ptr_list; + + /// <summary> + /// void n_camming(uint CardNo, uint FirstPos, uint NPos, uint No, uint Ctrl, double Scale, uint Code); + /// </summary> + public static n_cammingDelegate n_camming; + + /// <summary> + /// void n_periodic_toggle_list(uint CardNo, uint Port, uint Mask, uint P1, uint P2, uint Count, uint Start); + /// </summary> + public static n_periodic_toggle_listDelegate n_periodic_toggle_list; + + /// <summary> + /// void n_micro_vector_abs_3d(uint CardNo, int X, int Y, int Z, int LasOn, int LasOf); + /// </summary> + public static n_micro_vector_abs_3dDelegate n_micro_vector_abs_3d; + + /// <summary> + /// void n_micro_vector_rel_3d(uint CardNo, int dX, int dY, int dZ, int LasOn, int LasOf); + /// </summary> + public static n_micro_vector_rel_3dDelegate n_micro_vector_rel_3d; + + /// <summary> + /// void n_micro_vector_abs(uint CardNo, int X, int Y, int LasOn, int LasOf); + /// </summary> + public static n_micro_vector_absDelegate n_micro_vector_abs; + + /// <summary> + /// void n_micro_vector_rel(uint CardNo, int dX, int dY, int LasOn, int LasOf); + /// </summary> + public static n_micro_vector_relDelegate n_micro_vector_rel; + + /// <summary> + /// void n_set_free_variable_list(uint CardNo, uint VarNo, uint Value); + /// </summary> + public static n_set_free_variable_listDelegate n_set_free_variable_list; + + /// <summary> + /// void n_jump_abs_drill_2(uint CardNo, int X, int Y, uint DrillTime, int XOff, int YOff); + /// </summary> + public static n_jump_abs_drill_2Delegate n_jump_abs_drill_2; + + /// <summary> + /// void n_jump_rel_drill_2(uint CardNo, int dX, int dY, uint DrillTime, int XOff, int YOff); + /// </summary> + public static n_jump_rel_drill_2Delegate n_jump_rel_drill_2; + + /// <summary> + /// void n_jump_abs_drill(uint CardNo, int X, int Y, uint DrillTime); + /// </summary> + public static n_jump_abs_drillDelegate n_jump_abs_drill; + + /// <summary> + /// void n_jump_rel_drill(uint CardNo, int dX, int dY, uint DrillTime); + /// </summary> + public static n_jump_rel_drillDelegate n_jump_rel_drill; + + /// <summary> + /// void save_and_restart_timer(); + /// </summary> + public static save_and_restart_timerDelegate save_and_restart_timer; + + /// <summary> + /// void set_wobbel(uint Transversal, uint Longitudinal, double Freq); + /// </summary> + public static set_wobbelDelegate set_wobbel; + + /// <summary> + /// void set_wobbel_mode(uint Transversal, uint Longitudinal, double Freq, int Mode); + /// </summary> + public static set_wobbel_modeDelegate set_wobbel_mode; + + /// <summary> + /// void set_wobbel_mode_phase(uint Transversal, uint Longitudinal, double Freq, int Mode, double Phase); + /// </summary> + public static set_wobbel_mode_phaseDelegate set_wobbel_mode_phase; + + /// <summary> + /// void set_wobbel_direction(int dX, int dY); + /// </summary> + public static set_wobbel_directionDelegate set_wobbel_direction; + + /// <summary> + /// void set_wobbel_control(uint Ctrl, uint Value, uint MinValue, uint MaxValue); + /// </summary> + public static set_wobbel_controlDelegate set_wobbel_control; + + /// <summary> + /// void set_wobbel_vector(double dTrans, double dLong, uint Period, double dPower); + /// </summary> + public static set_wobbel_vectorDelegate set_wobbel_vector; + + /// <summary> + /// void set_wobbel_offset(int OffsetTrans, int OffsetLong); + /// </summary> + public static set_wobbel_offsetDelegate set_wobbel_offset; + + /// <summary> + /// void load_wobbel_power_list(uint TableNo, int[] Ptr, int Flag); + /// </summary> + public static load_wobbel_power_listDelegate load_wobbel_power_list; + + /// <summary> + /// void set_wobbel_power_angle(uint Angle); + /// </summary> + public static set_wobbel_power_angleDelegate set_wobbel_power_angle; + + /// <summary> + /// void set_trigger(uint Period, uint Signal1, uint Signal2); + /// </summary> + public static set_triggerDelegate set_trigger; + + /// <summary> + /// void set_trigger4(uint Period, uint Signal1, uint Signal2, uint Signal3, uint Signal4); + /// </summary> + public static set_trigger4Delegate set_trigger4; + + /// <summary> + /// void set_pixel_line_3d(uint Channel, uint HalfPeriod, double dX, double dY, double dZ); + /// </summary> + public static set_pixel_line_3dDelegate set_pixel_line_3d; + + /// <summary> + /// void set_pixel_line(uint Channel, uint HalfPeriod, double dX, double dY); + /// </summary> + public static set_pixel_lineDelegate set_pixel_line; + + /// <summary> + /// void stretch_pixel_line(uint Delay, uint Period); + /// </summary> + public static stretch_pixel_lineDelegate stretch_pixel_line; + + /// <summary> + /// void set_n_pixel(uint PulseLength, uint AnalogOut, uint Number); + /// </summary> + public static set_n_pixelDelegate set_n_pixel; + + /// <summary> + /// void set_pixel(uint PulseLength, uint AnalogOut); + /// </summary> + public static set_pixelDelegate set_pixel; + + /// <summary> + /// void rs232_write_text_list(string pData); + /// </summary> + public static rs232_write_text_listDelegate rs232_write_text_list; + + /// <summary> + /// void set_mcbsp_out(uint Signal1, uint Signal2); + /// </summary> + public static set_mcbsp_outDelegate set_mcbsp_out; + + /// <summary> + /// void set_mcbsp_out_ptr_list(uint Number, uint[] SignalPtr); + /// </summary> + public static set_mcbsp_out_ptr_listDelegate set_mcbsp_out_ptr_list; + + /// <summary> + /// void camming(uint FirstPos, uint NPos, uint No, uint Ctrl, double Scale, uint Code); + /// </summary> + public static cammingDelegate camming; + + /// <summary> + /// void periodic_toggle_list(uint Port, uint Mask, uint P1, uint P2, uint Count, uint Start); + /// </summary> + public static periodic_toggle_listDelegate periodic_toggle_list; + + /// <summary> + /// void micro_vector_abs_3d(int X, int Y, int Z, int LasOn, int LasOf); + /// </summary> + public static micro_vector_abs_3dDelegate micro_vector_abs_3d; + + /// <summary> + /// void micro_vector_rel_3d(int dX, int dY, int dZ, int LasOn, int LasOf); + /// </summary> + public static micro_vector_rel_3dDelegate micro_vector_rel_3d; + + /// <summary> + /// void micro_vector_abs(int X, int Y, int LasOn, int LasOf); + /// </summary> + public static micro_vector_absDelegate micro_vector_abs; + + /// <summary> + /// void micro_vector_rel(int dX, int dY, int LasOn, int LasOf); + /// </summary> + public static micro_vector_relDelegate micro_vector_rel; + + /// <summary> + /// void set_free_variable_list(uint VarNo, uint Value); + /// </summary> + public static set_free_variable_listDelegate set_free_variable_list; + + /// <summary> + /// void jump_abs_drill_2(int X, int Y, uint DrillTime, int XOff, int YOff); + /// </summary> + public static jump_abs_drill_2Delegate jump_abs_drill_2; + + /// <summary> + /// void jump_rel_drill_2(int dX, int dY, uint DrillTime, int XOff, int YOff); + /// </summary> + public static jump_rel_drill_2Delegate jump_rel_drill_2; + + /// <summary> + /// void jump_abs_drill(int X, int Y, uint DrillTime); + /// </summary> + public static jump_abs_drillDelegate jump_abs_drill; + + /// <summary> + /// void jump_rel_drill(int dX, int dY, uint DrillTime); + /// </summary> + public static jump_rel_drillDelegate jump_rel_drill; + + /// <summary> + /// void n_timed_mark_abs_3d(uint CardNo, int X, int Y, int Z, double T); + /// </summary> + public static n_timed_mark_abs_3dDelegate n_timed_mark_abs_3d; + + /// <summary> + /// void n_timed_mark_rel_3d(uint CardNo, int dX, int dY, int dZ, double T); + /// </summary> + public static n_timed_mark_rel_3dDelegate n_timed_mark_rel_3d; + + /// <summary> + /// void n_timed_mark_abs(uint CardNo, int X, int Y, double T); + /// </summary> + public static n_timed_mark_absDelegate n_timed_mark_abs; + + /// <summary> + /// void n_timed_mark_rel(uint CardNo, int dX, int dY, double T); + /// </summary> + public static n_timed_mark_relDelegate n_timed_mark_rel; + + /// <summary> + /// void timed_mark_abs_3d(int X, int Y, int Z, double T); + /// </summary> + public static timed_mark_abs_3dDelegate timed_mark_abs_3d; + + /// <summary> + /// void timed_mark_rel_3d(int dX, int dY, int dZ, double T); + /// </summary> + public static timed_mark_rel_3dDelegate timed_mark_rel_3d; + + /// <summary> + /// void timed_mark_abs(int X, int Y, double T); + /// </summary> + public static timed_mark_absDelegate timed_mark_abs; + + /// <summary> + /// void timed_mark_rel(int dX, int dY, double T); + /// </summary> + public static timed_mark_relDelegate timed_mark_rel; + + /// <summary> + /// void n_mark_abs_3d(uint CardNo, int X, int Y, int Z); + /// </summary> + public static n_mark_abs_3dDelegate n_mark_abs_3d; + + /// <summary> + /// void n_mark_rel_3d(uint CardNo, int dX, int dY, int dZ); + /// </summary> + public static n_mark_rel_3dDelegate n_mark_rel_3d; + + /// <summary> + /// void n_mark_abs(uint CardNo, int X, int Y); + /// </summary> + public static n_mark_absDelegate n_mark_abs; + + /// <summary> + /// void n_mark_rel(uint CardNo, int dX, int dY); + /// </summary> + public static n_mark_relDelegate n_mark_rel; + + /// <summary> + /// void mark_abs_3d(int X, int Y, int Z); + /// </summary> + public static mark_abs_3dDelegate mark_abs_3d; + + /// <summary> + /// void mark_rel_3d(int dX, int dY, int dZ); + /// </summary> + public static mark_rel_3dDelegate mark_rel_3d; + + /// <summary> + /// void mark_abs(int X, int Y); + /// </summary> + public static mark_absDelegate mark_abs; + + /// <summary> + /// void mark_rel(int dX, int dY); + /// </summary> + public static mark_relDelegate mark_rel; + + /// <summary> + /// void n_timed_jump_abs_3d(uint CardNo, int X, int Y, int Z, double T); + /// </summary> + public static n_timed_jump_abs_3dDelegate n_timed_jump_abs_3d; + + /// <summary> + /// void n_timed_jump_rel_3d(uint CardNo, int dX, int dY, int dZ, double T); + /// </summary> + public static n_timed_jump_rel_3dDelegate n_timed_jump_rel_3d; + + /// <summary> + /// void n_timed_jump_abs(uint CardNo, int X, int Y, double T); + /// </summary> + public static n_timed_jump_absDelegate n_timed_jump_abs; + + /// <summary> + /// void n_timed_jump_rel(uint CardNo, int dX, int dY, double T); + /// </summary> + public static n_timed_jump_relDelegate n_timed_jump_rel; + + /// <summary> + /// void timed_jump_abs_3d(int X, int Y, int Z, double T); + /// </summary> + public static timed_jump_abs_3dDelegate timed_jump_abs_3d; + + /// <summary> + /// void timed_jump_rel_3d(int dX, int dY, int dZ, double T); + /// </summary> + public static timed_jump_rel_3dDelegate timed_jump_rel_3d; + + /// <summary> + /// void timed_jump_abs(int X, int Y, double T); + /// </summary> + public static timed_jump_absDelegate timed_jump_abs; + + /// <summary> + /// void timed_jump_rel(int dX, int dY, double T); + /// </summary> + public static timed_jump_relDelegate timed_jump_rel; + + /// <summary> + /// void n_jump_abs_3d(uint CardNo, int X, int Y, int Z); + /// </summary> + public static n_jump_abs_3dDelegate n_jump_abs_3d; + + /// <summary> + /// void n_jump_rel_3d(uint CardNo, int dX, int dY, int dZ); + /// </summary> + public static n_jump_rel_3dDelegate n_jump_rel_3d; + + /// <summary> + /// void n_jump_abs(uint CardNo, int X, int Y); + /// </summary> + public static n_jump_absDelegate n_jump_abs; + + /// <summary> + /// void n_jump_rel(uint CardNo, int dX, int dY); + /// </summary> + public static n_jump_relDelegate n_jump_rel; + + /// <summary> + /// void jump_abs_3d(int X, int Y, int Z); + /// </summary> + public static jump_abs_3dDelegate jump_abs_3d; + + /// <summary> + /// void jump_rel_3d(int dX, int dY, int dZ); + /// </summary> + public static jump_rel_3dDelegate jump_rel_3d; + + /// <summary> + /// void jump_abs(int X, int Y); + /// </summary> + public static jump_absDelegate jump_abs; + + /// <summary> + /// void jump_rel(int dX, int dY); + /// </summary> + public static jump_relDelegate jump_rel; + + /// <summary> + /// void n_para_mark_abs_3d(uint CardNo, int X, int Y, int Z, uint P); + /// </summary> + public static n_para_mark_abs_3dDelegate n_para_mark_abs_3d; + + /// <summary> + /// void n_para_mark_rel_3d(uint CardNo, int dX, int dY, int dZ, uint P); + /// </summary> + public static n_para_mark_rel_3dDelegate n_para_mark_rel_3d; + + /// <summary> + /// void n_para_mark_abs(uint CardNo, int X, int Y, uint P); + /// </summary> + public static n_para_mark_absDelegate n_para_mark_abs; + + /// <summary> + /// void n_para_mark_rel(uint CardNo, int dX, int dY, uint P); + /// </summary> + public static n_para_mark_relDelegate n_para_mark_rel; + + /// <summary> + /// void para_mark_abs_3d(int X, int Y, int Z, uint P); + /// </summary> + public static para_mark_abs_3dDelegate para_mark_abs_3d; + + /// <summary> + /// void para_mark_rel_3d(int dX, int dY, int dZ, uint P); + /// </summary> + public static para_mark_rel_3dDelegate para_mark_rel_3d; + + /// <summary> + /// void para_mark_abs(int X, int Y, uint P); + /// </summary> + public static para_mark_absDelegate para_mark_abs; + + /// <summary> + /// void para_mark_rel(int dX, int dY, uint P); + /// </summary> + public static para_mark_relDelegate para_mark_rel; + + /// <summary> + /// void n_para_jump_abs_3d(uint CardNo, int X, int Y, int Z, uint P); + /// </summary> + public static n_para_jump_abs_3dDelegate n_para_jump_abs_3d; + + /// <summary> + /// void n_para_jump_rel_3d(uint CardNo, int dX, int dY, int dZ, uint P); + /// </summary> + public static n_para_jump_rel_3dDelegate n_para_jump_rel_3d; + + /// <summary> + /// void n_para_jump_abs(uint CardNo, int X, int Y, uint P); + /// </summary> + public static n_para_jump_absDelegate n_para_jump_abs; + + /// <summary> + /// void n_para_jump_rel(uint CardNo, int dX, int dY, uint P); + /// </summary> + public static n_para_jump_relDelegate n_para_jump_rel; + + /// <summary> + /// void para_jump_abs_3d(int X, int Y, int Z, uint P); + /// </summary> + public static para_jump_abs_3dDelegate para_jump_abs_3d; + + /// <summary> + /// void para_jump_rel_3d(int dX, int dY, int dZ, uint P); + /// </summary> + public static para_jump_rel_3dDelegate para_jump_rel_3d; + + /// <summary> + /// void para_jump_abs(int X, int Y, uint P); + /// </summary> + public static para_jump_absDelegate para_jump_abs; + + /// <summary> + /// void para_jump_rel(int dX, int dY, uint P); + /// </summary> + public static para_jump_relDelegate para_jump_rel; + + /// <summary> + /// void n_timed_para_mark_abs_3d(uint CardNo, int X, int Y, int Z, uint P, double T); + /// </summary> + public static n_timed_para_mark_abs_3dDelegate n_timed_para_mark_abs_3d; + + /// <summary> + /// void n_timed_para_mark_rel_3d(uint CardNo, int dX, int dY, int dZ, uint P, double T); + /// </summary> + public static n_timed_para_mark_rel_3dDelegate n_timed_para_mark_rel_3d; + + /// <summary> + /// void n_timed_para_jump_abs_3d(uint CardNo, int X, int Y, int Z, uint P, double T); + /// </summary> + public static n_timed_para_jump_abs_3dDelegate n_timed_para_jump_abs_3d; + + /// <summary> + /// void n_timed_para_jump_rel_3d(uint CardNo, int dX, int dY, int dZ, uint P, double T); + /// </summary> + public static n_timed_para_jump_rel_3dDelegate n_timed_para_jump_rel_3d; + + /// <summary> + /// void n_timed_para_mark_abs(uint CardNo, int X, int Y, uint P, double T); + /// </summary> + public static n_timed_para_mark_absDelegate n_timed_para_mark_abs; + + /// <summary> + /// void n_timed_para_mark_rel(uint CardNo, int dX, int dY, uint P, double T); + /// </summary> + public static n_timed_para_mark_relDelegate n_timed_para_mark_rel; + + /// <summary> + /// void n_timed_para_jump_abs(uint CardNo, int X, int Y, uint P, double T); + /// </summary> + public static n_timed_para_jump_absDelegate n_timed_para_jump_abs; + + /// <summary> + /// void n_timed_para_jump_rel(uint CardNo, int dX, int dY, uint P, double T); + /// </summary> + public static n_timed_para_jump_relDelegate n_timed_para_jump_rel; + + /// <summary> + /// void timed_para_mark_abs_3d(int X, int Y, int Z, uint P, double T); + /// </summary> + public static timed_para_mark_abs_3dDelegate timed_para_mark_abs_3d; + + /// <summary> + /// void timed_para_mark_rel_3d(int dX, int dY, int dZ, uint P, double T); + /// </summary> + public static timed_para_mark_rel_3dDelegate timed_para_mark_rel_3d; + + /// <summary> + /// void timed_para_jump_abs_3d(int X, int Y, int Z, uint P, double T); + /// </summary> + public static timed_para_jump_abs_3dDelegate timed_para_jump_abs_3d; + + /// <summary> + /// void timed_para_jump_rel_3d(int dX, int dY, int dZ, uint P, double T); + /// </summary> + public static timed_para_jump_rel_3dDelegate timed_para_jump_rel_3d; + + /// <summary> + /// void timed_para_mark_abs(int X, int Y, uint P, double T); + /// </summary> + public static timed_para_mark_absDelegate timed_para_mark_abs; + + /// <summary> + /// void timed_para_mark_rel(int dX, int dY, uint P, double T); + /// </summary> + public static timed_para_mark_relDelegate timed_para_mark_rel; + + /// <summary> + /// void timed_para_jump_abs(int X, int Y, uint P, double T); + /// </summary> + public static timed_para_jump_absDelegate timed_para_jump_abs; + + /// <summary> + /// void timed_para_jump_rel(int dX, int dY, uint P, double T); + /// </summary> + public static timed_para_jump_relDelegate timed_para_jump_rel; + + /// <summary> + /// void n_set_defocus_list(uint CardNo, int Shift); + /// </summary> + public static n_set_defocus_listDelegate n_set_defocus_list; + + /// <summary> + /// void n_set_defocus_offset_list(uint CardNo, int Shift); + /// </summary> + public static n_set_defocus_offset_listDelegate n_set_defocus_offset_list; + + /// <summary> + /// void n_set_zoom_list(uint CardNo, uint Zoom); + /// </summary> + public static n_set_zoom_listDelegate n_set_zoom_list; + + /// <summary> + /// void set_defocus_list(int Shift); + /// </summary> + public static set_defocus_listDelegate set_defocus_list; + + /// <summary> + /// void set_defocus_offset_list(int Shift); + /// </summary> + public static set_defocus_offset_listDelegate set_defocus_offset_list; + + /// <summary> + /// void set_zoom_list(uint Zoom); + /// </summary> + public static set_zoom_listDelegate set_zoom_list; + + /// <summary> + /// void n_timed_arc_abs(uint CardNo, int X, int Y, double Angle, double T); + /// </summary> + public static n_timed_arc_absDelegate n_timed_arc_abs; + + /// <summary> + /// void n_timed_arc_rel(uint CardNo, int dX, int dY, double Angle, double T); + /// </summary> + public static n_timed_arc_relDelegate n_timed_arc_rel; + + /// <summary> + /// void timed_arc_abs(int X, int Y, double Angle, double T); + /// </summary> + public static timed_arc_absDelegate timed_arc_abs; + + /// <summary> + /// void timed_arc_rel(int dX, int dY, double Angle, double T); + /// </summary> + public static timed_arc_relDelegate timed_arc_rel; + + /// <summary> + /// void n_arc_abs_3d(uint CardNo, int X, int Y, int Z, double Angle); + /// </summary> + public static n_arc_abs_3dDelegate n_arc_abs_3d; + + /// <summary> + /// void n_arc_rel_3d(uint CardNo, int dX, int dY, int dZ, double Angle); + /// </summary> + public static n_arc_rel_3dDelegate n_arc_rel_3d; + + /// <summary> + /// void n_arc_abs(uint CardNo, int X, int Y, double Angle); + /// </summary> + public static n_arc_absDelegate n_arc_abs; + + /// <summary> + /// void n_arc_rel(uint CardNo, int dX, int dY, double Angle); + /// </summary> + public static n_arc_relDelegate n_arc_rel; + + /// <summary> + /// void n_set_ellipse(uint CardNo, uint A, uint B, double Phi0, double Phi); + /// </summary> + public static n_set_ellipseDelegate n_set_ellipse; + + /// <summary> + /// void n_mark_ellipse_abs(uint CardNo, int X, int Y, double Alpha); + /// </summary> + public static n_mark_ellipse_absDelegate n_mark_ellipse_abs; + + /// <summary> + /// void n_mark_ellipse_rel(uint CardNo, int dX, int dY, double Alpha); + /// </summary> + public static n_mark_ellipse_relDelegate n_mark_ellipse_rel; + + /// <summary> + /// void arc_abs_3d(int X, int Y, int Z, double Angle); + /// </summary> + public static arc_abs_3dDelegate arc_abs_3d; + + /// <summary> + /// void arc_rel_3d(int dX, int dY, int dZ, double Angle); + /// </summary> + public static arc_rel_3dDelegate arc_rel_3d; + + /// <summary> + /// void arc_abs(int X, int Y, double Angle); + /// </summary> + public static arc_absDelegate arc_abs; + + /// <summary> + /// void arc_rel(int dX, int dY, double Angle); + /// </summary> + public static arc_relDelegate arc_rel; + + /// <summary> + /// void set_ellipse(uint A, uint B, double Phi0, double Phi); + /// </summary> + public static set_ellipseDelegate set_ellipse; + + /// <summary> + /// void mark_ellipse_abs(int X, int Y, double Alpha); + /// </summary> + public static mark_ellipse_absDelegate mark_ellipse_abs; + + /// <summary> + /// void mark_ellipse_rel(int dX, int dY, double Alpha); + /// </summary> + public static mark_ellipse_relDelegate mark_ellipse_rel; + + /// <summary> + /// void n_set_offset_xyz_list(uint CardNo, uint HeadNo, int XOffset, int YOffset, int ZOffset, uint at_once); + /// </summary> + public static n_set_offset_xyz_listDelegate n_set_offset_xyz_list; + + /// <summary> + /// void n_set_offset_list(uint CardNo, uint HeadNo, int XOffset, int YOffset, uint at_once); + /// </summary> + public static n_set_offset_listDelegate n_set_offset_list; + + /// <summary> + /// void n_set_matrix_list(uint CardNo, uint HeadNo, uint Ind1, uint Ind2, double Mij, uint at_once); + /// </summary> + public static n_set_matrix_listDelegate n_set_matrix_list; + + /// <summary> + /// void n_set_angle_list(uint CardNo, uint HeadNo, double Angle, uint at_once); + /// </summary> + public static n_set_angle_listDelegate n_set_angle_list; + + /// <summary> + /// void n_set_scale_list(uint CardNo, uint HeadNo, double Scale, uint at_once); + /// </summary> + public static n_set_scale_listDelegate n_set_scale_list; + + /// <summary> + /// void n_apply_mcbsp_list(uint CardNo, uint HeadNo, uint at_once); + /// </summary> + public static n_apply_mcbsp_listDelegate n_apply_mcbsp_list; + + /// <summary> + /// void set_offset_xyz_list(uint HeadNo, int XOffset, int YOffset, int ZOffset, uint at_once); + /// </summary> + public static set_offset_xyz_listDelegate set_offset_xyz_list; + + /// <summary> + /// void set_offset_list(uint HeadNo, int XOffset, int YOffset, uint at_once); + /// </summary> + public static set_offset_listDelegate set_offset_list; + + /// <summary> + /// void set_matrix_list(uint HeadNo, uint Ind1, uint Ind2, double Mij, uint at_once); + /// </summary> + public static set_matrix_listDelegate set_matrix_list; + + /// <summary> + /// void set_angle_list(uint HeadNo, double Angle, uint at_once); + /// </summary> + public static set_angle_listDelegate set_angle_list; + + /// <summary> + /// void set_scale_list(uint HeadNo, double Scale, uint at_once); + /// </summary> + public static set_scale_listDelegate set_scale_list; + + /// <summary> + /// void apply_mcbsp_list(uint HeadNo, uint at_once); + /// </summary> + public static apply_mcbsp_listDelegate apply_mcbsp_list; + + /// <summary> + /// void n_set_mark_speed(uint CardNo, double Speed); + /// </summary> + public static n_set_mark_speedDelegate n_set_mark_speed; + + /// <summary> + /// void n_set_jump_speed(uint CardNo, double Speed); + /// </summary> + public static n_set_jump_speedDelegate n_set_jump_speed; + + /// <summary> + /// void n_set_sky_writing_para_list(uint CardNo, double Timelag, int LaserOnShift, uint Nprev, uint Npost); + /// </summary> + public static n_set_sky_writing_para_listDelegate n_set_sky_writing_para_list; + + /// <summary> + /// void n_set_sky_writing_list(uint CardNo, double Timelag, int LaserOnShift); + /// </summary> + public static n_set_sky_writing_listDelegate n_set_sky_writing_list; + + /// <summary> + /// void n_set_sky_writing_limit_list(uint CardNo, double CosAngle); + /// </summary> + public static n_set_sky_writing_limit_listDelegate n_set_sky_writing_limit_list; + + /// <summary> + /// void n_set_sky_writing_mode_list(uint CardNo, uint Mode); + /// </summary> + public static n_set_sky_writing_mode_listDelegate n_set_sky_writing_mode_list; + + /// <summary> + /// void n_set_scanner_delays(uint CardNo, uint Jump, uint Mark, uint Polygon); + /// </summary> + public static n_set_scanner_delaysDelegate n_set_scanner_delays; + + /// <summary> + /// void n_set_jump_mode_list(uint CardNo, int Flag); + /// </summary> + public static n_set_jump_mode_listDelegate n_set_jump_mode_list; + + /// <summary> + /// void n_enduring_wobbel(uint CardNo); + /// </summary> + public static n_enduring_wobbelDelegate n_enduring_wobbel; + + /// <summary> + /// void n_set_delay_mode_list(uint CardNo, uint VarPoly, uint DirectMove3D, uint EdgeLevel, uint MinJumpDelay, uint JumpLengthLimit); + /// </summary> + public static n_set_delay_mode_listDelegate n_set_delay_mode_list; + + /// <summary> + /// void set_mark_speed(double Speed); + /// </summary> + public static set_mark_speedDelegate set_mark_speed; + + /// <summary> + /// void set_jump_speed(double Speed); + /// </summary> + public static set_jump_speedDelegate set_jump_speed; + + /// <summary> + /// void set_sky_writing_para_list(double Timelag, int LaserOnShift, uint Nprev, uint Npost); + /// </summary> + public static set_sky_writing_para_listDelegate set_sky_writing_para_list; + + /// <summary> + /// void set_sky_writing_list(double Timelag, int LaserOnShift); + /// </summary> + public static set_sky_writing_listDelegate set_sky_writing_list; + + /// <summary> + /// void set_sky_writing_limit_list(double CosAngle); + /// </summary> + public static set_sky_writing_limit_listDelegate set_sky_writing_limit_list; + + /// <summary> + /// void set_sky_writing_mode_list(uint Mode); + /// </summary> + public static set_sky_writing_mode_listDelegate set_sky_writing_mode_list; + + /// <summary> + /// void set_scanner_delays(uint Jump, uint Mark, uint Polygon); + /// </summary> + public static set_scanner_delaysDelegate set_scanner_delays; + + /// <summary> + /// void set_jump_mode_list(int Flag); + /// </summary> + public static set_jump_mode_listDelegate set_jump_mode_list; + + /// <summary> + /// void enduring_wobbel(); + /// </summary> + public static enduring_wobbelDelegate enduring_wobbel; + + /// <summary> + /// void set_delay_mode_list(uint VarPoly, uint DirectMove3D, uint EdgeLevel, uint MinJumpDelay, uint JumpLengthLimit); + /// </summary> + public static set_delay_mode_listDelegate set_delay_mode_list; + + /// <summary> + /// void n_stepper_enable_list(uint CardNo, int Enable1, int Enable2); + /// </summary> + public static n_stepper_enable_listDelegate n_stepper_enable_list; + + /// <summary> + /// void n_stepper_control_list(uint CardNo, int Period1, int Period2); + /// </summary> + public static n_stepper_control_listDelegate n_stepper_control_list; + + /// <summary> + /// void n_stepper_abs_no_list(uint CardNo, uint No, int Pos); + /// </summary> + public static n_stepper_abs_no_listDelegate n_stepper_abs_no_list; + + /// <summary> + /// void n_stepper_rel_no_list(uint CardNo, uint No, int dPos); + /// </summary> + public static n_stepper_rel_no_listDelegate n_stepper_rel_no_list; + + /// <summary> + /// void n_stepper_abs_list(uint CardNo, int Pos1, int Pos2); + /// </summary> + public static n_stepper_abs_listDelegate n_stepper_abs_list; + + /// <summary> + /// void n_stepper_rel_list(uint CardNo, int dPos1, int dPos2); + /// </summary> + public static n_stepper_rel_listDelegate n_stepper_rel_list; + + /// <summary> + /// void n_stepper_wait(uint CardNo, uint No); + /// </summary> + public static n_stepper_waitDelegate n_stepper_wait; + + /// <summary> + /// void stepper_enable_list(int Enable1, int Enable2); + /// </summary> + public static stepper_enable_listDelegate stepper_enable_list; + + /// <summary> + /// void stepper_control_list(int Period1, int Period2); + /// </summary> + public static stepper_control_listDelegate stepper_control_list; + + /// <summary> + /// void stepper_abs_no_list(uint No, int Pos); + /// </summary> + public static stepper_abs_no_listDelegate stepper_abs_no_list; + + /// <summary> + /// void stepper_rel_no_list(uint No, int dPos); + /// </summary> + public static stepper_rel_no_listDelegate stepper_rel_no_list; + + /// <summary> + /// void stepper_abs_list(int Pos1, int Pos2); + /// </summary> + public static stepper_abs_listDelegate stepper_abs_list; + + /// <summary> + /// void stepper_rel_list(int dPos1, int dPos2); + /// </summary> + public static stepper_rel_listDelegate stepper_rel_list; + + /// <summary> + /// void stepper_wait(uint No); + /// </summary> + public static stepper_waitDelegate stepper_wait; + + #endregion + + // Notice that the static constructor is used to initialize any static data, + // or to perform a particular action that needs to be performed once only. + // It is called automatically before the first instance is created or any + // static members are referenced. + static RTC5Wrap() + { + // Import functions and set them up as delegates. + // + #region DLLFunctionImport + init_rtc5_dll = (init_rtc5_dllDelegate)FunctionImporter.Import<init_rtc5_dllDelegate>("init_rtc5_dll"); + free_rtc5_dll = (free_rtc5_dllDelegate)FunctionImporter.Import<free_rtc5_dllDelegate>("free_rtc5_dll"); + set_rtc4_mode = (set_rtc4_modeDelegate)FunctionImporter.Import<set_rtc4_modeDelegate>("set_rtc4_mode"); + set_rtc5_mode = (set_rtc5_modeDelegate)FunctionImporter.Import<set_rtc5_modeDelegate>("set_rtc5_mode"); + get_rtc_mode = (get_rtc_modeDelegate)FunctionImporter.Import<get_rtc_modeDelegate>("get_rtc_mode"); + n_get_error = (n_get_errorDelegate)FunctionImporter.Import<n_get_errorDelegate>("n_get_error"); + n_get_last_error = (n_get_last_errorDelegate)FunctionImporter.Import<n_get_last_errorDelegate>("n_get_last_error"); + n_reset_error = (n_reset_errorDelegate)FunctionImporter.Import<n_reset_errorDelegate>("n_reset_error"); + n_set_verify = (n_set_verifyDelegate)FunctionImporter.Import<n_set_verifyDelegate>("n_set_verify"); + get_error = (get_errorDelegate)FunctionImporter.Import<get_errorDelegate>("get_error"); + get_last_error = (get_last_errorDelegate)FunctionImporter.Import<get_last_errorDelegate>("get_last_error"); + reset_error = (reset_errorDelegate)FunctionImporter.Import<reset_errorDelegate>("reset_error"); + set_verify = (set_verifyDelegate)FunctionImporter.Import<set_verifyDelegate>("set_verify"); + verify_checksum = (verify_checksumDelegate)FunctionImporter.Import<verify_checksumDelegate>("verify_checksum"); + read_abc_from_file = (read_abc_from_fileDelegate)FunctionImporter.Import<read_abc_from_fileDelegate>("read_abc_from_file"); + write_abc_to_file = (write_abc_to_fileDelegate)FunctionImporter.Import<write_abc_to_fileDelegate>("write_abc_to_file"); + rtc5_count_cards = (rtc5_count_cardsDelegate)FunctionImporter.Import<rtc5_count_cardsDelegate>("rtc5_count_cards"); + acquire_rtc = (acquire_rtcDelegate)FunctionImporter.Import<acquire_rtcDelegate>("acquire_rtc"); + release_rtc = (release_rtcDelegate)FunctionImporter.Import<release_rtcDelegate>("release_rtc"); + select_rtc = (select_rtcDelegate)FunctionImporter.Import<select_rtcDelegate>("select_rtc"); + get_dll_version = (get_dll_versionDelegate)FunctionImporter.Import<get_dll_versionDelegate>("get_dll_version"); + n_get_serial_number = (n_get_serial_numberDelegate)FunctionImporter.Import<n_get_serial_numberDelegate>("n_get_serial_number"); + n_get_hex_version = (n_get_hex_versionDelegate)FunctionImporter.Import<n_get_hex_versionDelegate>("n_get_hex_version"); + n_get_rtc_version = (n_get_rtc_versionDelegate)FunctionImporter.Import<n_get_rtc_versionDelegate>("n_get_rtc_version"); + get_serial_number = (get_serial_numberDelegate)FunctionImporter.Import<get_serial_numberDelegate>("get_serial_number"); + get_hex_version = (get_hex_versionDelegate)FunctionImporter.Import<get_hex_versionDelegate>("get_hex_version"); + get_rtc_version = (get_rtc_versionDelegate)FunctionImporter.Import<get_rtc_versionDelegate>("get_rtc_version"); + n_load_program_file = (n_load_program_fileDelegate)FunctionImporter.Import<n_load_program_fileDelegate>("n_load_program_file"); + n_sync_slaves = (n_sync_slavesDelegate)FunctionImporter.Import<n_sync_slavesDelegate>("n_sync_slaves"); + n_get_sync_status = (n_get_sync_statusDelegate)FunctionImporter.Import<n_get_sync_statusDelegate>("n_get_sync_status"); + n_load_correction_file = (n_load_correction_fileDelegate)FunctionImporter.Import<n_load_correction_fileDelegate>("n_load_correction_file"); + n_load_zoom_correction_file = (n_load_zoom_correction_fileDelegate)FunctionImporter.Import<n_load_zoom_correction_fileDelegate>("n_load_zoom_correction_file"); + n_load_z_table = (n_load_z_tableDelegate)FunctionImporter.Import<n_load_z_tableDelegate>("n_load_z_table"); + n_select_cor_table = (n_select_cor_tableDelegate)FunctionImporter.Import<n_select_cor_tableDelegate>("n_select_cor_table"); + n_set_dsp_mode = (n_set_dsp_modeDelegate)FunctionImporter.Import<n_set_dsp_modeDelegate>("n_set_dsp_mode"); + n_load_stretch_table = (n_load_stretch_tableDelegate)FunctionImporter.Import<n_load_stretch_tableDelegate>("n_load_stretch_table"); + n_number_of_correction_tables = (n_number_of_correction_tablesDelegate)FunctionImporter.Import<n_number_of_correction_tablesDelegate>("n_number_of_correction_tables"); + n_get_head_para = (n_get_head_paraDelegate)FunctionImporter.Import<n_get_head_paraDelegate>("n_get_head_para"); + n_get_table_para = (n_get_table_paraDelegate)FunctionImporter.Import<n_get_table_paraDelegate>("n_get_table_para"); + load_program_file = (load_program_fileDelegate)FunctionImporter.Import<load_program_fileDelegate>("load_program_file"); + sync_slaves = (sync_slavesDelegate)FunctionImporter.Import<sync_slavesDelegate>("sync_slaves"); + get_sync_status = (get_sync_statusDelegate)FunctionImporter.Import<get_sync_statusDelegate>("get_sync_status"); + load_correction_file = (load_correction_fileDelegate)FunctionImporter.Import<load_correction_fileDelegate>("load_correction_file"); + load_zoom_correction_file = (load_zoom_correction_fileDelegate)FunctionImporter.Import<load_zoom_correction_fileDelegate>("load_zoom_correction_file"); + load_z_table = (load_z_tableDelegate)FunctionImporter.Import<load_z_tableDelegate>("load_z_table"); + select_cor_table = (select_cor_tableDelegate)FunctionImporter.Import<select_cor_tableDelegate>("select_cor_table"); + set_dsp_mode = (set_dsp_modeDelegate)FunctionImporter.Import<set_dsp_modeDelegate>("set_dsp_mode"); + load_stretch_table = (load_stretch_tableDelegate)FunctionImporter.Import<load_stretch_tableDelegate>("load_stretch_table"); + number_of_correction_tables = (number_of_correction_tablesDelegate)FunctionImporter.Import<number_of_correction_tablesDelegate>("number_of_correction_tables"); + get_head_para = (get_head_paraDelegate)FunctionImporter.Import<get_head_paraDelegate>("get_head_para"); + get_table_para = (get_table_paraDelegate)FunctionImporter.Import<get_table_paraDelegate>("get_table_para"); + n_config_list = (n_config_listDelegate)FunctionImporter.Import<n_config_listDelegate>("n_config_list"); + n_get_config_list = (n_get_config_listDelegate)FunctionImporter.Import<n_get_config_listDelegate>("n_get_config_list"); + n_save_disk = (n_save_diskDelegate)FunctionImporter.Import<n_save_diskDelegate>("n_save_disk"); + n_load_disk = (n_load_diskDelegate)FunctionImporter.Import<n_load_diskDelegate>("n_load_disk"); + n_get_list_space = (n_get_list_spaceDelegate)FunctionImporter.Import<n_get_list_spaceDelegate>("n_get_list_space"); + config_list = (config_listDelegate)FunctionImporter.Import<config_listDelegate>("config_list"); + get_config_list = (get_config_listDelegate)FunctionImporter.Import<get_config_listDelegate>("get_config_list"); + save_disk = (save_diskDelegate)FunctionImporter.Import<save_diskDelegate>("save_disk"); + load_disk = (load_diskDelegate)FunctionImporter.Import<load_diskDelegate>("load_disk"); + get_list_space = (get_list_spaceDelegate)FunctionImporter.Import<get_list_spaceDelegate>("get_list_space"); + n_set_start_list_pos = (n_set_start_list_posDelegate)FunctionImporter.Import<n_set_start_list_posDelegate>("n_set_start_list_pos"); + n_set_start_list = (n_set_start_listDelegate)FunctionImporter.Import<n_set_start_listDelegate>("n_set_start_list"); + n_set_start_list_1 = (n_set_start_list_1Delegate)FunctionImporter.Import<n_set_start_list_1Delegate>("n_set_start_list_1"); + n_set_start_list_2 = (n_set_start_list_2Delegate)FunctionImporter.Import<n_set_start_list_2Delegate>("n_set_start_list_2"); + n_set_input_pointer = (n_set_input_pointerDelegate)FunctionImporter.Import<n_set_input_pointerDelegate>("n_set_input_pointer"); + n_load_list = (n_load_listDelegate)FunctionImporter.Import<n_load_listDelegate>("n_load_list"); + n_load_sub = (n_load_subDelegate)FunctionImporter.Import<n_load_subDelegate>("n_load_sub"); + n_load_char = (n_load_charDelegate)FunctionImporter.Import<n_load_charDelegate>("n_load_char"); + n_load_text_table = (n_load_text_tableDelegate)FunctionImporter.Import<n_load_text_tableDelegate>("n_load_text_table"); + n_get_list_pointer = (n_get_list_pointerDelegate)FunctionImporter.Import<n_get_list_pointerDelegate>("n_get_list_pointer"); + n_get_input_pointer = (n_get_input_pointerDelegate)FunctionImporter.Import<n_get_input_pointerDelegate>("n_get_input_pointer"); + set_start_list_pos = (set_start_list_posDelegate)FunctionImporter.Import<set_start_list_posDelegate>("set_start_list_pos"); + set_start_list = (set_start_listDelegate)FunctionImporter.Import<set_start_listDelegate>("set_start_list"); + set_start_list_1 = (set_start_list_1Delegate)FunctionImporter.Import<set_start_list_1Delegate>("set_start_list_1"); + set_start_list_2 = (set_start_list_2Delegate)FunctionImporter.Import<set_start_list_2Delegate>("set_start_list_2"); + set_input_pointer = (set_input_pointerDelegate)FunctionImporter.Import<set_input_pointerDelegate>("set_input_pointer"); + load_list = (load_listDelegate)FunctionImporter.Import<load_listDelegate>("load_list"); + load_sub = (load_subDelegate)FunctionImporter.Import<load_subDelegate>("load_sub"); + load_char = (load_charDelegate)FunctionImporter.Import<load_charDelegate>("load_char"); + load_text_table = (load_text_tableDelegate)FunctionImporter.Import<load_text_tableDelegate>("load_text_table"); + get_list_pointer = (get_list_pointerDelegate)FunctionImporter.Import<get_list_pointerDelegate>("get_list_pointer"); + get_input_pointer = (get_input_pointerDelegate)FunctionImporter.Import<get_input_pointerDelegate>("get_input_pointer"); + n_execute_list_pos = (n_execute_list_posDelegate)FunctionImporter.Import<n_execute_list_posDelegate>("n_execute_list_pos"); + n_execute_at_pointer = (n_execute_at_pointerDelegate)FunctionImporter.Import<n_execute_at_pointerDelegate>("n_execute_at_pointer"); + n_execute_list = (n_execute_listDelegate)FunctionImporter.Import<n_execute_listDelegate>("n_execute_list"); + n_execute_list_1 = (n_execute_list_1Delegate)FunctionImporter.Import<n_execute_list_1Delegate>("n_execute_list_1"); + n_execute_list_2 = (n_execute_list_2Delegate)FunctionImporter.Import<n_execute_list_2Delegate>("n_execute_list_2"); + n_get_out_pointer = (n_get_out_pointerDelegate)FunctionImporter.Import<n_get_out_pointerDelegate>("n_get_out_pointer"); + execute_list_pos = (execute_list_posDelegate)FunctionImporter.Import<execute_list_posDelegate>("execute_list_pos"); + execute_at_pointer = (execute_at_pointerDelegate)FunctionImporter.Import<execute_at_pointerDelegate>("execute_at_pointer"); + execute_list = (execute_listDelegate)FunctionImporter.Import<execute_listDelegate>("execute_list"); + execute_list_1 = (execute_list_1Delegate)FunctionImporter.Import<execute_list_1Delegate>("execute_list_1"); + execute_list_2 = (execute_list_2Delegate)FunctionImporter.Import<execute_list_2Delegate>("execute_list_2"); + get_out_pointer = (get_out_pointerDelegate)FunctionImporter.Import<get_out_pointerDelegate>("get_out_pointer"); + n_auto_change_pos = (n_auto_change_posDelegate)FunctionImporter.Import<n_auto_change_posDelegate>("n_auto_change_pos"); + n_start_loop = (n_start_loopDelegate)FunctionImporter.Import<n_start_loopDelegate>("n_start_loop"); + n_quit_loop = (n_quit_loopDelegate)FunctionImporter.Import<n_quit_loopDelegate>("n_quit_loop"); + n_pause_list = (n_pause_listDelegate)FunctionImporter.Import<n_pause_listDelegate>("n_pause_list"); + n_restart_list = (n_restart_listDelegate)FunctionImporter.Import<n_restart_listDelegate>("n_restart_list"); + n_release_wait = (n_release_waitDelegate)FunctionImporter.Import<n_release_waitDelegate>("n_release_wait"); + n_stop_execution = (n_stop_executionDelegate)FunctionImporter.Import<n_stop_executionDelegate>("n_stop_execution"); + n_set_pause_list_cond = (n_set_pause_list_condDelegate)FunctionImporter.Import<n_set_pause_list_condDelegate>("n_set_pause_list_cond"); + n_set_pause_list_not_cond = (n_set_pause_list_not_condDelegate)FunctionImporter.Import<n_set_pause_list_not_condDelegate>("n_set_pause_list_not_cond"); + n_auto_change = (n_auto_changeDelegate)FunctionImporter.Import<n_auto_changeDelegate>("n_auto_change"); + n_stop_list = (n_stop_listDelegate)FunctionImporter.Import<n_stop_listDelegate>("n_stop_list"); + n_get_wait_status = (n_get_wait_statusDelegate)FunctionImporter.Import<n_get_wait_statusDelegate>("n_get_wait_status"); + n_read_status = (n_read_statusDelegate)FunctionImporter.Import<n_read_statusDelegate>("n_read_status"); + n_get_status = (n_get_statusDelegate)FunctionImporter.Import<n_get_statusDelegate>("n_get_status"); + auto_change_pos = (auto_change_posDelegate)FunctionImporter.Import<auto_change_posDelegate>("auto_change_pos"); + start_loop = (start_loopDelegate)FunctionImporter.Import<start_loopDelegate>("start_loop"); + quit_loop = (quit_loopDelegate)FunctionImporter.Import<quit_loopDelegate>("quit_loop"); + pause_list = (pause_listDelegate)FunctionImporter.Import<pause_listDelegate>("pause_list"); + restart_list = (restart_listDelegate)FunctionImporter.Import<restart_listDelegate>("restart_list"); + release_wait = (release_waitDelegate)FunctionImporter.Import<release_waitDelegate>("release_wait"); + stop_execution = (stop_executionDelegate)FunctionImporter.Import<stop_executionDelegate>("stop_execution"); + set_pause_list_cond = (set_pause_list_condDelegate)FunctionImporter.Import<set_pause_list_condDelegate>("set_pause_list_cond"); + set_pause_list_not_cond = (set_pause_list_not_condDelegate)FunctionImporter.Import<set_pause_list_not_condDelegate>("set_pause_list_not_cond"); + auto_change = (auto_changeDelegate)FunctionImporter.Import<auto_changeDelegate>("auto_change"); + stop_list = (stop_listDelegate)FunctionImporter.Import<stop_listDelegate>("stop_list"); + get_wait_status = (get_wait_statusDelegate)FunctionImporter.Import<get_wait_statusDelegate>("get_wait_status"); + read_status = (read_statusDelegate)FunctionImporter.Import<read_statusDelegate>("read_status"); + get_status = (get_statusDelegate)FunctionImporter.Import<get_statusDelegate>("get_status"); + n_set_extstartpos = (n_set_extstartposDelegate)FunctionImporter.Import<n_set_extstartposDelegate>("n_set_extstartpos"); + n_set_max_counts = (n_set_max_countsDelegate)FunctionImporter.Import<n_set_max_countsDelegate>("n_set_max_counts"); + n_set_control_mode = (n_set_control_modeDelegate)FunctionImporter.Import<n_set_control_modeDelegate>("n_set_control_mode"); + n_simulate_ext_stop = (n_simulate_ext_stopDelegate)FunctionImporter.Import<n_simulate_ext_stopDelegate>("n_simulate_ext_stop"); + n_simulate_ext_start_ctrl = (n_simulate_ext_start_ctrlDelegate)FunctionImporter.Import<n_simulate_ext_start_ctrlDelegate>("n_simulate_ext_start_ctrl"); + n_get_counts = (n_get_countsDelegate)FunctionImporter.Import<n_get_countsDelegate>("n_get_counts"); + n_get_startstop_info = (n_get_startstop_infoDelegate)FunctionImporter.Import<n_get_startstop_infoDelegate>("n_get_startstop_info"); + set_extstartpos = (set_extstartposDelegate)FunctionImporter.Import<set_extstartposDelegate>("set_extstartpos"); + set_max_counts = (set_max_countsDelegate)FunctionImporter.Import<set_max_countsDelegate>("set_max_counts"); + set_control_mode = (set_control_modeDelegate)FunctionImporter.Import<set_control_modeDelegate>("set_control_mode"); + simulate_ext_stop = (simulate_ext_stopDelegate)FunctionImporter.Import<simulate_ext_stopDelegate>("simulate_ext_stop"); + simulate_ext_start_ctrl = (simulate_ext_start_ctrlDelegate)FunctionImporter.Import<simulate_ext_start_ctrlDelegate>("simulate_ext_start_ctrl"); + get_counts = (get_countsDelegate)FunctionImporter.Import<get_countsDelegate>("get_counts"); + get_startstop_info = (get_startstop_infoDelegate)FunctionImporter.Import<get_startstop_infoDelegate>("get_startstop_info"); + n_copy_dst_src = (n_copy_dst_srcDelegate)FunctionImporter.Import<n_copy_dst_srcDelegate>("n_copy_dst_src"); + n_set_char_pointer = (n_set_char_pointerDelegate)FunctionImporter.Import<n_set_char_pointerDelegate>("n_set_char_pointer"); + n_set_sub_pointer = (n_set_sub_pointerDelegate)FunctionImporter.Import<n_set_sub_pointerDelegate>("n_set_sub_pointer"); + n_set_text_table_pointer = (n_set_text_table_pointerDelegate)FunctionImporter.Import<n_set_text_table_pointerDelegate>("n_set_text_table_pointer"); + n_set_char_table = (n_set_char_tableDelegate)FunctionImporter.Import<n_set_char_tableDelegate>("n_set_char_table"); + n_get_char_pointer = (n_get_char_pointerDelegate)FunctionImporter.Import<n_get_char_pointerDelegate>("n_get_char_pointer"); + n_get_sub_pointer = (n_get_sub_pointerDelegate)FunctionImporter.Import<n_get_sub_pointerDelegate>("n_get_sub_pointer"); + n_get_text_table_pointer = (n_get_text_table_pointerDelegate)FunctionImporter.Import<n_get_text_table_pointerDelegate>("n_get_text_table_pointer"); + copy_dst_src = (copy_dst_srcDelegate)FunctionImporter.Import<copy_dst_srcDelegate>("copy_dst_src"); + set_char_pointer = (set_char_pointerDelegate)FunctionImporter.Import<set_char_pointerDelegate>("set_char_pointer"); + set_sub_pointer = (set_sub_pointerDelegate)FunctionImporter.Import<set_sub_pointerDelegate>("set_sub_pointer"); + set_text_table_pointer = (set_text_table_pointerDelegate)FunctionImporter.Import<set_text_table_pointerDelegate>("set_text_table_pointer"); + set_char_table = (set_char_tableDelegate)FunctionImporter.Import<set_char_tableDelegate>("set_char_table"); + get_char_pointer = (get_char_pointerDelegate)FunctionImporter.Import<get_char_pointerDelegate>("get_char_pointer"); + get_sub_pointer = (get_sub_pointerDelegate)FunctionImporter.Import<get_sub_pointerDelegate>("get_sub_pointer"); + get_text_table_pointer = (get_text_table_pointerDelegate)FunctionImporter.Import<get_text_table_pointerDelegate>("get_text_table_pointer"); + n_time_update = (n_time_updateDelegate)FunctionImporter.Import<n_time_updateDelegate>("n_time_update"); + n_set_serial_step = (n_set_serial_stepDelegate)FunctionImporter.Import<n_set_serial_stepDelegate>("n_set_serial_step"); + n_select_serial_set = (n_select_serial_setDelegate)FunctionImporter.Import<n_select_serial_setDelegate>("n_select_serial_set"); + n_set_serial = (n_set_serialDelegate)FunctionImporter.Import<n_set_serialDelegate>("n_set_serial"); + n_get_serial = (n_get_serialDelegate)FunctionImporter.Import<n_get_serialDelegate>("n_get_serial"); + n_get_list_serial = (n_get_list_serialDelegate)FunctionImporter.Import<n_get_list_serialDelegate>("n_get_list_serial"); + time_update = (time_updateDelegate)FunctionImporter.Import<time_updateDelegate>("time_update"); + set_serial_step = (set_serial_stepDelegate)FunctionImporter.Import<set_serial_stepDelegate>("set_serial_step"); + select_serial_set = (select_serial_setDelegate)FunctionImporter.Import<select_serial_setDelegate>("select_serial_set"); + set_serial = (set_serialDelegate)FunctionImporter.Import<set_serialDelegate>("set_serial"); + get_serial = (get_serialDelegate)FunctionImporter.Import<get_serialDelegate>("get_serial"); + get_list_serial = (get_list_serialDelegate)FunctionImporter.Import<get_list_serialDelegate>("get_list_serial"); + n_write_io_port_mask = (n_write_io_port_maskDelegate)FunctionImporter.Import<n_write_io_port_maskDelegate>("n_write_io_port_mask"); + n_write_8bit_port = (n_write_8bit_portDelegate)FunctionImporter.Import<n_write_8bit_portDelegate>("n_write_8bit_port"); + n_read_io_port = (n_read_io_portDelegate)FunctionImporter.Import<n_read_io_portDelegate>("n_read_io_port"); + n_read_io_port_buffer = (n_read_io_port_bufferDelegate)FunctionImporter.Import<n_read_io_port_bufferDelegate>("n_read_io_port_buffer"); + n_get_io_status = (n_get_io_statusDelegate)FunctionImporter.Import<n_get_io_statusDelegate>("n_get_io_status"); + n_read_analog_in = (n_read_analog_inDelegate)FunctionImporter.Import<n_read_analog_inDelegate>("n_read_analog_in"); + n_write_da_x = (n_write_da_xDelegate)FunctionImporter.Import<n_write_da_xDelegate>("n_write_da_x"); + n_set_laser_off_default = (n_set_laser_off_defaultDelegate)FunctionImporter.Import<n_set_laser_off_defaultDelegate>("n_set_laser_off_default"); + n_set_port_default = (n_set_port_defaultDelegate)FunctionImporter.Import<n_set_port_defaultDelegate>("n_set_port_default"); + n_write_io_port = (n_write_io_portDelegate)FunctionImporter.Import<n_write_io_portDelegate>("n_write_io_port"); + n_write_da_1 = (n_write_da_1Delegate)FunctionImporter.Import<n_write_da_1Delegate>("n_write_da_1"); + n_write_da_2 = (n_write_da_2Delegate)FunctionImporter.Import<n_write_da_2Delegate>("n_write_da_2"); + write_io_port_mask = (write_io_port_maskDelegate)FunctionImporter.Import<write_io_port_maskDelegate>("write_io_port_mask"); + write_8bit_port = (write_8bit_portDelegate)FunctionImporter.Import<write_8bit_portDelegate>("write_8bit_port"); + read_io_port = (read_io_portDelegate)FunctionImporter.Import<read_io_portDelegate>("read_io_port"); + read_io_port_buffer = (read_io_port_bufferDelegate)FunctionImporter.Import<read_io_port_bufferDelegate>("read_io_port_buffer"); + get_io_status = (get_io_statusDelegate)FunctionImporter.Import<get_io_statusDelegate>("get_io_status"); + read_analog_in = (read_analog_inDelegate)FunctionImporter.Import<read_analog_inDelegate>("read_analog_in"); + write_da_x = (write_da_xDelegate)FunctionImporter.Import<write_da_xDelegate>("write_da_x"); + set_laser_off_default = (set_laser_off_defaultDelegate)FunctionImporter.Import<set_laser_off_defaultDelegate>("set_laser_off_default"); + set_port_default = (set_port_defaultDelegate)FunctionImporter.Import<set_port_defaultDelegate>("set_port_default"); + write_io_port = (write_io_portDelegate)FunctionImporter.Import<write_io_portDelegate>("write_io_port"); + write_da_1 = (write_da_1Delegate)FunctionImporter.Import<write_da_1Delegate>("write_da_1"); + write_da_2 = (write_da_2Delegate)FunctionImporter.Import<write_da_2Delegate>("write_da_2"); + n_disable_laser = (n_disable_laserDelegate)FunctionImporter.Import<n_disable_laserDelegate>("n_disable_laser"); + n_enable_laser = (n_enable_laserDelegate)FunctionImporter.Import<n_enable_laserDelegate>("n_enable_laser"); + n_laser_signal_on = (n_laser_signal_onDelegate)FunctionImporter.Import<n_laser_signal_onDelegate>("n_laser_signal_on"); + n_laser_signal_off = (n_laser_signal_offDelegate)FunctionImporter.Import<n_laser_signal_offDelegate>("n_laser_signal_off"); + n_set_standby = (n_set_standbyDelegate)FunctionImporter.Import<n_set_standbyDelegate>("n_set_standby"); + n_set_laser_pulses_ctrl = (n_set_laser_pulses_ctrlDelegate)FunctionImporter.Import<n_set_laser_pulses_ctrlDelegate>("n_set_laser_pulses_ctrl"); + n_set_firstpulse_killer = (n_set_firstpulse_killerDelegate)FunctionImporter.Import<n_set_firstpulse_killerDelegate>("n_set_firstpulse_killer"); + n_set_qswitch_delay = (n_set_qswitch_delayDelegate)FunctionImporter.Import<n_set_qswitch_delayDelegate>("n_set_qswitch_delay"); + n_set_laser_mode = (n_set_laser_modeDelegate)FunctionImporter.Import<n_set_laser_modeDelegate>("n_set_laser_mode"); + n_set_laser_control = (n_set_laser_controlDelegate)FunctionImporter.Import<n_set_laser_controlDelegate>("n_set_laser_control"); + n_set_laser_pin_out = (n_set_laser_pin_outDelegate)FunctionImporter.Import<n_set_laser_pin_outDelegate>("n_set_laser_pin_out"); + n_get_laser_pin_in = (n_get_laser_pin_inDelegate)FunctionImporter.Import<n_get_laser_pin_inDelegate>("n_get_laser_pin_in"); + n_set_softstart_level = (n_set_softstart_levelDelegate)FunctionImporter.Import<n_set_softstart_levelDelegate>("n_set_softstart_level"); + n_set_softstart_mode = (n_set_softstart_modeDelegate)FunctionImporter.Import<n_set_softstart_modeDelegate>("n_set_softstart_mode"); + n_set_auto_laser_control = (n_set_auto_laser_controlDelegate)FunctionImporter.Import<n_set_auto_laser_controlDelegate>("n_set_auto_laser_control"); + n_set_auto_laser_params = (n_set_auto_laser_paramsDelegate)FunctionImporter.Import<n_set_auto_laser_paramsDelegate>("n_set_auto_laser_params"); + n_load_auto_laser_control = (n_load_auto_laser_controlDelegate)FunctionImporter.Import<n_load_auto_laser_controlDelegate>("n_load_auto_laser_control"); + n_load_position_control = (n_load_position_controlDelegate)FunctionImporter.Import<n_load_position_controlDelegate>("n_load_position_control"); + n_set_default_pixel = (n_set_default_pixelDelegate)FunctionImporter.Import<n_set_default_pixelDelegate>("n_set_default_pixel"); + n_get_standby = (n_get_standbyDelegate)FunctionImporter.Import<n_get_standbyDelegate>("n_get_standby"); + n_set_pulse_picking = (n_set_pulse_pickingDelegate)FunctionImporter.Import<n_set_pulse_pickingDelegate>("n_set_pulse_picking"); + n_set_pulse_picking_length = (n_set_pulse_picking_lengthDelegate)FunctionImporter.Import<n_set_pulse_picking_lengthDelegate>("n_set_pulse_picking_length"); + n_config_laser_signals = (n_config_laser_signalsDelegate)FunctionImporter.Import<n_config_laser_signalsDelegate>("n_config_laser_signals"); + disable_laser = (disable_laserDelegate)FunctionImporter.Import<disable_laserDelegate>("disable_laser"); + enable_laser = (enable_laserDelegate)FunctionImporter.Import<enable_laserDelegate>("enable_laser"); + laser_signal_on = (laser_signal_onDelegate)FunctionImporter.Import<laser_signal_onDelegate>("laser_signal_on"); + laser_signal_off = (laser_signal_offDelegate)FunctionImporter.Import<laser_signal_offDelegate>("laser_signal_off"); + set_standby = (set_standbyDelegate)FunctionImporter.Import<set_standbyDelegate>("set_standby"); + set_laser_pulses_ctrl = (set_laser_pulses_ctrlDelegate)FunctionImporter.Import<set_laser_pulses_ctrlDelegate>("set_laser_pulses_ctrl"); + set_firstpulse_killer = (set_firstpulse_killerDelegate)FunctionImporter.Import<set_firstpulse_killerDelegate>("set_firstpulse_killer"); + set_qswitch_delay = (set_qswitch_delayDelegate)FunctionImporter.Import<set_qswitch_delayDelegate>("set_qswitch_delay"); + set_laser_mode = (set_laser_modeDelegate)FunctionImporter.Import<set_laser_modeDelegate>("set_laser_mode"); + set_laser_control = (set_laser_controlDelegate)FunctionImporter.Import<set_laser_controlDelegate>("set_laser_control"); + set_laser_pin_out = (set_laser_pin_outDelegate)FunctionImporter.Import<set_laser_pin_outDelegate>("set_laser_pin_out"); + get_laser_pin_in = (get_laser_pin_inDelegate)FunctionImporter.Import<get_laser_pin_inDelegate>("get_laser_pin_in"); + set_softstart_level = (set_softstart_levelDelegate)FunctionImporter.Import<set_softstart_levelDelegate>("set_softstart_level"); + set_softstart_mode = (set_softstart_modeDelegate)FunctionImporter.Import<set_softstart_modeDelegate>("set_softstart_mode"); + set_auto_laser_control = (set_auto_laser_controlDelegate)FunctionImporter.Import<set_auto_laser_controlDelegate>("set_auto_laser_control"); + set_auto_laser_params = (set_auto_laser_paramsDelegate)FunctionImporter.Import<set_auto_laser_paramsDelegate>("set_auto_laser_params"); + load_auto_laser_control = (load_auto_laser_controlDelegate)FunctionImporter.Import<load_auto_laser_controlDelegate>("load_auto_laser_control"); + load_position_control = (load_position_controlDelegate)FunctionImporter.Import<load_position_controlDelegate>("load_position_control"); + set_default_pixel = (set_default_pixelDelegate)FunctionImporter.Import<set_default_pixelDelegate>("set_default_pixel"); + get_standby = (get_standbyDelegate)FunctionImporter.Import<get_standbyDelegate>("get_standby"); + set_pulse_picking = (set_pulse_pickingDelegate)FunctionImporter.Import<set_pulse_pickingDelegate>("set_pulse_picking"); + set_pulse_picking_length = (set_pulse_picking_lengthDelegate)FunctionImporter.Import<set_pulse_picking_lengthDelegate>("set_pulse_picking_length"); + config_laser_signals = (config_laser_signalsDelegate)FunctionImporter.Import<config_laser_signalsDelegate>("config_laser_signals"); + n_set_ext_start_delay = (n_set_ext_start_delayDelegate)FunctionImporter.Import<n_set_ext_start_delayDelegate>("n_set_ext_start_delay"); + n_set_rot_center = (n_set_rot_centerDelegate)FunctionImporter.Import<n_set_rot_centerDelegate>("n_set_rot_center"); + n_simulate_encoder = (n_simulate_encoderDelegate)FunctionImporter.Import<n_simulate_encoderDelegate>("n_simulate_encoder"); + n_get_marking_info = (n_get_marking_infoDelegate)FunctionImporter.Import<n_get_marking_infoDelegate>("n_get_marking_info"); + n_set_encoder_speed_ctrl = (n_set_encoder_speed_ctrlDelegate)FunctionImporter.Import<n_set_encoder_speed_ctrlDelegate>("n_set_encoder_speed_ctrl"); + n_set_mcbsp_x = (n_set_mcbsp_xDelegate)FunctionImporter.Import<n_set_mcbsp_xDelegate>("n_set_mcbsp_x"); + n_set_mcbsp_y = (n_set_mcbsp_yDelegate)FunctionImporter.Import<n_set_mcbsp_yDelegate>("n_set_mcbsp_y"); + n_set_mcbsp_rot = (n_set_mcbsp_rotDelegate)FunctionImporter.Import<n_set_mcbsp_rotDelegate>("n_set_mcbsp_rot"); + n_set_mcbsp_matrix = (n_set_mcbsp_matrixDelegate)FunctionImporter.Import<n_set_mcbsp_matrixDelegate>("n_set_mcbsp_matrix"); + n_set_mcbsp_global_x = (n_set_mcbsp_global_xDelegate)FunctionImporter.Import<n_set_mcbsp_global_xDelegate>("n_set_mcbsp_global_x"); + n_set_mcbsp_global_y = (n_set_mcbsp_global_yDelegate)FunctionImporter.Import<n_set_mcbsp_global_yDelegate>("n_set_mcbsp_global_y"); + n_set_mcbsp_global_rot = (n_set_mcbsp_global_rotDelegate)FunctionImporter.Import<n_set_mcbsp_global_rotDelegate>("n_set_mcbsp_global_rot"); + n_set_mcbsp_global_matrix = (n_set_mcbsp_global_matrixDelegate)FunctionImporter.Import<n_set_mcbsp_global_matrixDelegate>("n_set_mcbsp_global_matrix"); + n_set_mcbsp_in = (n_set_mcbsp_inDelegate)FunctionImporter.Import<n_set_mcbsp_inDelegate>("n_set_mcbsp_in"); + n_set_multi_mcbsp_in = (n_set_multi_mcbsp_inDelegate)FunctionImporter.Import<n_set_multi_mcbsp_inDelegate>("n_set_multi_mcbsp_in"); + n_set_fly_tracking_error = (n_set_fly_tracking_errorDelegate)FunctionImporter.Import<n_set_fly_tracking_errorDelegate>("n_set_fly_tracking_error"); + n_load_fly_2d_table = (n_load_fly_2d_tableDelegate)FunctionImporter.Import<n_load_fly_2d_tableDelegate>("n_load_fly_2d_table"); + n_init_fly_2d = (n_init_fly_2dDelegate)FunctionImporter.Import<n_init_fly_2dDelegate>("n_init_fly_2d"); + n_get_fly_2d_offset = (n_get_fly_2d_offsetDelegate)FunctionImporter.Import<n_get_fly_2d_offsetDelegate>("n_get_fly_2d_offset"); + n_get_encoder = (n_get_encoderDelegate)FunctionImporter.Import<n_get_encoderDelegate>("n_get_encoder"); + n_read_encoder = (n_read_encoderDelegate)FunctionImporter.Import<n_read_encoderDelegate>("n_read_encoder"); + n_get_mcbsp = (n_get_mcbspDelegate)FunctionImporter.Import<n_get_mcbspDelegate>("n_get_mcbsp"); + n_read_mcbsp = (n_read_mcbspDelegate)FunctionImporter.Import<n_read_mcbspDelegate>("n_read_mcbsp"); + n_read_multi_mcbsp = (n_read_multi_mcbspDelegate)FunctionImporter.Import<n_read_multi_mcbspDelegate>("n_read_multi_mcbsp"); + n_clear_fly_overflow_ctrl = (n_clear_fly_overflow_ctrlDelegate)FunctionImporter.Import<n_clear_fly_overflow_ctrlDelegate>("n_clear_fly_overflow_ctrl"); + set_ext_start_delay = (set_ext_start_delayDelegate)FunctionImporter.Import<set_ext_start_delayDelegate>("set_ext_start_delay"); + set_rot_center = (set_rot_centerDelegate)FunctionImporter.Import<set_rot_centerDelegate>("set_rot_center"); + simulate_encoder = (simulate_encoderDelegate)FunctionImporter.Import<simulate_encoderDelegate>("simulate_encoder"); + get_marking_info = (get_marking_infoDelegate)FunctionImporter.Import<get_marking_infoDelegate>("get_marking_info"); + set_encoder_speed_ctrl = (set_encoder_speed_ctrlDelegate)FunctionImporter.Import<set_encoder_speed_ctrlDelegate>("set_encoder_speed_ctrl"); + set_mcbsp_x = (set_mcbsp_xDelegate)FunctionImporter.Import<set_mcbsp_xDelegate>("set_mcbsp_x"); + set_mcbsp_y = (set_mcbsp_yDelegate)FunctionImporter.Import<set_mcbsp_yDelegate>("set_mcbsp_y"); + set_mcbsp_rot = (set_mcbsp_rotDelegate)FunctionImporter.Import<set_mcbsp_rotDelegate>("set_mcbsp_rot"); + set_mcbsp_matrix = (set_mcbsp_matrixDelegate)FunctionImporter.Import<set_mcbsp_matrixDelegate>("set_mcbsp_matrix"); + set_mcbsp_global_x = (set_mcbsp_global_xDelegate)FunctionImporter.Import<set_mcbsp_global_xDelegate>("set_mcbsp_global_x"); + set_mcbsp_global_y = (set_mcbsp_global_yDelegate)FunctionImporter.Import<set_mcbsp_global_yDelegate>("set_mcbsp_global_y"); + set_mcbsp_global_rot = (set_mcbsp_global_rotDelegate)FunctionImporter.Import<set_mcbsp_global_rotDelegate>("set_mcbsp_global_rot"); + set_mcbsp_global_matrix = (set_mcbsp_global_matrixDelegate)FunctionImporter.Import<set_mcbsp_global_matrixDelegate>("set_mcbsp_global_matrix"); + set_mcbsp_in = (set_mcbsp_inDelegate)FunctionImporter.Import<set_mcbsp_inDelegate>("set_mcbsp_in"); + set_multi_mcbsp_in = (set_multi_mcbsp_inDelegate)FunctionImporter.Import<set_multi_mcbsp_inDelegate>("set_multi_mcbsp_in"); + set_fly_tracking_error = (set_fly_tracking_errorDelegate)FunctionImporter.Import<set_fly_tracking_errorDelegate>("set_fly_tracking_error"); + load_fly_2d_table = (load_fly_2d_tableDelegate)FunctionImporter.Import<load_fly_2d_tableDelegate>("load_fly_2d_table"); + init_fly_2d = (init_fly_2dDelegate)FunctionImporter.Import<init_fly_2dDelegate>("init_fly_2d"); + get_fly_2d_offset = (get_fly_2d_offsetDelegate)FunctionImporter.Import<get_fly_2d_offsetDelegate>("get_fly_2d_offset"); + get_encoder = (get_encoderDelegate)FunctionImporter.Import<get_encoderDelegate>("get_encoder"); + read_encoder = (read_encoderDelegate)FunctionImporter.Import<read_encoderDelegate>("read_encoder"); + get_mcbsp = (get_mcbspDelegate)FunctionImporter.Import<get_mcbspDelegate>("get_mcbsp"); + read_mcbsp = (read_mcbspDelegate)FunctionImporter.Import<read_mcbspDelegate>("read_mcbsp"); + read_multi_mcbsp = (read_multi_mcbspDelegate)FunctionImporter.Import<read_multi_mcbspDelegate>("read_multi_mcbsp"); + clear_fly_overflow_ctrl = (clear_fly_overflow_ctrlDelegate)FunctionImporter.Import<clear_fly_overflow_ctrlDelegate>("clear_fly_overflow_ctrl"); + n_get_time = (n_get_timeDelegate)FunctionImporter.Import<n_get_timeDelegate>("n_get_time"); + n_get_lap_time = (n_get_lap_timeDelegate)FunctionImporter.Import<n_get_lap_timeDelegate>("n_get_lap_time"); + n_measurement_status = (n_measurement_statusDelegate)FunctionImporter.Import<n_measurement_statusDelegate>("n_measurement_status"); + n_get_waveform = (n_get_waveformDelegate)FunctionImporter.Import<n_get_waveformDelegate>("n_get_waveform"); + n_bounce_supp = (n_bounce_suppDelegate)FunctionImporter.Import<n_bounce_suppDelegate>("n_bounce_supp"); + n_home_position_xyz = (n_home_position_xyzDelegate)FunctionImporter.Import<n_home_position_xyzDelegate>("n_home_position_xyz"); + n_home_position = (n_home_positionDelegate)FunctionImporter.Import<n_home_positionDelegate>("n_home_position"); + n_rs232_config = (n_rs232_configDelegate)FunctionImporter.Import<n_rs232_configDelegate>("n_rs232_config"); + n_rs232_write_data = (n_rs232_write_dataDelegate)FunctionImporter.Import<n_rs232_write_dataDelegate>("n_rs232_write_data"); + n_rs232_write_text = (n_rs232_write_textDelegate)FunctionImporter.Import<n_rs232_write_textDelegate>("n_rs232_write_text"); + n_rs232_read_data = (n_rs232_read_dataDelegate)FunctionImporter.Import<n_rs232_read_dataDelegate>("n_rs232_read_data"); + n_set_mcbsp_freq = (n_set_mcbsp_freqDelegate)FunctionImporter.Import<n_set_mcbsp_freqDelegate>("n_set_mcbsp_freq"); + n_mcbsp_init = (n_mcbsp_initDelegate)FunctionImporter.Import<n_mcbsp_initDelegate>("n_mcbsp_init"); + n_mcbsp_init_spi = (n_mcbsp_init_spiDelegate)FunctionImporter.Import<n_mcbsp_init_spiDelegate>("n_mcbsp_init_spi"); + n_get_overrun = (n_get_overrunDelegate)FunctionImporter.Import<n_get_overrunDelegate>("n_get_overrun"); + n_get_master_slave = (n_get_master_slaveDelegate)FunctionImporter.Import<n_get_master_slaveDelegate>("n_get_master_slave"); + n_get_transform = (n_get_transformDelegate)FunctionImporter.Import<n_get_transformDelegate>("n_get_transform"); + n_stop_trigger = (n_stop_triggerDelegate)FunctionImporter.Import<n_stop_triggerDelegate>("n_stop_trigger"); + n_move_to = (n_move_toDelegate)FunctionImporter.Import<n_move_toDelegate>("n_move_to"); + n_set_enduring_wobbel = (n_set_enduring_wobbelDelegate)FunctionImporter.Import<n_set_enduring_wobbelDelegate>("n_set_enduring_wobbel"); + n_set_enduring_wobbel_2 = (n_set_enduring_wobbel_2Delegate)FunctionImporter.Import<n_set_enduring_wobbel_2Delegate>("n_set_enduring_wobbel_2"); + n_set_free_variable = (n_set_free_variableDelegate)FunctionImporter.Import<n_set_free_variableDelegate>("n_set_free_variable"); + n_get_free_variable = (n_get_free_variableDelegate)FunctionImporter.Import<n_get_free_variableDelegate>("n_get_free_variable"); + n_set_mcbsp_out_ptr = (n_set_mcbsp_out_ptrDelegate)FunctionImporter.Import<n_set_mcbsp_out_ptrDelegate>("n_set_mcbsp_out_ptr"); + n_periodic_toggle = (n_periodic_toggleDelegate)FunctionImporter.Import<n_periodic_toggleDelegate>("n_periodic_toggle"); + n_load_wobbel_power = (n_load_wobbel_powerDelegate)FunctionImporter.Import<n_load_wobbel_powerDelegate>("n_load_wobbel_power"); + get_time = (get_timeDelegate)FunctionImporter.Import<get_timeDelegate>("get_time"); + get_lap_time = (get_lap_timeDelegate)FunctionImporter.Import<get_lap_timeDelegate>("get_lap_time"); + measurement_status = (measurement_statusDelegate)FunctionImporter.Import<measurement_statusDelegate>("measurement_status"); + get_waveform = (get_waveformDelegate)FunctionImporter.Import<get_waveformDelegate>("get_waveform"); + bounce_supp = (bounce_suppDelegate)FunctionImporter.Import<bounce_suppDelegate>("bounce_supp"); + home_position_xyz = (home_position_xyzDelegate)FunctionImporter.Import<home_position_xyzDelegate>("home_position_xyz"); + home_position = (home_positionDelegate)FunctionImporter.Import<home_positionDelegate>("home_position"); + rs232_config = (rs232_configDelegate)FunctionImporter.Import<rs232_configDelegate>("rs232_config"); + rs232_write_data = (rs232_write_dataDelegate)FunctionImporter.Import<rs232_write_dataDelegate>("rs232_write_data"); + rs232_write_text = (rs232_write_textDelegate)FunctionImporter.Import<rs232_write_textDelegate>("rs232_write_text"); + rs232_read_data = (rs232_read_dataDelegate)FunctionImporter.Import<rs232_read_dataDelegate>("rs232_read_data"); + set_mcbsp_freq = (set_mcbsp_freqDelegate)FunctionImporter.Import<set_mcbsp_freqDelegate>("set_mcbsp_freq"); + mcbsp_init = (mcbsp_initDelegate)FunctionImporter.Import<mcbsp_initDelegate>("mcbsp_init"); + mcbsp_init_spi = (mcbsp_init_spiDelegate)FunctionImporter.Import<mcbsp_init_spiDelegate>("mcbsp_init_spi"); + get_overrun = (get_overrunDelegate)FunctionImporter.Import<get_overrunDelegate>("get_overrun"); + get_master_slave = (get_master_slaveDelegate)FunctionImporter.Import<get_master_slaveDelegate>("get_master_slave"); + get_transform = (get_transformDelegate)FunctionImporter.Import<get_transformDelegate>("get_transform"); + stop_trigger = (stop_triggerDelegate)FunctionImporter.Import<stop_triggerDelegate>("stop_trigger"); + move_to = (move_toDelegate)FunctionImporter.Import<move_toDelegate>("move_to"); + set_enduring_wobbel = (set_enduring_wobbelDelegate)FunctionImporter.Import<set_enduring_wobbelDelegate>("set_enduring_wobbel"); + set_enduring_wobbel_2 = (set_enduring_wobbel_2Delegate)FunctionImporter.Import<set_enduring_wobbel_2Delegate>("set_enduring_wobbel_2"); + set_free_variable = (set_free_variableDelegate)FunctionImporter.Import<set_free_variableDelegate>("set_free_variable"); + get_free_variable = (get_free_variableDelegate)FunctionImporter.Import<get_free_variableDelegate>("get_free_variable"); + set_mcbsp_out_ptr = (set_mcbsp_out_ptrDelegate)FunctionImporter.Import<set_mcbsp_out_ptrDelegate>("set_mcbsp_out_ptr"); + periodic_toggle = (periodic_toggleDelegate)FunctionImporter.Import<periodic_toggleDelegate>("periodic_toggle"); + load_wobbel_power = (load_wobbel_powerDelegate)FunctionImporter.Import<load_wobbel_powerDelegate>("load_wobbel_power"); + n_set_defocus = (n_set_defocusDelegate)FunctionImporter.Import<n_set_defocusDelegate>("n_set_defocus"); + n_set_defocus_offset = (n_set_defocus_offsetDelegate)FunctionImporter.Import<n_set_defocus_offsetDelegate>("n_set_defocus_offset"); + n_goto_xyz = (n_goto_xyzDelegate)FunctionImporter.Import<n_goto_xyzDelegate>("n_goto_xyz"); + n_set_zoom = (n_set_zoomDelegate)FunctionImporter.Import<n_set_zoomDelegate>("n_set_zoom"); + n_goto_xy = (n_goto_xyDelegate)FunctionImporter.Import<n_goto_xyDelegate>("n_goto_xy"); + n_get_z_distance = (n_get_z_distanceDelegate)FunctionImporter.Import<n_get_z_distanceDelegate>("n_get_z_distance"); + set_defocus = (set_defocusDelegate)FunctionImporter.Import<set_defocusDelegate>("set_defocus"); + set_defocus_offset = (set_defocus_offsetDelegate)FunctionImporter.Import<set_defocus_offsetDelegate>("set_defocus_offset"); + goto_xyz = (goto_xyzDelegate)FunctionImporter.Import<goto_xyzDelegate>("goto_xyz"); + goto_xy = (goto_xyDelegate)FunctionImporter.Import<goto_xyDelegate>("goto_xy"); + set_zoom = (set_zoomDelegate)FunctionImporter.Import<set_zoomDelegate>("set_zoom"); + get_z_distance = (get_z_distanceDelegate)FunctionImporter.Import<get_z_distanceDelegate>("get_z_distance"); + n_set_offset_xyz = (n_set_offset_xyzDelegate)FunctionImporter.Import<n_set_offset_xyzDelegate>("n_set_offset_xyz"); + n_set_offset = (n_set_offsetDelegate)FunctionImporter.Import<n_set_offsetDelegate>("n_set_offset"); + n_set_matrix = (n_set_matrixDelegate)FunctionImporter.Import<n_set_matrixDelegate>("n_set_matrix"); + n_set_angle = (n_set_angleDelegate)FunctionImporter.Import<n_set_angleDelegate>("n_set_angle"); + n_set_scale = (n_set_scaleDelegate)FunctionImporter.Import<n_set_scaleDelegate>("n_set_scale"); + n_apply_mcbsp = (n_apply_mcbspDelegate)FunctionImporter.Import<n_apply_mcbspDelegate>("n_apply_mcbsp"); + n_upload_transform = (n_upload_transformDelegate)FunctionImporter.Import<n_upload_transformDelegate>("n_upload_transform"); + set_offset_xyz = (set_offset_xyzDelegate)FunctionImporter.Import<set_offset_xyzDelegate>("set_offset_xyz"); + set_offset = (set_offsetDelegate)FunctionImporter.Import<set_offsetDelegate>("set_offset"); + set_matrix = (set_matrixDelegate)FunctionImporter.Import<set_matrixDelegate>("set_matrix"); + set_angle = (set_angleDelegate)FunctionImporter.Import<set_angleDelegate>("set_angle"); + set_scale = (set_scaleDelegate)FunctionImporter.Import<set_scaleDelegate>("set_scale"); + apply_mcbsp = (apply_mcbspDelegate)FunctionImporter.Import<apply_mcbspDelegate>("apply_mcbsp"); + upload_transform = (upload_transformDelegate)FunctionImporter.Import<upload_transformDelegate>("upload_transform"); + transform = (transformDelegate)FunctionImporter.Import<transformDelegate>("transform"); + n_set_delay_mode = (n_set_delay_modeDelegate)FunctionImporter.Import<n_set_delay_modeDelegate>("n_set_delay_mode"); + n_set_jump_speed_ctrl = (n_set_jump_speed_ctrlDelegate)FunctionImporter.Import<n_set_jump_speed_ctrlDelegate>("n_set_jump_speed_ctrl"); + n_set_mark_speed_ctrl = (n_set_mark_speed_ctrlDelegate)FunctionImporter.Import<n_set_mark_speed_ctrlDelegate>("n_set_mark_speed_ctrl"); + n_set_sky_writing_para = (n_set_sky_writing_paraDelegate)FunctionImporter.Import<n_set_sky_writing_paraDelegate>("n_set_sky_writing_para"); + n_set_sky_writing_limit = (n_set_sky_writing_limitDelegate)FunctionImporter.Import<n_set_sky_writing_limitDelegate>("n_set_sky_writing_limit"); + n_set_sky_writing_mode = (n_set_sky_writing_modeDelegate)FunctionImporter.Import<n_set_sky_writing_modeDelegate>("n_set_sky_writing_mode"); + n_load_varpolydelay = (n_load_varpolydelayDelegate)FunctionImporter.Import<n_load_varpolydelayDelegate>("n_load_varpolydelay"); + n_set_hi = (n_set_hiDelegate)FunctionImporter.Import<n_set_hiDelegate>("n_set_hi"); + n_get_hi_pos = (n_get_hi_posDelegate)FunctionImporter.Import<n_get_hi_posDelegate>("n_get_hi_pos"); + n_auto_cal = (n_auto_calDelegate)FunctionImporter.Import<n_auto_calDelegate>("n_auto_cal"); + n_get_auto_cal = (n_get_auto_calDelegate)FunctionImporter.Import<n_get_auto_calDelegate>("n_get_auto_cal"); + n_write_hi_pos = (n_write_hi_posDelegate)FunctionImporter.Import<n_write_hi_posDelegate>("n_write_hi_pos"); + n_set_sky_writing = (n_set_sky_writingDelegate)FunctionImporter.Import<n_set_sky_writingDelegate>("n_set_sky_writing"); + n_get_hi_data = (n_get_hi_dataDelegate)FunctionImporter.Import<n_get_hi_dataDelegate>("n_get_hi_data"); + set_delay_mode = (set_delay_modeDelegate)FunctionImporter.Import<set_delay_modeDelegate>("set_delay_mode"); + set_jump_speed_ctrl = (set_jump_speed_ctrlDelegate)FunctionImporter.Import<set_jump_speed_ctrlDelegate>("set_jump_speed_ctrl"); + set_mark_speed_ctrl = (set_mark_speed_ctrlDelegate)FunctionImporter.Import<set_mark_speed_ctrlDelegate>("set_mark_speed_ctrl"); + set_sky_writing_para = (set_sky_writing_paraDelegate)FunctionImporter.Import<set_sky_writing_paraDelegate>("set_sky_writing_para"); + set_sky_writing_limit = (set_sky_writing_limitDelegate)FunctionImporter.Import<set_sky_writing_limitDelegate>("set_sky_writing_limit"); + set_sky_writing_mode = (set_sky_writing_modeDelegate)FunctionImporter.Import<set_sky_writing_modeDelegate>("set_sky_writing_mode"); + load_varpolydelay = (load_varpolydelayDelegate)FunctionImporter.Import<load_varpolydelayDelegate>("load_varpolydelay"); + set_hi = (set_hiDelegate)FunctionImporter.Import<set_hiDelegate>("set_hi"); + get_hi_pos = (get_hi_posDelegate)FunctionImporter.Import<get_hi_posDelegate>("get_hi_pos"); + auto_cal = (auto_calDelegate)FunctionImporter.Import<auto_calDelegate>("auto_cal"); + get_auto_cal = (get_auto_calDelegate)FunctionImporter.Import<get_auto_calDelegate>("get_auto_cal"); + write_hi_pos = (write_hi_posDelegate)FunctionImporter.Import<write_hi_posDelegate>("write_hi_pos"); + set_sky_writing = (set_sky_writingDelegate)FunctionImporter.Import<set_sky_writingDelegate>("set_sky_writing"); + get_hi_data = (get_hi_dataDelegate)FunctionImporter.Import<get_hi_dataDelegate>("get_hi_data"); + n_send_user_data = (n_send_user_dataDelegate)FunctionImporter.Import<n_send_user_dataDelegate>("n_send_user_data"); + n_read_user_data = (n_read_user_dataDelegate)FunctionImporter.Import<n_read_user_dataDelegate>("n_read_user_data"); + n_control_command = (n_control_commandDelegate)FunctionImporter.Import<n_control_commandDelegate>("n_control_command"); + n_get_value = (n_get_valueDelegate)FunctionImporter.Import<n_get_valueDelegate>("n_get_value"); + n_get_values = (n_get_valuesDelegate)FunctionImporter.Import<n_get_valuesDelegate>("n_get_values"); + n_get_galvo_controls = (n_get_galvo_controlsDelegate)FunctionImporter.Import<n_get_galvo_controlsDelegate>("n_get_galvo_controls"); + n_get_head_status = (n_get_head_statusDelegate)FunctionImporter.Import<n_get_head_statusDelegate>("n_get_head_status"); + n_set_jump_mode = (n_set_jump_modeDelegate)FunctionImporter.Import<n_set_jump_modeDelegate>("n_set_jump_mode"); + n_load_jump_table_offset = (n_load_jump_table_offsetDelegate)FunctionImporter.Import<n_load_jump_table_offsetDelegate>("n_load_jump_table_offset"); + n_get_jump_table = (n_get_jump_tableDelegate)FunctionImporter.Import<n_get_jump_tableDelegate>("n_get_jump_table"); + n_set_jump_table = (n_set_jump_tableDelegate)FunctionImporter.Import<n_set_jump_tableDelegate>("n_set_jump_table"); + n_load_jump_table = (n_load_jump_tableDelegate)FunctionImporter.Import<n_load_jump_tableDelegate>("n_load_jump_table"); + send_user_data = (send_user_dataDelegate)FunctionImporter.Import<send_user_dataDelegate>("send_user_data"); + read_user_data = (read_user_dataDelegate)FunctionImporter.Import<read_user_dataDelegate>("read_user_data"); + control_command = (control_commandDelegate)FunctionImporter.Import<control_commandDelegate>("control_command"); + get_value = (get_valueDelegate)FunctionImporter.Import<get_valueDelegate>("get_value"); + get_values = (get_valuesDelegate)FunctionImporter.Import<get_valuesDelegate>("get_values"); + get_galvo_controls = (get_galvo_controlsDelegate)FunctionImporter.Import<get_galvo_controlsDelegate>("get_galvo_controls"); + get_head_status = (get_head_statusDelegate)FunctionImporter.Import<get_head_statusDelegate>("get_head_status"); + set_jump_mode = (set_jump_modeDelegate)FunctionImporter.Import<set_jump_modeDelegate>("set_jump_mode"); + load_jump_table_offset = (load_jump_table_offsetDelegate)FunctionImporter.Import<load_jump_table_offsetDelegate>("load_jump_table_offset"); + get_jump_table = (get_jump_tableDelegate)FunctionImporter.Import<get_jump_tableDelegate>("get_jump_table"); + set_jump_table = (set_jump_tableDelegate)FunctionImporter.Import<set_jump_tableDelegate>("set_jump_table"); + load_jump_table = (load_jump_tableDelegate)FunctionImporter.Import<load_jump_tableDelegate>("load_jump_table"); + n_stepper_init = (n_stepper_initDelegate)FunctionImporter.Import<n_stepper_initDelegate>("n_stepper_init"); + n_stepper_enable = (n_stepper_enableDelegate)FunctionImporter.Import<n_stepper_enableDelegate>("n_stepper_enable"); + n_stepper_disable_switch = (n_stepper_disable_switchDelegate)FunctionImporter.Import<n_stepper_disable_switchDelegate>("n_stepper_disable_switch"); + n_stepper_control = (n_stepper_controlDelegate)FunctionImporter.Import<n_stepper_controlDelegate>("n_stepper_control"); + n_stepper_abs_no = (n_stepper_abs_noDelegate)FunctionImporter.Import<n_stepper_abs_noDelegate>("n_stepper_abs_no"); + n_stepper_rel_no = (n_stepper_rel_noDelegate)FunctionImporter.Import<n_stepper_rel_noDelegate>("n_stepper_rel_no"); + n_stepper_abs = (n_stepper_absDelegate)FunctionImporter.Import<n_stepper_absDelegate>("n_stepper_abs"); + n_stepper_rel = (n_stepper_relDelegate)FunctionImporter.Import<n_stepper_relDelegate>("n_stepper_rel"); + n_get_stepper_status = (n_get_stepper_statusDelegate)FunctionImporter.Import<n_get_stepper_statusDelegate>("n_get_stepper_status"); + stepper_init = (stepper_initDelegate)FunctionImporter.Import<stepper_initDelegate>("stepper_init"); + stepper_enable = (stepper_enableDelegate)FunctionImporter.Import<stepper_enableDelegate>("stepper_enable"); + stepper_disable_switch = (stepper_disable_switchDelegate)FunctionImporter.Import<stepper_disable_switchDelegate>("stepper_disable_switch"); + stepper_control = (stepper_controlDelegate)FunctionImporter.Import<stepper_controlDelegate>("stepper_control"); + stepper_abs_no = (stepper_abs_noDelegate)FunctionImporter.Import<stepper_abs_noDelegate>("stepper_abs_no"); + stepper_rel_no = (stepper_rel_noDelegate)FunctionImporter.Import<stepper_rel_noDelegate>("stepper_rel_no"); + stepper_abs = (stepper_absDelegate)FunctionImporter.Import<stepper_absDelegate>("stepper_abs"); + stepper_rel = (stepper_relDelegate)FunctionImporter.Import<stepper_relDelegate>("stepper_rel"); + get_stepper_status = (get_stepper_statusDelegate)FunctionImporter.Import<get_stepper_statusDelegate>("get_stepper_status"); + n_select_cor_table_list = (n_select_cor_table_listDelegate)FunctionImporter.Import<n_select_cor_table_listDelegate>("n_select_cor_table_list"); + select_cor_table_list = (select_cor_table_listDelegate)FunctionImporter.Import<select_cor_table_listDelegate>("select_cor_table_list"); + n_list_nop = (n_list_nopDelegate)FunctionImporter.Import<n_list_nopDelegate>("n_list_nop"); + n_list_continue = (n_list_continueDelegate)FunctionImporter.Import<n_list_continueDelegate>("n_list_continue"); + n_list_next = (n_list_nextDelegate)FunctionImporter.Import<n_list_nextDelegate>("n_list_next"); + n_long_delay = (n_long_delayDelegate)FunctionImporter.Import<n_long_delayDelegate>("n_long_delay"); + n_set_end_of_list = (n_set_end_of_listDelegate)FunctionImporter.Import<n_set_end_of_listDelegate>("n_set_end_of_list"); + n_set_wait = (n_set_waitDelegate)FunctionImporter.Import<n_set_waitDelegate>("n_set_wait"); + n_list_jump_pos = (n_list_jump_posDelegate)FunctionImporter.Import<n_list_jump_posDelegate>("n_list_jump_pos"); + n_list_jump_rel = (n_list_jump_relDelegate)FunctionImporter.Import<n_list_jump_relDelegate>("n_list_jump_rel"); + n_list_repeat = (n_list_repeatDelegate)FunctionImporter.Import<n_list_repeatDelegate>("n_list_repeat"); + n_list_until = (n_list_untilDelegate)FunctionImporter.Import<n_list_untilDelegate>("n_list_until"); + n_range_checking = (n_range_checkingDelegate)FunctionImporter.Import<n_range_checkingDelegate>("n_range_checking"); + n_set_list_jump = (n_set_list_jumpDelegate)FunctionImporter.Import<n_set_list_jumpDelegate>("n_set_list_jump"); + list_nop = (list_nopDelegate)FunctionImporter.Import<list_nopDelegate>("list_nop"); + list_continue = (list_continueDelegate)FunctionImporter.Import<list_continueDelegate>("list_continue"); + list_next = (list_nextDelegate)FunctionImporter.Import<list_nextDelegate>("list_next"); + long_delay = (long_delayDelegate)FunctionImporter.Import<long_delayDelegate>("long_delay"); + set_end_of_list = (set_end_of_listDelegate)FunctionImporter.Import<set_end_of_listDelegate>("set_end_of_list"); + set_wait = (set_waitDelegate)FunctionImporter.Import<set_waitDelegate>("set_wait"); + list_jump_pos = (list_jump_posDelegate)FunctionImporter.Import<list_jump_posDelegate>("list_jump_pos"); + list_jump_rel = (list_jump_relDelegate)FunctionImporter.Import<list_jump_relDelegate>("list_jump_rel"); + list_repeat = (list_repeatDelegate)FunctionImporter.Import<list_repeatDelegate>("list_repeat"); + list_until = (list_untilDelegate)FunctionImporter.Import<list_untilDelegate>("list_until"); + range_checking = (range_checkingDelegate)FunctionImporter.Import<range_checkingDelegate>("range_checking"); + set_list_jump = (set_list_jumpDelegate)FunctionImporter.Import<set_list_jumpDelegate>("set_list_jump"); + n_set_extstartpos_list = (n_set_extstartpos_listDelegate)FunctionImporter.Import<n_set_extstartpos_listDelegate>("n_set_extstartpos_list"); + n_set_control_mode_list = (n_set_control_mode_listDelegate)FunctionImporter.Import<n_set_control_mode_listDelegate>("n_set_control_mode_list"); + n_simulate_ext_start = (n_simulate_ext_startDelegate)FunctionImporter.Import<n_simulate_ext_startDelegate>("n_simulate_ext_start"); + set_extstartpos_list = (set_extstartpos_listDelegate)FunctionImporter.Import<set_extstartpos_listDelegate>("set_extstartpos_list"); + set_control_mode_list = (set_control_mode_listDelegate)FunctionImporter.Import<set_control_mode_listDelegate>("set_control_mode_list"); + simulate_ext_start = (simulate_ext_startDelegate)FunctionImporter.Import<simulate_ext_startDelegate>("simulate_ext_start"); + n_list_return = (n_list_returnDelegate)FunctionImporter.Import<n_list_returnDelegate>("n_list_return"); + n_list_call_repeat = (n_list_call_repeatDelegate)FunctionImporter.Import<n_list_call_repeatDelegate>("n_list_call_repeat"); + n_list_call_abs_repeat = (n_list_call_abs_repeatDelegate)FunctionImporter.Import<n_list_call_abs_repeatDelegate>("n_list_call_abs_repeat"); + n_list_call = (n_list_callDelegate)FunctionImporter.Import<n_list_callDelegate>("n_list_call"); + n_list_call_abs = (n_list_call_absDelegate)FunctionImporter.Import<n_list_call_absDelegate>("n_list_call_abs"); + n_sub_call_repeat = (n_sub_call_repeatDelegate)FunctionImporter.Import<n_sub_call_repeatDelegate>("n_sub_call_repeat"); + n_sub_call_abs_repeat = (n_sub_call_abs_repeatDelegate)FunctionImporter.Import<n_sub_call_abs_repeatDelegate>("n_sub_call_abs_repeat"); + n_sub_call = (n_sub_callDelegate)FunctionImporter.Import<n_sub_callDelegate>("n_sub_call"); + n_sub_call_abs = (n_sub_call_absDelegate)FunctionImporter.Import<n_sub_call_absDelegate>("n_sub_call_abs"); + list_return = (list_returnDelegate)FunctionImporter.Import<list_returnDelegate>("list_return"); + list_call_repeat = (list_call_repeatDelegate)FunctionImporter.Import<list_call_repeatDelegate>("list_call_repeat"); + list_call_abs_repeat = (list_call_abs_repeatDelegate)FunctionImporter.Import<list_call_abs_repeatDelegate>("list_call_abs_repeat"); + list_call = (list_callDelegate)FunctionImporter.Import<list_callDelegate>("list_call"); + list_call_abs = (list_call_absDelegate)FunctionImporter.Import<list_call_absDelegate>("list_call_abs"); + sub_call_repeat = (sub_call_repeatDelegate)FunctionImporter.Import<sub_call_repeatDelegate>("sub_call_repeat"); + sub_call_abs_repeat = (sub_call_abs_repeatDelegate)FunctionImporter.Import<sub_call_abs_repeatDelegate>("sub_call_abs_repeat"); + sub_call = (sub_callDelegate)FunctionImporter.Import<sub_callDelegate>("sub_call"); + sub_call_abs = (sub_call_absDelegate)FunctionImporter.Import<sub_call_absDelegate>("sub_call_abs"); + n_list_call_cond = (n_list_call_condDelegate)FunctionImporter.Import<n_list_call_condDelegate>("n_list_call_cond"); + n_list_call_abs_cond = (n_list_call_abs_condDelegate)FunctionImporter.Import<n_list_call_abs_condDelegate>("n_list_call_abs_cond"); + n_sub_call_cond = (n_sub_call_condDelegate)FunctionImporter.Import<n_sub_call_condDelegate>("n_sub_call_cond"); + n_sub_call_abs_cond = (n_sub_call_abs_condDelegate)FunctionImporter.Import<n_sub_call_abs_condDelegate>("n_sub_call_abs_cond"); + n_list_jump_pos_cond = (n_list_jump_pos_condDelegate)FunctionImporter.Import<n_list_jump_pos_condDelegate>("n_list_jump_pos_cond"); + n_list_jump_rel_cond = (n_list_jump_rel_condDelegate)FunctionImporter.Import<n_list_jump_rel_condDelegate>("n_list_jump_rel_cond"); + n_if_cond = (n_if_condDelegate)FunctionImporter.Import<n_if_condDelegate>("n_if_cond"); + n_if_not_cond = (n_if_not_condDelegate)FunctionImporter.Import<n_if_not_condDelegate>("n_if_not_cond"); + n_if_pin_cond = (n_if_pin_condDelegate)FunctionImporter.Import<n_if_pin_condDelegate>("n_if_pin_cond"); + n_if_not_pin_cond = (n_if_not_pin_condDelegate)FunctionImporter.Import<n_if_not_pin_condDelegate>("n_if_not_pin_cond"); + n_switch_ioport = (n_switch_ioportDelegate)FunctionImporter.Import<n_switch_ioportDelegate>("n_switch_ioport"); + n_list_jump_cond = (n_list_jump_condDelegate)FunctionImporter.Import<n_list_jump_condDelegate>("n_list_jump_cond"); + list_call_cond = (list_call_condDelegate)FunctionImporter.Import<list_call_condDelegate>("list_call_cond"); + list_call_abs_cond = (list_call_abs_condDelegate)FunctionImporter.Import<list_call_abs_condDelegate>("list_call_abs_cond"); + sub_call_cond = (sub_call_condDelegate)FunctionImporter.Import<sub_call_condDelegate>("sub_call_cond"); + sub_call_abs_cond = (sub_call_abs_condDelegate)FunctionImporter.Import<sub_call_abs_condDelegate>("sub_call_abs_cond"); + list_jump_pos_cond = (list_jump_pos_condDelegate)FunctionImporter.Import<list_jump_pos_condDelegate>("list_jump_pos_cond"); + list_jump_rel_cond = (list_jump_rel_condDelegate)FunctionImporter.Import<list_jump_rel_condDelegate>("list_jump_rel_cond"); + if_cond = (if_condDelegate)FunctionImporter.Import<if_condDelegate>("if_cond"); + if_not_cond = (if_not_condDelegate)FunctionImporter.Import<if_not_condDelegate>("if_not_cond"); + if_pin_cond = (if_pin_condDelegate)FunctionImporter.Import<if_pin_condDelegate>("if_pin_cond"); + if_not_pin_cond = (if_not_pin_condDelegate)FunctionImporter.Import<if_not_pin_condDelegate>("if_not_pin_cond"); + switch_ioport = (switch_ioportDelegate)FunctionImporter.Import<switch_ioportDelegate>("switch_ioport"); + list_jump_cond = (list_jump_condDelegate)FunctionImporter.Import<list_jump_condDelegate>("list_jump_cond"); + n_select_char_set = (n_select_char_setDelegate)FunctionImporter.Import<n_select_char_setDelegate>("n_select_char_set"); + n_mark_text = (n_mark_textDelegate)FunctionImporter.Import<n_mark_textDelegate>("n_mark_text"); + n_mark_text_abs = (n_mark_text_absDelegate)FunctionImporter.Import<n_mark_text_absDelegate>("n_mark_text_abs"); + n_mark_char = (n_mark_charDelegate)FunctionImporter.Import<n_mark_charDelegate>("n_mark_char"); + n_mark_char_abs = (n_mark_char_absDelegate)FunctionImporter.Import<n_mark_char_absDelegate>("n_mark_char_abs"); + select_char_set = (select_char_setDelegate)FunctionImporter.Import<select_char_setDelegate>("select_char_set"); + mark_text = (mark_textDelegate)FunctionImporter.Import<mark_textDelegate>("mark_text"); + mark_text_abs = (mark_text_absDelegate)FunctionImporter.Import<mark_text_absDelegate>("mark_text_abs"); + mark_char = (mark_charDelegate)FunctionImporter.Import<mark_charDelegate>("mark_char"); + mark_char_abs = (mark_char_absDelegate)FunctionImporter.Import<mark_char_absDelegate>("mark_char_abs"); + n_mark_serial = (n_mark_serialDelegate)FunctionImporter.Import<n_mark_serialDelegate>("n_mark_serial"); + n_mark_serial_abs = (n_mark_serial_absDelegate)FunctionImporter.Import<n_mark_serial_absDelegate>("n_mark_serial_abs"); + n_mark_date = (n_mark_dateDelegate)FunctionImporter.Import<n_mark_dateDelegate>("n_mark_date"); + n_mark_date_abs = (n_mark_date_absDelegate)FunctionImporter.Import<n_mark_date_absDelegate>("n_mark_date_abs"); + n_mark_time = (n_mark_timeDelegate)FunctionImporter.Import<n_mark_timeDelegate>("n_mark_time"); + n_mark_time_abs = (n_mark_time_absDelegate)FunctionImporter.Import<n_mark_time_absDelegate>("n_mark_time_abs"); + n_select_serial_set_list = (n_select_serial_set_listDelegate)FunctionImporter.Import<n_select_serial_set_listDelegate>("n_select_serial_set_list"); + n_set_serial_step_list = (n_set_serial_step_listDelegate)FunctionImporter.Import<n_set_serial_step_listDelegate>("n_set_serial_step_list"); + n_time_fix_f_off = (n_time_fix_f_offDelegate)FunctionImporter.Import<n_time_fix_f_offDelegate>("n_time_fix_f_off"); + n_time_fix_f = (n_time_fix_fDelegate)FunctionImporter.Import<n_time_fix_fDelegate>("n_time_fix_f"); + n_time_fix = (n_time_fixDelegate)FunctionImporter.Import<n_time_fixDelegate>("n_time_fix"); + mark_serial = (mark_serialDelegate)FunctionImporter.Import<mark_serialDelegate>("mark_serial"); + mark_serial_abs = (mark_serial_absDelegate)FunctionImporter.Import<mark_serial_absDelegate>("mark_serial_abs"); + mark_date = (mark_dateDelegate)FunctionImporter.Import<mark_dateDelegate>("mark_date"); + mark_date_abs = (mark_date_absDelegate)FunctionImporter.Import<mark_date_absDelegate>("mark_date_abs"); + mark_time = (mark_timeDelegate)FunctionImporter.Import<mark_timeDelegate>("mark_time"); + mark_time_abs = (mark_time_absDelegate)FunctionImporter.Import<mark_time_absDelegate>("mark_time_abs"); + time_fix_f_off = (time_fix_f_offDelegate)FunctionImporter.Import<time_fix_f_offDelegate>("time_fix_f_off"); + select_serial_set_list = (select_serial_set_listDelegate)FunctionImporter.Import<select_serial_set_listDelegate>("select_serial_set_list"); + set_serial_step_list = (set_serial_step_listDelegate)FunctionImporter.Import<set_serial_step_listDelegate>("set_serial_step_list"); + time_fix_f = (time_fix_fDelegate)FunctionImporter.Import<time_fix_fDelegate>("time_fix_f"); + time_fix = (time_fixDelegate)FunctionImporter.Import<time_fixDelegate>("time_fix"); + n_clear_io_cond_list = (n_clear_io_cond_listDelegate)FunctionImporter.Import<n_clear_io_cond_listDelegate>("n_clear_io_cond_list"); + n_set_io_cond_list = (n_set_io_cond_listDelegate)FunctionImporter.Import<n_set_io_cond_listDelegate>("n_set_io_cond_list"); + n_write_io_port_mask_list = (n_write_io_port_mask_listDelegate)FunctionImporter.Import<n_write_io_port_mask_listDelegate>("n_write_io_port_mask_list"); + n_write_8bit_port_list = (n_write_8bit_port_listDelegate)FunctionImporter.Import<n_write_8bit_port_listDelegate>("n_write_8bit_port_list"); + n_read_io_port_list = (n_read_io_port_listDelegate)FunctionImporter.Import<n_read_io_port_listDelegate>("n_read_io_port_list"); + n_write_da_x_list = (n_write_da_x_listDelegate)FunctionImporter.Import<n_write_da_x_listDelegate>("n_write_da_x_list"); + n_write_io_port_list = (n_write_io_port_listDelegate)FunctionImporter.Import<n_write_io_port_listDelegate>("n_write_io_port_list"); + n_write_da_1_list = (n_write_da_1_listDelegate)FunctionImporter.Import<n_write_da_1_listDelegate>("n_write_da_1_list"); + n_write_da_2_list = (n_write_da_2_listDelegate)FunctionImporter.Import<n_write_da_2_listDelegate>("n_write_da_2_list"); + clear_io_cond_list = (clear_io_cond_listDelegate)FunctionImporter.Import<clear_io_cond_listDelegate>("clear_io_cond_list"); + set_io_cond_list = (set_io_cond_listDelegate)FunctionImporter.Import<set_io_cond_listDelegate>("set_io_cond_list"); + write_io_port_mask_list = (write_io_port_mask_listDelegate)FunctionImporter.Import<write_io_port_mask_listDelegate>("write_io_port_mask_list"); + write_8bit_port_list = (write_8bit_port_listDelegate)FunctionImporter.Import<write_8bit_port_listDelegate>("write_8bit_port_list"); + read_io_port_list = (read_io_port_listDelegate)FunctionImporter.Import<read_io_port_listDelegate>("read_io_port_list"); + write_da_x_list = (write_da_x_listDelegate)FunctionImporter.Import<write_da_x_listDelegate>("write_da_x_list"); + write_io_port_list = (write_io_port_listDelegate)FunctionImporter.Import<write_io_port_listDelegate>("write_io_port_list"); + write_da_1_list = (write_da_1_listDelegate)FunctionImporter.Import<write_da_1_listDelegate>("write_da_1_list"); + write_da_2_list = (write_da_2_listDelegate)FunctionImporter.Import<write_da_2_listDelegate>("write_da_2_list"); + n_laser_signal_on_list = (n_laser_signal_on_listDelegate)FunctionImporter.Import<n_laser_signal_on_listDelegate>("n_laser_signal_on_list"); + n_laser_signal_off_list = (n_laser_signal_off_listDelegate)FunctionImporter.Import<n_laser_signal_off_listDelegate>("n_laser_signal_off_list"); + n_para_laser_on_pulses_list = (n_para_laser_on_pulses_listDelegate)FunctionImporter.Import<n_para_laser_on_pulses_listDelegate>("n_para_laser_on_pulses_list"); + n_laser_on_pulses_list = (n_laser_on_pulses_listDelegate)FunctionImporter.Import<n_laser_on_pulses_listDelegate>("n_laser_on_pulses_list"); + n_laser_on_list = (n_laser_on_listDelegate)FunctionImporter.Import<n_laser_on_listDelegate>("n_laser_on_list"); + n_set_laser_delays = (n_set_laser_delaysDelegate)FunctionImporter.Import<n_set_laser_delaysDelegate>("n_set_laser_delays"); + n_set_standby_list = (n_set_standby_listDelegate)FunctionImporter.Import<n_set_standby_listDelegate>("n_set_standby_list"); + n_set_laser_pulses = (n_set_laser_pulsesDelegate)FunctionImporter.Import<n_set_laser_pulsesDelegate>("n_set_laser_pulses"); + n_set_firstpulse_killer_list = (n_set_firstpulse_killer_listDelegate)FunctionImporter.Import<n_set_firstpulse_killer_listDelegate>("n_set_firstpulse_killer_list"); + n_set_qswitch_delay_list = (n_set_qswitch_delay_listDelegate)FunctionImporter.Import<n_set_qswitch_delay_listDelegate>("n_set_qswitch_delay_list"); + n_set_laser_pin_out_list = (n_set_laser_pin_out_listDelegate)FunctionImporter.Import<n_set_laser_pin_out_listDelegate>("n_set_laser_pin_out_list"); + n_set_vector_control = (n_set_vector_controlDelegate)FunctionImporter.Import<n_set_vector_controlDelegate>("n_set_vector_control"); + n_set_default_pixel_list = (n_set_default_pixel_listDelegate)FunctionImporter.Import<n_set_default_pixel_listDelegate>("n_set_default_pixel_list"); + n_set_port_default_list = (n_set_port_default_listDelegate)FunctionImporter.Import<n_set_port_default_listDelegate>("n_set_port_default_list"); + n_set_auto_laser_params_list = (n_set_auto_laser_params_listDelegate)FunctionImporter.Import<n_set_auto_laser_params_listDelegate>("n_set_auto_laser_params_list"); + n_set_pulse_picking_list = (n_set_pulse_picking_listDelegate)FunctionImporter.Import<n_set_pulse_picking_listDelegate>("n_set_pulse_picking_list"); + n_set_softstart_level_list = (n_set_softstart_level_listDelegate)FunctionImporter.Import<n_set_softstart_level_listDelegate>("n_set_softstart_level_list"); + n_set_softstart_mode_list = (n_set_softstart_mode_listDelegate)FunctionImporter.Import<n_set_softstart_mode_listDelegate>("n_set_softstart_mode_list"); + n_config_laser_signals_list = (n_config_laser_signals_listDelegate)FunctionImporter.Import<n_config_laser_signals_listDelegate>("n_config_laser_signals_list"); + n_set_laser_timing = (n_set_laser_timingDelegate)FunctionImporter.Import<n_set_laser_timingDelegate>("n_set_laser_timing"); + laser_signal_on_list = (laser_signal_on_listDelegate)FunctionImporter.Import<laser_signal_on_listDelegate>("laser_signal_on_list"); + laser_signal_off_list = (laser_signal_off_listDelegate)FunctionImporter.Import<laser_signal_off_listDelegate>("laser_signal_off_list"); + para_laser_on_pulses_list = (para_laser_on_pulses_listDelegate)FunctionImporter.Import<para_laser_on_pulses_listDelegate>("para_laser_on_pulses_list"); + laser_on_pulses_list = (laser_on_pulses_listDelegate)FunctionImporter.Import<laser_on_pulses_listDelegate>("laser_on_pulses_list"); + laser_on_list = (laser_on_listDelegate)FunctionImporter.Import<laser_on_listDelegate>("laser_on_list"); + set_laser_delays = (set_laser_delaysDelegate)FunctionImporter.Import<set_laser_delaysDelegate>("set_laser_delays"); + set_standby_list = (set_standby_listDelegate)FunctionImporter.Import<set_standby_listDelegate>("set_standby_list"); + set_laser_pulses = (set_laser_pulsesDelegate)FunctionImporter.Import<set_laser_pulsesDelegate>("set_laser_pulses"); + set_firstpulse_killer_list = (set_firstpulse_killer_listDelegate)FunctionImporter.Import<set_firstpulse_killer_listDelegate>("set_firstpulse_killer_list"); + set_qswitch_delay_list = (set_qswitch_delay_listDelegate)FunctionImporter.Import<set_qswitch_delay_listDelegate>("set_qswitch_delay_list"); + set_laser_pin_out_list = (set_laser_pin_out_listDelegate)FunctionImporter.Import<set_laser_pin_out_listDelegate>("set_laser_pin_out_list"); + set_vector_control = (set_vector_controlDelegate)FunctionImporter.Import<set_vector_controlDelegate>("set_vector_control"); + set_default_pixel_list = (set_default_pixel_listDelegate)FunctionImporter.Import<set_default_pixel_listDelegate>("set_default_pixel_list"); + set_port_default_list = (set_port_default_listDelegate)FunctionImporter.Import<set_port_default_listDelegate>("set_port_default_list"); + set_auto_laser_params_list = (set_auto_laser_params_listDelegate)FunctionImporter.Import<set_auto_laser_params_listDelegate>("set_auto_laser_params_list"); + set_pulse_picking_list = (set_pulse_picking_listDelegate)FunctionImporter.Import<set_pulse_picking_listDelegate>("set_pulse_picking_list"); + set_softstart_level_list = (set_softstart_level_listDelegate)FunctionImporter.Import<set_softstart_level_listDelegate>("set_softstart_level_list"); + set_softstart_mode_list = (set_softstart_mode_listDelegate)FunctionImporter.Import<set_softstart_mode_listDelegate>("set_softstart_mode_list"); + config_laser_signals_list = (config_laser_signals_listDelegate)FunctionImporter.Import<config_laser_signals_listDelegate>("config_laser_signals_list"); + set_laser_timing = (set_laser_timingDelegate)FunctionImporter.Import<set_laser_timingDelegate>("set_laser_timing"); + n_fly_return_z = (n_fly_return_zDelegate)FunctionImporter.Import<n_fly_return_zDelegate>("n_fly_return_z"); + n_fly_return = (n_fly_returnDelegate)FunctionImporter.Import<n_fly_returnDelegate>("n_fly_return"); + n_set_rot_center_list = (n_set_rot_center_listDelegate)FunctionImporter.Import<n_set_rot_center_listDelegate>("n_set_rot_center_list"); + n_set_ext_start_delay_list = (n_set_ext_start_delay_listDelegate)FunctionImporter.Import<n_set_ext_start_delay_listDelegate>("n_set_ext_start_delay_list"); + n_set_fly_x = (n_set_fly_xDelegate)FunctionImporter.Import<n_set_fly_xDelegate>("n_set_fly_x"); + n_set_fly_y = (n_set_fly_yDelegate)FunctionImporter.Import<n_set_fly_yDelegate>("n_set_fly_y"); + n_set_fly_z = (n_set_fly_zDelegate)FunctionImporter.Import<n_set_fly_zDelegate>("n_set_fly_z"); + n_set_fly_rot = (n_set_fly_rotDelegate)FunctionImporter.Import<n_set_fly_rotDelegate>("n_set_fly_rot"); + n_set_fly_2d = (n_set_fly_2dDelegate)FunctionImporter.Import<n_set_fly_2dDelegate>("n_set_fly_2d"); + n_set_fly_x_pos = (n_set_fly_x_posDelegate)FunctionImporter.Import<n_set_fly_x_posDelegate>("n_set_fly_x_pos"); + n_set_fly_y_pos = (n_set_fly_y_posDelegate)FunctionImporter.Import<n_set_fly_y_posDelegate>("n_set_fly_y_pos"); + n_set_fly_rot_pos = (n_set_fly_rot_posDelegate)FunctionImporter.Import<n_set_fly_rot_posDelegate>("n_set_fly_rot_pos"); + n_set_fly_limits = (n_set_fly_limitsDelegate)FunctionImporter.Import<n_set_fly_limitsDelegate>("n_set_fly_limits"); + n_set_fly_limits_z = (n_set_fly_limits_zDelegate)FunctionImporter.Import<n_set_fly_limits_zDelegate>("n_set_fly_limits_z"); + n_if_fly_x_overflow = (n_if_fly_x_overflowDelegate)FunctionImporter.Import<n_if_fly_x_overflowDelegate>("n_if_fly_x_overflow"); + n_if_fly_y_overflow = (n_if_fly_y_overflowDelegate)FunctionImporter.Import<n_if_fly_y_overflowDelegate>("n_if_fly_y_overflow"); + n_if_fly_z_overflow = (n_if_fly_z_overflowDelegate)FunctionImporter.Import<n_if_fly_z_overflowDelegate>("n_if_fly_z_overflow"); + n_if_not_fly_x_overflow = (n_if_not_fly_x_overflowDelegate)FunctionImporter.Import<n_if_not_fly_x_overflowDelegate>("n_if_not_fly_x_overflow"); + n_if_not_fly_y_overflow = (n_if_not_fly_y_overflowDelegate)FunctionImporter.Import<n_if_not_fly_y_overflowDelegate>("n_if_not_fly_y_overflow"); + n_if_not_fly_z_overflow = (n_if_not_fly_z_overflowDelegate)FunctionImporter.Import<n_if_not_fly_z_overflowDelegate>("n_if_not_fly_z_overflow"); + n_clear_fly_overflow = (n_clear_fly_overflowDelegate)FunctionImporter.Import<n_clear_fly_overflowDelegate>("n_clear_fly_overflow"); + n_set_mcbsp_x_list = (n_set_mcbsp_x_listDelegate)FunctionImporter.Import<n_set_mcbsp_x_listDelegate>("n_set_mcbsp_x_list"); + n_set_mcbsp_y_list = (n_set_mcbsp_y_listDelegate)FunctionImporter.Import<n_set_mcbsp_y_listDelegate>("n_set_mcbsp_y_list"); + n_set_mcbsp_rot_list = (n_set_mcbsp_rot_listDelegate)FunctionImporter.Import<n_set_mcbsp_rot_listDelegate>("n_set_mcbsp_rot_list"); + n_set_mcbsp_matrix_list = (n_set_mcbsp_matrix_listDelegate)FunctionImporter.Import<n_set_mcbsp_matrix_listDelegate>("n_set_mcbsp_matrix_list"); + n_set_mcbsp_global_x_list = (n_set_mcbsp_global_x_listDelegate)FunctionImporter.Import<n_set_mcbsp_global_x_listDelegate>("n_set_mcbsp_global_x_list"); + n_set_mcbsp_global_y_list = (n_set_mcbsp_global_y_listDelegate)FunctionImporter.Import<n_set_mcbsp_global_y_listDelegate>("n_set_mcbsp_global_y_list"); + n_set_mcbsp_global_rot_list = (n_set_mcbsp_global_rot_listDelegate)FunctionImporter.Import<n_set_mcbsp_global_rot_listDelegate>("n_set_mcbsp_global_rot_list"); + n_set_mcbsp_global_matrix_list = (n_set_mcbsp_global_matrix_listDelegate)FunctionImporter.Import<n_set_mcbsp_global_matrix_listDelegate>("n_set_mcbsp_global_matrix_list"); + n_set_mcbsp_in_list = (n_set_mcbsp_in_listDelegate)FunctionImporter.Import<n_set_mcbsp_in_listDelegate>("n_set_mcbsp_in_list"); + n_set_multi_mcbsp_in_list = (n_set_multi_mcbsp_in_listDelegate)FunctionImporter.Import<n_set_multi_mcbsp_in_listDelegate>("n_set_multi_mcbsp_in_list"); + n_wait_for_encoder_mode = (n_wait_for_encoder_modeDelegate)FunctionImporter.Import<n_wait_for_encoder_modeDelegate>("n_wait_for_encoder_mode"); + n_wait_for_mcbsp = (n_wait_for_mcbspDelegate)FunctionImporter.Import<n_wait_for_mcbspDelegate>("n_wait_for_mcbsp"); + n_set_encoder_speed = (n_set_encoder_speedDelegate)FunctionImporter.Import<n_set_encoder_speedDelegate>("n_set_encoder_speed"); + n_get_mcbsp_list = (n_get_mcbsp_listDelegate)FunctionImporter.Import<n_get_mcbsp_listDelegate>("n_get_mcbsp_list"); + n_store_encoder = (n_store_encoderDelegate)FunctionImporter.Import<n_store_encoderDelegate>("n_store_encoder"); + n_wait_for_encoder_in_range = (n_wait_for_encoder_in_rangeDelegate)FunctionImporter.Import<n_wait_for_encoder_in_rangeDelegate>("n_wait_for_encoder_in_range"); + n_activate_fly_xy = (n_activate_fly_xyDelegate)FunctionImporter.Import<n_activate_fly_xyDelegate>("n_activate_fly_xy"); + n_activate_fly_2d = (n_activate_fly_2dDelegate)FunctionImporter.Import<n_activate_fly_2dDelegate>("n_activate_fly_2d"); + n_activate_fly_xy_encoder = (n_activate_fly_xy_encoderDelegate)FunctionImporter.Import<n_activate_fly_xy_encoderDelegate>("n_activate_fly_xy_encoder"); + n_activate_fly_2d_encoder = (n_activate_fly_2d_encoderDelegate)FunctionImporter.Import<n_activate_fly_2d_encoderDelegate>("n_activate_fly_2d_encoder"); + n_if_not_activated = (n_if_not_activatedDelegate)FunctionImporter.Import<n_if_not_activatedDelegate>("n_if_not_activated"); + n_park_position = (n_park_positionDelegate)FunctionImporter.Import<n_park_positionDelegate>("n_park_position"); + n_park_return = (n_park_returnDelegate)FunctionImporter.Import<n_park_returnDelegate>("n_park_return"); + n_wait_for_encoder = (n_wait_for_encoderDelegate)FunctionImporter.Import<n_wait_for_encoderDelegate>("n_wait_for_encoder"); + fly_return_z = (fly_return_zDelegate)FunctionImporter.Import<fly_return_zDelegate>("fly_return_z"); + fly_return = (fly_returnDelegate)FunctionImporter.Import<fly_returnDelegate>("fly_return"); + set_rot_center_list = (set_rot_center_listDelegate)FunctionImporter.Import<set_rot_center_listDelegate>("set_rot_center_list"); + set_ext_start_delay_list = (set_ext_start_delay_listDelegate)FunctionImporter.Import<set_ext_start_delay_listDelegate>("set_ext_start_delay_list"); + set_fly_x = (set_fly_xDelegate)FunctionImporter.Import<set_fly_xDelegate>("set_fly_x"); + set_fly_y = (set_fly_yDelegate)FunctionImporter.Import<set_fly_yDelegate>("set_fly_y"); + set_fly_z = (set_fly_zDelegate)FunctionImporter.Import<set_fly_zDelegate>("set_fly_z"); + set_fly_rot = (set_fly_rotDelegate)FunctionImporter.Import<set_fly_rotDelegate>("set_fly_rot"); + set_fly_2d = (set_fly_2dDelegate)FunctionImporter.Import<set_fly_2dDelegate>("set_fly_2d"); + set_fly_x_pos = (set_fly_x_posDelegate)FunctionImporter.Import<set_fly_x_posDelegate>("set_fly_x_pos"); + set_fly_y_pos = (set_fly_y_posDelegate)FunctionImporter.Import<set_fly_y_posDelegate>("set_fly_y_pos"); + set_fly_rot_pos = (set_fly_rot_posDelegate)FunctionImporter.Import<set_fly_rot_posDelegate>("set_fly_rot_pos"); + set_fly_limits = (set_fly_limitsDelegate)FunctionImporter.Import<set_fly_limitsDelegate>("set_fly_limits"); + set_fly_limits_z = (set_fly_limits_zDelegate)FunctionImporter.Import<set_fly_limits_zDelegate>("set_fly_limits_z"); + if_fly_x_overflow = (if_fly_x_overflowDelegate)FunctionImporter.Import<if_fly_x_overflowDelegate>("if_fly_x_overflow"); + if_fly_y_overflow = (if_fly_y_overflowDelegate)FunctionImporter.Import<if_fly_y_overflowDelegate>("if_fly_y_overflow"); + if_fly_z_overflow = (if_fly_z_overflowDelegate)FunctionImporter.Import<if_fly_z_overflowDelegate>("if_fly_z_overflow"); + if_not_fly_x_overflow = (if_not_fly_x_overflowDelegate)FunctionImporter.Import<if_not_fly_x_overflowDelegate>("if_not_fly_x_overflow"); + if_not_fly_y_overflow = (if_not_fly_y_overflowDelegate)FunctionImporter.Import<if_not_fly_y_overflowDelegate>("if_not_fly_y_overflow"); + if_not_fly_z_overflow = (if_not_fly_z_overflowDelegate)FunctionImporter.Import<if_not_fly_z_overflowDelegate>("if_not_fly_z_overflow"); + clear_fly_overflow = (clear_fly_overflowDelegate)FunctionImporter.Import<clear_fly_overflowDelegate>("clear_fly_overflow"); + set_mcbsp_x_list = (set_mcbsp_x_listDelegate)FunctionImporter.Import<set_mcbsp_x_listDelegate>("set_mcbsp_x_list"); + set_mcbsp_y_list = (set_mcbsp_y_listDelegate)FunctionImporter.Import<set_mcbsp_y_listDelegate>("set_mcbsp_y_list"); + set_mcbsp_rot_list = (set_mcbsp_rot_listDelegate)FunctionImporter.Import<set_mcbsp_rot_listDelegate>("set_mcbsp_rot_list"); + set_mcbsp_matrix_list = (set_mcbsp_matrix_listDelegate)FunctionImporter.Import<set_mcbsp_matrix_listDelegate>("set_mcbsp_matrix_list"); + set_mcbsp_global_x_list = (set_mcbsp_global_x_listDelegate)FunctionImporter.Import<set_mcbsp_global_x_listDelegate>("set_mcbsp_global_x_list"); + set_mcbsp_global_y_list = (set_mcbsp_global_y_listDelegate)FunctionImporter.Import<set_mcbsp_global_y_listDelegate>("set_mcbsp_global_y_list"); + set_mcbsp_global_rot_list = (set_mcbsp_global_rot_listDelegate)FunctionImporter.Import<set_mcbsp_global_rot_listDelegate>("set_mcbsp_global_rot_list"); + set_mcbsp_global_matrix_list = (set_mcbsp_global_matrix_listDelegate)FunctionImporter.Import<set_mcbsp_global_matrix_listDelegate>("set_mcbsp_global_matrix_list"); + set_mcbsp_in_list = (set_mcbsp_in_listDelegate)FunctionImporter.Import<set_mcbsp_in_listDelegate>("set_mcbsp_in_list"); + set_multi_mcbsp_in_list = (set_multi_mcbsp_in_listDelegate)FunctionImporter.Import<set_multi_mcbsp_in_listDelegate>("set_multi_mcbsp_in_list"); + wait_for_encoder_mode = (wait_for_encoder_modeDelegate)FunctionImporter.Import<wait_for_encoder_modeDelegate>("wait_for_encoder_mode"); + wait_for_mcbsp = (wait_for_mcbspDelegate)FunctionImporter.Import<wait_for_mcbspDelegate>("wait_for_mcbsp"); + set_encoder_speed = (set_encoder_speedDelegate)FunctionImporter.Import<set_encoder_speedDelegate>("set_encoder_speed"); + get_mcbsp_list = (get_mcbsp_listDelegate)FunctionImporter.Import<get_mcbsp_listDelegate>("get_mcbsp_list"); + store_encoder = (store_encoderDelegate)FunctionImporter.Import<store_encoderDelegate>("store_encoder"); + wait_for_encoder_in_range = (wait_for_encoder_in_rangeDelegate)FunctionImporter.Import<wait_for_encoder_in_rangeDelegate>("wait_for_encoder_in_range"); + activate_fly_xy = (activate_fly_xyDelegate)FunctionImporter.Import<activate_fly_xyDelegate>("activate_fly_xy"); + activate_fly_2d = (activate_fly_2dDelegate)FunctionImporter.Import<activate_fly_2dDelegate>("activate_fly_2d"); + activate_fly_xy_encoder = (activate_fly_xy_encoderDelegate)FunctionImporter.Import<activate_fly_xy_encoderDelegate>("activate_fly_xy_encoder"); + activate_fly_2d_encoder = (activate_fly_2d_encoderDelegate)FunctionImporter.Import<activate_fly_2d_encoderDelegate>("activate_fly_2d_encoder"); + if_not_activated = (if_not_activatedDelegate)FunctionImporter.Import<if_not_activatedDelegate>("if_not_activated"); + park_position = (park_positionDelegate)FunctionImporter.Import<park_positionDelegate>("park_position"); + park_return = (park_returnDelegate)FunctionImporter.Import<park_returnDelegate>("park_return"); + wait_for_encoder = (wait_for_encoderDelegate)FunctionImporter.Import<wait_for_encoderDelegate>("wait_for_encoder"); + n_save_and_restart_timer = (n_save_and_restart_timerDelegate)FunctionImporter.Import<n_save_and_restart_timerDelegate>("n_save_and_restart_timer"); + n_set_wobbel = (n_set_wobbelDelegate)FunctionImporter.Import<n_set_wobbelDelegate>("n_set_wobbel"); + n_set_wobbel_mode = (n_set_wobbel_modeDelegate)FunctionImporter.Import<n_set_wobbel_modeDelegate>("n_set_wobbel_mode"); + n_set_wobbel_mode_phase = (n_set_wobbel_mode_phaseDelegate)FunctionImporter.Import<n_set_wobbel_mode_phaseDelegate>("n_set_wobbel_mode_phase"); + n_set_wobbel_direction = (n_set_wobbel_directionDelegate)FunctionImporter.Import<n_set_wobbel_directionDelegate>("n_set_wobbel_direction"); + n_set_wobbel_control = (n_set_wobbel_controlDelegate)FunctionImporter.Import<n_set_wobbel_controlDelegate>("n_set_wobbel_control"); + n_set_wobbel_vector = (n_set_wobbel_vectorDelegate)FunctionImporter.Import<n_set_wobbel_vectorDelegate>("n_set_wobbel_vector"); + n_set_wobbel_offset = (n_set_wobbel_offsetDelegate)FunctionImporter.Import<n_set_wobbel_offsetDelegate>("n_set_wobbel_offset"); + n_load_wobbel_power_list = (n_load_wobbel_power_listDelegate)FunctionImporter.Import<n_load_wobbel_power_listDelegate>("n_load_wobbel_power_list"); + n_set_wobbel_power_angle = (n_set_wobbel_power_angleDelegate)FunctionImporter.Import<n_set_wobbel_power_angleDelegate>("n_set_wobbel_power_angle"); + n_set_trigger = (n_set_triggerDelegate)FunctionImporter.Import<n_set_triggerDelegate>("n_set_trigger"); + n_set_trigger4 = (n_set_trigger4Delegate)FunctionImporter.Import<n_set_trigger4Delegate>("n_set_trigger4"); + n_set_pixel_line_3d = (n_set_pixel_line_3dDelegate)FunctionImporter.Import<n_set_pixel_line_3dDelegate>("n_set_pixel_line_3d"); + n_set_pixel_line = (n_set_pixel_lineDelegate)FunctionImporter.Import<n_set_pixel_lineDelegate>("n_set_pixel_line"); + n_stretch_pixel_line = (n_stretch_pixel_lineDelegate)FunctionImporter.Import<n_stretch_pixel_lineDelegate>("n_stretch_pixel_line"); + n_set_n_pixel = (n_set_n_pixelDelegate)FunctionImporter.Import<n_set_n_pixelDelegate>("n_set_n_pixel"); + n_set_pixel = (n_set_pixelDelegate)FunctionImporter.Import<n_set_pixelDelegate>("n_set_pixel"); + n_rs232_write_text_list = (n_rs232_write_text_listDelegate)FunctionImporter.Import<n_rs232_write_text_listDelegate>("n_rs232_write_text_list"); + n_set_mcbsp_out = (n_set_mcbsp_outDelegate)FunctionImporter.Import<n_set_mcbsp_outDelegate>("n_set_mcbsp_out"); + n_set_mcbsp_out_ptr_list = (n_set_mcbsp_out_ptr_listDelegate)FunctionImporter.Import<n_set_mcbsp_out_ptr_listDelegate>("n_set_mcbsp_out_ptr_list"); + n_camming = (n_cammingDelegate)FunctionImporter.Import<n_cammingDelegate>("n_camming"); + n_periodic_toggle_list = (n_periodic_toggle_listDelegate)FunctionImporter.Import<n_periodic_toggle_listDelegate>("n_periodic_toggle_list"); + n_micro_vector_abs_3d = (n_micro_vector_abs_3dDelegate)FunctionImporter.Import<n_micro_vector_abs_3dDelegate>("n_micro_vector_abs_3d"); + n_micro_vector_rel_3d = (n_micro_vector_rel_3dDelegate)FunctionImporter.Import<n_micro_vector_rel_3dDelegate>("n_micro_vector_rel_3d"); + n_micro_vector_abs = (n_micro_vector_absDelegate)FunctionImporter.Import<n_micro_vector_absDelegate>("n_micro_vector_abs"); + n_micro_vector_rel = (n_micro_vector_relDelegate)FunctionImporter.Import<n_micro_vector_relDelegate>("n_micro_vector_rel"); + n_set_free_variable_list = (n_set_free_variable_listDelegate)FunctionImporter.Import<n_set_free_variable_listDelegate>("n_set_free_variable_list"); + n_jump_abs_drill_2 = (n_jump_abs_drill_2Delegate)FunctionImporter.Import<n_jump_abs_drill_2Delegate>("n_jump_abs_drill_2"); + n_jump_rel_drill_2 = (n_jump_rel_drill_2Delegate)FunctionImporter.Import<n_jump_rel_drill_2Delegate>("n_jump_rel_drill_2"); + n_jump_abs_drill = (n_jump_abs_drillDelegate)FunctionImporter.Import<n_jump_abs_drillDelegate>("n_jump_abs_drill"); + n_jump_rel_drill = (n_jump_rel_drillDelegate)FunctionImporter.Import<n_jump_rel_drillDelegate>("n_jump_rel_drill"); + save_and_restart_timer = (save_and_restart_timerDelegate)FunctionImporter.Import<save_and_restart_timerDelegate>("save_and_restart_timer"); + set_wobbel = (set_wobbelDelegate)FunctionImporter.Import<set_wobbelDelegate>("set_wobbel"); + set_wobbel_mode = (set_wobbel_modeDelegate)FunctionImporter.Import<set_wobbel_modeDelegate>("set_wobbel_mode"); + set_wobbel_mode_phase = (set_wobbel_mode_phaseDelegate)FunctionImporter.Import<set_wobbel_mode_phaseDelegate>("set_wobbel_mode_phase"); + set_wobbel_direction = (set_wobbel_directionDelegate)FunctionImporter.Import<set_wobbel_directionDelegate>("set_wobbel_direction"); + set_wobbel_control = (set_wobbel_controlDelegate)FunctionImporter.Import<set_wobbel_controlDelegate>("set_wobbel_control"); + set_wobbel_vector = (set_wobbel_vectorDelegate)FunctionImporter.Import<set_wobbel_vectorDelegate>("set_wobbel_vector"); + set_wobbel_offset = (set_wobbel_offsetDelegate)FunctionImporter.Import<set_wobbel_offsetDelegate>("set_wobbel_offset"); + load_wobbel_power_list = (load_wobbel_power_listDelegate)FunctionImporter.Import<load_wobbel_power_listDelegate>("load_wobbel_power_list"); + set_wobbel_power_angle = (set_wobbel_power_angleDelegate)FunctionImporter.Import<set_wobbel_power_angleDelegate>("set_wobbel_power_angle"); + set_trigger = (set_triggerDelegate)FunctionImporter.Import<set_triggerDelegate>("set_trigger"); + set_trigger4 = (set_trigger4Delegate)FunctionImporter.Import<set_trigger4Delegate>("set_trigger4"); + set_pixel_line_3d = (set_pixel_line_3dDelegate)FunctionImporter.Import<set_pixel_line_3dDelegate>("set_pixel_line_3d"); + set_pixel_line = (set_pixel_lineDelegate)FunctionImporter.Import<set_pixel_lineDelegate>("set_pixel_line"); + stretch_pixel_line = (stretch_pixel_lineDelegate)FunctionImporter.Import<stretch_pixel_lineDelegate>("stretch_pixel_line"); + set_n_pixel = (set_n_pixelDelegate)FunctionImporter.Import<set_n_pixelDelegate>("set_n_pixel"); + set_pixel = (set_pixelDelegate)FunctionImporter.Import<set_pixelDelegate>("set_pixel"); + rs232_write_text_list = (rs232_write_text_listDelegate)FunctionImporter.Import<rs232_write_text_listDelegate>("rs232_write_text_list"); + set_mcbsp_out = (set_mcbsp_outDelegate)FunctionImporter.Import<set_mcbsp_outDelegate>("set_mcbsp_out"); + set_mcbsp_out_ptr_list = (set_mcbsp_out_ptr_listDelegate)FunctionImporter.Import<set_mcbsp_out_ptr_listDelegate>("set_mcbsp_out_ptr_list"); + camming = (cammingDelegate)FunctionImporter.Import<cammingDelegate>("camming"); + periodic_toggle_list = (periodic_toggle_listDelegate)FunctionImporter.Import<periodic_toggle_listDelegate>("periodic_toggle_list"); + micro_vector_abs_3d = (micro_vector_abs_3dDelegate)FunctionImporter.Import<micro_vector_abs_3dDelegate>("micro_vector_abs_3d"); + micro_vector_rel_3d = (micro_vector_rel_3dDelegate)FunctionImporter.Import<micro_vector_rel_3dDelegate>("micro_vector_rel_3d"); + micro_vector_abs = (micro_vector_absDelegate)FunctionImporter.Import<micro_vector_absDelegate>("micro_vector_abs"); + micro_vector_rel = (micro_vector_relDelegate)FunctionImporter.Import<micro_vector_relDelegate>("micro_vector_rel"); + set_free_variable_list = (set_free_variable_listDelegate)FunctionImporter.Import<set_free_variable_listDelegate>("set_free_variable_list"); + jump_abs_drill_2 = (jump_abs_drill_2Delegate)FunctionImporter.Import<jump_abs_drill_2Delegate>("jump_abs_drill_2"); + jump_rel_drill_2 = (jump_rel_drill_2Delegate)FunctionImporter.Import<jump_rel_drill_2Delegate>("jump_rel_drill_2"); + jump_abs_drill = (jump_abs_drillDelegate)FunctionImporter.Import<jump_abs_drillDelegate>("jump_abs_drill"); + jump_rel_drill = (jump_rel_drillDelegate)FunctionImporter.Import<jump_rel_drillDelegate>("jump_rel_drill"); + n_timed_mark_abs_3d = (n_timed_mark_abs_3dDelegate)FunctionImporter.Import<n_timed_mark_abs_3dDelegate>("n_timed_mark_abs_3d"); + n_timed_mark_rel_3d = (n_timed_mark_rel_3dDelegate)FunctionImporter.Import<n_timed_mark_rel_3dDelegate>("n_timed_mark_rel_3d"); + n_timed_mark_abs = (n_timed_mark_absDelegate)FunctionImporter.Import<n_timed_mark_absDelegate>("n_timed_mark_abs"); + n_timed_mark_rel = (n_timed_mark_relDelegate)FunctionImporter.Import<n_timed_mark_relDelegate>("n_timed_mark_rel"); + timed_mark_abs_3d = (timed_mark_abs_3dDelegate)FunctionImporter.Import<timed_mark_abs_3dDelegate>("timed_mark_abs_3d"); + timed_mark_rel_3d = (timed_mark_rel_3dDelegate)FunctionImporter.Import<timed_mark_rel_3dDelegate>("timed_mark_rel_3d"); + timed_mark_abs = (timed_mark_absDelegate)FunctionImporter.Import<timed_mark_absDelegate>("timed_mark_abs"); + timed_mark_rel = (timed_mark_relDelegate)FunctionImporter.Import<timed_mark_relDelegate>("timed_mark_rel"); + n_mark_abs_3d = (n_mark_abs_3dDelegate)FunctionImporter.Import<n_mark_abs_3dDelegate>("n_mark_abs_3d"); + n_mark_rel_3d = (n_mark_rel_3dDelegate)FunctionImporter.Import<n_mark_rel_3dDelegate>("n_mark_rel_3d"); + n_mark_abs = (n_mark_absDelegate)FunctionImporter.Import<n_mark_absDelegate>("n_mark_abs"); + n_mark_rel = (n_mark_relDelegate)FunctionImporter.Import<n_mark_relDelegate>("n_mark_rel"); + mark_abs_3d = (mark_abs_3dDelegate)FunctionImporter.Import<mark_abs_3dDelegate>("mark_abs_3d"); + mark_rel_3d = (mark_rel_3dDelegate)FunctionImporter.Import<mark_rel_3dDelegate>("mark_rel_3d"); + mark_abs = (mark_absDelegate)FunctionImporter.Import<mark_absDelegate>("mark_abs"); + mark_rel = (mark_relDelegate)FunctionImporter.Import<mark_relDelegate>("mark_rel"); + n_timed_jump_abs_3d = (n_timed_jump_abs_3dDelegate)FunctionImporter.Import<n_timed_jump_abs_3dDelegate>("n_timed_jump_abs_3d"); + n_timed_jump_rel_3d = (n_timed_jump_rel_3dDelegate)FunctionImporter.Import<n_timed_jump_rel_3dDelegate>("n_timed_jump_rel_3d"); + n_timed_jump_abs = (n_timed_jump_absDelegate)FunctionImporter.Import<n_timed_jump_absDelegate>("n_timed_jump_abs"); + n_timed_jump_rel = (n_timed_jump_relDelegate)FunctionImporter.Import<n_timed_jump_relDelegate>("n_timed_jump_rel"); + timed_jump_abs_3d = (timed_jump_abs_3dDelegate)FunctionImporter.Import<timed_jump_abs_3dDelegate>("timed_jump_abs_3d"); + timed_jump_rel_3d = (timed_jump_rel_3dDelegate)FunctionImporter.Import<timed_jump_rel_3dDelegate>("timed_jump_rel_3d"); + timed_jump_abs = (timed_jump_absDelegate)FunctionImporter.Import<timed_jump_absDelegate>("timed_jump_abs"); + timed_jump_rel = (timed_jump_relDelegate)FunctionImporter.Import<timed_jump_relDelegate>("timed_jump_rel"); + n_jump_abs_3d = (n_jump_abs_3dDelegate)FunctionImporter.Import<n_jump_abs_3dDelegate>("n_jump_abs_3d"); + n_jump_rel_3d = (n_jump_rel_3dDelegate)FunctionImporter.Import<n_jump_rel_3dDelegate>("n_jump_rel_3d"); + n_jump_abs = (n_jump_absDelegate)FunctionImporter.Import<n_jump_absDelegate>("n_jump_abs"); + n_jump_rel = (n_jump_relDelegate)FunctionImporter.Import<n_jump_relDelegate>("n_jump_rel"); + jump_abs_3d = (jump_abs_3dDelegate)FunctionImporter.Import<jump_abs_3dDelegate>("jump_abs_3d"); + jump_rel_3d = (jump_rel_3dDelegate)FunctionImporter.Import<jump_rel_3dDelegate>("jump_rel_3d"); + jump_abs = (jump_absDelegate)FunctionImporter.Import<jump_absDelegate>("jump_abs"); + jump_rel = (jump_relDelegate)FunctionImporter.Import<jump_relDelegate>("jump_rel"); + n_para_mark_abs_3d = (n_para_mark_abs_3dDelegate)FunctionImporter.Import<n_para_mark_abs_3dDelegate>("n_para_mark_abs_3d"); + n_para_mark_rel_3d = (n_para_mark_rel_3dDelegate)FunctionImporter.Import<n_para_mark_rel_3dDelegate>("n_para_mark_rel_3d"); + n_para_mark_abs = (n_para_mark_absDelegate)FunctionImporter.Import<n_para_mark_absDelegate>("n_para_mark_abs"); + n_para_mark_rel = (n_para_mark_relDelegate)FunctionImporter.Import<n_para_mark_relDelegate>("n_para_mark_rel"); + para_mark_abs_3d = (para_mark_abs_3dDelegate)FunctionImporter.Import<para_mark_abs_3dDelegate>("para_mark_abs_3d"); + para_mark_rel_3d = (para_mark_rel_3dDelegate)FunctionImporter.Import<para_mark_rel_3dDelegate>("para_mark_rel_3d"); + para_mark_abs = (para_mark_absDelegate)FunctionImporter.Import<para_mark_absDelegate>("para_mark_abs"); + para_mark_rel = (para_mark_relDelegate)FunctionImporter.Import<para_mark_relDelegate>("para_mark_rel"); + n_para_jump_abs_3d = (n_para_jump_abs_3dDelegate)FunctionImporter.Import<n_para_jump_abs_3dDelegate>("n_para_jump_abs_3d"); + n_para_jump_rel_3d = (n_para_jump_rel_3dDelegate)FunctionImporter.Import<n_para_jump_rel_3dDelegate>("n_para_jump_rel_3d"); + n_para_jump_abs = (n_para_jump_absDelegate)FunctionImporter.Import<n_para_jump_absDelegate>("n_para_jump_abs"); + n_para_jump_rel = (n_para_jump_relDelegate)FunctionImporter.Import<n_para_jump_relDelegate>("n_para_jump_rel"); + para_jump_abs_3d = (para_jump_abs_3dDelegate)FunctionImporter.Import<para_jump_abs_3dDelegate>("para_jump_abs_3d"); + para_jump_rel_3d = (para_jump_rel_3dDelegate)FunctionImporter.Import<para_jump_rel_3dDelegate>("para_jump_rel_3d"); + para_jump_abs = (para_jump_absDelegate)FunctionImporter.Import<para_jump_absDelegate>("para_jump_abs"); + para_jump_rel = (para_jump_relDelegate)FunctionImporter.Import<para_jump_relDelegate>("para_jump_rel"); + n_timed_para_mark_abs_3d = (n_timed_para_mark_abs_3dDelegate)FunctionImporter.Import<n_timed_para_mark_abs_3dDelegate>("n_timed_para_mark_abs_3d"); + n_timed_para_mark_rel_3d = (n_timed_para_mark_rel_3dDelegate)FunctionImporter.Import<n_timed_para_mark_rel_3dDelegate>("n_timed_para_mark_rel_3d"); + n_timed_para_jump_abs_3d = (n_timed_para_jump_abs_3dDelegate)FunctionImporter.Import<n_timed_para_jump_abs_3dDelegate>("n_timed_para_jump_abs_3d"); + n_timed_para_jump_rel_3d = (n_timed_para_jump_rel_3dDelegate)FunctionImporter.Import<n_timed_para_jump_rel_3dDelegate>("n_timed_para_jump_rel_3d"); + n_timed_para_mark_abs = (n_timed_para_mark_absDelegate)FunctionImporter.Import<n_timed_para_mark_absDelegate>("n_timed_para_mark_abs"); + n_timed_para_mark_rel = (n_timed_para_mark_relDelegate)FunctionImporter.Import<n_timed_para_mark_relDelegate>("n_timed_para_mark_rel"); + n_timed_para_jump_abs = (n_timed_para_jump_absDelegate)FunctionImporter.Import<n_timed_para_jump_absDelegate>("n_timed_para_jump_abs"); + n_timed_para_jump_rel = (n_timed_para_jump_relDelegate)FunctionImporter.Import<n_timed_para_jump_relDelegate>("n_timed_para_jump_rel"); + timed_para_mark_abs_3d = (timed_para_mark_abs_3dDelegate)FunctionImporter.Import<timed_para_mark_abs_3dDelegate>("timed_para_mark_abs_3d"); + timed_para_mark_rel_3d = (timed_para_mark_rel_3dDelegate)FunctionImporter.Import<timed_para_mark_rel_3dDelegate>("timed_para_mark_rel_3d"); + timed_para_jump_abs_3d = (timed_para_jump_abs_3dDelegate)FunctionImporter.Import<timed_para_jump_abs_3dDelegate>("timed_para_jump_abs_3d"); + timed_para_jump_rel_3d = (timed_para_jump_rel_3dDelegate)FunctionImporter.Import<timed_para_jump_rel_3dDelegate>("timed_para_jump_rel_3d"); + timed_para_mark_abs = (timed_para_mark_absDelegate)FunctionImporter.Import<timed_para_mark_absDelegate>("timed_para_mark_abs"); + timed_para_mark_rel = (timed_para_mark_relDelegate)FunctionImporter.Import<timed_para_mark_relDelegate>("timed_para_mark_rel"); + timed_para_jump_abs = (timed_para_jump_absDelegate)FunctionImporter.Import<timed_para_jump_absDelegate>("timed_para_jump_abs"); + timed_para_jump_rel = (timed_para_jump_relDelegate)FunctionImporter.Import<timed_para_jump_relDelegate>("timed_para_jump_rel"); + n_set_defocus_list = (n_set_defocus_listDelegate)FunctionImporter.Import<n_set_defocus_listDelegate>("n_set_defocus_list"); + n_set_defocus_offset_list = (n_set_defocus_offset_listDelegate)FunctionImporter.Import<n_set_defocus_offset_listDelegate>("n_set_defocus_offset_list"); + n_set_zoom_list = (n_set_zoom_listDelegate)FunctionImporter.Import<n_set_zoom_listDelegate>("n_set_zoom_list"); + set_defocus_list = (set_defocus_listDelegate)FunctionImporter.Import<set_defocus_listDelegate>("set_defocus_list"); + set_defocus_offset_list = (set_defocus_offset_listDelegate)FunctionImporter.Import<set_defocus_offset_listDelegate>("set_defocus_offset_list"); + set_zoom_list = (set_zoom_listDelegate)FunctionImporter.Import<set_zoom_listDelegate>("set_zoom_list"); + n_timed_arc_abs = (n_timed_arc_absDelegate)FunctionImporter.Import<n_timed_arc_absDelegate>("n_timed_arc_abs"); + n_timed_arc_rel = (n_timed_arc_relDelegate)FunctionImporter.Import<n_timed_arc_relDelegate>("n_timed_arc_rel"); + timed_arc_abs = (timed_arc_absDelegate)FunctionImporter.Import<timed_arc_absDelegate>("timed_arc_abs"); + timed_arc_rel = (timed_arc_relDelegate)FunctionImporter.Import<timed_arc_relDelegate>("timed_arc_rel"); + n_arc_abs_3d = (n_arc_abs_3dDelegate)FunctionImporter.Import<n_arc_abs_3dDelegate>("n_arc_abs_3d"); + n_arc_rel_3d = (n_arc_rel_3dDelegate)FunctionImporter.Import<n_arc_rel_3dDelegate>("n_arc_rel_3d"); + n_arc_abs = (n_arc_absDelegate)FunctionImporter.Import<n_arc_absDelegate>("n_arc_abs"); + n_arc_rel = (n_arc_relDelegate)FunctionImporter.Import<n_arc_relDelegate>("n_arc_rel"); + n_set_ellipse = (n_set_ellipseDelegate)FunctionImporter.Import<n_set_ellipseDelegate>("n_set_ellipse"); + n_mark_ellipse_abs = (n_mark_ellipse_absDelegate)FunctionImporter.Import<n_mark_ellipse_absDelegate>("n_mark_ellipse_abs"); + n_mark_ellipse_rel = (n_mark_ellipse_relDelegate)FunctionImporter.Import<n_mark_ellipse_relDelegate>("n_mark_ellipse_rel"); + arc_abs_3d = (arc_abs_3dDelegate)FunctionImporter.Import<arc_abs_3dDelegate>("arc_abs_3d"); + arc_rel_3d = (arc_rel_3dDelegate)FunctionImporter.Import<arc_rel_3dDelegate>("arc_rel_3d"); + arc_abs = (arc_absDelegate)FunctionImporter.Import<arc_absDelegate>("arc_abs"); + arc_rel = (arc_relDelegate)FunctionImporter.Import<arc_relDelegate>("arc_rel"); + set_ellipse = (set_ellipseDelegate)FunctionImporter.Import<set_ellipseDelegate>("set_ellipse"); + mark_ellipse_abs = (mark_ellipse_absDelegate)FunctionImporter.Import<mark_ellipse_absDelegate>("mark_ellipse_abs"); + mark_ellipse_rel = (mark_ellipse_relDelegate)FunctionImporter.Import<mark_ellipse_relDelegate>("mark_ellipse_rel"); + n_set_offset_xyz_list = (n_set_offset_xyz_listDelegate)FunctionImporter.Import<n_set_offset_xyz_listDelegate>("n_set_offset_xyz_list"); + n_set_offset_list = (n_set_offset_listDelegate)FunctionImporter.Import<n_set_offset_listDelegate>("n_set_offset_list"); + n_set_matrix_list = (n_set_matrix_listDelegate)FunctionImporter.Import<n_set_matrix_listDelegate>("n_set_matrix_list"); + n_set_angle_list = (n_set_angle_listDelegate)FunctionImporter.Import<n_set_angle_listDelegate>("n_set_angle_list"); + n_set_scale_list = (n_set_scale_listDelegate)FunctionImporter.Import<n_set_scale_listDelegate>("n_set_scale_list"); + n_apply_mcbsp_list = (n_apply_mcbsp_listDelegate)FunctionImporter.Import<n_apply_mcbsp_listDelegate>("n_apply_mcbsp_list"); + set_offset_xyz_list = (set_offset_xyz_listDelegate)FunctionImporter.Import<set_offset_xyz_listDelegate>("set_offset_xyz_list"); + set_offset_list = (set_offset_listDelegate)FunctionImporter.Import<set_offset_listDelegate>("set_offset_list"); + set_matrix_list = (set_matrix_listDelegate)FunctionImporter.Import<set_matrix_listDelegate>("set_matrix_list"); + set_angle_list = (set_angle_listDelegate)FunctionImporter.Import<set_angle_listDelegate>("set_angle_list"); + set_scale_list = (set_scale_listDelegate)FunctionImporter.Import<set_scale_listDelegate>("set_scale_list"); + apply_mcbsp_list = (apply_mcbsp_listDelegate)FunctionImporter.Import<apply_mcbsp_listDelegate>("apply_mcbsp_list"); + n_set_mark_speed = (n_set_mark_speedDelegate)FunctionImporter.Import<n_set_mark_speedDelegate>("n_set_mark_speed"); + n_set_jump_speed = (n_set_jump_speedDelegate)FunctionImporter.Import<n_set_jump_speedDelegate>("n_set_jump_speed"); + n_set_sky_writing_para_list = (n_set_sky_writing_para_listDelegate)FunctionImporter.Import<n_set_sky_writing_para_listDelegate>("n_set_sky_writing_para_list"); + n_set_sky_writing_list = (n_set_sky_writing_listDelegate)FunctionImporter.Import<n_set_sky_writing_listDelegate>("n_set_sky_writing_list"); + n_set_sky_writing_limit_list = (n_set_sky_writing_limit_listDelegate)FunctionImporter.Import<n_set_sky_writing_limit_listDelegate>("n_set_sky_writing_limit_list"); + n_set_sky_writing_mode_list = (n_set_sky_writing_mode_listDelegate)FunctionImporter.Import<n_set_sky_writing_mode_listDelegate>("n_set_sky_writing_mode_list"); + n_set_scanner_delays = (n_set_scanner_delaysDelegate)FunctionImporter.Import<n_set_scanner_delaysDelegate>("n_set_scanner_delays"); + n_set_jump_mode_list = (n_set_jump_mode_listDelegate)FunctionImporter.Import<n_set_jump_mode_listDelegate>("n_set_jump_mode_list"); + n_enduring_wobbel = (n_enduring_wobbelDelegate)FunctionImporter.Import<n_enduring_wobbelDelegate>("n_enduring_wobbel"); + n_set_delay_mode_list = (n_set_delay_mode_listDelegate)FunctionImporter.Import<n_set_delay_mode_listDelegate>("n_set_delay_mode_list"); + set_mark_speed = (set_mark_speedDelegate)FunctionImporter.Import<set_mark_speedDelegate>("set_mark_speed"); + set_jump_speed = (set_jump_speedDelegate)FunctionImporter.Import<set_jump_speedDelegate>("set_jump_speed"); + set_sky_writing_para_list = (set_sky_writing_para_listDelegate)FunctionImporter.Import<set_sky_writing_para_listDelegate>("set_sky_writing_para_list"); + set_sky_writing_list = (set_sky_writing_listDelegate)FunctionImporter.Import<set_sky_writing_listDelegate>("set_sky_writing_list"); + set_sky_writing_limit_list = (set_sky_writing_limit_listDelegate)FunctionImporter.Import<set_sky_writing_limit_listDelegate>("set_sky_writing_limit_list"); + set_sky_writing_mode_list = (set_sky_writing_mode_listDelegate)FunctionImporter.Import<set_sky_writing_mode_listDelegate>("set_sky_writing_mode_list"); + set_scanner_delays = (set_scanner_delaysDelegate)FunctionImporter.Import<set_scanner_delaysDelegate>("set_scanner_delays"); + set_jump_mode_list = (set_jump_mode_listDelegate)FunctionImporter.Import<set_jump_mode_listDelegate>("set_jump_mode_list"); + enduring_wobbel = (enduring_wobbelDelegate)FunctionImporter.Import<enduring_wobbelDelegate>("enduring_wobbel"); + set_delay_mode_list = (set_delay_mode_listDelegate)FunctionImporter.Import<set_delay_mode_listDelegate>("set_delay_mode_list"); + n_stepper_enable_list = (n_stepper_enable_listDelegate)FunctionImporter.Import<n_stepper_enable_listDelegate>("n_stepper_enable_list"); + n_stepper_control_list = (n_stepper_control_listDelegate)FunctionImporter.Import<n_stepper_control_listDelegate>("n_stepper_control_list"); + n_stepper_abs_no_list = (n_stepper_abs_no_listDelegate)FunctionImporter.Import<n_stepper_abs_no_listDelegate>("n_stepper_abs_no_list"); + n_stepper_rel_no_list = (n_stepper_rel_no_listDelegate)FunctionImporter.Import<n_stepper_rel_no_listDelegate>("n_stepper_rel_no_list"); + n_stepper_abs_list = (n_stepper_abs_listDelegate)FunctionImporter.Import<n_stepper_abs_listDelegate>("n_stepper_abs_list"); + n_stepper_rel_list = (n_stepper_rel_listDelegate)FunctionImporter.Import<n_stepper_rel_listDelegate>("n_stepper_rel_list"); + n_stepper_wait = (n_stepper_waitDelegate)FunctionImporter.Import<n_stepper_waitDelegate>("n_stepper_wait"); + stepper_enable_list = (stepper_enable_listDelegate)FunctionImporter.Import<stepper_enable_listDelegate>("stepper_enable_list"); + stepper_control_list = (stepper_control_listDelegate)FunctionImporter.Import<stepper_control_listDelegate>("stepper_control_list"); + stepper_abs_no_list = (stepper_abs_no_listDelegate)FunctionImporter.Import<stepper_abs_no_listDelegate>("stepper_abs_no_list"); + stepper_rel_no_list = (stepper_rel_no_listDelegate)FunctionImporter.Import<stepper_rel_no_listDelegate>("stepper_rel_no_list"); + stepper_abs_list = (stepper_abs_listDelegate)FunctionImporter.Import<stepper_abs_listDelegate>("stepper_abs_list"); + stepper_rel_list = (stepper_rel_listDelegate)FunctionImporter.Import<stepper_rel_listDelegate>("stepper_rel_list"); + stepper_wait = (stepper_waitDelegate)FunctionImporter.Import<stepper_waitDelegate>("stepper_wait"); + #endregion + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Module/Robot.cs b/SA_LTT_UI/SA_LTT/Module/Robot.cs new file mode 100644 index 0000000..115afb3 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/Robot.cs @@ -0,0 +1,1609 @@ +癤퓎sing SA_LTT.Info.WaferInfo; +using System; +using System.Collections; +using System.Text; +using System.Threading; +using static SA_LTT.Info.WaferInfo.WaferInfoManager; + +namespace SA_LTT.Module +{ + /* + ======== Movement ====================== + Wafer Handling -> Get Ready Get Put Ready Put + Arm Motion -> Extend arm, Retract arm // �뙩�뜕�듃�뿉�꽌留� �븯�룄濡�. + Cross Motion -> Dual arm WTR 濡쒕큸�씪 �븣 // �븞�븯�뒗嫄몃줈 + Mapping -> Mapping motion test, Mapping Calibration, Mapping setting, Mapping + Deflection check -> 釉붾젅�씠�뱶 泥섏쭚 媛먯� , Calibration, setting, check + Macro -> 臾댄븳�룞�옉 留ㅽ겕濡� (�젒洹� 留됲��엳�쓬) + ==================================== + + ======== Teaching ====================== + �씠嫄곕뒗 �뙩�뜕�듃�뿉�꽌留� �븯�뒗寃� 留욎쓣�벏. + ==================================== + + ======= Speed (%) ============== + ex ) System �냽�룄 50% , Jog �냽�룄 50% -> �떎�젣 Jog �냽�룄 25%. + + System -> �쟾泥댁쓽 �룞�옉 �냽�룄 + Jog -> System ��鍮� jog �냽�룄 + Home -> System ��鍮� Home �냽�룄 + Wafer On -> System ��鍮� �뙏�쓣 六쀪퀬 �젒�뒗 �룞�옉 + Wafer Off -> System ��鍮� �뙏�쓣 六쀪퀬 �젒�뒗 �룞�옉 + Z Up -> System ��鍮� Z異� Up �닔�뻾�떆 + Z Down -> System ��鍮� Z異� Down �닔�뻾�떆 + ================================ + + ======== Monitor ====================== + IO Control -> IO on/off�젣�뼱, Grip on/off speed �솗�씤 + Input monitor -> 濡쒕큸 �닔�떊 input �솗�씤. + output monitor -> 濡쒕큸 �닔�떊 output �솗�씤 + Limit sensor -> Limit sensor 媛먯� �솗�씤 + ERRLog -> 怨쇨굅 諛쒖깮�뻽�뜕 �뿉�윭 �솗�씤 + Serial Port -> 濡쒕큸 �넻�떊 �꽕�젙 蹂�寃� + ==================================== + + ======== Setup ====================== + Zero degree set -> 紐⑤뱺 異뺤쓽 �썝�젏 �쐞移� �쁽�옱 濡쒕큸�쓽 �쐞移섎줈 �꽕�젙. // �뙩�뜕�듃�뿉�꽌留� + Calibration -> Z異� �깉議� �옄�룞 媛먯� �솗�씤 移쇰━釉뚮젅�씠�뀡 �닔�뻾. // 湲곕뒫�씠 �엳�뒗吏� �삤硫� �솗�씤. + Soft limit -> 媛곸텞�쓽 �씠�룞 媛��뒫 踰붿쐞 �옱�꽕�젙. // �뙩�뜕�듃 �뿉�꽌留�. + Motor speed -> 媛� 異뺤쓽 Motor 理쒕� �룞�옉 �냽�룄 蹂�寃� 100%(3000RPM) // �뙩�뜕�듃 �뿉�꽌留�. + Mode -> + Demo mode, + Interlock mode (�쇅遺� Interlock �떊�샇�떆 濡쒕큸 �젙吏� �쑀臾�), + retry cnt (Get, Put �룞�옉 �떎�뙣 �떆 �옱�떆�룄 �슏�닔) �꽕�젙 + Wafer size �꽕�젙, + Non block (1 command �궡�쓽 援щ텇�룞�옉 �뿰寃� �냽�룄鍮좊Ⅴ寃�) //�븞��. + + Time -> 洹몃┰�삎/踰꾪걽�삎 ���엯�쓽 寃쎌슦 On/Off �셿猷� ��湲� �뵜�젅�씠 �떆媛� 議곗젅.(ms) + ==================================== + + ======== Jog ====================== + �씠嫄곕뒗 �뙩�뜕�듃�뿉�꽌留� �븯�뒗寃� 留욎쓣�벏. + ==================================== + + �븣�엺 �꼫臾� 留롮��뜲... + Alarm �� �븯�굹濡� �빐�넃怨� Error �궡�슜�씠�옉 Description留� �쓣�슦硫� �릺吏� �븡�쓣源�? + */ + public class Robot : ComPort + { + public enum PowerState + { + /// <summary> + /// System initially starting up + /// </summary> + Starting, + /// <summary> + /// Power off, fatal error has occurred + /// </summary> + FatalError, + /// <summary> + /// Power off, power sequence restarting + /// </summary> + PowerSequencereStarting, + /// <summary> + /// Power being turned off, no fault condition has occurred + /// </summary> + PowerBeingTrunedOff, + /// <summary> + /// Power being turned off, a fault condition has occurred + /// </summary> + PowerBeingTurnedOffFault, + /// <summary> + /// Power is off, a fault has occurred that must be cleared + /// </summary> + PowerOffFault, + /// <summary> + /// Power is off, waiting for hardware enable power switch to be turned off + /// </summary> + PowerOffWaitingHardware, + /// <summary> + /// Power is off, waiting for enable power signal to be asserted + /// </summary> + PowerOffWaitingPowerSignal, + /// <summary> + /// Power is coming up, enabling amplifiers + /// </summary> + PowerComingUp, + /// <summary> + /// Power is on, performing motor commutation + /// </summary> + PowerOnPerformingMotor, + /// <summary> + /// Power is coming up, enabling servos and releasing brakes + /// </summary> + PowerComingUpEnablingServos, + /// <summary> + /// Power is on, waiting to execute thread or Auto Execution task + /// </summary> + PowerOnWaitingExecuteThread, + /// <summary> + /// Power is on, executing Auto Execution tas + /// </summary> + PowerOnExecutingAuto, + } + + public enum StageList : int + { + Port1 = 1, + Port2, + AlignFlip, + Align, + Chamber, + } + + private string _fimwareVersion; + + private bool _isError; + private bool _isMappingError; + + // 0 ~ 10 �꽌蹂� off �긽�깭 11 ~ 12 �꽌蹂� on �긽�깭 + private PowerState _powerStatus; + + private Equipment _equipment; + private Thread t_statusUpdate; + + private double _positionT; + private double _positionZ; + private double _positionR; + private double _positionF; + private string _alarmCode; + private string _alarmDescription; + private bool _isWaferExist; + private bool _isVacuumOn; + private bool _isRun; + private bool _isPutGetRun; + + private TimeSpan _getTactTime; + private TimeSpan _putTactTime; + private TimeSpan _mappingTactTime; + + private Thread t_PutGetSequence; + + public double PositionT + { + get + { + return _positionT; + } + + set + { + _positionT = value; + } + } + + public double PositionZ + { + get + { + return _positionZ; + } + + set + { + _positionZ = value; + } + } + + public double PositionR + { + get + { + return _positionR; + } + + set + { + _positionR = value; + } + } + + public double PositionF + { + get + { + return _positionF; + } + + set + { + _positionF = value; + } + } + + public string AlarmCode + { + get + { + return _alarmCode; + } + + set + { + _alarmCode = value; + } + } + + public string AlarmDescription + { + get + { + return _alarmDescription; + } + + set + { + _alarmDescription = value; + } + } + + public bool IsError + { + get + { + return _isError; + } + + set + { + _isError = value; + } + } + + public PowerState PowerStatus + { + get + { + return _powerStatus; + } + + private set + { + _powerStatus = value; + } + } + + public bool IsVacuumOn + { + get + { + return _isVacuumOn; + } + + private set + { + _isVacuumOn = value; + } + } + + public bool IsRun + { + get + { + return _isRun; + } + + set + { + _isRun = value; + } + } + + public bool IsWaferExist + { + get + { + return _isWaferExist; + } + + set + { + _isWaferExist = value; + } + } + + public bool IsServoOn + { + get + { + if(_powerStatus == PowerState.PowerOnWaitingExecuteThread || _powerStatus == PowerState.PowerOnExecutingAuto) + { + return true; + } + else + { + return false; + } + } + } + + public bool IsPutGetRun + { + get + { + return _isPutGetRun; + } + + set + { + _isPutGetRun = value; + } + } + + public TimeSpan GetTactTime + { + get + { + return _getTactTime; + } + + set + { + _getTactTime = value; + } + } + + public TimeSpan PutTactTime + { + get + { + return _putTactTime; + } + + set + { + _putTactTime = value; + } + } + + public bool IsRunEnable + { + get + { + if (IsOpen && IsRun == false && (t_PutGetSequence == null || (t_PutGetSequence.ThreadState == ThreadState.Stopped))) + { + return true; + } + else + { + return false; + } + } + } + + public TimeSpan MappingTactTime + { + get + { + return _mappingTactTime; + } + + set + { + _mappingTactTime = value; + } + } + + public bool IsMappingError + { + get + { + return _isMappingError; + } + + set + { + _isMappingError = value; + } + } + + public Robot(Equipment equipment) + { + serialPort.PortName = "COM9"; + serialPort.BaudRate = 57600; + serialPort.Parity = System.IO.Ports.Parity.None; + serialPort.DataBits = 8; + serialPort.StopBits = System.IO.Ports.StopBits.One; + serialPort.ReadTimeout = 5000; + ReceiveWaitSeconds = 0.05; + Terminator = "\r\n"; + + _equipment = equipment; + + t_statusUpdate = new Thread(statusUpdate); + t_statusUpdate.Start(); + _alarmCode = "0"; + } + + public void statusUpdate() + { + while (_equipment.IsDisposed == false) + { + try + { + Thread.Sleep(10); + + if (IsOpen) + { + ReadPowerState(); + ReadPosition(); + ReadErrorCode(); + ReadWaferDetected(); + ReadVacuumOn(); + ReadRun(); + + } + else + { + if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == SA_LTT.AlarmCode.AL_0052_ROBOT_DISCONNECTED)) + { + + } + else + { + WaferGetInterlock(StageList.Chamber, 1); + if (Open() == false) + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0052_ROBOT_DISCONNECTED); + } + else + { + Thread.Sleep(100); + ReadFirmwareVersion(); + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + } + + + public void ReadFirmwareVersion() + { + if(IsOpen) + { + string receivedData; + WriteRead("VER", out receivedData); + _fimwareVersion = receivedData; + } + else + { + // �씫湲� �떎�뙣 �븣�엺 ? + } + } + + //=================== Movement ====================== + public bool GetReady(StageList stage, int slot = 1) + { + if (t_PutGetSequence == null || t_PutGetSequence.ThreadState == ThreadState.Stopped) + { + t_PutGetSequence = new Thread(() => GetReadyThread(stage, slot)); + t_PutGetSequence.Start(); + return true; + } + else + { + return false; + } + } + + public void GetReadyThread(StageList stage, int slot = 1) + { + try + { + DateTime tactTime = DateTime.Now; + IsPutGetRun = true; + + Write($"GRDY {(int)stage},{slot}"); + + DateTime dt = DateTime.Now; + + //�룞�옉 吏꾪뻾 �솗�씤. + while (true) + { + if (IsRun) + { + break; + } + else + { + if ((DateTime.Now - dt).TotalSeconds > 5) + { + PutTactTime = DateTime.Now - tactTime; + return; + } + } + } + + //�룞�옉 吏꾪뻾 �셿猷� �솗�씤 + while (true) + { + if (IsRun == false) + { + break; + } + else + { + if ((DateTime.Now - dt).TotalMinutes > 3) + { + return; + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + IsPutGetRun = false; + } + } + + public bool Get(StageList stage, int slot = 1) + { + if (WaferGetInterlock(stage, slot) == false) + { + if (t_PutGetSequence == null || t_PutGetSequence.ThreadState == ThreadState.Stopped) + { + t_PutGetSequence = new Thread(() => GetThread(stage, slot)); + t_PutGetSequence.Start(); + + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + + private void GetThread(StageList stage, int slot) + { + try + { + DateTime tactTime = DateTime.Now; + IsPutGetRun = true; + + Write($"GET {(int)stage},{slot}"); + + DateTime dt = DateTime.Now; + + //�룞�옉 吏꾪뻾 �솗�씤. + while (true) + { + if (IsRun) + { + break; + } + else + { + if ((DateTime.Now - dt).TotalSeconds > 5) + { + GetTactTime = DateTime.Now - tactTime; + return; + } + } + } + + //�룞�옉 吏꾪뻾 �셿猷� �솗�씤 + while (true) + { + if (IsRun == false) + { + WaferNumbers sourceNumber; + + WaferInfoManager.TryParse((int)stage, slot, out sourceNumber); + + Thread.Sleep(100); + ReadWaferDetected(); + + if (IsWaferExist == true) + { + if (stage == StageList.AlignFlip) + { + WaferInfo waferInfo = _equipment.waferInfoManager.GetWaferInfo(sourceNumber); + waferInfo.IsFlip = !waferInfo.IsFlip; + _equipment.waferInfoManager.SetWaferInfo(sourceNumber, waferInfo); + } + + _equipment.waferInfoManager.MoveWaferInfo(sourceNumber, WaferNumbers.Robot); + } + else + { + EquipmentLogManager.Instance.WriteExceptionLog("Get Error"); + } + + GetTactTime = DateTime.Now - tactTime; + break; + } + else + { + if ((DateTime.Now - dt).TotalMinutes > 3) + { + //Robot �룞�옉�셿猷� TimeOut 3遺� + GetTactTime = DateTime.Now - tactTime; + return; + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + IsPutGetRun = false; + } + } + + public bool PutReady(StageList stage, int slot = 1) + { + if (t_PutGetSequence == null || t_PutGetSequence.ThreadState == ThreadState.Stopped) + { + t_PutGetSequence = new Thread(() => PutReadyThread(stage, slot)); + t_PutGetSequence.Start(); + return true; + } + else + { + return false; + } + } + + public void PutReadyThread(StageList stage, int slot = 1) + { + try + { + DateTime tactTime = DateTime.Now; + IsPutGetRun = true; + + Write($"PRDY {(int)stage},{slot}"); + + DateTime dt = DateTime.Now; + + //�룞�옉 吏꾪뻾 �솗�씤. + while (true) + { + if (IsRun) + { + break; + } + else + { + if ((DateTime.Now - dt).TotalSeconds > 5) + { + PutTactTime = DateTime.Now - tactTime; + return; + } + } + } + + //�룞�옉 吏꾪뻾 �셿猷� �솗�씤 + while (true) + { + if (IsRun == false) + { + break; + } + else + { + if ((DateTime.Now - dt).TotalMinutes > 3) + { + return; + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + IsPutGetRun = false; + } + } + + public bool Put(StageList stage, int slot = 1) + { + if (WaferPutInterlock(stage, slot) == false) + { + if (t_PutGetSequence == null || t_PutGetSequence.ThreadState == ThreadState.Stopped) + { + t_PutGetSequence = new Thread(() => PutThread(stage, slot)); + t_PutGetSequence.Start(); + + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + + private void PutThread(StageList stage, int slot) + { + try + { + DateTime tactTime = DateTime.Now; + IsPutGetRun = true; + + Write($"PUT {(int)stage},{slot}"); + + DateTime dt = DateTime.Now; + + //�룞�옉 吏꾪뻾 �솗�씤. + while (true) + { + if (IsRun) + { + break; + } + else + { + if ((DateTime.Now - dt).TotalSeconds > 5) + { + PutTactTime = DateTime.Now - tactTime; + return; + } + } + } + + //�룞�옉 吏꾪뻾 �셿猷� �솗�씤 + while (true) + { + if (IsRun == false) + { + WaferNumbers destinationNumber; + + WaferInfoManager.TryParse((int)stage, slot, out destinationNumber); + + Thread.Sleep(100); + + ReadWaferDetected(); + + if (IsWaferExist == false) + { + if (stage == StageList.AlignFlip) + { + WaferInfo waferInfo = _equipment.waferInfoManager.GetWaferInfo(WaferNumbers.Robot); + waferInfo.IsFlip = !waferInfo.IsFlip; + _equipment.waferInfoManager.SetWaferInfo(WaferNumbers.Robot, waferInfo); + } + + _equipment.waferInfoManager.MoveWaferInfo(WaferNumbers.Robot, destinationNumber); + } + else + { + EquipmentLogManager.Instance.WriteExceptionLog("Put Error"); + } + + PutTactTime = DateTime.Now - tactTime; + break; + } + else + { + if ((DateTime.Now - dt).TotalMinutes > 3) + { + //Robot �룞�옉�셿猷� TimeOut 3遺� + PutTactTime = DateTime.Now - tactTime; + return; + } + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + IsPutGetRun = false; + } + } + + public bool MappingSeq(int stage) + { + if (MappingInterlock(stage) == false) + { + if (t_PutGetSequence == null || t_PutGetSequence.ThreadState == ThreadState.Stopped) + { + t_PutGetSequence = new Thread(() => MappingTh(stage)); + t_PutGetSequence.Start(); + + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + + public bool WaferGetInterlock(StageList stage, int slot) + { + if(IsWaferExist || IsRunEnable == false || IsPutGetRun) + { + if(IsWaferExist) + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0077_ROBOT_HAS_WAFER); + } + + return true; + } + else + { + WaferNumbers waferNumber = WaferNumbers.A1; + + if(WaferInfoManager.TryParse((int)stage, slot, out waferNumber)) + { + if (stage == StageList.Port1) + { + if(_equipment.crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_1] == false) + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0070_PORT1_IS_NOT_DETECTED); + return true; + } + } + + if (stage == StageList.Port2) + { + if (_equipment.crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_2] == false) + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0071_PORT2_IS_NOT_DETECTED); + return true; + } + } + + if (stage == StageList.AlignFlip || stage == StageList.Align) + { + if (_equipment.preAligner.IsWaferExist == false) + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0072_PREALIGNER_HAS_NOT_WAFER); + return true; + } + + if(_equipment.preAligner.IsRunEnable == false) + { + return true; + } + } + + if (stage == StageList.Chamber) + { + //Position, Gate, LiftPin Check + if (_equipment.powerPmac.IsLoadPosition() == false || _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_GATE_CLOSE] || _equipment.crevis.DigitalInputs[Crevis.DigitalInput.WAFER_DOWN_CYLINDER]) + { + _equipment.SetMessageBox("Chamber position�쓣 �솗�씤 �빐 二쇱꽭�슂."); + //_equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0073_CHAMBER_HAS_NOT_WAFER); + return true; + } + } + + if (_equipment.waferInfoManager.GetWaferInfo(waferNumber).IsStatus == WaferInfo.WaferStatus.Exist) + { + return false; + } + else + { + _equipment.SetMessageBox("�씠誘� Wafer媛� 議댁옱 �븯吏� �븡�뒿�땲�떎! Wafer �젙蹂대�� �솗�씤�빐 二쇱꽭�슂."); + return true; + } + } + else + { + return true; + } + } + } + + public bool WaferPutInterlock(StageList stage, int slot) + { + if(IsWaferExist == false|| IsRunEnable == false || IsPutGetRun) + { + if (IsWaferExist == false) + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0074_ROBOT_HAS_NOT_WAFER); + } + + return true; + } + else + { + WaferNumbers waferNumber = WaferNumbers.A1; + if (WaferInfoManager.TryParse((int)stage, slot, out waferNumber)) + { + if (stage == StageList.Port1) + { + if (_equipment.crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_1] == false) + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0070_PORT1_IS_NOT_DETECTED); + return true; + } + } + + if (stage == StageList.Port2) + { + if (_equipment.crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_2] == false) + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0071_PORT2_IS_NOT_DETECTED); + return true; + } + } + + if (stage == StageList.AlignFlip || stage == StageList.Align) + { + if (_equipment.preAligner.IsWaferExist) + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0075_PREALIGNER_HAS_WAFER); + return true; + } + } + + if (stage == StageList.Chamber) + { + //Position, Gate, LiftPin Check + if (_equipment.powerPmac.IsLoadPosition() == false || _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_GATE_CLOSE] || _equipment.crevis.DigitalInputs[Crevis.DigitalInput.WAFER_DOWN_CYLINDER]) + { + _equipment.SetMessageBox("Chamber position�쓣 �솗�씤 �빐 二쇱꽭�슂."); + //_equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0076_CHAMBER_HAS_WAFER); + + return true; + } + } + + if (_equipment.waferInfoManager.GetWaferInfo(waferNumber).IsStatus == WaferInfo.WaferStatus.Empty) + { + return false; + } + else + { + _equipment.SetMessageBox("�씠誘� Wafer媛� 議댁옱 �빀�땲�떎! Wafer �젙蹂대�� �솗�씤�빐 二쇱꽭�슂."); + return true; + } + } + else + { + return true; + } + } + } + + public bool MappingInterlock(int stage) + { + if (stage == 1) + { + if(_equipment.crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_1]) + { + return false; + } + else + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0070_PORT1_IS_NOT_DETECTED); + return true; + } + } + else if (stage == 2) + { + if (_equipment.crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_2]) + { + return false; + } + else + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0071_PORT2_IS_NOT_DETECTED); + return true; + } + } + else + { + return true; + } + } + + private void MappingTh(int stage) + { + DateTime tactTime = DateTime.Now; + Mapping(stage); + + DateTime dt = DateTime.Now; + + //�룞�옉 吏꾪뻾 �솗�씤. + while (true) + { + if (IsRun) + { + break; + } + else + { + if ((DateTime.Now - dt).TotalSeconds > 5) + { + PutTactTime = DateTime.Now - tactTime; + return; + } + } + } + + while (true) + { + //Run 醫낅즺 �썑 Mapping 寃곌낵 諛쏄린 �떆�옉. + if (IsRun == false) + { + if (stage == 1) + { + ReadPort1MappingResult(); + } + else if (stage == 2) + { + ReadPort2MappingResult(); + } + + MappingTactTime = DateTime.Now - tactTime; + break; + } + else + { + if ((DateTime.Now - dt).TotalMinutes > 5) + { + //Robot �룞�옉�셿猷� TimeOut 5遺� + MappingTactTime = DateTime.Now - tactTime; + return; + } + } + } + } + + private void ReadPort1MappingResult() + { + string mappingData = _equipment.robot.ReadMappingResult(); + + if (mappingData.Length == 25) + { + IsMappingError = false; + for (int i = 0; i < 25; i++) + { + WaferInfo info = _equipment.waferInfoManager.GetWaferInfo(WaferInfoManager.WaferNumbers.A1 + i); + info.SourceNumber = WaferInfoManager.WaferNumbers.A1 + i; + info.IsProcessComplete = false; + + if (mappingData[i] == '0') + { + info.IsStatus = WaferInfo.WaferStatus.Empty; + } + else if (mappingData[i] == '1') + { + info.IsStatus = WaferInfo.WaferStatus.Exist; + } + else if (mappingData[i] == 'C') + { + info.IsStatus = WaferInfo.WaferStatus.Leaning; + } + else if (mappingData[i] == 'D') + { + info.IsStatus = WaferInfo.WaferStatus.Overlap; + } + + info.RecipeName = _equipment.port1Foup.foupRecipe.RecipeNames[i]; + _equipment.waferInfoManager.SetWaferInfo(WaferInfoManager.WaferNumbers.A1 + i, info); + } + } + else + { + IsMappingError = true; + for (int i = 0; i < 25; i++) + { + WaferInfo info = _equipment.waferInfoManager.GetWaferInfo(WaferInfoManager.WaferNumbers.A1 + i); + info.IsStatus = WaferInfo.WaferStatus.Empty; + info.SourceNumber = WaferInfoManager.WaferNumbers.A1 + i; + _equipment.waferInfoManager.SetWaferInfo(WaferInfoManager.WaferNumbers.A1 + i, info); + } + } + } + + private void ReadPort2MappingResult() + { + string mappingData = _equipment.robot.ReadMappingResult(); + + if (mappingData.Length == 25) + { + IsMappingError = false; + for (int i = 0; i < 25; i++) + { + WaferInfo info = _equipment.waferInfoManager.GetWaferInfo(WaferInfoManager.WaferNumbers.B1 + i); + info.SourceNumber = WaferInfoManager.WaferNumbers.B1 + i; + info.IsProcessComplete = false; + + if (mappingData[i] == '0') + { + info.IsStatus = WaferInfo.WaferStatus.Empty; + } + else if (mappingData[i] == '1') + { + info.IsStatus = WaferInfo.WaferStatus.Exist; + } + else if (mappingData[i] == 'C') + { + info.IsStatus = WaferInfo.WaferStatus.Leaning; + } + else if (mappingData[i] == 'D') + { + info.IsStatus = WaferInfo.WaferStatus.Overlap; + } + + info.RecipeName = _equipment.port2Foup.foupRecipe.RecipeNames[i]; + _equipment.waferInfoManager.SetWaferInfo(WaferInfoManager.WaferNumbers.B1 + i, info); + } + } + else + { + IsMappingError = true; + for (int i = 0; i < 25; i++) + { + WaferInfo info = _equipment.waferInfoManager.GetWaferInfo(WaferInfoManager.WaferNumbers.B1 + i); + info.IsStatus = WaferInfo.WaferStatus.Empty; + info.SourceNumber = WaferInfoManager.WaferNumbers.B1 + i; + _equipment.waferInfoManager.SetWaferInfo(WaferInfoManager.WaferNumbers.A1 + i, info); + } + } + } + + public void Mapping(int stage) + { + Write($"MAP {stage}"); + } + + public string ReadMappingResult() + { + string receivedData; + WriteRead("MLD", out receivedData); + //0 �뾾�쓬 1 �엳�쓬 C 湲곗슱�뼱吏� D 寃뱀묠 + //000000000000000000000000000000000000000000 + + return receivedData; + } + + public void Home() + { + Write("ORG"); + } + + public void ServoOn() + { + Write("ENABLE"); + } + + public void ServoOff() + { + Write("DISABLE"); + } + + public void MoveRelative(double x, double y, double z) + { + Write($"LMI {x},{y},{z}"); + } + + public void MoveAbsolute(double x, double y, double z) + { + Write($"LMA {x},{y},{z}"); + } + + //==================================================== + + //=================== Speed ====================== + public void ReadMappingSpeed() + { + string receivedData; + WriteRead("RMPS", out receivedData); + //RMPS V01=030 + } + + public void SetMappingSpeed(int speed) + { + Write($"WMPS {speed}"); + } + + /// <summary> + /// + /// </summary> + /// <param name="thickness">1 -> 0.001mm</param> + public void SetWaferThickness(int thickness) + { + Write($"WWTH {thickness}"); //100 -> 1mm + } + + public void SetWaferCrossCheckStandard(int standard) + { + Write($"WSCT {standard}"); // % + } + + public void SetWaferDoubleCheckStandard(int standard) + { + Write($"WSDT {standard}"); // % + } + //==================================================== + + //=================== Monitor ======================= + public void ReadErrorCode() + { + string receivedData; + + if (WriteRead("ERR", out receivedData)) + { + AlarmCode = receivedData; + + if (receivedData != "0") + { + _equipment.alarmManager.Occur(SA_LTT.AlarmCode.AL_0200_ROBOT_ALARM_OCCURED); + EquipmentLogManager.Instance.WriteProcessLog($"Robot alarm code : {receivedData}"); + IsError = true; + ReadErrorDescription(); + } + else + { + AlarmDescription = string.Empty; + IsError = false; + } + } + //ERR 201 + } + + public void ReadErrorDescription() + { + string receivedData; + WriteRead("ERD", out receivedData); + AlarmDescription = receivedData; + //ERD -1027*JOINT-OUT-OF-RANGE* 1:2 ORG + } + + public void ErrorClear() + { + Write("DRT"); + } + + public void ReadPowerState() + { + string receivedData; + WriteRead("RPS", out receivedData); + + string[] splitData = receivedData.Split('='); + + PowerState powerState; + + if(splitData.Length == 2 && Enum.TryParse(splitData[1], out powerState)) + { + PowerStatus = powerState; + } + } + + public void ReadPosition() + { + string receivedData; + WriteRead("NMPS", out receivedData); + string[] splitData = receivedData.Split(','); + // +0116.791,+0025.006,-0028.258,+0000.000 + if (splitData.Length == 4) + { + PositionT = double.Parse(splitData[0]); + PositionZ = double.Parse(splitData[1]); + PositionR = double.Parse(splitData[2]); + PositionF = double.Parse(splitData[3]); + } + else + { + + } + } + + public void EMS() + { + Write("AES"); + } + + public void ReadSystemSpeed() + { + string receivedData; + WriteRead("RSSP", out receivedData); + //RSPD V01 = 100 + } + //==================================================== + + //=================== Setup ======================= + public void SetSystemSpeed(int speed) + { + Write($"WSSP {speed}"); + } + + public void ReadJogSpeed() + { + string receivedData; + WriteRead("RJSS", out receivedData); + //RJSS V01=030,V02=30 + } + + public void ReadWaferDetected() + { + string receivedData; + WriteRead("RIDI 1", out receivedData); + int dec = 0; + + if (receivedData != string.Empty) + { + try + { + dec = Convert.ToInt32(receivedData, 16); + + BitArray bitarray = new BitArray(new byte[] { Convert.ToByte(dec) }); + + IsWaferExist = bitarray[0]; + } + catch(Exception e) + { + + } + } + else + { + + } + } + + public void ReadVacuumOn() + { + string receivedData; + WriteRead("RIDI 5", out receivedData); + + int dec = 0; + + if (receivedData != string.Empty) + { + try + { + dec = Convert.ToInt32(receivedData, 16); + + BitArray bitarray = new BitArray(new byte[] { Convert.ToByte(dec) }); + + IsVacuumOn = !bitarray[0]; + } + catch (Exception e) + { + + } + } + else + { + + } + } + + public void ReadRun() + { + string receivedData; + WriteRead("NIDO 1", out receivedData); + + int dec = 0; + + if (receivedData != string.Empty) + { + try + { + dec = Convert.ToInt32(receivedData, 16); + + BitArray bitarray = new BitArray(new byte[] { Convert.ToByte(dec) }); + + IsRun = bitarray[4]; + } + catch (Exception e) + { + + } + } + else + { + + } + } + + public void SetJogSpeed(int speed) + { + Write($"WJSS {speed}"); + } + + public void ReadHomeSpeed() + { + string receivedData; + WriteRead("RHMS", out receivedData); + //RHMS V01=020,V02=20 + } + + public void SetHomeSpeed(int speed) + { + Write($"WHMS {speed}"); + } + + public void ReadWaferOnSpeed() + { + string receivedData; + WriteRead("RHIS", out receivedData); + //RHIS V01=060,V02=060 + } + + public void SetWaferOnSpeed(int speed) + { + Write($"WHIS {speed}"); + } + + public void ReadWaferOffSpeed() + { + string receivedData; + WriteRead("RLOS", out receivedData); + //RLOS V01=020,V02=020 + } + + public void SetWaferOffSpeed(int speed) + { + Write($"WLOS {speed}"); + } + + public void ReadZSpeed() + { + string receivedData; + WriteRead("RZSP", out receivedData); + //RZSP V01=015,V02=015 + //UP �냽�룄 , DOWN �냽�룄 + } + + public void SetZSpeed(int upSpeed, int downSpeed) + { + Write($"WZSP {upSpeed},{downSpeed}"); + } + + public void EmergencyStop() + { + Write("AES"); + } + + public void Pause() + { + Write("PAUSE 1"); + } + + public void Run() + { + Write("PAUSE 0"); + } + + /// <summary> + /// 吏��젙�맂 梨꾨꼸 踰덊샇 遺��꽣 m媛쒖쓽 梨꾨꼸 媛믪쓣 2�옄由ъ닔�쓽 16吏꾨줈 諛쏆뒿�땲�떎. + /// 1媛쒖쓽 梨꾨꼸�� 8媛쒖쓽 I/O bit 瑜� �룷�븿�빀�땲�떎. + /// PRC Input I/O Map �� I/O 踰덊샇媛� 10001 踰덈��꽣 �떆�옉�빀�땲�떎. + /// </summary> + public void ReadInput() + { + string receivedData; + WriteRead("NIDI", out receivedData); + } + + /// <summary> + /// 吏��젙�맂 梨꾨꼸 踰덊샇 遺��꽣 m媛쒖쓽 梨꾨꼸 媛믪쓣 2�옄由ъ닔�쓽 16吏꾨줈 諛쏆뒿�땲�떎. + /// 1媛쒖쓽 梨꾨꼸�� 8媛쒖쓽 I/O bit 瑜� �룷�븿�빀�땲�떎. + /// PRC Output I/O Map �� I/O 踰덊샇媛� 13 踰덈��꽣 �떆�옉�빀�땲�떎 + /// </summary> + public void ReadOutput() + { + string receivedData; + WriteRead("NIDO", out receivedData); + } + //==================================================== + + public new bool Write(string command) + { + base.Write(command + $"\r\n"); + + return true; + } + + public bool WriteRead(string command, out string receivedData) + { + string data = base.WriteRead(command + $"\r\n"); + if (data.StartsWith(command.Split(' ')[0])) + { + receivedData = data.Remove(0, command.Split(' ')[0].Length + 1).Replace($"\r\n", ""); + return true; + } + else + { + receivedData = string.Empty; + return false; + } + } + } + + enum RobotAlarm + { + ERR_NOT_HOMED = 2, + ERR_EMERGENCY = 4, + ERR_MOTOR_ERROR = 12, + ERR_WAIT_TIMEOUT = 190, + ENCODER_RESET_TIMEOUT = 193, + ERR_INTERLOCK = 194, + ERR_DATA_RANGE = 201, + ERR_WAFER_BEFORE_GET = 202, + ERR_NO_WAFER_BEFORE_PUT = 203, + ERR_NO_WAFER_AFTER_GET = 204, + ERR_WAFER_AFTER_PUT = 205, + ERR_NO_WAFER_DURING_GET = 206, + ERR_WAFER_DURING_PUT = 207, + ERR_NOT_HOMED_1 = 208, + ERR_NOT_SUPPORTED_FUNC = 209, + ERR_WAFER_OUT = 210, + ERR_WAFER_SLIP = 211, + OVER_WAFER_DURING_GET = 212, + ERR_PLATE_CHECK = 213, + ERR_PUSHER_SPEED_HIGH = 214, + ERR_NOT_CORRECT_BLADE_POS = 241, + ERR_MAPPING_IS_NOT_PERFORMED = 251, + ERR_NO_MAPPING_DATA = 252, + ALREADY_LATCH_BLOCKED = 253, + ERR_CANNOT_UNGRIP = 300, + ERR_INVALID_COMMAND = 301, + ERR_INVALID_DATA = 311, + ERR_INVALID_STATION = 312, + ERR_INVALID_HAND = 313, + ERR_INVALID_SLOT = 314, + ERR_INVALID_TEACHING_INDEX = 315, + ERR_INVALID_PD_INDEX = 316, + ERR_INVALID_HAND_TYPE = 317, + ERR_BOX_NOEXIT_ERORR = 318, + ERR_INVALID_OFFSET = 319, + ERR_INVALID_COORDINATE_TYPE = 321, + ERR_INVALID_ARGUMENT = 331, + ERR_INVALID_FORMAT = 333, + ERR_INVALID_LOCATION_FORMAT = 334, + ERR_INVALID_PROFILE_FORMAT = 335, + ERR_WRONG_PD_COMMAND = 341, + ERR_WRONG_AWC_DATA = 342, + ERR_NO_AWC_STATION = 343, + ERR_WRONG_LATCH_DATA = 344, + ERR_NO_LATCH_DATA = 345, + ERR_NO_DATA = 351, + ERR_NOT_HOME = 352, + ERR_CANNOT_RETRACT_ARM = 353, + ERR_VACUUM_DETECTING_ERORR = 354, + ERR_NO_BOX = 355, + ERR_UPGRIP = 356, + ERR_DOUBLEBOXCHECH = 357, + ERR_ORIGINMANUALLY = 359, + ERR_NOTSUPPLY_AIR = 360, + ERR_NOW_ON_MOVE = 371, + ERR_NOT_READYPOS = 361, + Z_POSITION_ERR_DETECTED = 372, + ERR_FLIP_TURN_INTERLOCK = 378, + ERR_CONTROL_BOX_FAN = 380, + ERR_ROBOT_FAN = 381, + ERR_AIRSTOP_ERROR = 400, + ERR_RECEIVEBUF_FULL = 401, + ERR_SENDBUF_FULL = 402, + IO_RECEIVE_ERROR = 403, + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/Scanner.cs b/SA_LTT_UI/SA_LTT/Module/Scanner.cs new file mode 100644 index 0000000..0335bd7 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/Scanner.cs @@ -0,0 +1,1281 @@ +癤퓎sing SA_LTT.Base; +using SA_LTT.Module.RTC5; +using System; +using System.Collections.Generic; +using System.IO; + +namespace SA_LTT.Module +{ + public enum ScanMode + { + JUMP, + MARK, + } + + /// <summary> + /// Scanner 媛�怨� 醫뚰몴. + /// </summary> + public struct Coord + { + ScanMode _scanMode; + int _x; + int _y; + + public ScanMode ScanMode + { + get + { + return _scanMode; + } + + set + { + _scanMode = value; + } + } + + /// <summary> + /// -8388608 ~ 8388607 + /// </summary> + public int X + { + get + { + return _x; + } + + set + { + if (value > 8388607) + { + _x = 8388607; + } + else if (value < -8388608) + { + _x = -8388608; + } + else + { + _x = value; + } + } + } + + /// <summary> + /// -8388608 ~ 8388607 + /// </summary> + public int Y + { + get + { + return _y; + } + + set + { + if (value > 8388607) + { + _y = 8388607; + } + else if (value < -8388608) + { + _y = -8388608; + } + else + { + _y = value; + } + } + } + + public Coord(ScanMode scanMode, int x, int y) + { + _scanMode = ScanMode.JUMP; + _x = 0; + _y = 0; + + ScanMode = scanMode; + X = x; + Y = y; + } + } + + public delegate void ScanListAdded(Coord coord); + public delegate void ScanListCleared(); + + public class Scanner : XmlManager<Scanner> + { + private Equipment _equipment; + + private object _lock = new object(); + + public event ScanListAdded ScanListAdded; + public event ScanListCleared ScanListCleared; + + readonly string _fileName = "Scanner.xml"; + readonly string _filePath = @"Setting\"; + + #region Field + private string _correctionFilePath; + + private bool _isInitialized; + private bool _isBusy; + private uint _isPosition; + + private int _encoder0; + private int _encoder1; + + private int _encoderCountPerMmX; + private int _encoderCountPerMmY; + + private double _fieldOfView; + + private uint _halfPeriod; + private uint _pulseLength1; + private uint _timeBase; + + private uint _jumpDelay; + private uint _markDelay; + private uint _polygonDelay; + + private int _laserOnDelay; + private uint _laserOffDelay; + + private double _xGain; + private double _yGain; + + private bool _isLaserOn; + private List<Coord> scanList = new List<Coord>(); + #endregion + + #region Property + //蹂댁젙 �뙆�씪 �쐞移� + public string CorrectionFilePath + { + get + { + return _correctionFilePath; + } + + set + { + _correctionFilePath = value; + } + } + + /// <summary> + /// RTC5 Board 留덉�留� 珥덇린�솕 寃곌낵 + /// </summary> + public bool IsInitialized + { + get + { + return _isInitialized; + } + + set + { + _isInitialized = value; + } + } + + /// <summary> + /// RTC5 Board Status. + /// </summary> + public bool IsBusy + { + get + { + return _isBusy; + } + + set + { + _isBusy = value; + } + } + + /// <summary> + /// Scanner�뿉 �뿰寃곕맂 Encoder 0 媛� + /// </summary> + public int Encoder0 + { + get + { + return _encoder0; + } + + set + { + _encoder0 = value; + } + } + + /// <summary> + /// Scanner�뿉 �뿰寃곕맂 Encoder 1 媛� + /// </summary> + public int Encoder1 + { + get + { + return _encoder1; + } + + set + { + _encoder1 = value; + } + } + + /// <summary> + /// X異� mm�떦 Encoder Count + /// </summary> + public int EncoderCountPerMmX + { + get + { + return _encoderCountPerMmX; + } + + set + { + _encoderCountPerMmX = value; + } + } + + /// <summary> + /// Y異� mm�떦 Encoder Count + /// </summary> + public int EncoderCountPerMmY + { + get + { + return _encoderCountPerMmY; + } + + set + { + _encoderCountPerMmY = value; + } + } + + /// <summary> + /// 1mm�떦 bits �닔. + /// </summary> + public double BitsPerMm + { + get + { + if (FOV == 0) + { + return 0; + } + else + { + return Math.Pow(2, 20 - 1) / (FOV / 2); + } + } + } + + /// <summary> + /// Scanner�쓽 field of view + /// </summary> + public double FOV + { + get + { + return _fieldOfView; + } + + set + { + _fieldOfView = value; + } + } + + /// <summary> + /// Scanner Kfactor : FOV�뿉 �뵲�씪 �젙�빐吏� + /// </summary> + public double KFactor + { + get + { + if (FOV == 0) + { + return 1.0; + } + else + { + return Math.Pow(2, 20) / (FOV / 2); + } + } + } + + /// <summary> + /// Half of the laser signal period + /// 1bit equals 1/64 us. Allowed range [0 ~ 2^(32 -1)] + /// </summary> + public uint HalfPeriod + { + get + { + return _halfPeriod; + } + + set + { + if (value > 2147483648) + { + _halfPeriod = 2147483648; + } + else + { + _halfPeriod = value; + } + } + } + + /// <summary> + /// Pulse widths of signals Laser1 + /// 1bit equals 1/64 us. Allowed range [0 ~ 2^(32 -1)] + /// </summary> + public uint PulseLength1 + { + get + { + return _pulseLength1; + } + + set + { + if (value > 2147483648) + { + _pulseLength1 = 2147483648; + } + else + { + _pulseLength1 = value; + } + } + } + + /// <summary> + /// Pulse widths of signals Laser2 + /// The value of PulseLength2 is ignored and is no longer used + /// </summary> + public uint PulseLength2 + { + get + { + return _pulseLength1; + } + } + + /// <summary> + /// time base; 0 corresponds to 1 microsecond + /// In RTC5 mode, the value is ignored and the clock frequency is fixed + /// at 64 MHz. 1 bit equals 1/64 쨉s + /// </summary> + public uint TimeBase + { + get + { + return _timeBase; + } + + set + { + _timeBase = value; + } + } + + /// <summary> + /// Jump delay in 10 microseconds + /// </summary> + public uint JumpDelay + { + get + { + return _jumpDelay; + } + + set + { + _jumpDelay = value; + } + } + + /// <summary> + /// Mark delay in 10 microseconds + /// </summary> + public uint MarkDelay + { + get + { + return _markDelay; + } + + set + { + _markDelay = value; + } + } + + /// <summary> + /// Polygon delay in 10 microseconds + /// </summary> + public uint PolygonDelay + { + get + { + return _polygonDelay; + } + + set + { + _polygonDelay = value; + } + } + + /// <summary> + /// Laser on delay in microseconds + /// </summary> + public int LaserOnDelay + { + get + { + return _laserOnDelay; + } + + set + { + _laserOnDelay = value; + } + } + + /// <summary> + /// Laser off delay in microseconds + /// </summary> + public uint LaserOffDelay + { + get + { + return _laserOffDelay; + } + + set + { + _laserOffDelay = value; + } + } + + public uint IsPosition + { + get + { + return _isPosition; + } + + set + { + _isPosition = value; + } + } + + public double XGain + { + get + { + return _xGain; + } + + set + { + if (value < 0) + _xGain = 1; + + _xGain = value; + } + } + + public double YGain + { + get + { + return _yGain; + } + + set + { + if (value < 0) + _yGain = 1; + + _yGain = value; + } + } + + public bool IsLaserOn + { + get + { + return _isLaserOn; + } + + set + { + _isLaserOn = value; + } + } + #endregion + + public Scanner(Equipment equipment) + { + _equipment = equipment; + TimeBase = 0; + Refresh(); + } + + public Scanner() + { + + } + + public void Refresh() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.settingFilePath + _filePath); + + if (directoryInfo.Exists == false) + { + directoryInfo.Create(); + } + + FileInfo fileInfo = new FileInfo(directoryInfo.FullName + _fileName); + + if (fileInfo.Exists == false) + { + fileInfo.Create().Close(); + + SaveFile(fileInfo.FullName, this); + } + else + { + Scanner scanner = new Scanner(); + + scanner = ReadFile(fileInfo.FullName); + + Copy(scanner); + } + } + + /// <summary> + /// Error 諛쒖깮�뻽�뒗吏� �솗�씤. + /// </summary> + /// <returns></returns> + private bool ErrorExist() + { + uint errorCode = RTC5Wrap.get_error(); + + if (errorCode == 0) return false; + + byte[] errorBytes = BitConverter.GetBytes(errorCode); + System.Collections.BitArray errorBits = new System.Collections.BitArray(errorBytes); + + string str = string.Empty; + + if (errorBits[0] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0800_RTC5_NO_BOARD_FOUND); + + if (errorBits[1] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0801_RTC5_ACCESS_DENIED); + + if (errorBits[2] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0802_RTC5_COMMAND_NOT_FORWARDED); + + if (errorBits[3] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0803_RTC5_NO_RESPONSE_FROM_BOARD); + + if (errorBits[4] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0804_RTC5_INVALID_PARAMETER); + + if (errorBits[5] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0805_RTC5_LIST_PROCESSING_IS_NOT_ACTIVE); + + if (errorBits[6] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0806_RTC5_LIST_COMMAND_REJECTED); + + if (errorBits[7] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0807_RTC5_LIST_COMMAND_HAS_BEEN_COVERTED); + + if (errorBits[8] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0808_RTC5_VERSION_ERROR_RTC5_DLL_VERSION); + + if (errorBits[9] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0809_RTC5_VERIFY_ERROR_RTC5_DLL_VERSION); + + if (errorBits[10] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0810_RTC5_DSP_VERSION_ERROR); + + if (errorBits[11] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0811_RTC5_DLL_INTERNAL_WINDOWS_MEMORY_REQUEST_FAIL); + + if (errorBits[12] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0812_RTC5_EEPROM_READ_OR_WRITE_ERROR); + + if (errorBits[16] == true) + _equipment.alarmManager.Occur(AlarmCode.AL_0813_RTC5_ERROR_READING_PCI_CONFIGURATION_REGISTER); + + RTC5Wrap.reset_error(errorCode); + return true; + } + + /// <summary> + /// Load Program �썑 諛섑솚�맂 肄붾뱶濡� Error 諛쒖깮 �솗�씤. + /// </summary> + /// <param name="errorCode"></param> + /// <returns></returns> + private bool LoadProgramFileErrorExist(uint errorCode) + { + switch (errorCode) + { + case 0: + return false; + case 1: + _equipment.alarmManager.Occur(AlarmCode.AL_0814_RTC5_RESET_ERROR); + return true; + case 2: + _equipment.alarmManager.Occur(AlarmCode.AL_0815_RTC5_UNRESET_ERROR); + return true; + case 3: + _equipment.alarmManager.Occur(AlarmCode.AL_0816_RTC5_FILE_ERROR); + return true; + case 4: + _equipment.alarmManager.Occur(AlarmCode.AL_0817_RTC5_FORMAT_ERROR); + return true; + case 5: + _equipment.alarmManager.Occur(AlarmCode.AL_0818_RTC5_SYSTEM_ERROR); + return true; + case 6: + _equipment.alarmManager.Occur(AlarmCode.AL_0819_RTC5_ACCESS_ERROR); + return true; + case 7: + _equipment.alarmManager.Occur(AlarmCode.AL_0820_RTC5_VERSION_ERROR); + return true; + case 8: + _equipment.alarmManager.Occur(AlarmCode.AL_0821_RTC5_SYSTEM_DRIVER_NOT_FOUND); + return true; + case 9: + _equipment.alarmManager.Occur(AlarmCode.AL_0822_RTC5_DRIVER_CALL_ERROR); + return true; + case 10: + _equipment.alarmManager.Occur(AlarmCode.AL_0823_RTC5_CONFIGURATION_ERROR); + return true; + case 11: + _equipment.alarmManager.Occur(AlarmCode.AL_0824_RTC5_FPGA_FIRMWARE_ERROR); + return true; + case 12: + _equipment.alarmManager.Occur(AlarmCode.AL_0825_RTC5_PCI_DOWNLOAD_ERROR); + return true; + case 13: + _equipment.alarmManager.Occur(AlarmCode.AL_0826_RTC5_BUSY_ERROR); + return true; + case 14: + _equipment.alarmManager.Occur(AlarmCode.AL_0827_RTC5_DSP_MEMORY_ERROR); + return true; + case 15: + _equipment.alarmManager.Occur(AlarmCode.AL_0828_RTC5_VERIFY_ERROR); + return true; + case 16: + _equipment.alarmManager.Occur(AlarmCode.AL_0829_RTC5_PCI_ERROR); + return true; + default: + return true; + } + } + + /// <summary> + /// 蹂댁젙�뙆�씪 �씫�뼱�삱�븣 諛섑솚�맂 肄붾뱶濡� Error 諛쒖깮 �솗�씤. + /// </summary> + /// <param name="errorCode"></param> + /// <returns></returns> + private bool LoadCorrectionFileErrorExist(uint errorCode) + { + switch (errorCode) + { + case 0: + return false; + case 1: + _equipment.alarmManager.Occur(AlarmCode.AL_0830_RTC5_FILE_ERROR); + return true; + case 2: + _equipment.alarmManager.Occur(AlarmCode.AL_0831_RTC5_MEMORY_ERROR); + return true; + case 3: + _equipment.alarmManager.Occur(AlarmCode.AL_0832_RTC5_FILE_OPEN_ERROR); + return true; + case 4: + _equipment.alarmManager.Occur(AlarmCode.AL_0833_RTC5_DSP_MEMORY_ERROR); + return true; + case 5: + _equipment.alarmManager.Occur(AlarmCode.AL_0834_RTC5_PCI_DOWNLOAD_ERROR); + return true; + case 8: + _equipment.alarmManager.Occur(AlarmCode.AL_0835_RTC5_SYSTEM_DRIVER_NOT_FOUND); + return true; + case 10: + _equipment.alarmManager.Occur(AlarmCode.AL_0836_RTC5_PARAMETER_ERROR); + return true; + case 11: + _equipment.alarmManager.Occur(AlarmCode.AL_0837_RTC5_ACCESS_ERROR); + return true; + case 12: + _equipment.alarmManager.Occur(AlarmCode.AL_0838_RTC5_WARNING_3D_CORRECTION_TABLE); + return true; + case 13: + _equipment.alarmManager.Occur(AlarmCode.AL_0839_RTC5_BUSY_ERROR); + return true; + case 14: + _equipment.alarmManager.Occur(AlarmCode.AL_0840_RTC5_PCI_UPLOAD_ERROR); + return true; + case 15: + _equipment.alarmManager.Occur(AlarmCode.AL_0841_RTC5_VERIFY_ERROR); + return true; + default: + return true; + } + } + + /// <summary> + /// RTC 5 DLL 珥덇린�솕. + /// </summary> + /// <returns></returns> + private bool InitializeRTC5Dll() + { + // ====== RTC 5 Dll 珥덇린�솕 ====== + RTC5Wrap.init_rtc5_dll(); + + if (ErrorExist()) + { + return false; + } + else + { + return true; + } + } + + /// <summary> + /// RTC5 RBF, OUT, DAT �뙆�씪 濡쒕뱶 + /// </summary> + /// <returns></returns> + private bool LoadProgramFiles() + { + uint errorCode = RTC5Wrap.load_program_file(null); + + if (LoadProgramFileErrorExist(errorCode)) + { + return false; + } + else + { + return true; + } + } + + /// <summary> + /// 蹂댁젙�뙆�씪 濡쒕뱶 + /// </summary> + /// <param name="filePath">蹂댁젙�뙆�씪 �쐞移�</param> + /// <returns></returns> + private bool LoadCorrectionFiles(string filePath) + { + uint errorCode = RTC5Wrap.load_correction_file(CorrectionFilePath, + 1, // table; #1 is used by default + 2); // 2D correction files and 3D correction files are sotred as a 2D correction table. + + if (LoadCorrectionFileErrorExist(errorCode)) + { + return false; + } + else + { + return true; + } + } + + /// <summary> + /// RTC5 蹂대뱶 珥덇린�솕. [湲곕낯 �쐞移� : �떎�뻾�뙆�씪 �쐞移�] + /// </summary> + /// <param name="correctionFilePath">蹂댁젙 �뙆�씪 �쐞移�</param> + /// <returns></returns> + public bool Initialize(string correctionFilePath = null) + { + lock (_lock) + { + if (InitializeRTC5Dll() == false) + { + IsInitialized = false; + return false; + } + + if (LoadProgramFiles() == false) + { + IsInitialized = false; + return false; + } + + if (LoadCorrectionFiles(correctionFilePath) == false) + { + IsInitialized = false; + return false; + } + } + + RTC5Wrap.home_position(0, 0); + + if(SetLaserDelays() && SetLaserTiming() && SetScannerDelay()) + { + IsInitialized = true; + } + else + { + IsInitialized = false; + } + + RTC5Wrap.set_laser_control(1); + + return true; + } + + /// <summary> + /// List �룞�옉 以� �솗�씤. + /// </summary> + /// <returns></returns> + public bool GetBusy() + { + try + { + if (IsInitialized) + { + lock (_lock) + { + uint ubusy, position; + RTC5Wrap.get_status(out ubusy, out position); + IsBusy = ubusy != 0; + IsPosition = position; + } + } + else + { + IsBusy = false; + } + return IsBusy; + } + catch(Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + + public bool GetLaserOn() + { + try + { + if (IsInitialized) + { + lock (_lock) + { + IsLaserOn = RTC5Wrap.get_value((ushort)0) == (short)1; + } + } + else + { + IsLaserOn = false; + } + + return IsLaserOn; + } + catch(Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + return false; + } + } + + /// <summary> + /// Laser timing �꽕�젙 [Laser Half of signal period, Laser Pulse widths, Time Base] + /// </summary> + /// <returns></returns> + public bool SetLaserTiming() + { + RTC5Wrap.set_start_list(1); + RTC5Wrap.set_laser_timing(HalfPeriod, PulseLength1, PulseLength2, TimeBase); + RTC5Wrap.set_end_of_list(); + RTC5Wrap.execute_list(1); + + //CtlFrequency(1000, 0.085f); + if (ErrorExist()) + { + return false; + } + else + { + return true; + } + } + + /// <summary> + /// Scanner delay �꽕�젙. [jump delay, mark delay, polygon delay] + /// </summary> + /// <returns></returns> + public bool SetScannerDelay() + { + RTC5Wrap.set_start_list(1); + RTC5Wrap.set_scanner_delays(JumpDelay, MarkDelay, PolygonDelay); + RTC5Wrap.set_end_of_list(); + RTC5Wrap.execute_list(1); + + if (ErrorExist()) + { + return false; + } + else + { + return true; + } + } + + /// <summary>二쇳뙆�닔�� �럡�뒪�룺 �꽕�젙</summary> + /// <param name="frequency">二쇳뙆�닔 (Hz)</param> + /// <param name="pulseWidth">�럡�뒪�룺 (usec)</param> + /// <returns></returns> + public virtual bool CtlFrequency(float frequency, float pulseWidth) + { + if (IsBusy) + { + return false; + } + + if ((double)frequency <= 0.0 || (double)pulseWidth <= 0.0) + { + return false; + } + + double num1 = Math.Round(1.0 / (double)frequency * 1000000.0 / 2.0, 3); + double num2 = Math.Round((double)pulseWidth, 3); + RTC5Wrap.set_start_list(1); + RTC5Wrap.set_laser_timing((uint)Math.Floor(num1 * 64.0), (uint)Math.Floor(num2 * 64.0), (uint)Math.Floor(num2 * 64.0), 0U); + RTC5Wrap.set_end_of_list(); + RTC5Wrap.execute_list(1); + + return true; + } + + /// <summary> + /// Laser delay �꽕�젙 [Laser on delay, Laser off delay] + /// </summary> + /// <returns></returns> + public bool SetLaserDelays() + { + RTC5Wrap.set_start_list(1); + RTC5Wrap.set_laser_delays(LaserOnDelay, LaserOffDelay); + RTC5Wrap.set_end_of_list(); + RTC5Wrap.execute_list(1); + + if (ErrorExist()) + { + return false; + } + else + { + return true; + } + } + + public void LaserOn() + { + RTC5Wrap.laser_signal_on(); + } + + public void LaserOff() + { + RTC5Wrap.laser_signal_off(); + } + + /// <summary> + /// Set jump speed, mark speed + /// </summary> + /// <param name="jumpSpeed"> mm/s </param> + /// <param name="markSpeed"> mm/s </param> + /// <returns></returns> + public bool SetJumpMarkSpeed(double jumpSpeed, double markSpeed) + { + if (jumpSpeed == 0) + jumpSpeed = 10; + + if (markSpeed == 0) + markSpeed = 10; + + double jump = (BitsPerMm / 1000) * jumpSpeed; + double mark = (BitsPerMm / 1000) * markSpeed; + + RTC5Wrap.set_start_list(1); + RTC5Wrap.set_jump_speed(jump); + RTC5Wrap.set_mark_speed(mark); + RTC5Wrap.set_end_of_list(); + RTC5Wrap.execute_list(1); + + if (ErrorExist()) + { + return false; + } + else + { + return true; + } + } + + /// <summary> + /// RCT5 蹂대뱶�뿉 �뿰寃곕릺�뼱 �엳�뒗 Encoder 媛� �씫湲�. + /// </summary> + /// <returns></returns> + public bool GetEncoder() + { + int encoder0, encoder1; + + RTC5Wrap.get_encoder(out encoder0, out encoder1); + + Encoder0 = encoder0; + Encoder1 = encoder1; + + if (ErrorExist()) + { + return false; + } + else + { + return true; + } + } + + /// <summary> + /// Scan list Data 諛섑솚 + /// </summary> + /// <returns></returns> + public Coord[] GetScanList() + { + return scanList.ToArray(); + } + + /// <summary> + /// Scan list 珥덇린�솕 + /// </summary> + /// <returns></returns> + public bool ClearScanList() + { + scanList.Clear(); + + ScanListCleared.Invoke(); + return true; + } + + /// <summary> + /// Scan list�뿉 媛�怨� �젙蹂� 異붽� + /// </summary> + /// <param name="coord"></param> + /// <returns></returns> + public bool AddScanList(Coord coord) + { + scanList.Add(coord); + ScanListAdded?.Invoke(coord); + return true; + } + + /// <summary> + /// + /// </summary> + /// <param name="scanMode"></param> + /// <param name="x">mm</param> + /// <param name="y">mm</param> + /// <returns></returns> + public bool AddScanList(ScanMode scanMode, double x, double y) + { + Coord coord = new Coord(); + coord.ScanMode = scanMode; + coord.X = (int)Math.Floor(x * BitsPerMm); + coord.Y = (int)Math.Floor(y * BitsPerMm); + + scanList.Add(coord); + ScanListAdded?.Invoke(coord); + + return true; + } + + /// <summary> + /// 媛�怨� �떆�옉 + /// </summary> + /// <returns></returns> + public bool ExcuteScanList(bool onTheFly = false) + { + RTC5Wrap.set_start_list(1); + + if (onTheFly) + { + double ScaleX; + double ScaleY; + + if (EncoderCountPerMmX == 0) + { + ScaleX = 0; + } + else + { + ScaleX = BitsPerMm / EncoderCountPerMmX; + RTC5Wrap.set_fly_x(ScaleX); + } + + if (EncoderCountPerMmY == 0) + { + ScaleY = 0; + } + else + { + ScaleY = BitsPerMm / EncoderCountPerMmY; + RTC5Wrap.set_fly_y(ScaleY); + } + + RTC5Wrap.set_rot_center(0, 0); + } + + foreach (Coord coord in scanList) + { + int x = (int)(coord.X * XGain); + int y = (int)(coord.Y * YGain); + + if (coord.ScanMode == ScanMode.JUMP) + { + //RTC5Wrap.jump_abs(coord.X, coord.Y); + RTC5Wrap.jump_abs(x, y); + } + else + { + //RTC5Wrap.mark_abs(coord.X, coord.Y); + RTC5Wrap.mark_abs(x, y); + } + } + + if (onTheFly) + { + RTC5Wrap.fly_return(0, 0); + } + else + { + RTC5Wrap.jump_abs(0, 0); + } + + RTC5Wrap.set_end_of_list(); + + RTC5Wrap.execute_list(1); + + if (ErrorExist()) + { + return false; + } + else + { + return true; + } + } + + public bool Stop() + { + RTC5Wrap.stop_execution(); + + if (ErrorExist()) + { + return false; + } + else + { + return true; + } + } + + public bool Save() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.settingFilePath + _filePath); + + if (directoryInfo.Exists == false) + { + directoryInfo.Create(); + } + + FileInfo fileInfo = new FileInfo(directoryInfo.FullName + _fileName); + + if (fileInfo.Exists == false) + { + fileInfo.Create().Close(); + } + + SetScannerDelay(); + SetLaserDelays(); + SetLaserTiming(); + + return TrySaveFile(fileInfo.FullName, this); + } + + public void AddScanField(int linecount = 5, double fieldSize = 15) + { + double intervalLength = 0; + + if (linecount % 2 == 0) // Line count媛� 吏앹닔 �씪 �븣 + { + intervalLength = fieldSize / linecount; + + //X異� 洹몃━湲�. + for (int i = linecount / 2; i > 0; i--) + { + AddScanList(ScanMode.JUMP, -(fieldSize / 2 + 1), intervalLength * i); + AddScanList(ScanMode.MARK, (fieldSize / 2 + 1), intervalLength * i); + } + + for (int i = -(linecount / 2); i < 0; i++) + { + AddScanList(ScanMode.JUMP, -(fieldSize / 2 + 1), intervalLength * i); + AddScanList(ScanMode.MARK, (fieldSize / 2 + 1), intervalLength * i); + } + + //Y異� 洹몃━湲� + for (int i = linecount / 2; i > 0; i--) + { + AddScanList(ScanMode.JUMP, intervalLength * i, -(fieldSize / 2 + 1)); + AddScanList(ScanMode.MARK, intervalLength * i, (fieldSize / 2 + 1)); + } + + for (int i = -(linecount / 2); i < 0; i++) + { + AddScanList(ScanMode.JUMP, intervalLength * i, -(fieldSize / 2 + 1)); + AddScanList(ScanMode.MARK, intervalLength * i, (fieldSize / 2 + 1)); + } + } + else // Line count媛� ���닔 �씪 �븣 + { + intervalLength = fieldSize / (linecount - 1); + + //X異� 洹몃━湲�. + for (int i = -(linecount - 1) / 2; i <= (linecount - 1) / 2; i++) + { + AddScanList(ScanMode.JUMP, -(fieldSize / 2 + 1), intervalLength * i); + AddScanList(ScanMode.MARK, (fieldSize / 2 + 1), intervalLength * i); + } + + //Y異� 洹몃━湲� + for (int i = -(linecount - 1) / 2; i <= (linecount - 1) / 2; i++) + { + AddScanList(ScanMode.JUMP, intervalLength * i, -(fieldSize / 2 + 1)); + AddScanList(ScanMode.MARK, intervalLength * i, (fieldSize / 2 + 1)); + } + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Module/VisionControl.cs b/SA_LTT_UI/SA_LTT/Module/VisionControl.cs new file mode 100644 index 0000000..5a4c2fd --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Module/VisionControl.cs @@ -0,0 +1,736 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; +using SA_LTT.Base; +using System.Collections; +using System.Threading; + +namespace SA_LTT.Module +{ + public enum VisionToControlCommand : short + { + VisionReadyAck = 150, + InspReadyEnd = 151, + + WaferDetectionReadyAck = 250, + WaferDetectionReadyEnd = 251, + WaferDetectionStartAck= 252, + WaferDetectionResult = 253, + + RecipeChangeSwitchAck = 750, + RecipeChangeUpdate = 751, + + Alarm = 950, + AliveAck = 1050, + } + + public enum ControlToVisionCommand : short + { + VisionReady = 100, + InspReadyEndAck = 101, + + WaferDetectionReady = 200, + WaferDetectionReadyEndAck = 201, + WaferDetectionStart = 202, + WaferDetectionResultAck = 203, + + RecipeSwitch = 700, + RecipeUpdateAck = 701, + + AlarmAck = 900, + RequestAlive = 1000, + } + + public class VisionControl : SocketClient + { + Equipment _equipment; + + public Queue commandlist; + + private bool IsDisposed = false; + private string _ip = "127.000.000.1"; + private int _port = 9119; + + private Thread communicationThread; + + private int retry_connect_cnt; + + private DateTime alive_check; + private DateTime connect_time_check; + + private Dictionary<VisionToControlCommand, bool> _commnadAcks = new Dictionary<VisionToControlCommand, bool>(); + private InspReadyEnd _inspectionReadyEndValue = new InspReadyEnd(); + private WaferDetectionResult _waferDetectionResultValue = new WaferDetectionResult(); + private RecipeSwitchAck _recipeSwitchAckValue = new RecipeSwitchAck(); + private RecipeUpdate _recipeUpdateValue = new RecipeUpdate(); + private AlarmOccured _alarmOccuredValue = new AlarmOccured(); + private int _aliveAck; + + public int AliveAck + { + get + { + return _aliveAck; + } + + set + { + _aliveAck = value; + } + } + + public Dictionary<VisionToControlCommand, bool> CommnadAcks { get => _commnadAcks; private set =>_commnadAcks = value; } + public InspReadyEnd InspectionReadyEndValue { get => _inspectionReadyEndValue; set => _inspectionReadyEndValue = value; } + public WaferDetectionResult WaferDetectionResultValue { get => _waferDetectionResultValue; set => _waferDetectionResultValue = value; } + public RecipeSwitchAck RecipeSwitchAckValue { get => _recipeSwitchAckValue; set => _recipeSwitchAckValue = value; } + public RecipeUpdate RecipeUpdateValue { get => _recipeUpdateValue; set => _recipeUpdateValue = value; } + public AlarmOccured AlarmOccuredValue { get => _alarmOccuredValue; set => _alarmOccuredValue = value; } + + public VisionControl(Equipment equipment) + { + _equipment = equipment; + + ChangeAddress(IPAddress.Parse("127.000.000.1"), 9119); + alive_check = DateTime.Now; + connect_time_check = DateTime.Now; + + foreach(VisionToControlCommand value in Enum.GetValues(typeof(VisionToControlCommand))) + { + CommnadAcks.Add(value, false); + } + + Add_received_event(Received); + + commandlist = new Queue(); + communicationThread = new Thread(CommandTrigger); + communicationThread.Start(); + } + + public new bool Connect() + { + try + { + if (base.Connect()) + { + Thread.Sleep(50); + + if (isConnected) + { + alive_check = DateTime.Now; + return true; + } + else + { + return false; + } + } + else + { + return false; + } + } + catch (Exception ex) + { + return false; + } + } + + public void CommandTrigger() + { + DateTime heartBeatTime = DateTime.Now; + while (!_equipment.IsDisposed) + { + try + { + Thread.Sleep(10); + + if (commandlist.Count > 0) + { + byte[] recvData = (byte[])commandlist.Dequeue(); + byte[] size = new byte[4]; + byte[] bcode = new byte[2]; + + Array.Copy(recvData, size, size.Length); + Array.Copy(recvData, 4, bcode, 0, bcode.Length); + short code = BitConverter.ToInt16(bcode, 0); + + switch (code) + { + case (short)VisionToControlCommand.VisionReadyAck: + { + SendInspReadyEndAck(); + break; + } + case (short)VisionToControlCommand.InspReadyEnd: + { + RecvInspReadyEnd(recvData, out _inspectionReadyEndValue); + + break; + } + case (short)VisionToControlCommand.WaferDetectionReadyAck: + { + + break; + } + case (short)VisionToControlCommand.WaferDetectionReadyEnd: + { + SendInspReadyEndAck(); + break; + } + case (short)VisionToControlCommand.WaferDetectionStartAck: + { + break; + } + case (short)VisionToControlCommand.WaferDetectionResult: + { + RecvWaferDetectionResult(recvData, out _waferDetectionResultValue); + SendWaferDetectionResultAck(); + break; + } + case (short)VisionToControlCommand.RecipeChangeSwitchAck: + { + RecvRecipeSwitchAck(recvData, out _recipeSwitchAckValue); + break; + } + case (short)VisionToControlCommand.RecipeChangeUpdate: + { + RecvRecipeUpdate(recvData, out _recipeUpdateValue); + break; + } + case (short)VisionToControlCommand.Alarm: + { + RecvAlarm(recvData, out _alarmOccuredValue); + break; + } + case (short)VisionToControlCommand.AliveAck: + { + AliveAck aliveAck; + RecvAliveAck(recvData, out aliveAck); + + AliveAck = aliveAck.Run; + break; + } + default: + break; + } + + alive_check = DateTime.Now; + + if (CommnadAcks.ContainsKey((VisionToControlCommand)code)) + { + CommnadAcks[(VisionToControlCommand)code] = true; + } + } + else + { + if((DateTime.Now - heartBeatTime).TotalSeconds > _equipment.settingParameterManager.SettingParameter.VisionHeartBeatTimeOut - 0.5) + { + SendRequestAlive(); + heartBeatTime = DateTime.Now; + } + } + + if ((DateTime.Now - alive_check).TotalSeconds > _equipment.settingParameterManager.SettingParameter.VisionHeartBeatTimeOut) + { + if (isConnected) + { + Disconnect(); + continue; + } + } + + if (isConnected == false) + { + if ((DateTime.Now - connect_time_check).TotalSeconds > 3) + { + if (Connect()) + { + retry_connect_cnt = 0; + } + else + { + if (retry_connect_cnt > 3) + { + //Alarm. + } + + retry_connect_cnt++; + } + + connect_time_check = DateTime.Now; + } + } + } + catch (Exception ex) + { + + } + } + } + + public void Received(object sender, ReceiveEventArgs events) + { + byte[] data = new byte[events.stateobject.Received_data.Length]; + + Array.Copy(events.stateobject.buffer, data, data.Length); + + //=============================================== + ArrayList recvList = new ArrayList(); + byte[] data1; + byte[] data2; + while (true) + { + bool check = RecvData(data, out data1, out data2); + + if (check) + { + if (data1 != null) + recvList.Add(data1); + + break; + } + else + { + recvList.Add(data1); + + data = data2; + } + } + //=============================================== + + foreach (byte[] commands in recvList) + { + commandlist.Enqueue(commands); + } + } + + private bool RecvData(byte[] recvData, out byte[] Data1, out byte[] Data2) + { + try + { + ArrayList list = new ArrayList(); + + byte[] data = new byte[recvData.Length]; + + Array.Copy(recvData, data, data.Length); + + byte[] bsize = new byte[4]; + Array.Copy(data, bsize, bsize.Length); + + int size = BitConverter.ToInt32(bsize, 0) + 6; + + if (recvData.Length > size) + { + Data1 = new byte[size]; + Array.Copy(recvData, Data1, Data1.Length); + + Data2 = new byte[recvData.Length - size]; + Array.Copy(recvData, Data1.Length, Data2, 0, Data2.Length); + + return false; + } + else if (recvData.Length == size) + { + Data1 = new byte[size]; + Array.Copy(recvData, Data1, Data1.Length); + + Data2 = null; + + return true; + } + else + { + Data1 = recvData; + Data2 = null; + + return true; + } + } + catch (Exception ex) + { + Data1 = null; + Data2 = null; + return true; + } + } + + public bool SendVisionReady(string recipeName) + { + List<byte> sendData = new List<byte>(); + List<byte> body = new List<byte>(); + + byte[] sendRecipeName = new byte[20]; + + Array.Copy(Encoding.ASCII.GetBytes(recipeName), sendRecipeName, recipeName.Length); + body.InsertRange(body.Count, sendRecipeName); + + sendData.InsertRange(sendData.Count, BitConverter.GetBytes(body.Count)); + sendData.InsertRange(sendData.Count, BitConverter.GetBytes((short)ControlToVisionCommand.VisionReady)); + sendData.InsertRange(sendData.Count, body); + + CommnadAcks[VisionToControlCommand.VisionReadyAck] = false; + CommnadAcks[VisionToControlCommand.InspReadyEnd] = false; + + return SendData(sendData.ToArray()); + } + + public bool SendInspReadyEndAck() + { + List<byte> sendData = new List<byte>(); + List<byte> body = new List<byte>(); + + sendData.InsertRange(sendData.Count, BitConverter.GetBytes(body.Count)); + sendData.InsertRange(sendData.Count, BitConverter.GetBytes((short)ControlToVisionCommand.InspReadyEndAck)); + sendData.InsertRange(sendData.Count, body); + + return SendData(sendData.ToArray()); + } + + public bool SendWaferDetectionReady() + { + List<byte> sendData = new List<byte>(); + List<byte> body = new List<byte>(); + + sendData.InsertRange(sendData.Count, BitConverter.GetBytes(body.Count)); + sendData.InsertRange(sendData.Count, BitConverter.GetBytes((short)ControlToVisionCommand.WaferDetectionReady)); + sendData.InsertRange(sendData.Count, body); + + CommnadAcks[VisionToControlCommand.WaferDetectionReadyAck] = false; + CommnadAcks[VisionToControlCommand.WaferDetectionReadyEnd] = false; + + return SendData(sendData.ToArray()); + } + + public bool SendWaferDetectionReadyEndAck() + { + List<byte> sendData = new List<byte>(); + List<byte> body = new List<byte>(); + + sendData.InsertRange(sendData.Count, BitConverter.GetBytes(body.Count)); + sendData.InsertRange(sendData.Count, BitConverter.GetBytes((short)ControlToVisionCommand.WaferDetectionReadyEndAck)); + sendData.InsertRange(sendData.Count, body); + + return SendData(sendData.ToArray()); + } + + public bool SendWaferDetectionStart() + { + List<byte> sendData = new List<byte>(); + List<byte> body = new List<byte>(); + + sendData.InsertRange(sendData.Count, BitConverter.GetBytes(body.Count)); + sendData.InsertRange(sendData.Count, BitConverter.GetBytes((short)ControlToVisionCommand.WaferDetectionStart)); + sendData.InsertRange(sendData.Count, body); + + CommnadAcks[VisionToControlCommand.WaferDetectionStartAck] = false; + CommnadAcks[VisionToControlCommand.WaferDetectionResult] = false; + + return SendData(sendData.ToArray()); + } + + public bool SendWaferDetectionResultAck() + { + List<byte> sendData = new List<byte>(); + List<byte> body = new List<byte>(); + + sendData.InsertRange(sendData.Count, BitConverter.GetBytes(body.Count)); + sendData.InsertRange(sendData.Count, BitConverter.GetBytes((short)ControlToVisionCommand.WaferDetectionResultAck)); + sendData.InsertRange(sendData.Count, body); + + return SendData(sendData.ToArray()); + } + + public bool SendRecipeSwitch(string recipeName) + { + List<byte> sendData = new List<byte>(); + List<byte> body = new List<byte>(); + + byte[] sendRecipeName = new byte[20]; + + Array.Copy(Encoding.ASCII.GetBytes(recipeName), sendRecipeName, recipeName.Length); + body.InsertRange(body.Count, sendRecipeName); + + sendData.InsertRange(sendData.Count, BitConverter.GetBytes(body.Count)); + sendData.InsertRange(sendData.Count, BitConverter.GetBytes((short)ControlToVisionCommand.RecipeSwitch)); + sendData.InsertRange(sendData.Count, body); + + CommnadAcks[VisionToControlCommand.RecipeChangeSwitchAck] = false; + CommnadAcks[VisionToControlCommand.RecipeChangeUpdate] = false; + + return SendData(sendData.ToArray()); + } + + public bool SendRecipeUpdateAck() + { + List<byte> sendData = new List<byte>(); + List<byte> body = new List<byte>(); + + sendData.InsertRange(sendData.Count, BitConverter.GetBytes(body.Count)); + sendData.InsertRange(sendData.Count, BitConverter.GetBytes((short)ControlToVisionCommand.RecipeUpdateAck)); + sendData.InsertRange(sendData.Count, body); + + return SendData(sendData.ToArray()); + } + + public bool SendAlarmAck() + { + List<byte> sendData = new List<byte>(); + List<byte> body = new List<byte>(); + + sendData.InsertRange(sendData.Count, BitConverter.GetBytes(body.Count)); + sendData.InsertRange(sendData.Count, BitConverter.GetBytes((short)ControlToVisionCommand.AlarmAck)); + sendData.InsertRange(sendData.Count, body); + + CommnadAcks[VisionToControlCommand.Alarm] = false; + + return SendData(sendData.ToArray()); + } + + public bool SendRequestAlive() + { + List<byte> sendData = new List<byte>(); + List<byte> body = new List<byte>(); + + sendData.InsertRange(sendData.Count, BitConverter.GetBytes(body.Count)); + sendData.InsertRange(sendData.Count, BitConverter.GetBytes((short)ControlToVisionCommand.RequestAlive)); + sendData.InsertRange(sendData.Count, body); + + CommnadAcks[VisionToControlCommand.AliveAck] = false; + return SendData(sendData.ToArray()); + } + + private new bool SendData(byte[] data) + { + try + { + if (isConnected) + { + string str = string.Empty; + foreach (byte bt in data) + { + str += $"{bt} "; + } + + return base.SendData(data); + } + else + { + return false; + } + } + catch (Exception ex) + { + return false; + } + } + + //================================================================= + + private void RecvInspReadyEnd(byte[] recvData, out InspReadyEnd value) + { + byte[] size = new byte[4]; + byte[] command = new byte[2]; + byte[] recipeName = new byte[20]; + + int copylength = 0; + Array.Copy(recvData, size, size.Length); + copylength += size.Length; + Array.Copy(recvData, copylength, command, 0, command.Length); + copylength += command.Length; + Array.Copy(recvData, copylength, recipeName, 0, recipeName.Length); + copylength += recipeName.Length; + + string resultRecipeName = BitConverter.ToString(recipeName, 0); + + value = new InspReadyEnd(resultRecipeName); + } + + private void RecvWaferDetectionResult(byte[] recvData, out WaferDetectionResult value) + { + byte[] size = new byte[4]; + byte[] command = new byte[2]; + byte[] byteResult = new byte[4]; + byte[] byteResultX = new byte[8]; + byte[] byteResultY = new byte[8]; + byte[] byteResultT = new byte[8]; + + int copylength = 0; + Array.Copy(recvData, size, size.Length); + copylength += size.Length; + Array.Copy(recvData, copylength, command, 0, command.Length); + copylength += command.Length; + Array.Copy(recvData, copylength, byteResult, 0, byteResult.Length); + copylength += byteResult.Length; + Array.Copy(recvData, copylength, byteResultX, 0, byteResultX.Length); + copylength += byteResultX.Length; + Array.Copy(recvData, copylength, byteResultY, 0, byteResultY.Length); + copylength += byteResultY.Length; + Array.Copy(recvData, copylength, byteResultT, 0, byteResultT.Length); + copylength += byteResultT.Length; + + int result = BitConverter.ToInt32(byteResult, 0); + double resultX = BitConverter.ToDouble(byteResultX, 0); + double resultY = BitConverter.ToDouble(byteResultY, 0); + double resultT = BitConverter.ToDouble(byteResultT, 0); + + resultY = -resultY; + + value = new WaferDetectionResult(result, resultX, resultY, resultT); + } + + private void RecvRecipeSwitchAck(byte[] recvData, out RecipeSwitchAck value) + { + byte[] size = new byte[4]; + byte[] command = new byte[2]; + byte[] byteResult = new byte[4]; + + int copylength = 0; + Array.Copy(recvData, size, size.Length); + copylength += size.Length; + Array.Copy(recvData, copylength, command, 0, command.Length); + copylength += command.Length; + Array.Copy(recvData, copylength, byteResult, 0, byteResult.Length); + copylength += byteResult.Length; + + int result = BitConverter.ToInt32(byteResult, 0); + value = new RecipeSwitchAck(result); + } + + private void RecvRecipeUpdate(byte[] recvData, out RecipeUpdate value) + { + byte[] size = new byte[4]; + byte[] command = new byte[2]; + byte[] recipeName = new byte[20]; + + int copylength = 0; + Array.Copy(recvData, size, size.Length); + copylength += size.Length; + Array.Copy(recvData, copylength, command, 0, command.Length); + copylength += command.Length; + Array.Copy(recvData, copylength, recipeName, 0, recipeName.Length); + copylength += recipeName.Length; + + string resultRecipeName = BitConverter.ToString(recipeName, 0); + + value = new RecipeUpdate(resultRecipeName); + } + + private void RecvAlarm(byte[] recvData, out AlarmOccured value) + { + byte[] size = new byte[4]; + byte[] command = new byte[2]; + byte[] byteAlarmCode = new byte[4]; + + int copylength = 0; + Array.Copy(recvData, size, size.Length); + copylength += size.Length; + Array.Copy(recvData, copylength, command, 0, command.Length); + copylength += command.Length; + Array.Copy(recvData, copylength, byteAlarmCode, 0, byteAlarmCode.Length); + copylength += byteAlarmCode.Length; + + int alarmCode = BitConverter.ToInt32(byteAlarmCode, 0); + + value = new AlarmOccured(alarmCode); + } + + private void RecvAliveAck(byte[] recvData, out AliveAck value) + { + byte[] size = new byte[4]; + byte[] command = new byte[2]; + byte[] byteResult = new byte[4]; + + int copylength = 0; + Array.Copy(recvData, size, size.Length); + copylength += size.Length; + Array.Copy(recvData, copylength, command, 0, command.Length); + copylength += command.Length; + Array.Copy(recvData, copylength, byteResult, 0, byteResult.Length); + copylength += byteResult.Length; + + int result = BitConverter.ToInt32(byteResult, 0); + + value = new AliveAck(result); + } + } + + public struct VisionReadyAck + { + public int result { get; private set; } + + public VisionReadyAck(int result = 0) + { + this.result = result; + } + } + + public struct InspReadyEnd + { + public string RecipeName { get; private set; } + + public InspReadyEnd(string recipeName) + { + this.RecipeName = recipeName; + } + } + + public struct WaferDetectionResult + { + public int Result { get; private set; } + public double ResultX { get; private set; } + public double ResultY { get; private set; } + public double ResultT { get; private set; } + + public WaferDetectionResult(int result, double resultX, double resultY, double resultT) + { + this.Result = result; + this.ResultX = resultX; + this.ResultY = resultY; + this.ResultT = resultT; + } + } + + public struct RecipeSwitchAck + + { + public int Result { get; private set; } + + public RecipeSwitchAck(int result) + { + this.Result = result; + } + } + + public struct RecipeUpdate + { + public string RecipeName { get; private set; } + + public RecipeUpdate(string recipeName) + { + this.RecipeName = recipeName; + } + } + + public struct AlarmOccured + { + public int AlarmCode { get; private set; } + + public AlarmOccured(int alarmCode) + { + this.AlarmCode = alarmCode; + } + } + + public struct AliveAck + { + public int Run { get; private set; } + + public AliveAck(int run) + { + this.Run = run; + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Parameter/ModeParameter.cs b/SA_LTT_UI/SA_LTT/Parameter/ModeParameter.cs new file mode 100644 index 0000000..3370e50 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Parameter/ModeParameter.cs @@ -0,0 +1,24 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT.Parameter +{ + public class ModeParameter + { + public bool EnergyDropCheckUse { get; set; } + public bool AttenuatorCalUse { get; set; } + public bool EnergyMeasurementUse { get; set; } + public bool ShutterAlwaysUse { get; set; } + public bool AlignUse { get; set; } + + public ModeParameter Clone() + { + ModeParameter modeParameter = (ModeParameter)this.MemberwiseClone(); + + return modeParameter; + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Parameter/ModeParameterManager.cs b/SA_LTT_UI/SA_LTT/Parameter/ModeParameterManager.cs new file mode 100644 index 0000000..a80648f --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Parameter/ModeParameterManager.cs @@ -0,0 +1,58 @@ +癤퓎sing SA_LTT.Base; +using System.IO; + +namespace SA_LTT.Parameter +{ + public class ModeParameterManager : XmlManager<ModeParameter> + { + readonly string _fileName = "ModeParameter.xml"; + readonly string _filePath = @"Parameter\"; + + private ModeParameter _modeParameter = new ModeParameter(); + + public ModeParameter ModeParameter + { + get + { + return _modeParameter.Clone(); + } + + private set + { + _modeParameter = value; + } + } + + public void Refresh() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.settingFilePath + _filePath); + + if (directoryInfo.Exists == false) + { + directoryInfo.Create(); + } + + FileInfo fileInfo = new FileInfo(directoryInfo.FullName + _fileName); + + if(fileInfo.Exists == false) + { + SaveFile(fileInfo.FullName, ModeParameter); + } + else + { + ModeParameter modeParameter = new ModeParameter(); + + modeParameter = ReadFile(fileInfo.FullName); + + ModeParameter = modeParameter.Clone(); + } + } + + public void Save(ModeParameter modeParameter) + { + SaveFile(Equipment.settingFilePath + _filePath + _fileName, modeParameter); + + ModeParameter = modeParameter.Clone(); + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Parameter/SettingParameter.cs b/SA_LTT_UI/SA_LTT/Parameter/SettingParameter.cs new file mode 100644 index 0000000..330ef01 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Parameter/SettingParameter.cs @@ -0,0 +1,55 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT.Parameter +{ + public class SettingParameter + { + public double EnergyDropCheckCycle { get; set; } + public double EnergyDropCheckMeasurementTime { get; set; } + public float EnergyDropCheckTargetAngle { get; set; } + public double EnergyDropCheckTargetEnergy { get; set; } + public double EnergyDropCheckErrorOccuredRange { get; set; } + + public double AttenuatorCalCycle { get; set; } + public double AttenuatorCalMeasurementTime { get; set; } + public double AttenuatorCalCoolingTime { get; set; } + public float AttenuatorCalStartAngle { get; set; } + public float AttenuatorCalEndAngle { get; set; } + public float AttenuatorCalAngleStep { get; set; } + + public double EnergyMeasurementCycle { get; set; } + public double EnergyMeasurementWaferCountCycle { get; set; } + public double EnergyMeasurementErrorOccuredRange { get; set; } + public double EnergyMeasurementTime { get; set; } + public float EnergyMeasurmentStepAngle { get; set; } + public int EnergyMeasurementRetryCount { get; set; } + + public double EnergyMeterHeatingTime { get; set; } + public double BeamHeight { get; set; } + public double BeamWidth { get; set; } + + public double VisionTimeOut { get; set; } + public double VisionHeartBeatTimeOut { get; set; } + + public SettingParameter() + { + AttenuatorCalAngleStep = 0.1f; + EnergyMeasurmentStepAngle = 0.1f; + BeamHeight = 0.1; + BeamWidth = 0.1; + VisionTimeOut = 1; + VisionHeartBeatTimeOut = 1; + } + + public SettingParameter Clone() + { + SettingParameter settingParameter = (SettingParameter)this.MemberwiseClone(); + + return settingParameter; + } + } +} diff --git a/SA_LTT_UI/SA_LTT/Parameter/SettingParameterManager.cs b/SA_LTT_UI/SA_LTT/Parameter/SettingParameterManager.cs new file mode 100644 index 0000000..5d47415 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Parameter/SettingParameterManager.cs @@ -0,0 +1,59 @@ +癤퓎sing SA_LTT.Base; +using System.IO; +using System.Reflection; + +namespace SA_LTT.Parameter +{ + public class SettingParameterManager : XmlManager<SettingParameter> + { + readonly string _fileName = "SettingParameter.xml"; + readonly string _filePath = @"Parameter\"; + + private SettingParameter _settingParameter = new SettingParameter(); + + public SettingParameter SettingParameter + { + get + { + return _settingParameter.Clone(); + } + + private set + { + _settingParameter = value; + } + } + + public void Refresh() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.settingFilePath + _filePath); + + if (directoryInfo.Exists == false) + { + directoryInfo.Create(); + } + + FileInfo fileInfo = new FileInfo(directoryInfo.FullName + _fileName); + + if (fileInfo.Exists == false) + { + SaveFile(fileInfo.FullName, _settingParameter); + } + else + { + SettingParameter settingParameter = new SettingParameter(); + + settingParameter = ReadFile(fileInfo.FullName); + + SettingParameter = settingParameter.Clone(); + } + } + + public void Save(SettingParameter settingParameter) + { + SaveFile(Equipment.settingFilePath + _filePath + _fileName, settingParameter); + + SettingParameter = settingParameter.Clone(); + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Properties/AssemblyInfo.cs b/SA_LTT_UI/SA_LTT/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4749c5c --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +癤퓎sing System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SA_LTT")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SA_LTT")] +[assembly: AssemblyCopyright("Copyright 짤 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("190da844-e3b7-4813-a72a-03f2bdaebd43")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SA_LTT_UI/SA_LTT/SA_LTT.csproj b/SA_LTT_UI/SA_LTT/SA_LTT.csproj new file mode 100644 index 0000000..d03373e --- /dev/null +++ b/SA_LTT_UI/SA_LTT/SA_LTT.csproj @@ -0,0 +1,136 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{190DA844-E3B7-4813-A72A-03F2BDAEBD43}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>SA_LTT</RootNamespace> + <AssemblyName>SA_LTT</AssemblyName> + <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="EasyModbus"> + <HintPath>Dll\EasyModbus.dll</HintPath> + </Reference> + <Reference Include="log4net"> + <HintPath>Dll\log4net.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Alarm\Alarm.cs" /> + <Compile Include="Alarm\AlarmCode.cs" /> + <Compile Include="Alarm\AlarmManager.cs" /> + <Compile Include="Base\SequenceTimer.cs" /> + <Compile Include="Base\SocketClient.cs" /> + <Compile Include="Base\XmlManager.cs" /> + <Compile Include="Equipment.cs" /> + <Compile Include="Info\AttenuatorCalInfo\AttenuatorCalData.cs" /> + <Compile Include="Info\AttenuatorCalInfo\AttenuatorCalInfo.cs" /> + <Compile Include="Info\EquipmentInfo\EquipmentInfo.cs" /> + <Compile Include="Info\FoupInfo\Foup.cs" /> + <Compile Include="Info\RecipeInfo\FoupRecipe.cs" /> + <Compile Include="Info\RecipeInfo\FoupRecipeManager.cs" /> + <Compile Include="Info\RecipeInfo\Recipe.cs" /> + <Compile Include="Info\RecipeInfo\RecipeManager.cs" /> + <Compile Include="Info\WaferInfo\WaferInfo.cs" /> + <Compile Include="Info\WaferInfo\WaferInfoManager.cs" /> + <Compile Include="Log\EquipmentLogManager.cs" /> + <Compile Include="Log\LogCreater.cs" /> + <Compile Include="MessageBox.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="MessageBox.Designer.cs"> + <DependentUpon>MessageBox.cs</DependentUpon> + </Compile> + <Compile Include="Module\Attenuator.cs" /> + <Compile Include="Module\Chamber.cs" /> + <Compile Include="Module\Chiller.cs" /> + <Compile Include="Module\Crevis.cs" /> + <Compile Include="Module\E5CC.cs" /> + <Compile Include="Module\FFU.cs" /> + <Compile Include="Module\GR200.cs" /> + <Compile Include="Module\ModuleBase.cs" /> + <Compile Include="Module\Motor.cs" /> + <Compile Include="Module\PiLaser.cs" /> + <Compile Include="Module\PowerMeter.cs" /> + <Compile Include="Module\PowerPmacCtrl.cs" /> + <Compile Include="Module\PreAligner.cs" /> + <Compile Include="Module\Robot.cs" /> + <Compile Include="Module\RTC5\RTC5Wrap.cs" /> + <Compile Include="Module\Scanner.cs" /> + <Compile Include="Base\ComPort.cs" /> + <Compile Include="Module\VisionControl.cs" /> + <Compile Include="Parameter\ModeParameter.cs" /> + <Compile Include="Parameter\ModeParameterManager.cs" /> + <Compile Include="Parameter\SettingParameter.cs" /> + <Compile Include="Parameter\SettingParameterManager.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Sequence.cs" /> + <Compile Include="Info\UserInfo\User.cs" /> + <Compile Include="Info\UserInfo\UserManager.cs" /> + </ItemGroup> + <ItemGroup> + <COMReference Include="Microsoft.Office.Core"> + <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid> + <VersionMajor>2</VersionMajor> + <VersionMinor>5</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>primary</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="VBIDE"> + <Guid>{0002E157-0000-0000-C000-000000000046}</Guid> + <VersionMajor>5</VersionMajor> + <VersionMinor>3</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>primary</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="MessageBox.resx"> + <DependentUpon>MessageBox.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT/Sequence.cs b/SA_LTT_UI/SA_LTT/Sequence.cs new file mode 100644 index 0000000..a178eaa --- /dev/null +++ b/SA_LTT_UI/SA_LTT/Sequence.cs @@ -0,0 +1,2517 @@ +癤퓎sing SA_LTT.Info.AttenuatorCalInfo; +using SA_LTT.Info.RecipeInfo; +using SA_LTT.Info.WaferInfo; +using SA_LTT.Module; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SA_LTT +{ + public delegate void RecipeExcuteEvent(Recipe recipe); + public delegate void ProcessInfoExcuteEvent(ProcessInfo _processInfo, int processInfoIndex); + + public class Sequence + { + /* + Port Get + Pre Aligner Flip Put + Align + Pre Align Get + Chamber Put + + Melting + + Chamber Get + Pre Aligner Flip Put + Align + Pre Aligner Flip Get + Port Put + */ + + public enum TmcSteps + { + Wait, + + StatusCheck, + + LoadPortMapping, + CheckMappingData, + + ProcessDataCheck, + + GetLoadPort, + CheckGetLoadPort, + + BeforePutPreAlignerFlip, + CheckBeforePutPreAlignerFlip, + BeforeGetWaitPreAligner, //GetWait 紐낅졊 �궇�젮 �넃怨� Align 吏꾪뻾. (TactTime 媛먯냼) + BeforeAlign, + BeforeAlignWait, + BeforeGetPreAligner, + CheckBeforeGetPreAligner, + AlignHomeStart, + + ChamberStatusCheck, + PutChamber, + CheckPutChamber, + + MeltingWait, // 媛�怨� �셿猷� ��湲�. + + GetChamber, + CheckGetChamber, + + AlignHomeCheck, + AfterPutPreAlignerFlip, + CheckAfterPutPreAlignerFlip, + AfterGetWaitPreAligner, //GetWait 紐낅졊 �궇�젮 �넃怨� Align 吏꾪뻾. (TactTime 媛먯냼) + AfterAlign, + AfterAlignWait, + AfterGetPreAligner, + CheckAfterGetPreAligner, + + PutLoadPort, + CheckPutLoadPort, + + End, + } + + public enum PmcSteps + { + Wait, + + //Wafer 諛쏄린 ��湲� + StatusCheck, + BeforeMoveLoadPosition, + CheckBeforeLoadPosition, + BeforeGateOpen, + BeforePinUp, + WaferPutWait, + + //Wafer 諛쏆� �썑 �씠�룞 + BeforeVacuumOn, + BeforePinDown, + BeforeGateClose, + + Melting, + + // Manual 媛�怨� -> + MoveCenterPosition, + CheckCenterPosition, + GetRecipeData, + + // ============================= + + //===Wafer Align 吏꾪뻾 + MoveAlignPosition, + CheckAlignPosition, + VisionReady, + VisionReadyCheck, + WaferDetectionReady, + WaferDetectionReadyCheck, + WaferDetection, + WaferDetectionCheck, + MoveOffsetPosition, + CheckOffsetPositon, + + //==================== + + //===�쟾泥� 媛�怨� �쁺�뿭 �떎 醫낅즺 �맆�븣 源뚯� 諛섎났 援ш컙=== + GetProcessInfoData, //�젅�떆�뵾�뿉 �엳�뒗 媛�怨� 醫뚰몴 媛��졇�삤湲� + CoordTransform, //媛�怨� 醫뚰몴瑜� Scanner, Stage�뿉 留욊쾶 蹂��솚 �븯�뒗 �옉�뾽. + + // Todo. Power 痢≪젙 湲곕뒫 �꽔湲�.=== Attenuator Set ���떊 + CalDataAttenuatorSet, // 異뷀썑 紐낆묶 蹂�寃� + CalDataCheckAttenuator, // 異뷀썑 紐낆묶 蹂�寃� + MovePowerMeterPosition, + CheckPowerMeterPosition, + PowerMeterInitialize, + PowerMeterInitializeCheck, + LaserOn, + MeasurementStart, + Measurement, + MeasurementEnd, + MeasurrmentDataCheck, + AttenuatorSet, + CheckAttenuator, + // ============================ + + MoveProcessStartPosition, + CheckProcessStartPosition, + + ProcessStart, + ProcessRunning, + ProcessEnd, + //======================================== + + //媛�怨� 醫낅즺 + AfterMoveLoadPosition, + CheckAfterLoadPosition, + AfterGateOpen, + AfterVacuumOff, + AfterPinUp, + WaferEmptyWait, + PinDown, + GateClose, + End, + + //Energy drop check + EnergyDropCheckStart, + EdcPowerMeterInitialize, + EdcPowerMeterInitializeCheck, + EdcMoveCenterPosition, + EdcCheckCenterPosition, + EdcMovePowerMeterPosition, + EdcCheckPowerMeterPosition, + EdcAttenuatorSet, + EdcCheckAttenuator, + EdcLaserOn, + EdcMeasurementStart, + EdcMeasurement, + EdcMeasurementLaserOff, + EdcMeasurementLaserOffCheck, + EdcMeasurementEnd, + EdcMeasurementDataCheck, + EdcLaserOff, + EdcLaserOffCheck, + EnergyDropCheckEnd, + + //Attenuator Cal + AttenuatorCalStart, + AcPowerMeterInitialize, + AcPowerMeterInitializeCheck, + AcMoveCenterPosition, + AcCheckCenterPosition, + AcMovePowerMeterPosition, + AcCheckPowerMeterPosition, + AcAttenuatorSet, + AcCheckAttenuator, + AcCoolingTimeWait, + AcLaserOn, + AcMeasurementStart, + AcMeasurement, + AcMeasurementLaserOff, + AcMeasurementLaserOffCheck, + AcMeasurementEnd, + AcMeasurementDataCheck, + AcLaserOff, + AcLaserOffCheck, + AttenuatorCalEnd, + } + + private Equipment _equipment; + + private SequenceTimer _processTimer = new SequenceTimer(); + private SequenceTimer _pmcSequenceTimer = new SequenceTimer(); + private SequenceTimer _tmcSequenceTimer = new SequenceTimer(); + private SequenceTimer _measurementTimer = new SequenceTimer(); + + private PmcSteps _pmcStep = PmcSteps.Wait; + private PmcSteps _pmcStepOld = PmcSteps.Wait; + + private TmcSteps _tmcStep = TmcSteps.Wait; + private TmcSteps _tmcStepOld = TmcSteps.Wait; + + private List<TmcSteps> _pauseDisableTmcSteps; + private List<PmcSteps> _pauseDisablePmcSteps; + + private Recipe _currentRecipe; + private ProcessInfo _oldProcessInfo; + private ProcessInfo _processInfo; + private int _processNum; + + private double _centerPositionX; + private double _centerPositionY; + private double _centerPositionT; + + private double _alignOffsetX; + private double _alignOffsetY; + private double _alignOffsetT; + + private double _processStartPositionX; // 媛�怨� �떆�옉 X 異� �쐞移� + private double _processStartPositionY; // 媛�怨� �떆�옉 Y 異� �쐞移� + private double _processEndPositionX; // 媛�怨� 醫낅즺 X異� �쐞移� + private double _stageVelocity; // Stage 媛�怨� �냽�룄 + + private float _currentAttenuatorCalAngle; + + private Info.FoupInfo.Foup currentFoup; + + private float _setAttenuatorAngle; + private int _processNumber; + private bool _processStartBit; + private bool _processEndBit; + private bool _chamberWaferEmptyBit; + private int _measurementCount; + private int _waferProcessCountAfterMeasurement; + private DateTime _lastMeasurementTime = DateTime.Now; + + private List<AttenuatorCalData> _attenuatorCalData = new List<AttenuatorCalData>(); + public PmcSteps PmcStep + { + get + { + return _pmcStep; + } + + private set + { + _pmcStep = value; + } + } + + public TmcSteps TmcStep + { + get + { + return _tmcStep; + } + + private set + { + _tmcStep = value; + } + } + + //媛�怨� �떆媛� TactTime + public double ProcessTactTimeSeconds + { + get + { + return _processTimer.Seconds; + } + } + + public bool IsTmcStepPauseEnable + { + get + { + return _pauseDisableTmcSteps.Contains(TmcStep) == false; + } + } + + public bool IsPmcStepPauseEnable + { + get + { + return _pauseDisablePmcSteps.Contains(PmcStep) == false; + } + } + + // Recipe �벑濡�, �씠踰ㅽ듃 �븯�굹留� �벑濡앺빐�꽌 �궗�슜�븷 寃�. begin invoke �궗�슜. + public event RecipeExcuteEvent RecipeExcuted; + + // Recipe�쓽 ProcessInfo �벑濡�, �씠踰ㅽ듃 �븯�굹留� �벑濡앺빐�꽌 �궗�슜�븷 寃�. begin invoke �궗�슜. + public event ProcessInfoExcuteEvent ProcessInfoExcuted; + + public Sequence(Equipment equipment) + { + _equipment = equipment; + _pauseDisableTmcSteps = new List<TmcSteps>(); + _pauseDisablePmcSteps = new List<PmcSteps>(); + + _pauseDisableTmcSteps.Add(TmcSteps.CheckMappingData); + _pauseDisableTmcSteps.Add(TmcSteps.CheckGetLoadPort); + _pauseDisableTmcSteps.Add(TmcSteps.CheckBeforePutPreAlignerFlip); + _pauseDisableTmcSteps.Add(TmcSteps.CheckBeforeGetPreAligner); + _pauseDisableTmcSteps.Add(TmcSteps.CheckPutChamber); + _pauseDisableTmcSteps.Add(TmcSteps.CheckAfterPutPreAlignerFlip); + _pauseDisableTmcSteps.Add(TmcSteps.CheckAfterGetPreAligner); + _pauseDisableTmcSteps.Add(TmcSteps.CheckPutLoadPort); + _pauseDisableTmcSteps.Add(TmcSteps.End); + + _pauseDisablePmcSteps.Add(PmcSteps.CheckBeforeLoadPosition); + _pauseDisablePmcSteps.Add(PmcSteps.CheckCenterPosition); + _pauseDisablePmcSteps.Add(PmcSteps.CheckAttenuator); + _pauseDisablePmcSteps.Add(PmcSteps.Measurement); + _pauseDisablePmcSteps.Add(PmcSteps.MeasurementEnd); + _pauseDisablePmcSteps.Add(PmcSteps.CheckProcessStartPosition); + _pauseDisablePmcSteps.Add(PmcSteps.ProcessRunning); + _pauseDisablePmcSteps.Add(PmcSteps.ProcessEnd); + _pauseDisablePmcSteps.Add(PmcSteps.CheckAfterLoadPosition); + _pauseDisablePmcSteps.Add(PmcSteps.AfterPinUp); + _pauseDisablePmcSteps.Add(PmcSteps.End); + + //Energy drop check + _pauseDisablePmcSteps.Add(PmcSteps.EdcCheckCenterPosition); + _pauseDisablePmcSteps.Add(PmcSteps.EdcCheckPowerMeterPosition); + _pauseDisablePmcSteps.Add(PmcSteps.EdcCheckAttenuator); + _pauseDisablePmcSteps.Add(PmcSteps.EdcMeasurement); + _pauseDisablePmcSteps.Add(PmcSteps.EdcMeasurementEnd); + _pauseDisablePmcSteps.Add(PmcSteps.EdcMeasurementLaserOff); + _pauseDisablePmcSteps.Add(PmcSteps.EdcMeasurementLaserOffCheck); + _pauseDisablePmcSteps.Add(PmcSteps.EdcLaserOff); + _pauseDisablePmcSteps.Add(PmcSteps.EdcLaserOffCheck); + _pauseDisablePmcSteps.Add(PmcSteps.EnergyDropCheckEnd); + + //AttenuatorCal + _pauseDisablePmcSteps.Add(PmcSteps.AcCheckCenterPosition); + _pauseDisablePmcSteps.Add(PmcSteps.AcCheckPowerMeterPosition); + _pauseDisablePmcSteps.Add(PmcSteps.AcCheckAttenuator); + _pauseDisablePmcSteps.Add(PmcSteps.AcMeasurement); + _pauseDisablePmcSteps.Add(PmcSteps.AcMeasurementEnd); + _pauseDisablePmcSteps.Add(PmcSteps.AcLaserOff); + _pauseDisablePmcSteps.Add(PmcSteps.AcLaserOffCheck); + _pauseDisablePmcSteps.Add(PmcSteps.AttenuatorCalEnd); + } + + public void TmcSequence() + { + if (TmcStep != _tmcStepOld) + { + EquipmentLogManager.Instance.WriteTmcSequenceLog(TmcStep.ToString()); + _tmcStepOld = TmcStep; + _tmcSequenceTimer.ReStart(); + } + + switch (TmcStep) + { + case TmcSteps.Wait: + { + break; + } + case TmcSteps.StatusCheck: + { + if (_equipment.crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_1] || _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_2]) + { + if (_equipment.port1Foup.status == Info.FoupInfo.FoupStatus.Ready || _equipment.port1Foup.status == Info.FoupInfo.FoupStatus.Ready) + { + if (_equipment.port1Foup.status == Info.FoupInfo.FoupStatus.Ready) + { + EquipmentLogManager.Instance.WriteProcessLog("Foup 1 Process start !!"); + currentFoup = _equipment.port1Foup; + } + else + { + EquipmentLogManager.Instance.WriteProcessLog("Foup 2 Process start !!"); + currentFoup = _equipment.port2Foup; + } + + _processNumber = 0; + currentFoup.status = Info.FoupInfo.FoupStatus.Process; + TmcStep = TmcSteps.LoadPortMapping; + } + else + { + TmcStep = TmcSteps.End; + } + } + else + { + TmcStep = TmcSteps.End; + } + break; + } + case TmcSteps.LoadPortMapping: + { + if (_equipment.robot.MappingSeq(currentFoup.portNumber)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Port {currentFoup.portNumber} mapping"); + TmcStep = TmcSteps.CheckMappingData; + } + else + { + //MappingSeq �궡遺��뿉 alarm 諛쒖깮 �맖. + } + break; + } + case TmcSteps.CheckMappingData: + { + if (_equipment.robot.IsRunEnable) // Mapping �셿猷� �솗�씤. + { + if (_equipment.robot.IsMappingError) + { + EquipmentLogManager.Instance.WriteProcessLog($"Mapping {currentFoup.portNumber} Error Restart."); + TmcStep = TmcSteps.LoadPortMapping; + } + else + { + TmcStep = TmcSteps.ProcessDataCheck; + } + } + break; + } + case TmcSteps.ProcessDataCheck: + { + for (; _processNumber < 25; _processNumber++) + { + if (currentFoup.foupRecipe.RecipeNames[_processNumber] != null) + { + if (currentFoup.portNumber == 1) + { + if (_equipment.waferInfoManager.GetWaferInfo(Info.WaferInfo.WaferInfoManager.WaferNumbers.A1 + _processNumber).IsStatus == Info.WaferInfo.WaferInfo.WaferStatus.Exist) + { + break; + } + } + else + { + if (_equipment.waferInfoManager.GetWaferInfo(Info.WaferInfo.WaferInfoManager.WaferNumbers.B1 + _processNumber).IsStatus == Info.WaferInfo.WaferInfo.WaferStatus.Exist) + { + break; + } + } + } + } + + if(_equipment.IsRunStop) // 留덉�留� �썾�씠�띁 �걹�궃 �썑 醫낅즺. + { + currentFoup.status = Info.FoupInfo.FoupStatus.Complete; + TmcStep = TmcSteps.End; + } + else + { + if (_processNumber == 25) + { + currentFoup.status = Info.FoupInfo.FoupStatus.Complete; + TmcStep = TmcSteps.StatusCheck; + } + else + { + if(PmcStep == PmcSteps.Wait) + { + PmcStep = PmcSteps.StatusCheck; + } + + TmcStep = TmcSteps.GetLoadPort; + } + } + break; + } + case TmcSteps.GetLoadPort: + { + if (currentFoup.portNumber == 1) + { + if (_equipment.robot.Get(Robot.StageList.Port1, _processNumber + 1)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Get port : {currentFoup.portNumber} lot {_processNumber + 1}"); + TmcStep = TmcSteps.CheckGetLoadPort; + } + else + { + //Get �궡遺��뿉 alarm 諛쒖깮 �맖. + } + } + else + { + if (_equipment.robot.Get(Robot.StageList.Port2, _processNumber + 1)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Get port : {currentFoup.portNumber} lot {_processNumber + 1}"); + TmcStep = TmcSteps.CheckGetLoadPort; + } + else + { + //Get �궡遺��뿉 alarm 諛쒖깮 �맖. + } + } + + break; + } + case TmcSteps.CheckGetLoadPort: + { + if (_equipment.robot.IsRunEnable) + { + if (_equipment.robot.IsWaferExist) + { + TmcStep = TmcSteps.BeforePutPreAlignerFlip; + } + else + { + _equipment.alarmManager.Occur(AlarmCode.AL_0074_ROBOT_HAS_NOT_WAFER); + TmcStep = TmcSteps.GetLoadPort; + } + } + break; + } + case TmcSteps.BeforePutPreAlignerFlip: + { + if (_equipment.robot.Put(Robot.StageList.AlignFlip)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Put align flip"); + TmcStep = TmcSteps.CheckBeforePutPreAlignerFlip; + } + else + { + //Put �궡遺��뿉 alarm 諛쒖깮 �맖. + } + break; + } + case TmcSteps.CheckBeforePutPreAlignerFlip: + { + if (_equipment.robot.IsRunEnable) + { + if (_equipment.robot.IsWaferExist == false) + { + TmcStep = TmcSteps.BeforeGetWaitPreAligner; + } + else + { + _equipment.alarmManager.Occur(AlarmCode.AL_0077_ROBOT_HAS_WAFER); + } + } + break; + } + case TmcSteps.BeforeGetWaitPreAligner: + { + if (_equipment.robot.GetReady(Robot.StageList.Align)) + { + TmcStep = TmcSteps.BeforeAlign; + } + else + { + //Get Ready �궡遺��뿉 alarm 諛쒖깮 �맖. + } + break; + } + case TmcSteps.BeforeAlign: + { + _equipment.preAligner.Align(180); + EquipmentLogManager.Instance.WriteProcessLog($"Pre align start"); + + TmcStep = TmcSteps.BeforeAlignWait; + break; + } + case TmcSteps.BeforeAlignWait: + { + if (_equipment.preAligner.IsRunEnable) + { + EquipmentLogManager.Instance.WriteProcessLog($"Pre align end"); + TmcStep = TmcSteps.BeforeGetPreAligner; + } + break; + } + case TmcSteps.BeforeGetPreAligner: + { + if (_equipment.robot.Get(Robot.StageList.Align)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Get align"); + TmcStep = TmcSteps.CheckBeforeGetPreAligner; + } + else + { + //Get �궡遺��뿉 alarm 諛쒖깮 �맖. + } + break; + } + case TmcSteps.CheckBeforeGetPreAligner: + { + if (_equipment.robot.IsRunEnable) + { + if (_equipment.robot.IsWaferExist) + { + TmcStep = TmcSteps.ChamberStatusCheck; + //TmcStep = TmcSteps.AlignHomeStart; //23.05.11 Align 援먯껜 �썑 �뀒�뒪�듃 + } + else + { + _equipment.alarmManager.Occur(AlarmCode.AL_0074_ROBOT_HAS_NOT_WAFER); + } + } + break; + } + case TmcSteps.AlignHomeStart: + { + if(_equipment.preAligner.IsRunEnable) + { + _equipment.preAligner.Home(); + TmcStep = TmcSteps.ChamberStatusCheck; + } + break; + } + case TmcSteps.ChamberStatusCheck: + { + if (_equipment.chamber.IsGateOpen && _equipment.chamber.IsLiftPinUp && _equipment.chamber.IsLoadPosition) + { + if(PmcStep == PmcSteps.WaferPutWait) + { + TmcStep = TmcSteps.PutChamber; + } + } + else + { + if(_equipment.IsAttenuatorCalTime() == false && _equipment.IsAttenuatorCalRun == false && _equipment.IsEnergyDropCheckTime() == false&& _equipment.IsEnergyDropCheckRun == false) + { + if (PmcStep == PmcSteps.Wait) + { + PmcStep = PmcSteps.StatusCheck; + } + } + } + break; + } + case TmcSteps.PutChamber: + { + if (_equipment.chamber.IsGateOpen && _equipment.chamber.IsLiftPinUp && _equipment.chamber.IsLoadPosition) + { + if (PmcStep == PmcSteps.WaferPutWait) + { + if (_equipment.robot.Put(Robot.StageList.Chamber)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Put chamber"); + TmcStep = TmcSteps.CheckPutChamber; + } + else + { + //Put �궡遺��뿉 alarm 諛쒖깮 �맖. + } + } + } + break; + } + case TmcSteps.CheckPutChamber: + { + if (_equipment.robot.IsRunEnable) + { + if (_equipment.robot.IsWaferExist == false) + { + _chamberWaferEmptyBit = false; + _processStartBit = true; + TmcStep = TmcSteps.MeltingWait; + } + else + { + _equipment.alarmManager.Occur(AlarmCode.AL_0077_ROBOT_HAS_WAFER); + } + } + break; + } + case TmcSteps.MeltingWait: + { + if (_processEndBit == true) + { + if (_equipment.chamber.IsGateOpen && _equipment.chamber.IsLiftPinUp && _equipment.chamber.IsLoadPosition) + { + if (PmcStep == PmcSteps.WaferEmptyWait) + { + _processEndBit = false; + TmcStep = TmcSteps.GetChamber; + } + } + } + break; + } + case TmcSteps.GetChamber: + { + if (_equipment.chamber.IsGateOpen && _equipment.chamber.IsLiftPinUp && _equipment.chamber.IsLoadPosition) + { + if (PmcStep == PmcSteps.WaferEmptyWait) + { + if (_equipment.robot.Get(Robot.StageList.Chamber)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Get chamber"); + TmcStep = TmcSteps.CheckGetChamber; + } + else + { + //Get �궡遺��뿉 alarm 諛쒖깮 �맖. + } + } + } + break; + } + case TmcSteps.CheckGetChamber: + { + if (_equipment.robot.IsRunEnable) + { + if (_equipment.robot.IsWaferExist) + { + _chamberWaferEmptyBit = true; + TmcStep = TmcSteps.AlignHomeCheck; + } + else + { + _equipment.alarmManager.Occur(AlarmCode.AL_0074_ROBOT_HAS_NOT_WAFER); + } + } + break; + } + case TmcSteps.AlignHomeCheck: + { + if(_equipment.preAligner.IsRunEnable) + { + TmcStep = TmcSteps.AfterPutPreAlignerFlip; + break; + } + break; + } + case TmcSteps.AfterPutPreAlignerFlip: + { + if (_equipment.robot.Put(Robot.StageList.AlignFlip)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Put align flip"); + TmcStep = TmcSteps.CheckAfterPutPreAlignerFlip; + } + else + { + //Put �궡遺��뿉 alarm 諛쒖깮 �맖. + } + break; + } + case TmcSteps.CheckAfterPutPreAlignerFlip: + { + if (_equipment.robot.IsRunEnable) + { + if (_equipment.robot.IsWaferExist == false) + { + TmcStep = TmcSteps.AfterGetWaitPreAligner; + } + else + { + _equipment.alarmManager.Occur(AlarmCode.AL_0077_ROBOT_HAS_WAFER); + } + } + break; + } + case TmcSteps.AfterGetWaitPreAligner: + { + if (_equipment.robot.GetReady(Robot.StageList.Align)) + { + TmcStep = TmcSteps.AfterAlign; + } + else + { + //Get Ready �궡遺��뿉 alarm 諛쒖깮 �맖. + } + break; + } + case TmcSteps.AfterAlign: + { + _equipment.preAligner.Align(0); + EquipmentLogManager.Instance.WriteProcessLog($"Pre algin start"); + + TmcStep = TmcSteps.AfterAlignWait; + break; + } + case TmcSteps.AfterAlignWait: + { + if (_equipment.preAligner.IsRunEnable) + { + EquipmentLogManager.Instance.WriteProcessLog($"Pre algin end"); + TmcStep = TmcSteps.AfterGetPreAligner; + } + + break; + } + case TmcSteps.AfterGetPreAligner: + { + if (_equipment.robot.Get(Robot.StageList.Align)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Get align"); + TmcStep = TmcSteps.CheckAfterGetPreAligner; + } + else + { + //Get �궡遺��뿉 alarm 諛쒖깮 �맖. + } + break; + } + case TmcSteps.CheckAfterGetPreAligner: + { + if (_equipment.robot.IsRunEnable) + { + if (_equipment.robot.IsWaferExist) + { + TmcStep = TmcSteps.PutLoadPort; + } + else + { + _equipment.alarmManager.Occur(AlarmCode.AL_0074_ROBOT_HAS_NOT_WAFER); + } + } + break; + } + case TmcSteps.PutLoadPort: + { + if (currentFoup.portNumber == 1) + { + if (_equipment.robot.Put(Robot.StageList.Port1, _processNumber + 1)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Put port : {currentFoup.portNumber} lot {_processNumber + 1}"); + TmcStep = TmcSteps.CheckPutLoadPort; + } + else + { + //Put �궡遺��뿉 alarm 諛쒖깮 �맖. + } + } + else + { + if (_equipment.robot.Put(Robot.StageList.Port2, _processNumber + 1)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Put port : {currentFoup.portNumber} lot {_processNumber + 1}"); + TmcStep = TmcSteps.CheckPutLoadPort; + } + else + { + //Put �궡遺��뿉 alarm 諛쒖깮 �맖. + } + } + break; + } + case TmcSteps.CheckPutLoadPort: + { + if (_equipment.robot.IsRunEnable) + { + if (_equipment.robot.IsWaferExist == false) + { + _processNumber++; + TmcStep = TmcSteps.ProcessDataCheck; + } + else + { + _equipment.alarmManager.Occur(AlarmCode.AL_0077_ROBOT_HAS_WAFER); + } + } + break; + } + case TmcSteps.End: + { + EquipmentLogManager.Instance.WriteProcessLog($"Process end !!"); + + if (_equipment.IsAutoRun) + { + EquipmentLogManager.Instance.WriteProcessLog($"Auto run checked !!"); + + if (_equipment.port1Foup.status == Info.FoupInfo.FoupStatus.Complete) + { + _equipment.port1Foup.status = Info.FoupInfo.FoupStatus.Ready; + } + + if (_equipment.port2Foup.status == Info.FoupInfo.FoupStatus.Complete) + { + _equipment.port2Foup.status = Info.FoupInfo.FoupStatus.Ready; + } + + TmcStep = TmcSteps.StatusCheck; + } + else + { + TmcStep = TmcSteps.Wait; + } + + break; + } + } + } + + public void PmcSequence() + { + if(PmcStep != _pmcStepOld) + { + EquipmentLogManager.Instance.WritePmcSequenceLog(PmcStep.ToString()); + _pmcStepOld = PmcStep; + _pmcSequenceTimer.ReStart(); + } + + switch(PmcStep) + { + case PmcSteps.Wait: + { + break; + } + case PmcSteps.StatusCheck: + { + _processEndBit = false; + PmcStep = PmcSteps.BeforeMoveLoadPosition; + break; + } + case PmcSteps.BeforeMoveLoadPosition: + { + if(_equipment.chamber.MoveLoadPosition()) + { + PmcStep = PmcSteps.CheckBeforeLoadPosition; + } + break; + } + case PmcSteps.CheckBeforeLoadPosition: + { + if(_equipment.chamber.IsInposition) + { + if(_equipment.chamber.IsLoadPosition) + { + PmcStep = PmcSteps.BeforeGateOpen; + } + else + { + PmcStep = PmcSteps.BeforeMoveLoadPosition; + } + } + break; + } + case PmcSteps.BeforeGateOpen: + { + if (_equipment.chamber.IsGateOpen) + { + PmcStep = PmcSteps.BeforePinUp; + } + else + { + _equipment.chamber.GateOpen(); + } + + break; + } + case PmcSteps.BeforePinUp: + { + if (_equipment.chamber.IsLiftPinUp) + { + PmcStep = PmcSteps.WaferPutWait; + } + else + { + _equipment.chamber.LiftPinUp(); + } + + break; + } + case PmcSteps.WaferPutWait: + { + if(_processStartBit == true) + { + if (_equipment.robot.IsRunEnable && _equipment.chamber.WaferInfo.IsStatus == Info.WaferInfo.WaferInfo.WaferStatus.Exist) + { + _processStartBit = false; + PmcStep = PmcSteps.BeforeVacuumOn; + } + } + break; + } + case PmcSteps.BeforeVacuumOn: + { + if (_equipment.chamber.IsChuckVacuumOn) + { + EquipmentLogManager.Instance.WriteProcessLog($"Before vaccum on"); + PmcStep = PmcSteps.BeforePinDown; + } + else + { + _equipment.chamber.ChuckVacuumOn(); + } + break; + } + case PmcSteps.BeforePinDown: + { + if (_equipment.chamber.IsLiftPinDown) + { + EquipmentLogManager.Instance.WriteProcessLog($"Before lift pin down"); + PmcStep = PmcSteps.BeforeGateClose; + } + else + { + _equipment.chamber.LiftPinDown(); + } + break; + } + case PmcSteps.BeforeGateClose: + { + if(_equipment.chamber.IsGateClose) + { + EquipmentLogManager.Instance.WriteProcessLog($"Before gate close"); + PmcStep = PmcSteps.Melting; + } + else + { + _equipment.chamber.GateClose(); + } + break; + } + case PmcSteps.Melting: + { + double[] CenterDataX = _equipment.powerPmac.GetAxisTeachData(PmacAxis.X_Axis, EnTeachData.CenterPosX); + double[] CenterDataY = _equipment.powerPmac.GetAxisTeachData(PmacAxis.Y_Axis, EnTeachData.CenterPosY); + double[] CenterDataT = _equipment.powerPmac.GetAxisTeachData(PmacAxis.X_Axis, EnTeachData.CenterPosT); + + _centerPositionX = CenterDataX[0]; + _centerPositionY = CenterDataY[0]; + _centerPositionT = CenterDataT[0]; + + PmcStep = PmcSteps.MoveCenterPosition; + break; + } + case PmcSteps.MoveCenterPosition: + { + if(_equipment.chamber.MoveCenterPosition()) + { + EquipmentLogManager.Instance.WriteProcessLog($"Move center position"); + PmcStep = PmcSteps.CheckCenterPosition; + } + break; + } + case PmcSteps.CheckCenterPosition: + { + if (_equipment.chamber.IsInposition) + { + if (_equipment.chamber.IsCenterPosition) + { + PmcStep = PmcSteps.GetRecipeData; + } + else + { + PmcStep = PmcSteps.MoveCenterPosition; + } + } + break; + } + case PmcSteps.GetRecipeData: + { + string recipeName = _equipment.chamber.WaferInfo.RecipeName; + + if (_equipment.recipeManager.ExistsRecipe(recipeName)) + { + _currentRecipe = _equipment.recipeManager.GetRecipe(recipeName); + RecipeExcuted?.BeginInvoke(_currentRecipe, null, null); + + if (_currentRecipe.ProcessInfoList.Count > 0) + { + _processNum = 0; + _processTimer.ReStart(); + + EquipmentLogManager.Instance.WriteProcessLog($"Recipe ('{recipeName}') total process count : {_currentRecipe.ProcessInfoList.Count} start "); + if (_equipment.modeParameterManager.ModeParameter.AlignUse) + { + PmcStep = PmcSteps.MoveAlignPosition; + } + else + { + PmcStep = PmcSteps.GetProcessInfoData; + } + } + else + { + EquipmentLogManager.Instance.WriteProcessLog($"Recipe ('{recipeName}') process data count is 0"); + + if (TmcStep == TmcSteps.Wait) + { + _equipment.SetMessageBox("Manual 媛�怨듭씠 �셿猷� �릺�뿀�뒿�땲�떎."); + PmcStep = PmcSteps.End; + } + else + { + PmcStep = PmcSteps.AfterMoveLoadPosition; + } + } + } + else + { + EquipmentLogManager.Instance.WriteProcessLog($"Recipe ('{recipeName}') is not exist"); + + if (TmcStep == TmcSteps.Wait) + { + _equipment.SetMessageBox("Manual 媛�怨듭씠 �셿猷� �릺�뿀�뒿�땲�떎."); + PmcStep = PmcSteps.End; + } + else + { + PmcStep = PmcSteps.AfterMoveLoadPosition; + } + } + break; + } + case PmcSteps.MoveAlignPosition: + { + if (_equipment.chamber.MoveAlignPosition()) + { + EquipmentLogManager.Instance.WriteProcessLog($"Move align position"); + PmcStep = PmcSteps.CheckAlignPosition; + } + break; + } + case PmcSteps.CheckAlignPosition: + { + if (_equipment.chamber.IsInposition) + { + if (_equipment.chamber.IsAlignPosition) + { + EquipmentLogManager.Instance.WriteProcessLog($"Align start"); + PmcStep = PmcSteps.VisionReady; + } + else + { + PmcStep = PmcSteps.MoveAlignPosition; + } + } + break; + } + case PmcSteps.VisionReady: + { + _alignOffsetX = 0; + _alignOffsetY = 0; + _alignOffsetT = 0; + + _equipment.visionControl.SendVisionReady("Default"); + PmcStep = PmcSteps.VisionReadyCheck; + break; + } + case PmcSteps.VisionReadyCheck: + { + if(_equipment.visionControl.CommnadAcks[VisionToControlCommand.VisionReadyAck] && _equipment.visionControl.CommnadAcks[VisionToControlCommand.InspReadyEnd]) + { + PmcStep = PmcSteps.WaferDetectionReady; + } + else + { + if(_pmcSequenceTimer.Seconds > _equipment.settingParameterManager.SettingParameter.VisionTimeOut) + { + + } + } + break; + } + case PmcSteps.WaferDetectionReady: + { + _equipment.visionControl.SendWaferDetectionReady(); + PmcStep = PmcSteps.WaferDetection; + break; + } + case PmcSteps.WaferDetectionReadyCheck: + { + if (_equipment.visionControl.CommnadAcks[VisionToControlCommand.WaferDetectionReadyAck] && _equipment.visionControl.CommnadAcks[VisionToControlCommand.WaferDetectionReadyEnd]) + { + PmcStep = PmcSteps.WaferDetection; + } + else + { + if (_pmcSequenceTimer.Seconds > _equipment.settingParameterManager.SettingParameter.VisionTimeOut) + { + + } + } + break; + } + case PmcSteps.WaferDetection: + { + _equipment.visionControl.SendWaferDetectionStart(); + PmcStep = PmcSteps.WaferDetectionCheck; + break; + } + case PmcSteps.WaferDetectionCheck: + { + if (_equipment.visionControl.CommnadAcks[VisionToControlCommand.WaferDetectionStartAck] && _equipment.visionControl.CommnadAcks[VisionToControlCommand.WaferDetectionResult]) + { + if(_equipment.visionControl.WaferDetectionResultValue.Result == 0) + { + _alignOffsetX += _equipment.visionControl.WaferDetectionResultValue.ResultX; + _alignOffsetY += _equipment.visionControl.WaferDetectionResultValue.ResultY; + _alignOffsetT += _equipment.visionControl.WaferDetectionResultValue.ResultT; + + EquipmentLogManager.Instance.WriteProcessLog($"Align result ->"); + EquipmentLogManager.Instance.WriteProcessLog($"X: {_equipment.visionControl.WaferDetectionResultValue.ResultX}, Y: {_equipment.visionControl.WaferDetectionResultValue.ResultY}, T: {_equipment.visionControl.WaferDetectionResultValue.ResultT}"); + PmcStep = PmcSteps.MoveOffsetPosition; + } + else + { + EquipmentLogManager.Instance.WriteProcessLog($"Align complete"); + PmcStep = PmcSteps.GetProcessInfoData; + } + } + else + { + if (_pmcSequenceTimer.Seconds > _equipment.settingParameterManager.SettingParameter.VisionTimeOut) + { + + } + } + break; + } + + case PmcSteps.MoveOffsetPosition: + { + double posX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Position; + double posY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Position; + double posT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Position; + + double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Speed; + double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Speed; + double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Speed; + + double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Accel; + double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Accel; + double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Accel; + + _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, posX + _alignOffsetX, speedX, accX); + _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, posY + _alignOffsetY, speedY, accY); + _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, posT + _alignOffsetT, speedT, accT); + + PmcStep = PmcSteps.CheckOffsetPositon; + break; + } + case PmcSteps.CheckOffsetPositon: + { + if (_equipment.chamber.IsInposition) + { + double posX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Position; + double posY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Position; + double posT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Position; + + if (_equipment.powerPmac.InpositionCheck(posX + _alignOffsetX, _equipment.powerPmac.GetAxisActualPos(PmacAxis.X_Axis)) + && _equipment.powerPmac.InpositionCheck(posY + _alignOffsetY, _equipment.powerPmac.GetAxisActualPos(PmacAxis.Y_Axis)) + && _equipment.powerPmac.InpositionCheck(posT + _alignOffsetT, _equipment.powerPmac.GetAxisActualPos(PmacAxis.T_Axis))) + { + EquipmentLogManager.Instance.WriteProcessLog($"Offset move."); + PmcStep = PmcSteps.WaferDetectionReady; + } + else + { + + } + } + break; + } + case PmcSteps.GetProcessInfoData: + { + if(_processInfo != null) + { + _oldProcessInfo = _processInfo.Clone(); + } + + _processInfo = _currentRecipe.ProcessInfoList[_processNum]; + _processInfo.SetProcessData(); + + if (_processInfo.IsProcessEnable) + { + EquipmentLogManager.Instance.WriteProcessLog($"Process {_processNum + 1} start !!"); + PmcStep = PmcSteps.CoordTransform; + } + else + { + EquipmentLogManager.Instance.WriteProcessLog($"Process {_processNum + 1} is not enable"); + PmcStep = PmcSteps.ProcessEnd; + } + break; + } + case PmcSteps.CoordTransform: + { + _equipment.scanner.ClearScanList(); + + double middlePosition = (_processInfo.ProcessStartY + _processInfo.ProcessEndY) / 2; + + if(_processNum % 2 == 0) // 吏앹닔 吏꾪뻾諛⑺뼢 -> + { + foreach (Info.RecipeInfo.Coord coord in _processInfo.ProcessList) + { + _equipment.scanner.AddScanList(coord.ScanMode, coord.Y - middlePosition, (_processInfo.ProcessStartX - coord.X)); + } + } + else // ���닔 吏꾪뻾諛⑺뼢 <- + { + _processInfo.ProcessList.Reverse(); + + for (int i = 0; i < _processInfo.ProcessList.Count; i += 2) + { + Info.RecipeInfo.Coord coordMark= _processInfo.ProcessList[i]; + Info.RecipeInfo.Coord coordJump = _processInfo.ProcessList[i + 1]; + + _equipment.scanner.AddScanList(coordJump.ScanMode, coordJump.Y - middlePosition, _processInfo.ProcessEndX - coordJump.X); // 吏앹닔 + _equipment.scanner.AddScanList(coordMark.ScanMode, coordMark.Y - middlePosition, _processInfo.ProcessEndX - coordMark.X); // 吏앹닔 + } + + } + + EquipmentLogManager.Instance.WriteProcessLog($"Recipe energy is {_processInfo.Energy}"); + //_equipment.crevis.WriteOutput(Crevis.DigitalOutput.LASER_SHUTTER_OPEN_SOL, true); + + // 痢≪젙 energy媛� 0�씠硫� shutter �떕�뒗嫄곕줈..? + // -> 洹몃깷 Energy 痢≪젙 0�릺硫� 媛좎텣�븷�벏. + //if(_processInfo.Energy == 0) + //{ + // EquipmentLogManager.Instance.WriteProcessLog($"Measurement energy is 0"); + // _equipment.crevis.WriteOutput(Crevis.DigitalOutput.LASER_SHUTTER_OPEN_SOL, false); + // PmcStep = PmcSteps.MoveProcessStartPosition; + // return; + //} + //else + //{ + // EquipmentLogManager.Instance.WriteProcessLog($"Measurement energy is {_processInfo.Energy}"); + // _equipment.crevis.WriteOutput(Crevis.DigitalOutput.LASER_SHUTTER_OPEN_SOL, true); + //} + + if (_equipment.modeParameterManager.ModeParameter.EnergyMeasurementUse) + { + // Measurement 吏꾪뻾 + if (_oldProcessInfo == null || _oldProcessInfo.Energy != _processInfo.Energy) + { + // �꽌濡� Energy媛� �떎瑜� �븣 + + EquipmentLogManager.Instance.WriteProcessLog($"Energy deffrent : energy measure start !"); + PmcStep = PmcSteps.CalDataAttenuatorSet; + } + else if ((DateTime.Now - _lastMeasurementTime).TotalSeconds > _equipment.settingParameterManager.SettingParameter.EnergyMeasurementCycle) + { + // 留덉�留� Measurement �떆媛꾩씠 setting 媛믩낫�떎 �겢 �븣 + EquipmentLogManager.Instance.WriteProcessLog($"Measure time ({ _equipment.settingParameterManager.SettingParameter.EnergyMeasurementCycle} sec) over : energy measure start !"); + PmcStep = PmcSteps.CalDataAttenuatorSet; + } + else if (_waferProcessCountAfterMeasurement > _equipment.settingParameterManager.SettingParameter.EnergyMeasurementWaferCountCycle) + { + // 留덉�留� Measurement �븳 �썑 n媛쒖쓽 wafer媛� 吏꾪뻾 �릺�뿀�쓣 �븣 + EquipmentLogManager.Instance.WriteProcessLog($"Wafer count over({_equipment.settingParameterManager.SettingParameter.EnergyMeasurementWaferCountCycle}) : energy measure start !"); + PmcStep = PmcSteps.CalDataAttenuatorSet; + } + else + { + //Measurement 吏꾪뻾 �븞�븿. + PmcStep = PmcSteps.MoveProcessStartPosition; + } + } + else + { + //Measurement 吏꾪뻾 �븞�븿. + PmcStep = PmcSteps.MoveProcessStartPosition; + } + + break; + } + case PmcSteps.CalDataAttenuatorSet: + { + _measurementCount = 0; + EquipmentLogManager.Instance.WriteProcessLog($"Energy measurement start count : {_measurementCount}"); + double energy = _processInfo.Energy * (_equipment.settingParameterManager.SettingParameter.BeamWidth * _equipment.settingParameterManager.SettingParameter.BeamHeight / 100); + energy = double.Parse($"{energy:F7}"); + + _setAttenuatorAngle = _equipment.attenuatorCalInfo.GetAttenuatorAngleForEnergy(energy); + + _equipment.attenuator.MoveAbsolute(_setAttenuatorAngle); + + PmcStep = PmcSteps.CalDataCheckAttenuator; + break; + } + case PmcSteps.CalDataCheckAttenuator: + { + if (_equipment.attenuator.MotorState == Attenuator.MotorRunState.Stopped) + { + if (_equipment.attenuator.IsAttenuatorAngleCorrect(_setAttenuatorAngle)) + { + EquipmentLogManager.Instance.WriteProcessLog($"Attenuator setting {_setAttenuatorAngle} degree"); + PmcStep = PmcSteps.MovePowerMeterPosition; + } + else + { + PmcStep = PmcSteps.CalDataAttenuatorSet; + } + } + break; + } + case PmcSteps.MovePowerMeterPosition: + { + if (_equipment.chamber.MovePowerMeterPosition()) + { + EquipmentLogManager.Instance.WriteProcessLog($"Move power meter position."); + PmcStep = PmcSteps.CheckPowerMeterPosition; + } + break; + } + case PmcSteps.CheckPowerMeterPosition: + { + if (_equipment.chamber.IsInposition) + { + if (_equipment.chamber.IsPowerMeterPosition) + { + PmcStep = PmcSteps.PowerMeterInitialize; + } + else + { + PmcStep = PmcSteps.MovePowerMeterPosition; + } + } + break; + } + case PmcSteps.PowerMeterInitialize: + { + _equipment.powerMeter.ResetEnergyMeter(); + _measurementTimer.ReStart(); + PmcStep = PmcSteps.PowerMeterInitializeCheck; + break; + } + case PmcSteps.PowerMeterInitializeCheck: + { + if (_equipment.powerMeter.Enable && _equipment.powerMeter.CurrentMeasurementMode == PowerMeter.MeasurementMode.Energy) + { + PmcStep = PmcSteps.LaserOn; + } + else + { + if (_measurementTimer.Seconds > 20) + { + EquipmentLogManager.Instance.WriteProcessLog($"Measurement 珥덇린�솕媛� �릺吏� �븡�븯�뒿�땲�떎. energy meter瑜� �솗�씤 �빐 二쇱꽭�슂."); + _equipment.SetMessageBox("Measurement 珥덇린�솕媛� �릺吏� �븡�븯�뒿�땲�떎. energy meter瑜� �솗�씤 �빐 二쇱꽭�슂."); + PmcStep = PmcSteps.PowerMeterInitialize; + } + } + break; + } + case PmcSteps.LaserOn: + { + if (_equipment.chamber.IsPowerMeterPosition) + { + _equipment.scanner.LaserOn(); + + EquipmentLogManager.Instance.WriteProcessLog($"Laser on."); + PmcStep = PmcSteps.MeasurementStart; + } + else + { + PmcStep = PmcSteps.MovePowerMeterPosition; + } + break; + } + case PmcSteps.MeasurementStart: + { + if (_equipment.scanner.IsLaserOn) + { + if (_pmcSequenceTimer.Seconds > _equipment.settingParameterManager.SettingParameter.EnergyMeterHeatingTime) + { + _equipment.powerMeter.ResetMeasurementsEnergy(); + _measurementTimer.ReStart(); + EquipmentLogManager.Instance.WriteProcessLog($"Energy measurement start."); + EquipmentLogManager.Instance.WriteEnergyMeasureLog($"Energy measurement start."); + PmcStep = PmcSteps.Measurement; + } + } + else if(_pmcSequenceTimer.Seconds > 2) + { + PmcStep = PmcSteps.LaserOn; + } + + break; + } + case PmcSteps.Measurement: + { + if (_equipment.settingParameterManager.SettingParameter.EnergyMeasurementTime < _measurementTimer.Seconds || _equipment.chamber.IsPowerMeterPosition == false) + { + if (_equipment.chamber.IsPowerMeterPosition == false) + { + _equipment.scanner.LaserOff(); + PmcStep = PmcSteps.MeasurementEnd; + } + else + { + if (_equipment.settingParameterManager.SettingParameter.EnergyMeasurementTime < _measurementTimer.Seconds) + { + _equipment.scanner.LaserOff(); + PmcStep = PmcSteps.MeasurementEnd; + } + } + } + break; + } + case PmcSteps.MeasurementEnd: + { + if (_equipment.scanner.IsLaserOn) + { + if (_pmcSequenceTimer.Seconds > 3) + { + if (_equipment.scanner.IsBusy) + { + _equipment.scanner.Stop(); + } + + _equipment.scanner.LaserOff(); + } + return; + } + + EquipmentLogManager.Instance.WriteProcessLog($"Energy measurement end."); + PmcStep = PmcSteps.MeasurrmentDataCheck; + break; + } + case PmcSteps.MeasurrmentDataCheck: + { + double energyAverage = _equipment.powerMeter.MeasurementAverageEnergyPerUnitArea; + double limitRange = _processInfo.Energy * (_equipment.settingParameterManager.SettingParameter.EnergyMeasurementErrorOccuredRange / 100); + double maxLimits = _processInfo.Energy + limitRange; + double minLimits = _processInfo.Energy - limitRange; + + EquipmentLogManager.Instance.WriteProcessLog($"Target energy : { _processInfo.Energy}"); + EquipmentLogManager.Instance.WriteProcessLog($"Everage energy : {energyAverage}"); + EquipmentLogManager.Instance.WriteProcessLog($"Energy range : {minLimits} ~ {maxLimits}"); + + EquipmentLogManager.Instance.WriteEnergyMeasureLog($"Target energy : { _processInfo.Energy}"); + EquipmentLogManager.Instance.WriteEnergyMeasureLog($"Everage energy : {energyAverage}"); + EquipmentLogManager.Instance.WriteEnergyMeasureLog($"Energy range : {minLimits} ~ {maxLimits}"); + + if (minLimits <= energyAverage && energyAverage <= maxLimits) + { + _lastMeasurementTime = DateTime.Now; + _waferProcessCountAfterMeasurement = 0; + + EquipmentLogManager.Instance.WriteProcessLog($"Energy measurement success "); + EquipmentLogManager.Instance.WriteEnergyMeasureLog($"Energy measurement success "); + PmcStep = PmcSteps.MoveProcessStartPosition; + } + else + { + if(_measurementCount > _equipment.settingParameterManager.SettingParameter.EnergyMeasurementRetryCount) + { + _equipment.alarmManager.Occur(AlarmCode.AL_0081_ENERGY_MEASUREMENT_FAIL); + + EquipmentLogManager.Instance.WriteProcessLog($"Energy measurement fail"); + EquipmentLogManager.Instance.WriteEnergyMeasureLog($"Energy measurement fail"); + _equipment.SetMessageBox("Power measurement �떎�뙣 !"); + + if (TmcStep == TmcSteps.Wait) + { + PmcStep = PmcSteps.End; + } + else + { + PmcStep = PmcSteps.AfterMoveLoadPosition; + } + return; + } + + double energyPer1Degree = _equipment.attenuatorCalInfo.GetEnergyPer1Degree(); + energyPer1Degree *= 100; + energyPer1Degree = double.Parse($"{energyPer1Degree / (_equipment.settingParameterManager.SettingParameter.BeamWidth * _equipment.settingParameterManager.SettingParameter.BeamHeight):F4}"); + + double settingEnergy = _processInfo.Energy; + + float measurementStepAngle = _equipment.settingParameterManager.SettingParameter.EnergyMeasurmentStepAngle; + + if (energyAverage < minLimits) + { + if (settingEnergy - energyAverage < energyPer1Degree * measurementStepAngle) + { + if(energyPer1Degree == 0) + { + _setAttenuatorAngle += measurementStepAngle / 10; + } + else + { + _setAttenuatorAngle += float.Parse($"{(settingEnergy - energyAverage) / energyPer1Degree:F3}"); + } + } + else + { + _setAttenuatorAngle += measurementStepAngle; + } + } + else if(energyAverage > maxLimits) + { + if (energyAverage - settingEnergy < (energyPer1Degree * measurementStepAngle)) + { + if (energyPer1Degree == 0) + { + _setAttenuatorAngle -= measurementStepAngle / 10; + } + else + { + _setAttenuatorAngle -= float.Parse($"{(energyAverage - settingEnergy) / energyPer1Degree:F3}"); + } + } + else + { + _setAttenuatorAngle -= measurementStepAngle; + } + } + + _measurementCount++; + PmcStep = PmcSteps.AttenuatorSet; + } + break; + } + case PmcSteps.AttenuatorSet: + { + _equipment.attenuator.MoveAbsolute(_setAttenuatorAngle); + EquipmentLogManager.Instance.WriteProcessLog($"Attenuator setting {_setAttenuatorAngle} degree"); + EquipmentLogManager.Instance.WriteEnergyMeasureLog($"Attenuator setting {_setAttenuatorAngle} degree"); + PmcStep = PmcSteps.CheckAttenuator; + break; + } + case PmcSteps.CheckAttenuator: + { + if(_equipment.attenuator.MotorState == Attenuator.MotorRunState.Stopped) + { + if (_equipment.attenuator.IsAttenuatorAngleCorrect(_setAttenuatorAngle)) + { + if (_equipment.chamber.IsInposition) + { + if (_equipment.chamber.IsPowerMeterPosition) + { + PmcStep = PmcSteps.MeasurementStart; + } + else + { + PmcStep = PmcSteps.MovePowerMeterPosition; + } + } + } + else + { + PmcStep = PmcSteps.AttenuatorSet; + } + } + break; + } + case PmcSteps.MoveProcessStartPosition: + { + double[] CenterDataY = _equipment.powerPmac.GetAxisTeachData(PmacAxis.Y_Axis, EnTeachData.CenterPosY); + double[] CenterDataX = _equipment.powerPmac.GetAxisTeachData(PmacAxis.X_Axis, EnTeachData.CenterPosX); + + double processTime = (_processInfo.ProcessLength / _processInfo.ScannerProcessSpeed); // 李⑥씠媛� + + _processStartPositionY = double.Parse($"{_centerPositionY + _alignOffsetY + (_processInfo.ProcessStartY - (Math.Abs(_processInfo.ProcessStartY - _processInfo.ProcessEndY) / 2)):f4}"); + + + if (_processNum % 2 == 0) // 吏앹닔 吏꾪뻾諛⑺뼢 -> + { + _processStartPositionX = double.Parse($"{_centerPositionX + _alignOffsetX + (_processInfo.ProcessStartX):f4}"); + _processEndPositionX = double.Parse($"{_centerPositionX + _alignOffsetX + (_processInfo.ProcessEndX):f4}"); + _stageVelocity = double.Parse($"{((_processEndPositionX - _processStartPositionX) / processTime):F3}"); + } + else // ���닔 吏꾪뻾諛⑺뼢 <- + { + _processStartPositionX = double.Parse($"{_centerPositionX + _alignOffsetX + (_processInfo.ProcessEndX):f4}"); + _processEndPositionX = double.Parse($"{_centerPositionX + _alignOffsetX + (_processInfo.ProcessStartX):f4}"); + _stageVelocity = double.Parse($"{((_processStartPositionX - _processEndPositionX) / processTime):F3}"); + } + + bool check = true; + check = _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, _processStartPositionY, CenterDataY[1], CenterDataY[2]); + check = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, _processStartPositionX, CenterDataX[1], CenterDataX[2]); + + EquipmentLogManager.Instance.WriteProcessLog($"Move process start position"); + PmcStep = PmcSteps.CheckProcessStartPosition; + break; + } + case PmcSteps.CheckProcessStartPosition: + { + if (_equipment.chamber.IsInposition) + { + bool isMotorXProcessPosition = _processStartPositionX == _equipment.powerPmac.GetAxisActualPos(PmacAxis.X_Axis); + bool isMotorYProcessPosition = _processStartPositionY == _equipment.powerPmac.GetAxisActualPos(PmacAxis.Y_Axis); + + if (isMotorXProcessPosition && isMotorYProcessPosition) + { + PmcStep = PmcSteps.ProcessStart; + } + else if (_pmcSequenceTimer.Seconds > 3) + { + PmcStep = PmcSteps.MoveProcessStartPosition; + } + } + break; + } + case PmcSteps.ProcessStart: + { + //Scanner Setting. + if (_equipment.scanner.Initialize()) + { + _equipment.scanner.SetScannerDelay(); + _equipment.scanner.SetLaserTiming(); + _equipment.scanner.SetLaserDelays(); + + _equipment.scanner.SetJumpMarkSpeed(_processInfo.ScannerProcessSpeed, _processInfo.ScannerProcessSpeed); + + if(_equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, _processEndPositionX, _stageVelocity, _processInfo.AccTime * 100)) + { + _equipment.scanner.ExcuteScanList(true); + + EquipmentLogManager.Instance.WriteProcessLog($"Process ({_processNum + 1}) start"); + PmcStep = PmcSteps.ProcessRunning; + } + } + break; + } + case PmcSteps.ProcessRunning: + { + if (_equipment.chamber.IsInposition) + { + double processTime = (_processInfo.ProcessLength / _processInfo.ScannerProcessSpeed); // 李⑥씠媛� + + bool isMotorXProcessPosition = _processEndPositionX == _equipment.powerPmac.GetAxisActualPos(PmacAxis.X_Axis); + + if (isMotorXProcessPosition && _equipment.scanner.IsBusy == false) + { + PmcStep = PmcSteps.ProcessEnd; + } + else if (_pmcSequenceTimer.Seconds > processTime + 10) + { + if (_equipment.scanner.IsBusy) + { + _equipment.scanner.Stop(); + } + + _equipment.scanner.LaserOff(); + + EquipmentLogManager.Instance.WriteProcessLog($"媛�怨� Error 媛��뒫�꽦 �엳�쓬."); + PmcStep = PmcSteps.ProcessEnd; + } + } + break; + } + case PmcSteps.ProcessEnd: + { + ProcessInfoExcuted?.BeginInvoke(_processInfo, _processNum, null, null); + + EquipmentLogManager.Instance.WriteProcessLog($"Process ({_processNum + 1}) end"); + _processNum++; + + if (_currentRecipe.ProcessInfoList.Count == _processNum) + { + EquipmentLogManager.Instance.WriteProcessLog($"Recipe ({_currentRecipe.Name}) Process complete !!"); + _processTimer.Stop(); + + WaferInfo waferInfo = _equipment.chamber.WaferInfo.Clone(); + waferInfo.IsProcessComplete = true; + _equipment.waferInfoManager.SetWaferInfo(WaferInfoManager.WaferNumbers.Chamber, waferInfo); + + if (TmcStep == TmcSteps.Wait) + { + _equipment.SetMessageBox("Manual 媛�怨듭씠 �셿猷� �릺�뿀�뒿�땲�떎."); + PmcStep = PmcSteps.End; + } + else + { + PmcStep = PmcSteps.AfterMoveLoadPosition; + } + } + else + { + PmcStep = PmcSteps.GetProcessInfoData; + } + + break; + } + case PmcSteps.AfterMoveLoadPosition: + { + if (_equipment.chamber.MoveLoadPosition()) + { + EquipmentLogManager.Instance.WriteProcessLog($"Move load position"); + PmcStep = PmcSteps.CheckAfterLoadPosition; + } + break; + } + case PmcSteps.CheckAfterLoadPosition: + { + if (_equipment.chamber.IsInposition) + { + if (_equipment.chamber.IsLoadPosition) + { + PmcStep = PmcSteps.AfterGateOpen; + } + else + { + PmcStep = PmcSteps.AfterMoveLoadPosition; + } + } + break; + } + case PmcSteps.AfterGateOpen: + { + if (_equipment.chamber.IsGateOpen) + { + EquipmentLogManager.Instance.WriteProcessLog($"After gate open"); + PmcStep = PmcSteps.AfterVacuumOff; + } + else + { + _equipment.chamber.GateOpen(); + } + break; + } + case PmcSteps.AfterVacuumOff: + { + if (_equipment.chamber.IsChuckVacuumOn == false) + { + EquipmentLogManager.Instance.WriteProcessLog($"After vaccum off"); + PmcStep = PmcSteps.AfterPinUp; + } + else + { + _equipment.chamber.ChuckVacuumOff(); + } + break; + } + case PmcSteps.AfterPinUp: + { + if(_pmcSequenceTimer.Seconds > 2) // Vacuum Off ��湲� �떆媛�. + { + if (_equipment.chamber.IsLiftPinUp) + { + _processEndBit = true; + EquipmentLogManager.Instance.WriteProcessLog($"After lift pin up"); + PmcStep = PmcSteps.WaferEmptyWait; + } + else + { + _equipment.chamber.LiftPinUp(); + } + } + break; + } + case PmcSteps.WaferEmptyWait: + { + if (_equipment.robot.IsRunEnable) + { + if (_chamberWaferEmptyBit && _equipment.chamber.WaferInfo.IsStatus == Info.WaferInfo.WaferInfo.WaferStatus.Empty) + { + PmcStep = PmcSteps.PinDown; + } + } + break; + } + case PmcSteps.PinDown: + { + if (_equipment.chamber.IsLiftPinDown) + { + EquipmentLogManager.Instance.WriteProcessLog($"After Lift pin down"); + PmcStep = PmcSteps.GateClose; + } + else + { + _equipment.chamber.LiftPinDown(); + } + break; + } + case PmcSteps.GateClose: + { + if (_equipment.chamber.IsGateClose) + { + EquipmentLogManager.Instance.WriteProcessLog($"After Gate close"); + PmcStep = PmcSteps.End; + } + else + { + _equipment.chamber.GateClose(); + } + break; + } + case PmcSteps.End: + { + _processTimer.Stop(); + + if (_equipment.scanner.IsBusy) + { + _equipment.scanner.Stop(); + } + + _equipment.scanner.LaserOff(); + + _equipment.powerPmac.MoveStop(PmacAxis.X_Axis); + + PmcStep = PmcSteps.Wait; + break; + } + + // ==================== Energy Drop Check Start ======================= + case PmcSteps.EnergyDropCheckStart: + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog("Energy drop check start !!"); + PmcStep = PmcSteps.EdcPowerMeterInitialize; + break; + } + case PmcSteps.EdcPowerMeterInitialize: + { + _equipment.powerMeter.ResetEnergyMeter(); + _measurementTimer.ReStart(); + PmcStep = PmcSteps.EdcPowerMeterInitializeCheck; + break; + } + case PmcSteps.EdcPowerMeterInitializeCheck: + { + if (_equipment.powerMeter.Enable && _equipment.powerMeter.CurrentMeasurementMode == PowerMeter.MeasurementMode.Energy) + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog("Power meter reset."); + if (_equipment.chamber.IsPowerMeterPosition) + { + PmcStep = PmcSteps.EdcAttenuatorSet; + } + else + { + PmcStep = PmcSteps.EdcMoveCenterPosition; + } + } + else + { + if (_measurementTimer.Seconds > 20) + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog("Measurement 珥덇린�솕媛� �릺吏� �븡�븯�뒿�땲�떎. energy meter瑜� �솗�씤 �빐 二쇱꽭�슂."); + _equipment.SetMessageBox("Measurement 珥덇린�솕媛� �릺吏� �븡�븯�뒿�땲�떎. energy meter瑜� �솗�씤 �빐 二쇱꽭�슂."); + PmcStep = PmcSteps.EdcPowerMeterInitialize; + } + } + break; + } + case PmcSteps.EdcMoveCenterPosition: + { + if (_equipment.chamber.MoveCenterPosition()) + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog("Move center position."); + PmcStep = PmcSteps.EdcCheckCenterPosition; + } + break; + } + case PmcSteps.EdcCheckCenterPosition: + { + if (_equipment.chamber.IsInposition) + { + if (_equipment.chamber.IsCenterPosition) + { + PmcStep = PmcSteps.EdcMovePowerMeterPosition; + } + else + { + PmcStep = PmcSteps.EdcMoveCenterPosition; + } + } + break; + } + case PmcSteps.EdcMovePowerMeterPosition: + { + if (_equipment.chamber.MovePowerMeterPosition()) + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog("Move power meter position."); + PmcStep = PmcSteps.EdcCheckPowerMeterPosition; + } + break; + } + case PmcSteps.EdcCheckPowerMeterPosition: + { + if (_equipment.chamber.IsInposition) + { + if (_equipment.chamber.IsPowerMeterPosition) + { + PmcStep = PmcSteps.EdcAttenuatorSet; + } + else + { + PmcStep = PmcSteps.EdcMovePowerMeterPosition; + } + } + break; + } + case PmcSteps.EdcAttenuatorSet: + { + _equipment.attenuator.MoveAbsolute(_equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetAngle); + PmcStep = PmcSteps.EdcCheckAttenuator; + break; + } + case PmcSteps.EdcCheckAttenuator: + { + if (_equipment.attenuator.MotorState == Attenuator.MotorRunState.Stopped) + { + if (_equipment.attenuator.IsAttenuatorAngleCorrect(_equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetAngle)) + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog($"Attenuator setting {_equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetAngle} degree"); + PmcStep = PmcSteps.EdcLaserOn; + } + else + { + PmcStep = PmcSteps.EdcAttenuatorSet; + } + } + break; + } + case PmcSteps.EdcLaserOn: + { + if (_equipment.chamber.IsPowerMeterPosition) + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog($"Laser on !!"); + _equipment.scanner.LaserOn(); + + PmcStep = PmcSteps.EdcMeasurementStart; + } + else + { + PmcStep = PmcSteps.EdcMovePowerMeterPosition; + } + break; + } + case PmcSteps.EdcMeasurementStart: + { + if (_equipment.scanner.IsLaserOn) + { + if (_pmcSequenceTimer.Seconds > _equipment.settingParameterManager.SettingParameter.EnergyMeterHeatingTime) + { + _equipment.powerMeter.ResetMeasurementsEnergy(); + _measurementTimer.ReStart(); + PmcStep = PmcSteps.EdcMeasurement; + } + } + else if (_pmcSequenceTimer.Seconds > 2) + { + PmcStep = PmcSteps.EdcLaserOn; + } + + break; + } + case PmcSteps.EdcMeasurement: + { + if (_equipment.settingParameterManager.SettingParameter.EnergyDropCheckMeasurementTime < _measurementTimer.Seconds || _equipment.chamber.IsPowerMeterPosition == false) + { + if (_equipment.chamber.IsPowerMeterPosition == false) + { + _equipment.scanner.LaserOff(); + PmcStep = PmcSteps.EdcLaserOff; + } + else + { + if(_equipment.settingParameterManager.SettingParameter.EnergyDropCheckMeasurementTime < _measurementTimer.Seconds) + { + PmcStep = PmcSteps.EdcMeasurementLaserOff; + } + } + } + break; + } + + case PmcSteps.EdcMeasurementLaserOff: + { + if (_equipment.scanner.IsBusy) + { + _equipment.scanner.Stop(); + } + + _equipment.scanner.LaserOff(); + PmcStep = PmcSteps.EdcMeasurementLaserOffCheck; + break; + } + case PmcSteps.EdcMeasurementLaserOffCheck: + { + if (_equipment.scanner.IsLaserOn) + { + if (_pmcSequenceTimer.Seconds > 3) + { + PmcStep = PmcSteps.EdcMeasurementLaserOff; + } + return; + } + else + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog($"Laser off !!"); + PmcStep = PmcSteps.EdcMeasurementEnd; + } + break; + } + case PmcSteps.EdcMeasurementEnd: + { + if (_equipment.scanner.IsBusy) + { + _equipment.scanner.Stop(); + } + + _equipment.scanner.LaserOff(); + PmcStep = PmcSteps.EdcMeasurementDataCheck; + break; + } + case PmcSteps.EdcMeasurementDataCheck: + { + double energyAverage = _equipment.powerMeter.MeasurementAverageEnergyPerUnitArea; + double limitRange = _equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetEnergy * (_equipment.settingParameterManager.SettingParameter.EnergyDropCheckErrorOccuredRange / 100); + double maxLimits = _equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetEnergy + limitRange; + double minLimits = _equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetEnergy - limitRange; + + EquipmentLogManager.Instance.WriteEnergyDropCheckLog($"Target energy : {_equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetEnergy}"); + EquipmentLogManager.Instance.WriteEnergyDropCheckLog($"Everage energy : {energyAverage}"); + EquipmentLogManager.Instance.WriteEnergyDropCheckLog($"Energy range : {minLimits} ~ {maxLimits}"); + + if (minLimits < energyAverage && energyAverage < maxLimits) + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog($"Energy is ok !!"); + _equipment.equipmentInfo.SetEnergyDropCheckDate(); + PmcStep = PmcSteps.EdcLaserOff; + } + else + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog($"Energy drop !!"); + _equipment.alarmManager.Occur(AlarmCode.AL_1100_ENERGY_DROP_CHECK_WRONG); + PmcStep = PmcSteps.EdcLaserOff; + } + break; + } + case PmcSteps.EdcLaserOff: + { + if (_equipment.scanner.IsBusy) + { + _equipment.scanner.Stop(); + } + + _equipment.scanner.LaserOff(); + PmcStep = PmcSteps.EdcLaserOffCheck; + break; + } + case PmcSteps.EdcLaserOffCheck: + { + if (_equipment.scanner.IsLaserOn) + { + if (_pmcSequenceTimer.Seconds > 3) + { + PmcStep = PmcSteps.EdcLaserOff; + } + } + else + { + PmcStep = PmcSteps.EnergyDropCheckEnd; + } + + break; + } + case PmcSteps.EnergyDropCheckEnd: + { + EquipmentLogManager.Instance.WriteEnergyDropCheckLog($"Energy drop check end !!"); + PmcStep = PmcSteps.Wait; + break; + } + + // ==================== Attenuator Cal Start ======================= + case PmcSteps.AttenuatorCalStart: + { + _attenuatorCalData.Clear(); + _currentAttenuatorCalAngle = _equipment.settingParameterManager.SettingParameter.AttenuatorCalStartAngle; + + EquipmentLogManager.Instance.WriteAttenuatorCalLog($"Attenuator cal start !!"); + PmcStep = PmcSteps.AcPowerMeterInitialize; + break; + } + case PmcSteps.AcPowerMeterInitialize: + { + _equipment.powerMeter.ResetEnergyMeter(); + _measurementTimer.ReStart(); + PmcStep = PmcSteps.AcPowerMeterInitializeCheck; + + break; + } + case PmcSteps.AcPowerMeterInitializeCheck: + { + if (_equipment.powerMeter.Enable && _equipment.powerMeter.CurrentMeasurementMode == PowerMeter.MeasurementMode.Energy) + { + if (_equipment.chamber.IsInposition) + { + EquipmentLogManager.Instance.WriteAttenuatorCalLog("Power meter reset."); + if (_equipment.chamber.IsPowerMeterPosition) + { + PmcStep = PmcSteps.AcAttenuatorSet; + } + else + { + PmcStep = PmcSteps.AcMoveCenterPosition; + } + } + } + else + { + if (_measurementTimer.Seconds > 20) + { + EquipmentLogManager.Instance.WriteAttenuatorCalLog("Measurement 珥덇린�솕媛� �릺吏� �븡�븯�뒿�땲�떎. energy meter瑜� �솗�씤 �빐 二쇱꽭�슂."); + _equipment.SetMessageBox("Measurement 珥덇린�솕媛� �릺吏� �븡�븯�뒿�땲�떎. energy meter瑜� �솗�씤 �빐 二쇱꽭�슂."); + PmcStep = PmcSteps.AcPowerMeterInitialize; + } + } + break; + } + case PmcSteps.AcMoveCenterPosition: + { + if (_equipment.chamber.MoveCenterPosition()) + { + EquipmentLogManager.Instance.WriteAttenuatorCalLog("Move center position."); + PmcStep = PmcSteps.AcCheckCenterPosition; + } + break; + } + case PmcSteps.AcCheckCenterPosition: + { + if (_equipment.chamber.IsInposition) + { + if (_equipment.chamber.IsCenterPosition) + { + PmcStep = PmcSteps.AcMovePowerMeterPosition; + } + else + { + PmcStep = PmcSteps.AcMoveCenterPosition; + } + } + break; + } + case PmcSteps.AcMovePowerMeterPosition: + { + if (_equipment.chamber.MovePowerMeterPosition()) + { + EquipmentLogManager.Instance.WriteAttenuatorCalLog("Move power meter position."); + PmcStep = PmcSteps.AcCheckPowerMeterPosition; + } + break; + } + case PmcSteps.AcCheckPowerMeterPosition: + { + if (_equipment.chamber.IsInposition) + { + if (_equipment.chamber.IsPowerMeterPosition) + { + PmcStep = PmcSteps.AcAttenuatorSet; + } + else + { + PmcStep = PmcSteps.AcMovePowerMeterPosition; + } + } + break; + } + case PmcSteps.AcAttenuatorSet: + { + _equipment.attenuator.MoveAbsolute(_currentAttenuatorCalAngle); + PmcStep = PmcSteps.AcCheckAttenuator; + break; + } + case PmcSteps.AcCheckAttenuator: + { + if (_equipment.attenuator.MotorState == Attenuator.MotorRunState.Stopped) + { + if (_equipment.attenuator.IsAttenuatorAngleCorrect(_currentAttenuatorCalAngle)) + { + EquipmentLogManager.Instance.WriteAttenuatorCalLog($"Attenuator setting {_equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetAngle} degree"); + PmcStep = PmcSteps.AcCoolingTimeWait; + } + else + { + PmcStep = PmcSteps.AcAttenuatorSet; + } + } + break; + } + case PmcSteps.AcCoolingTimeWait: + { + if (_measurementTimer.Seconds > _equipment.settingParameterManager.SettingParameter.AttenuatorCalCoolingTime) + { + EquipmentLogManager.Instance.WriteAttenuatorCalLog($"Cooling time wait !"); + PmcStep = PmcSteps.AcLaserOn; + } + break; + } + case PmcSteps.AcLaserOn: + { + if (_equipment.chamber.IsPowerMeterPosition) + { + _equipment.scanner.LaserOn(); + EquipmentLogManager.Instance.WriteAttenuatorCalLog($"Laser on !!"); + + PmcStep = PmcSteps.AcMeasurementStart; + } + break; + } + case PmcSteps.AcMeasurementStart: + { + if (_equipment.scanner.IsLaserOn) + { + if (_pmcSequenceTimer.Seconds > _equipment.settingParameterManager.SettingParameter.EnergyMeterHeatingTime) + { + _equipment.powerMeter.ResetMeasurementsEnergy(); + _measurementTimer.ReStart(); + PmcStep = PmcSteps.AcMeasurement; + } + } + else if (_pmcSequenceTimer.Seconds > 2) + { + PmcStep = PmcSteps.AcLaserOn; + } + break; + } + case PmcSteps.AcMeasurement: + { + if (_equipment.settingParameterManager.SettingParameter.AttenuatorCalMeasurementTime < _measurementTimer.Seconds || _equipment.chamber.IsPowerMeterPosition == false) + { + if (_equipment.chamber.IsPowerMeterPosition == false) + { + _equipment.scanner.LaserOff(); + PmcStep = PmcSteps.AcLaserOff; + } + else + { + if(_equipment.settingParameterManager.SettingParameter.AttenuatorCalMeasurementTime < _measurementTimer.Seconds) + { + PmcStep = PmcSteps.AcMeasurementLaserOff; + } + } + } + break; + } + case PmcSteps.AcMeasurementLaserOff: + { + _measurementTimer.ReStart(); + if (_equipment.scanner.IsBusy) + { + _equipment.scanner.Stop(); + } + _equipment.scanner.LaserOff(); + PmcStep = PmcSteps.AcMeasurementLaserOffCheck; + break; + } + case PmcSteps.AcMeasurementLaserOffCheck: + { + if (_equipment.scanner.IsLaserOn) + { + if (_pmcSequenceTimer.Seconds > 3) + { + PmcStep = PmcSteps.AcMeasurementLaserOff; + } + return; + } + else + { + EquipmentLogManager.Instance.WriteAttenuatorCalLog($"Laser off !!"); + PmcStep = PmcSteps.AcMeasurementEnd; + } + break; + } + case PmcSteps.AcMeasurementEnd: + { + PmcStep = PmcSteps.AcMeasurementDataCheck; + break; + } + case PmcSteps.AcMeasurementDataCheck: + { + AttenuatorCalData attenuatorCalData = new AttenuatorCalData(); + attenuatorCalData.AttenuatorAngle = _currentAttenuatorCalAngle; + attenuatorCalData.Energy = _equipment.powerMeter.MeasurementAverageEnergy; + + _attenuatorCalData.Add(attenuatorCalData); + + EquipmentLogManager.Instance.WriteAttenuatorCalLog($"Attenuator angle : {attenuatorCalData.AttenuatorAngle} energy : {attenuatorCalData.Energy}"); + + //醫낅즺 + if (_currentAttenuatorCalAngle >= _equipment.settingParameterManager.SettingParameter.AttenuatorCalEndAngle) + { + _equipment.attenuatorCalInfo.SetAttenuatorCalData(_attenuatorCalData.ToArray()); + + _equipment.equipmentInfo.SetAttenuatorCalDate(); + PmcStep = PmcSteps.AcLaserOff; + } + // 留덉�留� + else if (_currentAttenuatorCalAngle < _equipment.settingParameterManager.SettingParameter.AttenuatorCalEndAngle && _currentAttenuatorCalAngle + _equipment.settingParameterManager.SettingParameter.AttenuatorCalAngleStep > _equipment.settingParameterManager.SettingParameter.AttenuatorCalEndAngle) + { + _currentAttenuatorCalAngle = _equipment.settingParameterManager.SettingParameter.AttenuatorCalEndAngle; + PmcStep = PmcSteps.AcPowerMeterInitialize; + } + // 怨꾩냽 吏꾪뻾 + else + { + _currentAttenuatorCalAngle += _equipment.settingParameterManager.SettingParameter.AttenuatorCalAngleStep; + PmcStep = PmcSteps.AcPowerMeterInitialize; + } + break; + } + case PmcSteps.AcLaserOff: + { + if (_equipment.scanner.IsBusy) + { + _equipment.scanner.Stop(); + } + _equipment.scanner.LaserOff(); + PmcStep = PmcSteps.AcLaserOffCheck; + break; + } + case PmcSteps.AcLaserOffCheck: + { + if (_equipment.scanner.IsLaserOn) + { + if (_pmcSequenceTimer.Seconds > 3) + { + PmcStep = PmcSteps.AcLaserOff; + } + return; + } + else + { + EquipmentLogManager.Instance.WriteAttenuatorCalLog($"Laser off !!"); + PmcStep = PmcSteps.AttenuatorCalEnd; + } + break; + } + case PmcSteps.AttenuatorCalEnd: + { + EquipmentLogManager.Instance.WriteAttenuatorCalLog($"Attenuator Cal end !!"); + PmcStep = PmcSteps.Wait; + break; + } + } + } + + public bool ProcessStart() + { + if (TmcStep == TmcSteps.Wait && PmcStep == PmcSteps.Wait) + { + TmcStep = Sequence.TmcSteps.StatusCheck; + return true; + } + else + { + return false; + } + } + + public bool ManualProcessStart() + { + if (PmcStep == PmcSteps.Wait) + { + PmcStep = Sequence.PmcSteps.MoveCenterPosition; + return true; + } + else + { + return false; + } + } + + public bool ProcessStop() + { + TmcStep = TmcSteps.End; + PmcStep = PmcSteps.End; + return true; + } + + public bool EnergyDropCheckStart() + { + if(PmcStep == PmcSteps.Wait) + { + PmcStep = PmcSteps.EnergyDropCheckStart; + return true; + } + else + { + return false; + } + } + + public bool AttenuatorCalStart() + { + if (PmcStep == PmcSteps.Wait) + { + PmcStep = PmcSteps.AttenuatorCalStart; + return true; + } + else + { + return false; + } + } + + public bool EnergyDropCheckStop() + { + if(PmcSteps.EnergyDropCheckStart <= PmcStep && PmcStep <= PmcSteps.EnergyDropCheckEnd) + { + PmcStep = PmcSteps.EdcLaserOff; + return true; + } + else + { + return false; + } + } + + public bool AttenuatorCalStop() + { + if (PmcSteps.AttenuatorCalStart <= PmcStep && PmcStep <= PmcSteps.AttenuatorCalEnd) + { + PmcStep = PmcSteps.AcLaserOff; + return true; + } + else + { + return false; + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT/bin/Debug/EasyModbus.dll b/SA_LTT_UI/SA_LTT/bin/Debug/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT_UI/SA_LTT/bin/Debug/EasyModbus.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.dll b/SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.dll new file mode 100644 index 0000000..9340c03 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.pdb b/SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.pdb new file mode 100644 index 0000000..07f1869 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.pdb Binary files differ diff --git a/SA_LTT_UI/SA_LTT/bin/Debug/log4net.dll b/SA_LTT_UI/SA_LTT/bin/Debug/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT_UI/SA_LTT/bin/Debug/log4net.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..cfacfc2 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferences.cache Binary files differ diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..a1e53cd --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache Binary files differ diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.MessageBoxPad.resources b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.MessageBoxPad.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.MessageBoxPad.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CopyComplete b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CopyComplete diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CoreCompileInputs.cache b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..2b709e9 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +5e5aace3e589fd1ac3c7f6c1100a0781e0a9912e diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.FileListAbsolute.txt b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..796dfb6 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.FileListAbsolute.txt @@ -0,0 +1,119 @@ +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.dll +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.pdb +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csprojResolveAssemblyReference.cache +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.dll +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.pdb +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT\bin\Debug\log4net.dll +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT\bin\Debug\EasyModbus.dll +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.dll +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.pdb +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT\bin\Debug\EasyModbus.dll +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT\bin\Debug\log4net.dll +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.dll +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.pdb +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csprojResolveAssemblyReference.cache +C:\PGM\SLA\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.dll +C:\PGM\SLA\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.pdb +C:\PGM\SLA\SA_LTT_UI\SA_LTT\bin\Debug\EasyModbus.dll +C:\PGM\SLA\SA_LTT_UI\SA_LTT\bin\Debug\log4net.dll +C:\PGM\SLA\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.dll +C:\PGM\SLA\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.pdb +C:\SA_LTT_UI_PMacTest\SA_LTT\bin\Debug\SA_LTT.dll +C:\SA_LTT_UI_PMacTest\SA_LTT\bin\Debug\SA_LTT.pdb +C:\SA_LTT_UI_PMacTest\SA_LTT\bin\Debug\EasyModbus.dll +C:\SA_LTT_UI_PMacTest\SA_LTT\bin\Debug\log4net.dll +C:\SA_LTT_UI_PMacTest\SA_LTT\obj\Debug\SA_LTT.csprojResolveAssemblyReference.cache +C:\SA_LTT_UI_PMacTest\SA_LTT\obj\Debug\SA_LTT.dll +C:\SA_LTT_UI_PMacTest\SA_LTT\obj\Debug\SA_LTT.pdb +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT\bin\Debug\SA_LTT.dll +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT\bin\Debug\SA_LTT.pdb +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT\bin\Debug\EasyModbus.dll +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT\bin\Debug\log4net.dll +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT\obj\Debug\SA_LTT.dll +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT\obj\Debug\SA_LTT.pdb +C:\SA_LTT_UI_220927\SA_LTT\bin\Debug\SA_LTT.dll +C:\SA_LTT_UI_220927\SA_LTT\bin\Debug\SA_LTT.pdb +C:\SA_LTT_UI_220927\SA_LTT\bin\Debug\EasyModbus.dll +C:\SA_LTT_UI_220927\SA_LTT\bin\Debug\log4net.dll +C:\SA_LTT_UI_220927\SA_LTT\obj\Debug\SA_LTT.csprojResolveAssemblyReference.cache +C:\SA_LTT_UI_220927\SA_LTT\obj\Debug\SA_LTT.dll +C:\SA_LTT_UI_220927\SA_LTT\obj\Debug\SA_LTT.pdb +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT\bin\Debug\SA_LTT.dll +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT\bin\Debug\SA_LTT.pdb +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT\bin\Debug\EasyModbus.dll +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT\bin\Debug\log4net.dll +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT\obj\Debug\SA_LTT.dll +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT\obj\Debug\SA_LTT.pdb +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT\bin\Debug\SA_LTT.dll +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT\bin\Debug\SA_LTT.pdb +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT\bin\Debug\EasyModbus.dll +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT\bin\Debug\log4net.dll +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT\obj\Debug\SA_LTT.csprojResolveAssemblyReference.cache +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT\obj\Debug\SA_LTT.dll +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT\obj\Debug\SA_LTT.pdb +F:\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.dll +F:\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.pdb +F:\SA_LTT_UI\SA_LTT\bin\Debug\EasyModbus.dll +F:\SA_LTT_UI\SA_LTT\bin\Debug\log4net.dll +F:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.ResolveComReference.cache +F:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.MessageBoxPad.resources +F:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.GenerateResource.Cache +F:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.dll +F:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.pdb +H:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.ResolveComReference.cache +H:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.MessageBoxPad.resources +H:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.GenerateResource.Cache +H:\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.dll +H:\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.pdb +H:\SA_LTT_UI\SA_LTT\bin\Debug\EasyModbus.dll +H:\SA_LTT_UI\SA_LTT\bin\Debug\log4net.dll +H:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.dll +H:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.pdb +F:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csprojResolveAssemblyReference.cache +C:\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.dll +C:\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.pdb +C:\SA_LTT_UI\SA_LTT\bin\Debug\EasyModbus.dll +C:\SA_LTT_UI\SA_LTT\bin\Debug\log4net.dll +C:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.ResolveComReference.cache +C:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.MessageBoxPad.resources +C:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.GenerateResource.Cache +C:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.dll +C:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.pdb +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.dll +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.pdb +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\bin\Debug\EasyModbus.dll +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\bin\Debug\log4net.dll +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.ResolveComReference.cache +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.MessageBoxPad.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.GenerateResource.Cache +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.dll +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.pdb +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csprojAssemblyReference.cache +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.CoreCompileInputs.cache +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.CopyComplete +F:\SA_LTT_UI_230503\SA_LTT\bin\Debug\SA_LTT.dll +F:\SA_LTT_UI_230503\SA_LTT\bin\Debug\SA_LTT.pdb +F:\SA_LTT_UI_230503\SA_LTT\bin\Debug\EasyModbus.dll +F:\SA_LTT_UI_230503\SA_LTT\bin\Debug\log4net.dll +F:\SA_LTT_UI_230503\SA_LTT\obj\Debug\SA_LTT.csprojAssemblyReference.cache +F:\SA_LTT_UI_230503\SA_LTT\obj\Debug\SA_LTT.csproj.ResolveComReference.cache +F:\SA_LTT_UI_230503\SA_LTT\obj\Debug\SA_LTT.MessageBoxPad.resources +F:\SA_LTT_UI_230503\SA_LTT\obj\Debug\SA_LTT.csproj.GenerateResource.cache +F:\SA_LTT_UI_230503\SA_LTT\obj\Debug\SA_LTT.csproj.CoreCompileInputs.cache +F:\SA_LTT_UI_230503\SA_LTT\obj\Debug\SA_LTT.csproj.CopyComplete +F:\SA_LTT_UI_230503\SA_LTT\obj\Debug\SA_LTT.dll +F:\SA_LTT_UI_230503\SA_LTT\obj\Debug\SA_LTT.pdb +C:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.CoreCompileInputs.cache +C:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.CopyComplete +C:\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csprojAssemblyReference.cache +F:\ho\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.dll +F:\ho\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.pdb +F:\ho\SA_LTT_UI\SA_LTT\bin\Debug\EasyModbus.dll +F:\ho\SA_LTT_UI\SA_LTT\bin\Debug\log4net.dll +F:\ho\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.ResolveComReference.cache +F:\ho\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.MessageBoxPad.resources +F:\ho\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.GenerateResource.cache +F:\ho\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.CoreCompileInputs.cache +F:\ho\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.csproj.CopyComplete +F:\ho\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.dll +F:\ho\SA_LTT_UI\SA_LTT\obj\Debug\SA_LTT.pdb diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.GenerateResource.cache b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.GenerateResource.cache new file mode 100644 index 0000000..6ed0a21 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.GenerateResource.cache Binary files differ diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.ResolveComReference.cache b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.ResolveComReference.cache new file mode 100644 index 0000000..cb142fd --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.ResolveComReference.cache Binary files differ diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csprojAssemblyReference.cache b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csprojAssemblyReference.cache new file mode 100644 index 0000000..0a3dc2b --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csprojAssemblyReference.cache Binary files differ diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.dll b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.dll new file mode 100644 index 0000000..9340c03 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.pdb b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.pdb new file mode 100644 index 0000000..07f1869 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.pdb Binary files differ diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs diff --git a/SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs diff --git a/SA_LTT_UI/SA_LTT_UI.sln b/SA_LTT_UI/SA_LTT_UI.sln new file mode 100644 index 0000000..ed346ac --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI.sln @@ -0,0 +1,28 @@ +癤� +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SA_LTT_UI", "SA_LTT_UI\SA_LTT_UI.csproj", "{44BB757E-322E-4DF5-934A-161094DAA007}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SA_LTT", "SA_LTT\SA_LTT.csproj", "{190DA844-E3B7-4813-A72A-03F2BDAEBD43}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {44BB757E-322E-4DF5-934A-161094DAA007}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {44BB757E-322E-4DF5-934A-161094DAA007}.Debug|Any CPU.Build.0 = Debug|Any CPU + {44BB757E-322E-4DF5-934A-161094DAA007}.Release|Any CPU.ActiveCfg = Release|Any CPU + {44BB757E-322E-4DF5-934A-161094DAA007}.Release|Any CPU.Build.0 = Release|Any CPU + {190DA844-E3B7-4813-A72A-03F2BDAEBD43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {190DA844-E3B7-4813-A72A-03F2BDAEBD43}.Debug|Any CPU.Build.0 = Debug|Any CPU + {190DA844-E3B7-4813-A72A-03F2BDAEBD43}.Release|Any CPU.ActiveCfg = Release|Any CPU + {190DA844-E3B7-4813-A72A-03F2BDAEBD43}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/SA_LTT_UI/SA_LTT_UI/App.config b/SA_LTT_UI/SA_LTT_UI/App.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/App.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/MainFrame.Designer.cs b/SA_LTT_UI/SA_LTT_UI/MainFrame.Designer.cs new file mode 100644 index 0000000..c33b074 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/MainFrame.Designer.cs @@ -0,0 +1,731 @@ +癤퓆amespace SA_LTT_UI +{ + partial class MainFrame + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.pnl_Top = new System.Windows.Forms.Panel(); + this.lb_AttenuatorCalTime = new System.Windows.Forms.Label(); + this.lb_EnergyDropCheckTime = new System.Windows.Forms.Label(); + this.pnl_Led = new System.Windows.Forms.Panel(); + this.lb_LampGreen = new System.Windows.Forms.Label(); + this.lb_LampYellow = new System.Windows.Forms.Label(); + this.lb_LampRed = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel5 = new System.Windows.Forms.Panel(); + this.label7 = new System.Windows.Forms.Label(); + this.lb_ProcessStatus = new System.Windows.Forms.Label(); + this.panel4 = new System.Windows.Forms.Panel(); + this.label6 = new System.Windows.Forms.Label(); + this.lb_EquipmentStatus = new System.Windows.Forms.Label(); + this.panel3 = new System.Windows.Forms.Panel(); + this.label5 = new System.Windows.Forms.Label(); + this.lb_EquipmentMode = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.lv_OccurredAlarmList = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.pb_Logo = new System.Windows.Forms.PictureBox(); + this.btn_BuzzerStop = new System.Windows.Forms.Button(); + this.btn_LampOnOff = new System.Windows.Forms.Button(); + this.btn_AlarmViewer = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.btn_LogOut = new System.Windows.Forms.Button(); + this.panel7 = new System.Windows.Forms.Panel(); + this.lb_UserLevel = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.panel6 = new System.Windows.Forms.Panel(); + this.lb_UserId = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.lb_Time = new System.Windows.Forms.Label(); + this.lb_Date = new System.Windows.Forms.Label(); + this.lb_DateTime = new System.Windows.Forms.Label(); + this.pnl_Bottom = new System.Windows.Forms.Panel(); + this.rb_Reicipe = new System.Windows.Forms.RadioButton(); + this.rb_Log = new System.Windows.Forms.RadioButton(); + this.rb_AlarmSetting = new System.Windows.Forms.RadioButton(); + this.rb_Maintenance = new System.Windows.Forms.RadioButton(); + this.rb_Main = new System.Windows.Forms.RadioButton(); + this.btn_Close = new System.Windows.Forms.Button(); + this.pnl_Main = new System.Windows.Forms.Panel(); + this.timer = new System.Windows.Forms.Timer(this.components); + this.pnl_Top.SuspendLayout(); + this.pnl_Led.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel5.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pb_Logo)).BeginInit(); + this.panel1.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel6.SuspendLayout(); + this.pnl_Bottom.SuspendLayout(); + this.SuspendLayout(); + // + // pnl_Top + // + this.pnl_Top.BackColor = System.Drawing.Color.White; + this.pnl_Top.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_Top.Controls.Add(this.lb_AttenuatorCalTime); + this.pnl_Top.Controls.Add(this.lb_EnergyDropCheckTime); + this.pnl_Top.Controls.Add(this.pnl_Led); + this.pnl_Top.Controls.Add(this.panel2); + this.pnl_Top.Controls.Add(this.lv_OccurredAlarmList); + this.pnl_Top.Controls.Add(this.pb_Logo); + this.pnl_Top.Controls.Add(this.btn_BuzzerStop); + this.pnl_Top.Controls.Add(this.btn_LampOnOff); + this.pnl_Top.Controls.Add(this.btn_AlarmViewer); + this.pnl_Top.Controls.Add(this.panel1); + this.pnl_Top.Controls.Add(this.lb_Time); + this.pnl_Top.Controls.Add(this.lb_Date); + this.pnl_Top.Controls.Add(this.lb_DateTime); + this.pnl_Top.Dock = System.Windows.Forms.DockStyle.Top; + this.pnl_Top.Location = new System.Drawing.Point(0, 0); + this.pnl_Top.Name = "pnl_Top"; + this.pnl_Top.Size = new System.Drawing.Size(1916, 99); + this.pnl_Top.TabIndex = 3; + // + // lb_AttenuatorCalTime + // + this.lb_AttenuatorCalTime.BackColor = System.Drawing.Color.Green; + this.lb_AttenuatorCalTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_AttenuatorCalTime.Font = new System.Drawing.Font("Gulim", 9F); + this.lb_AttenuatorCalTime.ForeColor = System.Drawing.Color.Black; + this.lb_AttenuatorCalTime.Location = new System.Drawing.Point(1141, 26); + this.lb_AttenuatorCalTime.Name = "lb_AttenuatorCalTime"; + this.lb_AttenuatorCalTime.Size = new System.Drawing.Size(164, 21); + this.lb_AttenuatorCalTime.TabIndex = 21; + this.lb_AttenuatorCalTime.Text = "Attenuator cal time"; + this.lb_AttenuatorCalTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_EnergyDropCheckTime + // + this.lb_EnergyDropCheckTime.BackColor = System.Drawing.Color.Green; + this.lb_EnergyDropCheckTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EnergyDropCheckTime.Font = new System.Drawing.Font("Gulim", 9F); + this.lb_EnergyDropCheckTime.ForeColor = System.Drawing.Color.Black; + this.lb_EnergyDropCheckTime.Location = new System.Drawing.Point(1141, 3); + this.lb_EnergyDropCheckTime.Name = "lb_EnergyDropCheckTime"; + this.lb_EnergyDropCheckTime.Size = new System.Drawing.Size(164, 21); + this.lb_EnergyDropCheckTime.TabIndex = 21; + this.lb_EnergyDropCheckTime.Text = "Energy drop check time"; + this.lb_EnergyDropCheckTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnl_Led + // + this.pnl_Led.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_Led.Controls.Add(this.lb_LampGreen); + this.pnl_Led.Controls.Add(this.lb_LampYellow); + this.pnl_Led.Controls.Add(this.lb_LampRed); + this.pnl_Led.Location = new System.Drawing.Point(1640, 3); + this.pnl_Led.Name = "pnl_Led"; + this.pnl_Led.Size = new System.Drawing.Size(125, 89); + this.pnl_Led.TabIndex = 20; + // + // lb_LampGreen + // + this.lb_LampGreen.BackColor = System.Drawing.Color.Lime; + this.lb_LampGreen.Dock = System.Windows.Forms.DockStyle.Top; + this.lb_LampGreen.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_LampGreen.Font = new System.Drawing.Font("Gulim", 7F); + this.lb_LampGreen.Location = new System.Drawing.Point(0, 58); + this.lb_LampGreen.Name = "lb_LampGreen"; + this.lb_LampGreen.Size = new System.Drawing.Size(123, 29); + this.lb_LampGreen.TabIndex = 13; + this.lb_LampGreen.Text = "GREEN"; + this.lb_LampGreen.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LampYellow + // + this.lb_LampYellow.BackColor = System.Drawing.Color.Yellow; + this.lb_LampYellow.Dock = System.Windows.Forms.DockStyle.Top; + this.lb_LampYellow.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_LampYellow.Font = new System.Drawing.Font("Gulim", 7F); + this.lb_LampYellow.Location = new System.Drawing.Point(0, 29); + this.lb_LampYellow.Name = "lb_LampYellow"; + this.lb_LampYellow.Size = new System.Drawing.Size(123, 29); + this.lb_LampYellow.TabIndex = 14; + this.lb_LampYellow.Text = "YELLOW"; + this.lb_LampYellow.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LampRed + // + this.lb_LampRed.BackColor = System.Drawing.Color.Red; + this.lb_LampRed.Dock = System.Windows.Forms.DockStyle.Top; + this.lb_LampRed.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_LampRed.Font = new System.Drawing.Font("Gulim", 7F); + this.lb_LampRed.Location = new System.Drawing.Point(0, 0); + this.lb_LampRed.Name = "lb_LampRed"; + this.lb_LampRed.Size = new System.Drawing.Size(123, 29); + this.lb_LampRed.TabIndex = 15; + this.lb_LampRed.Text = "RED"; + this.lb_LampRed.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.Transparent; + this.panel2.Controls.Add(this.panel5); + this.panel2.Controls.Add(this.panel4); + this.panel2.Controls.Add(this.panel3); + this.panel2.Controls.Add(this.label4); + this.panel2.Location = new System.Drawing.Point(399, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(179, 90); + this.panel2.TabIndex = 19; + // + // panel5 + // + this.panel5.BackColor = System.Drawing.Color.LightGray; + this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel5.Controls.Add(this.label7); + this.panel5.Controls.Add(this.lb_ProcessStatus); + this.panel5.Dock = System.Windows.Forms.DockStyle.Top; + this.panel5.Location = new System.Drawing.Point(0, 67); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(179, 23); + this.panel5.TabIndex = 0; + // + // label7 + // + this.label7.BackColor = System.Drawing.Color.LightGray; + this.label7.Dock = System.Windows.Forms.DockStyle.Left; + this.label7.Font = new System.Drawing.Font("Gulim", 9F); + this.label7.Location = new System.Drawing.Point(0, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(113, 21); + this.label7.TabIndex = 18; + this.label7.Text = "Process Status :"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lb_ProcessStatus + // + this.lb_ProcessStatus.BackColor = System.Drawing.Color.LightGray; + this.lb_ProcessStatus.Dock = System.Windows.Forms.DockStyle.Right; + this.lb_ProcessStatus.Font = new System.Drawing.Font("Gulim", 9F); + this.lb_ProcessStatus.Location = new System.Drawing.Point(119, 0); + this.lb_ProcessStatus.Name = "lb_ProcessStatus"; + this.lb_ProcessStatus.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.lb_ProcessStatus.Size = new System.Drawing.Size(58, 21); + this.lb_ProcessStatus.TabIndex = 18; + this.lb_ProcessStatus.Text = "Execute"; + this.lb_ProcessStatus.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // panel4 + // + this.panel4.BackColor = System.Drawing.Color.White; + this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel4.Controls.Add(this.label6); + this.panel4.Controls.Add(this.lb_EquipmentStatus); + this.panel4.Dock = System.Windows.Forms.DockStyle.Top; + this.panel4.Location = new System.Drawing.Point(0, 44); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(179, 23); + this.panel4.TabIndex = 0; + // + // label6 + // + this.label6.BackColor = System.Drawing.Color.White; + this.label6.Dock = System.Windows.Forms.DockStyle.Left; + this.label6.Font = new System.Drawing.Font("Gulim", 9F); + this.label6.Location = new System.Drawing.Point(0, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(113, 21); + this.label6.TabIndex = 18; + this.label6.Text = "Equipment Status :"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lb_EquipmentStatus + // + this.lb_EquipmentStatus.BackColor = System.Drawing.Color.White; + this.lb_EquipmentStatus.Dock = System.Windows.Forms.DockStyle.Right; + this.lb_EquipmentStatus.Font = new System.Drawing.Font("Gulim", 9F); + this.lb_EquipmentStatus.Location = new System.Drawing.Point(119, 0); + this.lb_EquipmentStatus.Name = "lb_EquipmentStatus"; + this.lb_EquipmentStatus.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.lb_EquipmentStatus.Size = new System.Drawing.Size(58, 21); + this.lb_EquipmentStatus.TabIndex = 18; + this.lb_EquipmentStatus.Text = "Fault"; + this.lb_EquipmentStatus.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // panel3 + // + this.panel3.BackColor = System.Drawing.Color.LightGray; + this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel3.Controls.Add(this.label5); + this.panel3.Controls.Add(this.lb_EquipmentMode); + this.panel3.Dock = System.Windows.Forms.DockStyle.Top; + this.panel3.Location = new System.Drawing.Point(0, 21); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(179, 23); + this.panel3.TabIndex = 0; + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.LightGray; + this.label5.Dock = System.Windows.Forms.DockStyle.Left; + this.label5.Font = new System.Drawing.Font("Gulim", 9F); + this.label5.Location = new System.Drawing.Point(0, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(113, 21); + this.label5.TabIndex = 18; + this.label5.Text = "Equipment Mode :"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lb_EquipmentMode + // + this.lb_EquipmentMode.BackColor = System.Drawing.Color.LightGray; + this.lb_EquipmentMode.Dock = System.Windows.Forms.DockStyle.Right; + this.lb_EquipmentMode.Font = new System.Drawing.Font("Gulim", 9F); + this.lb_EquipmentMode.Location = new System.Drawing.Point(119, 0); + this.lb_EquipmentMode.Name = "lb_EquipmentMode"; + this.lb_EquipmentMode.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.lb_EquipmentMode.Size = new System.Drawing.Size(58, 21); + this.lb_EquipmentMode.TabIndex = 18; + this.lb_EquipmentMode.Text = "Teach"; + this.lb_EquipmentMode.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.White; + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label4.Dock = System.Windows.Forms.DockStyle.Top; + this.label4.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold); + this.label4.Location = new System.Drawing.Point(0, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(179, 21); + this.label4.TabIndex = 18; + this.label4.Text = "Machine Status"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lv_OccurredAlarmList + // + this.lv_OccurredAlarmList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3}); + this.lv_OccurredAlarmList.FullRowSelect = true; + this.lv_OccurredAlarmList.GridLines = true; + this.lv_OccurredAlarmList.Location = new System.Drawing.Point(584, 3); + this.lv_OccurredAlarmList.MultiSelect = false; + this.lv_OccurredAlarmList.Name = "lv_OccurredAlarmList"; + this.lv_OccurredAlarmList.Size = new System.Drawing.Size(551, 90); + this.lv_OccurredAlarmList.TabIndex = 17; + this.lv_OccurredAlarmList.UseCompatibleStateImageBehavior = false; + this.lv_OccurredAlarmList.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "Code"; + this.columnHeader1.Width = 179; + // + // columnHeader2 + // + this.columnHeader2.Text = "Description"; + this.columnHeader2.Width = 294; + // + // columnHeader3 + // + this.columnHeader3.Text = "Level"; + this.columnHeader3.Width = 71; + // + // pb_Logo + // + this.pb_Logo.BackColor = System.Drawing.Color.White; + this.pb_Logo.BackgroundImage = global::SA_LTT_UI.Properties.Resources.DIT_Logo; + this.pb_Logo.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.pb_Logo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pb_Logo.Cursor = System.Windows.Forms.Cursors.Hand; + this.pb_Logo.ErrorImage = null; + this.pb_Logo.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.pb_Logo.Location = new System.Drawing.Point(3, 3); + this.pb_Logo.Name = "pb_Logo"; + this.pb_Logo.Size = new System.Drawing.Size(180, 90); + this.pb_Logo.TabIndex = 1; + this.pb_Logo.TabStop = false; + this.pb_Logo.Click += new System.EventHandler(this.pb_Logo_Click); + // + // btn_BuzzerStop + // + this.btn_BuzzerStop.BackColor = System.Drawing.Color.White; + this.btn_BuzzerStop.BackgroundImage = global::SA_LTT_UI.Properties.Resources.BuzzerOff; + this.btn_BuzzerStop.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btn_BuzzerStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_BuzzerStop.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn_BuzzerStop.ForeColor = System.Drawing.SystemColors.ControlText; + this.btn_BuzzerStop.Location = new System.Drawing.Point(1311, 3); + this.btn_BuzzerStop.Name = "btn_BuzzerStop"; + this.btn_BuzzerStop.Size = new System.Drawing.Size(104, 90); + this.btn_BuzzerStop.TabIndex = 2; + this.btn_BuzzerStop.Text = "Buzzer\r\nStop"; + this.btn_BuzzerStop.UseVisualStyleBackColor = false; + this.btn_BuzzerStop.Click += new System.EventHandler(this.btn_BuzzerStop_Click); + // + // btn_LampOnOff + // + this.btn_LampOnOff.BackColor = System.Drawing.Color.Olive; + this.btn_LampOnOff.BackgroundImage = global::SA_LTT_UI.Properties.Resources.Lamp; + this.btn_LampOnOff.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btn_LampOnOff.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_LampOnOff.Location = new System.Drawing.Point(1421, 3); + this.btn_LampOnOff.Name = "btn_LampOnOff"; + this.btn_LampOnOff.Size = new System.Drawing.Size(104, 89); + this.btn_LampOnOff.TabIndex = 2; + this.btn_LampOnOff.UseVisualStyleBackColor = false; + this.btn_LampOnOff.Click += new System.EventHandler(this.btn_LampOnOff_Click); + // + // btn_AlarmViewer + // + this.btn_AlarmViewer.BackColor = System.Drawing.Color.White; + this.btn_AlarmViewer.BackgroundImage = global::SA_LTT_UI.Properties.Resources.Alarm; + this.btn_AlarmViewer.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btn_AlarmViewer.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_AlarmViewer.Location = new System.Drawing.Point(1531, 3); + this.btn_AlarmViewer.Name = "btn_AlarmViewer"; + this.btn_AlarmViewer.Size = new System.Drawing.Size(104, 89); + this.btn_AlarmViewer.TabIndex = 2; + this.btn_AlarmViewer.Text = "ALARM"; + this.btn_AlarmViewer.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btn_AlarmViewer.UseVisualStyleBackColor = false; + this.btn_AlarmViewer.Click += new System.EventHandler(this.btn_AlarmViewer_Click); + // + // panel1 + // + this.panel1.Controls.Add(this.btn_LogOut); + this.panel1.Controls.Add(this.panel7); + this.panel1.Controls.Add(this.panel6); + this.panel1.Controls.Add(this.label3); + this.panel1.Location = new System.Drawing.Point(189, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(204, 90); + this.panel1.TabIndex = 16; + // + // btn_LogOut + // + this.btn_LogOut.BackColor = System.Drawing.Color.LightGray; + this.btn_LogOut.Dock = System.Windows.Forms.DockStyle.Top; + this.btn_LogOut.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_LogOut.Location = new System.Drawing.Point(0, 67); + this.btn_LogOut.Name = "btn_LogOut"; + this.btn_LogOut.Size = new System.Drawing.Size(204, 22); + this.btn_LogOut.TabIndex = 19; + this.btn_LogOut.Text = "Log Out"; + this.btn_LogOut.UseVisualStyleBackColor = false; + this.btn_LogOut.Click += new System.EventHandler(this.btn_LogOut_Click); + // + // panel7 + // + this.panel7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel7.Controls.Add(this.lb_UserLevel); + this.panel7.Controls.Add(this.label2); + this.panel7.Dock = System.Windows.Forms.DockStyle.Top; + this.panel7.Location = new System.Drawing.Point(0, 44); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(204, 23); + this.panel7.TabIndex = 18; + // + // lb_UserLevel + // + this.lb_UserLevel.BackColor = System.Drawing.Color.White; + this.lb_UserLevel.Dock = System.Windows.Forms.DockStyle.Right; + this.lb_UserLevel.Font = new System.Drawing.Font("Gulim", 9F); + this.lb_UserLevel.Location = new System.Drawing.Point(68, 0); + this.lb_UserLevel.Name = "lb_UserLevel"; + this.lb_UserLevel.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.lb_UserLevel.Size = new System.Drawing.Size(134, 21); + this.lb_UserLevel.TabIndex = 20; + this.lb_UserLevel.Text = "Operator"; + this.lb_UserLevel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Left; + this.label2.Location = new System.Drawing.Point(0, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(67, 21); + this.label2.TabIndex = 17; + this.label2.Text = "LEVEL"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel6 + // + this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel6.Controls.Add(this.lb_UserId); + this.panel6.Controls.Add(this.label1); + this.panel6.Dock = System.Windows.Forms.DockStyle.Top; + this.panel6.Location = new System.Drawing.Point(0, 21); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(204, 23); + this.panel6.TabIndex = 18; + // + // lb_UserId + // + this.lb_UserId.BackColor = System.Drawing.Color.White; + this.lb_UserId.Dock = System.Windows.Forms.DockStyle.Right; + this.lb_UserId.Font = new System.Drawing.Font("Gulim", 9F); + this.lb_UserId.Location = new System.Drawing.Point(70, 0); + this.lb_UserId.Name = "lb_UserId"; + this.lb_UserId.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.lb_UserId.Size = new System.Drawing.Size(132, 21); + this.lb_UserId.TabIndex = 19; + this.lb_UserId.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Left; + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(67, 21); + this.label1.TabIndex = 17; + this.label1.Text = "NAME"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Dock = System.Windows.Forms.DockStyle.Top; + this.label3.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold); + this.label3.Location = new System.Drawing.Point(0, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(204, 21); + this.label3.TabIndex = 17; + this.label3.Text = "User Information"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Time + // + this.lb_Time.BackColor = System.Drawing.SystemColors.Control; + this.lb_Time.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Time.Font = new System.Drawing.Font("Gulim", 12F, System.Drawing.FontStyle.Bold); + this.lb_Time.Location = new System.Drawing.Point(1770, 66); + this.lb_Time.Name = "lb_Time"; + this.lb_Time.Size = new System.Drawing.Size(136, 26); + this.lb_Time.TabIndex = 8; + this.lb_Time.Text = "Time"; + this.lb_Time.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Date + // + this.lb_Date.BackColor = System.Drawing.SystemColors.Control; + this.lb_Date.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Date.Font = new System.Drawing.Font("Gulim", 12F, System.Drawing.FontStyle.Bold); + this.lb_Date.Location = new System.Drawing.Point(1770, 33); + this.lb_Date.Name = "lb_Date"; + this.lb_Date.Size = new System.Drawing.Size(136, 26); + this.lb_Date.TabIndex = 7; + this.lb_Date.Text = "Date"; + this.lb_Date.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_DateTime + // + this.lb_DateTime.Font = new System.Drawing.Font("Gulim", 12F, System.Drawing.FontStyle.Bold); + this.lb_DateTime.ForeColor = System.Drawing.Color.Black; + this.lb_DateTime.Location = new System.Drawing.Point(1771, 7); + this.lb_DateTime.Name = "lb_DateTime"; + this.lb_DateTime.Size = new System.Drawing.Size(136, 23); + this.lb_DateTime.TabIndex = 6; + this.lb_DateTime.Text = "Date&&Time"; + this.lb_DateTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnl_Bottom + // + this.pnl_Bottom.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_Bottom.Controls.Add(this.rb_Reicipe); + this.pnl_Bottom.Controls.Add(this.rb_Log); + this.pnl_Bottom.Controls.Add(this.rb_AlarmSetting); + this.pnl_Bottom.Controls.Add(this.rb_Maintenance); + this.pnl_Bottom.Controls.Add(this.rb_Main); + this.pnl_Bottom.Controls.Add(this.btn_Close); + this.pnl_Bottom.Dock = System.Windows.Forms.DockStyle.Bottom; + this.pnl_Bottom.Location = new System.Drawing.Point(0, 909); + this.pnl_Bottom.Name = "pnl_Bottom"; + this.pnl_Bottom.Size = new System.Drawing.Size(1916, 99); + this.pnl_Bottom.TabIndex = 4; + // + // rb_Reicipe + // + this.rb_Reicipe.Appearance = System.Windows.Forms.Appearance.Button; + this.rb_Reicipe.Location = new System.Drawing.Point(145, 17); + this.rb_Reicipe.Name = "rb_Reicipe"; + this.rb_Reicipe.Size = new System.Drawing.Size(96, 70); + this.rb_Reicipe.TabIndex = 4; + this.rb_Reicipe.Text = "Recipe"; + this.rb_Reicipe.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.rb_Reicipe.UseVisualStyleBackColor = true; + this.rb_Reicipe.CheckedChanged += new System.EventHandler(this.rb_CheckedChanged); + // + // rb_Log + // + this.rb_Log.Appearance = System.Windows.Forms.Appearance.Button; + this.rb_Log.Location = new System.Drawing.Point(373, 17); + this.rb_Log.Name = "rb_Log"; + this.rb_Log.Size = new System.Drawing.Size(96, 70); + this.rb_Log.TabIndex = 3; + this.rb_Log.Text = "Log"; + this.rb_Log.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.rb_Log.UseVisualStyleBackColor = true; + this.rb_Log.CheckedChanged += new System.EventHandler(this.rb_CheckedChanged); + // + // rb_AlarmSetting + // + this.rb_AlarmSetting.Appearance = System.Windows.Forms.Appearance.Button; + this.rb_AlarmSetting.Location = new System.Drawing.Point(260, 17); + this.rb_AlarmSetting.Name = "rb_AlarmSetting"; + this.rb_AlarmSetting.Size = new System.Drawing.Size(96, 70); + this.rb_AlarmSetting.TabIndex = 3; + this.rb_AlarmSetting.Text = "Alarm Setting"; + this.rb_AlarmSetting.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.rb_AlarmSetting.UseVisualStyleBackColor = true; + this.rb_AlarmSetting.CheckedChanged += new System.EventHandler(this.rb_CheckedChanged); + // + // rb_Maintenance + // + this.rb_Maintenance.Appearance = System.Windows.Forms.Appearance.Button; + this.rb_Maintenance.Location = new System.Drawing.Point(490, 17); + this.rb_Maintenance.Name = "rb_Maintenance"; + this.rb_Maintenance.Size = new System.Drawing.Size(96, 70); + this.rb_Maintenance.TabIndex = 3; + this.rb_Maintenance.Text = "Maintenance"; + this.rb_Maintenance.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.rb_Maintenance.UseVisualStyleBackColor = true; + this.rb_Maintenance.CheckedChanged += new System.EventHandler(this.rb_CheckedChanged); + // + // rb_Main + // + this.rb_Main.Appearance = System.Windows.Forms.Appearance.Button; + this.rb_Main.Checked = true; + this.rb_Main.Location = new System.Drawing.Point(32, 17); + this.rb_Main.Name = "rb_Main"; + this.rb_Main.Size = new System.Drawing.Size(96, 70); + this.rb_Main.TabIndex = 3; + this.rb_Main.TabStop = true; + this.rb_Main.Text = "Main"; + this.rb_Main.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.rb_Main.UseVisualStyleBackColor = true; + this.rb_Main.CheckedChanged += new System.EventHandler(this.rb_CheckedChanged); + // + // btn_Close + // + this.btn_Close.Location = new System.Drawing.Point(1811, 17); + this.btn_Close.Name = "btn_Close"; + this.btn_Close.Size = new System.Drawing.Size(96, 70); + this.btn_Close.TabIndex = 2; + this.btn_Close.Text = "EXIT"; + this.btn_Close.UseVisualStyleBackColor = true; + this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click); + // + // pnl_Main + // + this.pnl_Main.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnl_Main.Location = new System.Drawing.Point(0, 99); + this.pnl_Main.Name = "pnl_Main"; + this.pnl_Main.Size = new System.Drawing.Size(1916, 810); + this.pnl_Main.TabIndex = 5; + // + // MainFrame + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(1916, 1008); + this.Controls.Add(this.pnl_Main); + this.Controls.Add(this.pnl_Bottom); + this.Controls.Add(this.pnl_Top); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.Name = "MainFrame"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "MainFrame"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainFrame_FormClosing); + this.pnl_Top.ResumeLayout(false); + this.pnl_Led.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel5.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pb_Logo)).EndInit(); + this.panel1.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.panel6.ResumeLayout(false); + this.pnl_Bottom.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button btn_AlarmViewer; + private System.Windows.Forms.Panel pnl_Top; + private System.Windows.Forms.Label lb_Time; + private System.Windows.Forms.Label lb_Date; + private System.Windows.Forms.Label lb_DateTime; + private System.Windows.Forms.Panel pnl_Bottom; + private System.Windows.Forms.Panel pnl_Main; + private System.Windows.Forms.Label lb_LampGreen; + private System.Windows.Forms.Label lb_LampYellow; + private System.Windows.Forms.Label lb_LampRed; + private System.Windows.Forms.Button btn_Close; + private System.Windows.Forms.Timer timer; + private System.Windows.Forms.RadioButton rb_Main; + private System.Windows.Forms.RadioButton rb_AlarmSetting; + private System.Windows.Forms.RadioButton rb_Log; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button btn_LogOut; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.PictureBox pb_Logo; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ListView lv_OccurredAlarmList; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.RadioButton rb_Maintenance; + private System.Windows.Forms.Button btn_BuzzerStop; + private System.Windows.Forms.Button btn_LampOnOff; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label lb_ProcessStatus; + private System.Windows.Forms.Label lb_EquipmentMode; + private System.Windows.Forms.Label lb_EquipmentStatus; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Panel panel7; + private System.Windows.Forms.Panel pnl_Led; + private System.Windows.Forms.Label lb_UserLevel; + private System.Windows.Forms.Label lb_UserId; + private System.Windows.Forms.RadioButton rb_Reicipe; + private System.Windows.Forms.Label lb_AttenuatorCalTime; + private System.Windows.Forms.Label lb_EnergyDropCheckTime; + } +} + diff --git a/SA_LTT_UI/SA_LTT_UI/MainFrame.cs b/SA_LTT_UI/SA_LTT_UI/MainFrame.cs new file mode 100644 index 0000000..93d1c42 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/MainFrame.cs @@ -0,0 +1,296 @@ +癤퓎sing SA_LTT; +using SA_LTT_UI.Screen; +using SA_LTT_UI.Viewer; +using System; +using System.Drawing; +using System.Windows.Forms; + + + +namespace SA_LTT_UI +{ + delegate void UIUpdateDelegate(); + delegate void AlarmOccurred(SA_LTT.Alarm.Alarm occurredAlarm); + delegate void AlarmCleared(); + public partial class MainFrame : Form + { + public Equipment equipment; + + public ScreenMain screenMain; + public ScreenRecipe screenRecipe; + public ScreenParameter screenParameter; + public ScreenAlarmSetting screenAlarmSetting; + public ScreenLog screenLog; + public ScreenMaintenance screenMaintenance; + public ScreenIO screenIO; + public ScreenSetting screenSetting; + public ScreenMotionMaintenance screenMotionMaintenance; + public ScreenLaser screenLaser; + + public EquipmentInfoViewer equipmentInfoViewer; + public AlarmViewer alarmViewer; + public LogInViewer loginViewer; + public MaintenanceViewer maintenanceViewer; + public ScannerViewer scannerViewer; + public AttenuatorViewer attenuatorViewer; + public RobotViewer robotViewer; + public WaferInfoViewer waferInfoViewer; + public PreAlignViwer preAignViewer; + public PiLaserViewer piLaserViewer; + public ChamberViewer chamberViewer; + public EnergyMeterViewer powermeterViewer; + public ChillerViewer chillerViewer; + public EnergyDropCheckViewer energyDropCheckViewer; + public AttenuatorCalViewer attenuatorCalViewer; + public SequenceViewer sequenceViewer; + public VisionViewer visionViewer; + public bool m_bSimulationMode = false; + + /// <summary> + /// �슦痢� �긽�떒 �떕湲� 踰꾪듉 鍮꾪솢�꽦�솕. + /// </summary> + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ClassStyle = MyCp.ClassStyle | 0x200; + MyCp.ExStyle |= 0x02000000; + return MyCp; + } + } + + public MainFrame() + { + InitializeComponent(); + + equipment = new Equipment(); + + InitializeScreen(); + + equipment.UserChanged += Equipment_UserChanged; + equipment.alarmManager.Occurred += AlarmManager_Occurred; + equipment.alarmManager.Cleared += AlarmManager_Cleared; + + CheckOccurredAlarmList(); + timer.Tick += Timer_Tick; + timer.Start(); + } + + private void CheckOccurredAlarmList() + { + foreach(SA_LTT.Alarm.Alarm occurredAlarm in equipment.alarmManager.OccurredAlarms) + { + ListViewItem listViewItem = new ListViewItem(occurredAlarm.Code.ToString()); + listViewItem.SubItems.Add(occurredAlarm.Description); + listViewItem.SubItems.Add(occurredAlarm.Level.ToString()); + + lv_OccurredAlarmList.Items.Add(listViewItem); + } + } + + private void AlarmManager_Cleared() + { + lv_OccurredAlarmList.Items.Clear(); + } + + private void AlarmManager_Occurred(SA_LTT.Alarm.Alarm occurredAlarm) + { + if (InvokeRequired) + { + BeginInvoke(new AlarmOccurred(AlarmManager_Occurred), occurredAlarm); + return; + } + else + { + ListViewItem listViewItem = new ListViewItem(occurredAlarm.Code.ToString()); + listViewItem.SubItems.Add(occurredAlarm.Description); + listViewItem.SubItems.Add(occurredAlarm.Level.ToString()); + + lv_OccurredAlarmList.Items.Add(listViewItem); + + //�븣�엺 諛쒖깮�떆 李� �쓣��. + alarmViewer.Show(); + alarmViewer.WindowState = FormWindowState.Normal; + alarmViewer.TopMost = true; + alarmViewer.TopMost = false; + } + } + + private void Equipment_UserChanged(SA_LTT.UserInfo.User changedUser) + { + lb_UserId.Text = changedUser.Name; + lb_UserLevel.Text = changedUser.Level.ToString(); + + rb_Main.Checked = true; + } + + private void Timer_Tick(object sender, EventArgs e) + { + DateTime currentTime = DateTime.Now; + lb_Date.Text = currentTime.ToString("yyyy-MM-dd"); + lb_Time.Text = currentTime.ToString("HH:mm:ss"); + UpdateTowerLamp(); + UpdateAlarmViwer(); + + lb_EquipmentMode.Text = equipment.EquipmentMode.ToString(); + lb_EquipmentStatus.Text = equipment.EquipmentStatus.ToString(); + lb_ProcessStatus.Text = equipment.ProcessStatus.ToString(); + + lb_EquipmentMode.BackColor = equipment.EquipmentMode == EquipmentMode.Teach ? Color.Red : Color.LightGray; + lb_EquipmentStatus.BackColor = equipment.EquipmentStatus == EquipmentStatus.Fault ? Color.Red : Color.White; + lb_EnergyDropCheckTime.BackColor = equipment.IsEnergyDropCheckTime() ? Color.Lime : Color.Green; + lb_AttenuatorCalTime.BackColor = equipment.IsAttenuatorCalTime() ? Color.Lime : Color.Green; + } + + private void InitializeScreen() + { + pnl_Main.Controls.Clear(); + + screenMain = new ScreenMain(this); + screenRecipe = new ScreenRecipe(this); + screenParameter = new ScreenParameter(this); + screenAlarmSetting = new ScreenAlarmSetting(this); + screenLog = new ScreenLog(this); + + screenSetting = new ScreenSetting(this); + screenIO = new ScreenIO(this); + screenMotionMaintenance = new ScreenMotionMaintenance(this); + screenMaintenance = new ScreenMaintenance(this); + screenLaser = new ScreenLaser(this); + + equipmentInfoViewer = new EquipmentInfoViewer(this); + alarmViewer = new AlarmViewer(this); + scannerViewer = new ScannerViewer(this); + attenuatorViewer = new AttenuatorViewer(this); + loginViewer = new LogInViewer(this); + robotViewer = new RobotViewer(this); + preAignViewer = new PreAlignViwer(this); + maintenanceViewer = new MaintenanceViewer(); + waferInfoViewer = new WaferInfoViewer(this); + piLaserViewer = new PiLaserViewer(this); + chamberViewer = new ChamberViewer(this); + powermeterViewer = new EnergyMeterViewer(this); + chillerViewer = new ChillerViewer(this); + energyDropCheckViewer = new EnergyDropCheckViewer(this); + attenuatorCalViewer = new AttenuatorCalViewer(this); + sequenceViewer = new SequenceViewer(this); + visionViewer = new VisionViewer(this); + + pnl_Main.Controls.Add(screenMain); + //loginViewer.Show(); + } + + private void btn_AlarmViewer_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + alarmViewer.Show(); + alarmViewer.WindowState = FormWindowState.Normal; + alarmViewer.TopMost = true; + alarmViewer.TopMost = false; + } + + private void MainFrame_FormClosing(object sender, FormClosingEventArgs e) + { + equipment.Dispose(); + } + + private void btn_Close_Click(object sender, EventArgs e) + { + DialogResult result = MessageBox.Show("醫낅즺 �븯�떆寃좎뒿�땲源�?", "Close box", MessageBoxButtons.OKCancel); + + if(result == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + this.Close(); + } + } + + private void rb_CheckedChanged(object sender, EventArgs e) + { + pnl_Main.Controls.Clear(); + + if (rb_Main.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + pnl_Main.Controls.Add(screenMain); + } + else if(rb_Reicipe.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + pnl_Main.Controls.Add(screenRecipe); + } + else if(rb_AlarmSetting.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + pnl_Main.Controls.Add(screenAlarmSetting); + } + else if(rb_Log.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + pnl_Main.Controls.Add(screenLog); + } + else if (rb_Maintenance.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + pnl_Main.Controls.Add(screenMaintenance); + } + } + + private void btn_LogOut_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + equipment.LogOut(); + loginViewer.Show(); + } + + private void btn_BuzzerStop_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + equipment.BuzzerStop(); + } + + private void btn_LampOnOff_Click(object sender, EventArgs e) + { + if(equipment.IsLampOn) + { + EquipmentLogManager.Instance.WriteButtonLog($"MainFrame : Lamp off"); + equipment.LampOff(); + } + else + { + EquipmentLogManager.Instance.WriteButtonLog($"MainFrame : Lamp on"); + equipment.LampOn(); + } + } + + private void UpdateTowerLamp() + { + lb_LampRed.BackColor = equipment.crevis.DigitalOutputs[SA_LTT.Module.Crevis.DigitalOutput.SIGNAL_TOWER_RED] ? Color.Red : Color.DarkRed; + lb_LampYellow.BackColor = equipment.crevis.DigitalOutputs[SA_LTT.Module.Crevis.DigitalOutput.SIGNAL_TOWER_YELLOW] ? Color.Yellow : Color.Olive; + lb_LampGreen.BackColor = equipment.crevis.DigitalOutputs[SA_LTT.Module.Crevis.DigitalOutput.SIGNAL_TOWER_GREEN] ? Color.Lime : Color.Green; + + btn_LampOnOff.BackColor = equipment.crevis.DigitalOutputs[SA_LTT.Module.Crevis.DigitalOutput.FLUORESCENT_LAMP_OFF] ? Color.Olive : Color.Yellow; + } + + private void UpdateAlarmViwer() + { + if (equipment.alarmManager.OccurredAlarms.Count > 0) + { + btn_AlarmViewer.BackColor = Color.Red; + } + else + { + btn_AlarmViewer.BackColor = Color.White; + } + } + + private void pb_Logo_Click(object sender, EventArgs e) + { + equipmentInfoViewer.Show(); + equipmentInfoViewer.WindowState = FormWindowState.Normal; + equipmentInfoViewer.TopMost = true; + equipmentInfoViewer.TopMost = false; + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/MainFrame.resx b/SA_LTT_UI/SA_LTT_UI/MainFrame.resx new file mode 100644 index 0000000..e22c5ac --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/MainFrame.resx @@ -0,0 +1,123 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="timer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Program.cs b/SA_LTT_UI/SA_LTT_UI/Program.cs new file mode 100644 index 0000000..4989a61 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Program.cs @@ -0,0 +1,60 @@ +癤퓎sing SA_LTT; +using System; +using System.Threading; +using System.Windows.Forms; + +namespace SA_LTT_UI +{ + static class Program + { + /// <summary> + /// The main entry point for the application. + /// </summary> + + private static Mutex _mutexObject; + private static string _strAppConstName = "SALTT-01"; + + [STAThread] + static void Main() + { + OperatingSystem os = Environment.OSVersion; + if ((os.Platform == PlatformID.Win32NT) && (os.Version.Major >= 5)) + { + _strAppConstName = @"Global\" + _strAppConstName; + + try + { + // 裕ㅽ뀓�뒪瑜� �깮�꽦 + _mutexObject = new Mutex(false, _strAppConstName); + } + catch (ApplicationException ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + return; + } + + if (_mutexObject.WaitOne(100, false)) + { + try + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainFrame()); + + _mutexObject.ReleaseMutex(); + } + catch (ApplicationException ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + return; + } + } + else + { + MessageBox.Show(@"�씠誘� �떎�뻾�릺怨� �엳�뒿�땲�떎.", @"�떎以묒떎�뻾諛⑹�"); + } + _mutexObject.Close(); + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Properties/AssemblyInfo.cs b/SA_LTT_UI/SA_LTT_UI/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b58fa59 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +癤퓎sing System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SA_LTT_UI")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SA_LTT_UI")] +[assembly: AssemblyCopyright("Copyright 짤 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("44bb757e-322e-4df5-934a-161094daa007")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SA_LTT_UI/SA_LTT_UI/Properties/Resources.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Properties/Resources.Designer.cs new file mode 100644 index 0000000..5f57fe8 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Properties/Resources.Designer.cs @@ -0,0 +1,203 @@ +癤�//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace SA_LTT_UI.Properties { + using System; + + + /// <summary> + /// A strongly-typed resource class, for looking up localized strings, etc. + /// </summary> + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// <summary> + /// Returns the cached ResourceManager instance used by this class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SA_LTT_UI.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Alarm { + get { + object obj = ResourceManager.GetObject("Alarm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Aligner { + get { + object obj = ResourceManager.GetObject("Aligner", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap BuzzerOff { + get { + object obj = ResourceManager.GetObject("BuzzerOff", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Chamber { + get { + object obj = ResourceManager.GetObject("Chamber", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap DIT_Logo { + get { + object obj = ResourceManager.GetObject("DIT_Logo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Lamp { + get { + object obj = ResourceManager.GetObject("Lamp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap LoadPort { + get { + object obj = ResourceManager.GetObject("LoadPort", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap RecipeImage { + get { + object obj = ResourceManager.GetObject("RecipeImage", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Robot_Arm { + get { + object obj = ResourceManager.GetObject("Robot_Arm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Robot_Arm_Body { + get { + object obj = ResourceManager.GetObject("Robot_Arm_Body", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Robot_Arm_Hand { + get { + object obj = ResourceManager.GetObject("Robot_Arm_Hand", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Robot_Arm1 { + get { + object obj = ResourceManager.GetObject("Robot_Arm1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Robot_Arm2 { + get { + object obj = ResourceManager.GetObject("Robot_Arm2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Robot_Body { + get { + object obj = ResourceManager.GetObject("Robot_Body", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Properties/Resources.resx b/SA_LTT_UI/SA_LTT_UI/Properties/Resources.resx new file mode 100644 index 0000000..efe8f83 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Properties/Resources.resx @@ -0,0 +1,163 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <data name="Alarm" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Alarm.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="Aligner" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Aligner.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="BuzzerOff" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\BuzzerOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="Chamber" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Chamber.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="DIT_Logo" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\DIT_Logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="Lamp" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Lamp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="LoadPort" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\LoadPort.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="RecipeImage" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\RecipeImage.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="Robot_Arm" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Robot_Arm.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="Robot_Arm1" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Robot_Arm1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="Robot_Arm2" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Robot_Arm2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="Robot_Arm_Body" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Robot_Arm_Body.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="Robot_Arm_Hand" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Robot_Arm_Hand.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="Robot_Body" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Robot_Body.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Properties/Settings.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Properties/Settings.Designer.cs new file mode 100644 index 0000000..db75a17 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +癤�//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace SA_LTT_UI.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Properties/Settings.settings b/SA_LTT_UI/SA_LTT_UI/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Properties/Settings.settings @@ -0,0 +1,7 @@ +癤�<?xml version='1.0' encoding='utf-8'?> +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> + <Profiles> + <Profile Name="(Default)" /> + </Profiles> + <Settings /> +</SettingsFile> diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/Alarm.png b/SA_LTT_UI/SA_LTT_UI/Resources/Alarm.png new file mode 100644 index 0000000..8543934 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/Alarm.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/Aligner.png b/SA_LTT_UI/SA_LTT_UI/Resources/Aligner.png new file mode 100644 index 0000000..7f6efa7 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/Aligner.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/BuzzerOff.png b/SA_LTT_UI/SA_LTT_UI/Resources/BuzzerOff.png new file mode 100644 index 0000000..0e92483 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/BuzzerOff.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/Chamber.png b/SA_LTT_UI/SA_LTT_UI/Resources/Chamber.png new file mode 100644 index 0000000..517d2c2 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/Chamber.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/DIT_Logo.png b/SA_LTT_UI/SA_LTT_UI/Resources/DIT_Logo.png new file mode 100644 index 0000000..86040b7 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/DIT_Logo.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/Lamp.png b/SA_LTT_UI/SA_LTT_UI/Resources/Lamp.png new file mode 100644 index 0000000..408663b --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/Lamp.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/LoadPort.png b/SA_LTT_UI/SA_LTT_UI/Resources/LoadPort.png new file mode 100644 index 0000000..eb5b740 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/LoadPort.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/RecipeImage.PNG b/SA_LTT_UI/SA_LTT_UI/Resources/RecipeImage.PNG new file mode 100644 index 0000000..6e95cdd --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/RecipeImage.PNG Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm.png b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm.png new file mode 100644 index 0000000..2a15d09 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm1.png b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm1.png new file mode 100644 index 0000000..d1ddc60 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm1.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm2.png b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm2.png new file mode 100644 index 0000000..da4b264 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm2.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Body.png b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Body.png new file mode 100644 index 0000000..edb3e39 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Body.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Hand.png b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Hand.png new file mode 100644 index 0000000..5ba2561 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Hand.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Body.png b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Body.png new file mode 100644 index 0000000..327b8b9 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Resources/Robot_Body.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj b/SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj new file mode 100644 index 0000000..f697a81 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj @@ -0,0 +1,537 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{44BB757E-322E-4DF5-934A-161094DAA007}</ProjectGuid> + <OutputType>WinExe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>SA_LTT_UI</RootNamespace> + <AssemblyName>SA_LTT_UI</AssemblyName> + <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="EasyModbus, Version=5.6.0.0, Culture=neutral, PublicKeyToken=null" /> + <Reference Include="padDLLBW, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>bin\Debug\padDLLBW.dll</HintPath> + </Reference> + <Reference Include="PresentationCore" /> + <Reference Include="PresentationFramework" /> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Windows.Forms.DataVisualization" /> + <Reference Include="System.Xaml" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Deployment" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Net.Http" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="UIAutomationProvider" /> + <Reference Include="WindowsBase" /> + <Reference Include="WindowsFormsIntegration" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Screen\AnalogBar.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\AnalogBar.Designer.cs"> + <DependentUpon>AnalogBar.cs</DependentUpon> + </Compile> + <Compile Include="Screen\AnimationEquipment.xaml.cs"> + <DependentUpon>AnimationEquipment.xaml</DependentUpon> + </Compile> + <Compile Include="Screen\ChamberStatus.xaml.cs"> + <DependentUpon>ChamberStatus.xaml</DependentUpon> + </Compile> + <Compile Include="Screen\IoBar.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\IoBar.Designer.cs"> + <DependentUpon>IoBar.cs</DependentUpon> + </Compile> + <Compile Include="Screen\RecipeView.xaml.cs"> + <DependentUpon>RecipeView.xaml</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenIO.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenIO.Designer.cs"> + <DependentUpon>ScreenIO.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenLaser.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenLaser.Designer.cs"> + <DependentUpon>ScreenLaser.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenMaintenance.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenMaintenance.Designer.cs"> + <DependentUpon>ScreenMaintenance.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenMotionMaintenance.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenMotionMaintenance.Designer.cs"> + <DependentUpon>ScreenMotionMaintenance.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenRecipe.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenRecipe.Designer.cs"> + <DependentUpon>ScreenRecipe.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenSetting.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenSetting.Designer.cs"> + <DependentUpon>ScreenSetting.cs</DependentUpon> + </Compile> + <Compile Include="Screen\WaferProcessPointView.xaml.cs"> + <DependentUpon>WaferProcessPointView.xaml</DependentUpon> + </Compile> + <Compile Include="Viewer\AlarmViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\AlarmViewer.Designer.cs"> + <DependentUpon>AlarmViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\AttenuatorCalViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\AttenuatorCalViewer.Designer.cs"> + <DependentUpon>AttenuatorCalViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\AttenuatorViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\AttenuatorViewer.Designer.cs"> + <DependentUpon>AttenuatorViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\ChamberViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\ChamberViewer.Designer.cs"> + <DependentUpon>ChamberViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\ChillerViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\ChillerViewer.Designer.cs"> + <DependentUpon>ChillerViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\CreateUserViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\CreateUserViewer.Designer.cs"> + <DependentUpon>CreateUserViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\EnergyDropCheckViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\EnergyDropCheckViewer.Designer.cs"> + <DependentUpon>EnergyDropCheckViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\EquipmentInfoViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\EquipmentInfoViewer.Designer.cs"> + <DependentUpon>EquipmentInfoViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\FoupRecipeCreateViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\FoupRecipeCreateViewer.Designer.cs"> + <DependentUpon>FoupRecipeCreateViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\FoupRecipeSelectViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\FoupRecipeSelectViewer.Designer.cs"> + <DependentUpon>FoupRecipeSelectViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\LogInViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\LogInViewer.Designer.cs"> + <DependentUpon>LogInViewer.cs</DependentUpon> + </Compile> + <Compile Include="MainFrame.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="MainFrame.Designer.cs"> + <DependentUpon>MainFrame.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\MaintenanceViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\MaintenanceViewer.Designer.cs"> + <DependentUpon>MaintenanceViewer.cs</DependentUpon> + </Compile> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Screen\ScreenAlarmSetting.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenAlarmSetting.Designer.cs"> + <DependentUpon>ScreenAlarmSetting.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenMain.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenMain.Designer.cs"> + <DependentUpon>ScreenMain.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenParameter.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenParameter.Designer.cs"> + <DependentUpon>ScreenParameter.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenLog.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenLog.Designer.cs"> + <DependentUpon>ScreenLog.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\MessageBoxPad.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\MessageBoxPad.Designer.cs"> + <DependentUpon>MessageBoxPad.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\ModifyUserViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\ModifyUserViewer.Designer.cs"> + <DependentUpon>ModifyUserViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\PiLaserViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\PiLaserViewer.Designer.cs"> + <DependentUpon>PiLaserViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\PowerMeterViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\PowerMeterViewer.Designer.cs"> + <DependentUpon>PowerMeterViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\PreAlignViwer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\PreAlignViwer.Designer.cs"> + <DependentUpon>PreAlignViwer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\RecipeCreateViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\RecipeCreateViewer.Designer.cs"> + <DependentUpon>RecipeCreateViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\RobotViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\RobotViewer.Designer.cs"> + <DependentUpon>RobotViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\ScannerViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\ScannerViewer.Designer.cs"> + <DependentUpon>ScannerViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\SequenceViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\SequenceViewer.Designer.cs"> + <DependentUpon>SequenceViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\VisionViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\VisionViewer.Designer.cs"> + <DependentUpon>VisionViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\WaferInfoViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\WaferInfoViewer.Designer.cs"> + <DependentUpon>WaferInfoViewer.cs</DependentUpon> + </Compile> + <EmbeddedResource Include="Screen\AnalogBar.resx"> + <DependentUpon>AnalogBar.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\IoBar.resx"> + <DependentUpon>IoBar.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenIO.resx"> + <DependentUpon>ScreenIO.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenLaser.resx"> + <DependentUpon>ScreenLaser.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenMaintenance.resx"> + <DependentUpon>ScreenMaintenance.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenMotionMaintenance.resx"> + <DependentUpon>ScreenMotionMaintenance.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenRecipe.resx"> + <DependentUpon>ScreenRecipe.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenSetting.resx"> + <DependentUpon>ScreenSetting.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\AlarmViewer.resx"> + <DependentUpon>AlarmViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\AttenuatorCalViewer.resx"> + <DependentUpon>AttenuatorCalViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\AttenuatorViewer.resx"> + <DependentUpon>AttenuatorViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\ChamberViewer.resx"> + <DependentUpon>ChamberViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\ChillerViewer.resx"> + <DependentUpon>ChillerViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\CreateUserViewer.resx"> + <DependentUpon>CreateUserViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\EnergyDropCheckViewer.resx"> + <DependentUpon>EnergyDropCheckViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\EquipmentInfoViewer.resx"> + <DependentUpon>EquipmentInfoViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\FoupRecipeCreateViewer.resx"> + <DependentUpon>FoupRecipeCreateViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\FoupRecipeSelectViewer.resx"> + <DependentUpon>FoupRecipeSelectViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\LogInViewer.resx"> + <DependentUpon>LogInViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="MainFrame.resx"> + <DependentUpon>MainFrame.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Resources.resx</DependentUpon> + <DesignTime>True</DesignTime> + </Compile> + <EmbeddedResource Include="Screen\ScreenAlarmSetting.resx"> + <DependentUpon>ScreenAlarmSetting.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenLog.resx"> + <DependentUpon>ScreenLog.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenMain.resx"> + <DependentUpon>ScreenMain.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenParameter.resx"> + <DependentUpon>ScreenParameter.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\MaintenanceViewer.resx"> + <DependentUpon>MaintenanceViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\MessageBoxPad.resx"> + <DependentUpon>MessageBoxPad.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\ModifyUserViewer.resx"> + <DependentUpon>ModifyUserViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\PiLaserViewer.resx"> + <DependentUpon>PiLaserViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\PowerMeterViewer.resx"> + <DependentUpon>PowerMeterViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\PreAlignViwer.resx"> + <DependentUpon>PreAlignViwer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\RecipeCreateViewer.resx"> + <DependentUpon>RecipeCreateViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\RobotViewer.resx"> + <DependentUpon>RobotViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\ScannerViewer.resx"> + <DependentUpon>ScannerViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\SequenceViewer.resx"> + <DependentUpon>SequenceViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\VisionViewer.resx"> + <DependentUpon>VisionViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\WaferInfoViewer.resx"> + <DependentUpon>WaferInfoViewer.cs</DependentUpon> + </EmbeddedResource> + <None Include="Properties\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <LastGenOutput>Settings.Designer.cs</LastGenOutput> + </None> + <Compile Include="Properties\Settings.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Settings.settings</DependentUpon> + <DesignTimeSharedInput>True</DesignTimeSharedInput> + </Compile> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\SA_LTT\SA_LTT.csproj"> + <Project>{190DA844-E3B7-4813-A72A-03F2BDAEBD43}</Project> + <Name>SA_LTT</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <None Include="Resources\DIT_Logo.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Alarm.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Lamp.png" /> + </ItemGroup> + <ItemGroup> + <Page Include="Screen\AnimationEquipment.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="Screen\ChamberStatus.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="Screen\RecipeView.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="Screen\WaferProcessPointView.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + </ItemGroup> + <ItemGroup> + <None Include="Resources\LoadPort.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Aligner.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Chamber.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Arm.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Arm1.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Arm2.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Body.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Arm_Hand.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Arm_Body.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\BuzzerOff.png" /> + <Content Include="Resources\RecipeImage.PNG"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + </ItemGroup> + <ItemGroup> + <COMReference Include="Microsoft.Office.Core"> + <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid> + <VersionMajor>2</VersionMajor> + <VersionMinor>5</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>primary</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="Microsoft.Office.Interop.Excel"> + <Guid>{00020813-0000-0000-C000-000000000046}</Guid> + <VersionMajor>1</VersionMajor> + <VersionMinor>7</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>primary</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="VBIDE"> + <Guid>{0002E157-0000-0000-C000-000000000046}</Guid> + <VersionMajor>5</VersionMajor> + <VersionMinor>3</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>primary</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj.user b/SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj.user new file mode 100644 index 0000000..5283ef1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj.user @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <ProjectView>ShowAllFiles</ProjectView> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/SA_LTT_UI_k5iwqdhu_wpftmp.csproj b/SA_LTT_UI/SA_LTT_UI/SA_LTT_UI_k5iwqdhu_wpftmp.csproj new file mode 100644 index 0000000..d44a1c5 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/SA_LTT_UI_k5iwqdhu_wpftmp.csproj @@ -0,0 +1,529 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{44BB757E-322E-4DF5-934A-161094DAA007}</ProjectGuid> + <OutputType>WinExe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>SA_LTT_UI</RootNamespace> + <AssemblyName>SA_LTT_UI</AssemblyName> + <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + </ItemGroup> + <ItemGroup> + <Compile Include="Screen\AnalogBar.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\AnalogBar.Designer.cs"> + <DependentUpon>AnalogBar.cs</DependentUpon> + </Compile> + <Compile Include="Screen\AnimationEquipment.xaml.cs"> + <DependentUpon>AnimationEquipment.xaml</DependentUpon> + </Compile> + <Compile Include="Screen\ChamberStatus.xaml.cs"> + <DependentUpon>ChamberStatus.xaml</DependentUpon> + </Compile> + <Compile Include="Screen\IoBar.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\IoBar.Designer.cs"> + <DependentUpon>IoBar.cs</DependentUpon> + </Compile> + <Compile Include="Screen\RecipeView.xaml.cs"> + <DependentUpon>RecipeView.xaml</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenIO.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenIO.Designer.cs"> + <DependentUpon>ScreenIO.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenLaser.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenLaser.Designer.cs"> + <DependentUpon>ScreenLaser.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenMaintenance.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenMaintenance.Designer.cs"> + <DependentUpon>ScreenMaintenance.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenMotionMaintenance.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenMotionMaintenance.Designer.cs"> + <DependentUpon>ScreenMotionMaintenance.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenRecipe.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenRecipe.Designer.cs"> + <DependentUpon>ScreenRecipe.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenSetting.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenSetting.Designer.cs"> + <DependentUpon>ScreenSetting.cs</DependentUpon> + </Compile> + <Compile Include="Screen\WaferProcessPointView.xaml.cs"> + <DependentUpon>WaferProcessPointView.xaml</DependentUpon> + </Compile> + <Compile Include="Viewer\AlarmViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\AlarmViewer.Designer.cs"> + <DependentUpon>AlarmViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\AttenuatorCalViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\AttenuatorCalViewer.Designer.cs"> + <DependentUpon>AttenuatorCalViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\AttenuatorViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\AttenuatorViewer.Designer.cs"> + <DependentUpon>AttenuatorViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\ChamberViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\ChamberViewer.Designer.cs"> + <DependentUpon>ChamberViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\ChillerViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\ChillerViewer.Designer.cs"> + <DependentUpon>ChillerViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\CreateUserViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\CreateUserViewer.Designer.cs"> + <DependentUpon>CreateUserViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\EnergyDropCheckViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\EnergyDropCheckViewer.Designer.cs"> + <DependentUpon>EnergyDropCheckViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\EquipmentInfoViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\EquipmentInfoViewer.Designer.cs"> + <DependentUpon>EquipmentInfoViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\FoupRecipeCreateViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\FoupRecipeCreateViewer.Designer.cs"> + <DependentUpon>FoupRecipeCreateViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\FoupRecipeSelectViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\FoupRecipeSelectViewer.Designer.cs"> + <DependentUpon>FoupRecipeSelectViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\LogInViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\LogInViewer.Designer.cs"> + <DependentUpon>LogInViewer.cs</DependentUpon> + </Compile> + <Compile Include="MainFrame.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="MainFrame.Designer.cs"> + <DependentUpon>MainFrame.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\MaintenanceViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\MaintenanceViewer.Designer.cs"> + <DependentUpon>MaintenanceViewer.cs</DependentUpon> + </Compile> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Screen\ScreenAlarmSetting.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenAlarmSetting.Designer.cs"> + <DependentUpon>ScreenAlarmSetting.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenMain.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenMain.Designer.cs"> + <DependentUpon>ScreenMain.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenParameter.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenParameter.Designer.cs"> + <DependentUpon>ScreenParameter.cs</DependentUpon> + </Compile> + <Compile Include="Screen\ScreenLog.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="Screen\ScreenLog.Designer.cs"> + <DependentUpon>ScreenLog.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\MessageBoxPad.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\MessageBoxPad.Designer.cs"> + <DependentUpon>MessageBoxPad.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\ModifyUserViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\ModifyUserViewer.Designer.cs"> + <DependentUpon>ModifyUserViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\PiLaserViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\PiLaserViewer.Designer.cs"> + <DependentUpon>PiLaserViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\PowerMeterViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\PowerMeterViewer.Designer.cs"> + <DependentUpon>PowerMeterViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\PreAlignViwer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\PreAlignViwer.Designer.cs"> + <DependentUpon>PreAlignViwer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\RecipeCreateViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\RecipeCreateViewer.Designer.cs"> + <DependentUpon>RecipeCreateViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\RobotViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\RobotViewer.Designer.cs"> + <DependentUpon>RobotViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\ScannerViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\ScannerViewer.Designer.cs"> + <DependentUpon>ScannerViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\SequenceViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\SequenceViewer.Designer.cs"> + <DependentUpon>SequenceViewer.cs</DependentUpon> + </Compile> + <Compile Include="Viewer\WaferInfoViewer.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Viewer\WaferInfoViewer.Designer.cs"> + <DependentUpon>WaferInfoViewer.cs</DependentUpon> + </Compile> + <EmbeddedResource Include="Screen\AnalogBar.resx"> + <DependentUpon>AnalogBar.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\IoBar.resx"> + <DependentUpon>IoBar.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenIO.resx"> + <DependentUpon>ScreenIO.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenLaser.resx"> + <DependentUpon>ScreenLaser.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenMaintenance.resx"> + <DependentUpon>ScreenMaintenance.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenMotionMaintenance.resx"> + <DependentUpon>ScreenMotionMaintenance.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenRecipe.resx"> + <DependentUpon>ScreenRecipe.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenSetting.resx"> + <DependentUpon>ScreenSetting.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\AlarmViewer.resx"> + <DependentUpon>AlarmViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\AttenuatorCalViewer.resx"> + <DependentUpon>AttenuatorCalViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\AttenuatorViewer.resx"> + <DependentUpon>AttenuatorViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\ChamberViewer.resx"> + <DependentUpon>ChamberViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\ChillerViewer.resx"> + <DependentUpon>ChillerViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\CreateUserViewer.resx"> + <DependentUpon>CreateUserViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\EnergyDropCheckViewer.resx"> + <DependentUpon>EnergyDropCheckViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\EquipmentInfoViewer.resx"> + <DependentUpon>EquipmentInfoViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\FoupRecipeCreateViewer.resx"> + <DependentUpon>FoupRecipeCreateViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\FoupRecipeSelectViewer.resx"> + <DependentUpon>FoupRecipeSelectViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\LogInViewer.resx"> + <DependentUpon>LogInViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="MainFrame.resx"> + <DependentUpon>MainFrame.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Resources.resx</DependentUpon> + <DesignTime>True</DesignTime> + </Compile> + <EmbeddedResource Include="Screen\ScreenAlarmSetting.resx"> + <DependentUpon>ScreenAlarmSetting.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenLog.resx"> + <DependentUpon>ScreenLog.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenMain.resx"> + <DependentUpon>ScreenMain.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Screen\ScreenParameter.resx"> + <DependentUpon>ScreenParameter.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\MaintenanceViewer.resx"> + <DependentUpon>MaintenanceViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\MessageBoxPad.resx"> + <DependentUpon>MessageBoxPad.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\ModifyUserViewer.resx"> + <DependentUpon>ModifyUserViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\PiLaserViewer.resx"> + <DependentUpon>PiLaserViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\PowerMeterViewer.resx"> + <DependentUpon>PowerMeterViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\PreAlignViwer.resx"> + <DependentUpon>PreAlignViwer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\RecipeCreateViewer.resx"> + <DependentUpon>RecipeCreateViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\RobotViewer.resx"> + <DependentUpon>RobotViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\ScannerViewer.resx"> + <DependentUpon>ScannerViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\SequenceViewer.resx"> + <DependentUpon>SequenceViewer.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Viewer\WaferInfoViewer.resx"> + <DependentUpon>WaferInfoViewer.cs</DependentUpon> + </EmbeddedResource> + <None Include="Properties\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <LastGenOutput>Settings.Designer.cs</LastGenOutput> + </None> + <Compile Include="Properties\Settings.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Settings.settings</DependentUpon> + <DesignTimeSharedInput>True</DesignTimeSharedInput> + </Compile> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\SA_LTT\SA_LTT.csproj"> + <Project>{190DA844-E3B7-4813-A72A-03F2BDAEBD43}</Project> + <Name>SA_LTT</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <None Include="Resources\DIT_Logo.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Alarm.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Lamp.png" /> + </ItemGroup> + <ItemGroup> + </ItemGroup> + <ItemGroup> + <None Include="Resources\LoadPort.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Aligner.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Chamber.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Arm.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Arm1.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Arm2.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Body.png"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </None> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Arm_Hand.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\Robot_Arm_Body.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\BuzzerOff.png" /> + <Content Include="Resources\RecipeImage.PNG"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + </ItemGroup> + <ItemGroup> + <COMReference Include="Microsoft.Office.Core"> + <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid> + <VersionMajor>2</VersionMajor> + <VersionMinor>5</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>primary</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="Microsoft.Office.Interop.Excel"> + <Guid>{00020813-0000-0000-C000-000000000046}</Guid> + <VersionMajor>1</VersionMajor> + <VersionMinor>7</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>primary</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="VBIDE"> + <Guid>{0002E157-0000-0000-C000-000000000046}</Guid> + <VersionMajor>5</VersionMajor> + <VersionMinor>3</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>primary</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> + <ItemGroup> + <ReferencePath Include="F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\EasyModbus.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Microsoft.CSharp.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\mscorlib.dll" /> + <ReferencePath Include="F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\padDLLBW.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\PresentationCore.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\PresentationFramework.dll" /> + <ReferencePath Include="F:\SA_LTT_UI\SA_LTT\bin\Debug\SA_LTT.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Core.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Data.DataSetExtensions.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Data.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Deployment.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Drawing.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Net.Http.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Windows.Forms.DataVisualization.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Windows.Forms.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Xaml.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Xml.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Xml.Linq.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\UIAutomationProvider.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\WindowsBase.dll" /> + <ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\WindowsFormsIntegration.dll" /> + <ReferencePath Include="C:\Windows\assembly\GAC_MSIL\Office\14.0.0.0__71e9bce111e9429c\Office.dll"> + <EmbedInteropTypes>True</EmbedInteropTypes> + </ReferencePath> + <ReferencePath Include="C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll"> + <EmbedInteropTypes>True</EmbedInteropTypes> + </ReferencePath> + <ReferencePath Include="C:\Windows\assembly\GAC_MSIL\Microsoft.Vbe.Interop\14.0.0.0__71e9bce111e9429c\Microsoft.Vbe.Interop.dll"> + <EmbedInteropTypes>True</EmbedInteropTypes> + </ReferencePath> + </ItemGroup> + <ItemGroup> + <Compile Include="F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs" /> + <Compile Include="F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.g.cs" /> + <Compile Include="F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.g.cs" /> + <Compile Include="F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.g.cs" /> + <Compile Include="F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_Content.g.cs" /> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.Designer.cs new file mode 100644 index 0000000..d42a8b8 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.Designer.cs @@ -0,0 +1,86 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class AnalogBar + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.lb_Description = new System.Windows.Forms.Label(); + this.lb_Number = new System.Windows.Forms.Label(); + this.lb_Value = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // lb_Description + // + this.lb_Description.BackColor = System.Drawing.SystemColors.Control; + this.lb_Description.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Description.Location = new System.Drawing.Point(71, 3); + this.lb_Description.Name = "lb_Description"; + this.lb_Description.Size = new System.Drawing.Size(227, 37); + this.lb_Description.TabIndex = 7; + this.lb_Description.Text = "Description"; + this.lb_Description.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Number + // + this.lb_Number.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Number.Location = new System.Drawing.Point(3, 3); + this.lb_Number.Name = "lb_Number"; + this.lb_Number.Size = new System.Drawing.Size(62, 37); + this.lb_Number.TabIndex = 6; + this.lb_Number.Text = "Number"; + this.lb_Number.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Value + // + this.lb_Value.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Value.Location = new System.Drawing.Point(304, 3); + this.lb_Value.Name = "lb_Value"; + this.lb_Value.Size = new System.Drawing.Size(113, 37); + this.lb_Value.TabIndex = 7; + this.lb_Value.Text = "Value"; + this.lb_Value.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // AnalogBar + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.lb_Value); + this.Controls.Add(this.lb_Description); + this.Controls.Add(this.lb_Number); + this.Name = "AnalogBar"; + this.Size = new System.Drawing.Size(420, 43); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label lb_Description; + private System.Windows.Forms.Label lb_Number; + private System.Windows.Forms.Label lb_Value; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.cs b/SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.cs new file mode 100644 index 0000000..d74853e --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.cs @@ -0,0 +1,50 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Screen +{ + public partial class AnalogBar : UserControl + { + private int _number; + private string _description; + private double _value; + + public double Value + { + get + { + return _value; + } + + set + { + _value = value; + lb_Value.Text = $"{_value}"; + } + } + + public AnalogBar(int number, string description) + { + InitializeComponent(); + + _number = number; + _description = description; + + lb_Value.Tag = _number; + lb_Number.Text = $"{_number}"; + lb_Description.Text = description; + } + + public void AddClickEvent(ClickEvent clicked) + { + lb_Value.Click += new EventHandler(clicked); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.resx b/SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml b/SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml new file mode 100644 index 0000000..f8cc404 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml @@ -0,0 +1,113 @@ +癤�<UserControl x:Class="SA_LTT_UI.Screen.AnimationEquipment" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:local="clr-namespace:SA_LTT_UI.Screen" + mc:Ignorable="d" + d:DesignHeight="700" d:DesignWidth="1000"> + <Canvas Name="MainFrame" Background="White"> + <Rectangle Height="546" Stroke="Black" Width="700" Fill="SlateGray" Canvas.Top="154" Canvas.Left="302"/> + <Canvas Height="105" Canvas.Left="306" Canvas.Top="353" Width="683"> + <Rectangle Fill="Silver" Height="105" Stroke="Black" Width="684"/> + <Canvas Name="Motor_Y" Height="531" Canvas.Left="540" Canvas.Top="-188" Width="105"> + <Rectangle Fill="Silver" Height="521" Stroke="Black" Width="105" Canvas.Top="10"/> + <Canvas x:Name="Chamber" Height="170" Canvas.Left="-39" Canvas.Bottom="0" Width="180" Canvas.Top="360" RenderTransformOrigin="0.545,0.503" Cursor="Hand"> + <Canvas.Background> + <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/Chamber.png"/> + </Canvas.Background> + <Ellipse Fill="#FFF3DCC6" Height="5" Canvas.Left="82" Canvas.Top="56" Width="5"/> + <Ellipse Fill="#FFF3DCC6" Height="5" Canvas.Left="82" Canvas.Top="108" Width="5"/> + <Ellipse Fill="#FFF3DCC6" Height="5" Canvas.Left="126" Canvas.Top="81" Width="5"/> + <Rectangle Name="ChamberGate" Fill="White" Height="135" Width="18" Canvas.Left="5" Canvas.Top="18"/> + <Canvas Name="ChamberWafer" Height="77" Width="78" Canvas.Top="47" RenderTransformOrigin="0.5,0.5" Canvas.Left="63"> + <Ellipse Name="ChamberWaferStatus" Fill="Silver" Height="77" Stroke="Black" Width="78"/> + <TextBlock Name="ChamberWaferSourceName" Canvas.Left="23" TextWrapping="Wrap" Text="A1" Canvas.Top="22" Height="30" TextAlignment="Center" FontSize="22" LineHeight="22"/> + </Canvas> + <Slider x:Name="LiftPin" Canvas.Left="120" Canvas.Top="79" Width="56" RenderTransformOrigin="0.5,0.5" Minimum="0" Maximum="1" IsEnabled="False" SmallChange="1"> + <Slider.RenderTransform> + <TransformGroup> + <ScaleTransform/> + <SkewTransform/> + <RotateTransform Angle="-90"/> + <TranslateTransform/> + </TransformGroup> + </Slider.RenderTransform> + </Slider> + </Canvas> + </Canvas> + </Canvas> + <Rectangle Height="154" Stroke="Black" Width="304" Fill="BurlyWood"/> + <Rectangle Height="154" Stroke="Black" Width="697" Fill="BurlyWood" Canvas.Left="303"/> + <Rectangle Height="546" Stroke="Black" Width="304" Fill="SlateGray" Canvas.Top="154" Canvas.Left="-1"/> + <Canvas Name="PreAlignerBody" Height="124" Canvas.Left="100" Canvas.Top="154" Width="126" Cursor="Hand"> + <Rectangle Height="124" Stroke="Black" Width="126" Cursor="Hand"> + <Rectangle.Fill> + <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/Aligner.png"/> + </Rectangle.Fill> + </Rectangle> + <Canvas x:Name="PreAlignerWafer" Height="77" Width="78" Canvas.Top="58" RenderTransformOrigin="0.5,0.5" Canvas.Left="24"> + <Ellipse Name="PreAlignerWaferStatus" Fill="Silver" Height="77" Stroke="Black" Width="78"/> + <TextBlock x:Name="PreAlignerWaferSourceName" Canvas.Left="23" TextWrapping="Wrap" Text="A1" Canvas.Top="22" Height="30" TextAlignment="Center" FontSize="22" LineHeight="22"/> + </Canvas> + <Rectangle x:Name="IsAlignRun" Height="16" Canvas.Left="75" Canvas.Top="15" Width="28" Fill="Red"/> + </Canvas> + + <Rectangle Fill="BurlyWood" Height="170" Canvas.Left="15" Stroke="Black" Canvas.Top="516" Width="276"/> + <Rectangle x:Name="Door1" Height="195" Canvas.Top="357" Width="10" Fill="Red" Canvas.Left="-2"/> + <Rectangle x:Name="Door2" Height="10" Canvas.Top="690" Width="299" Fill="Red"/> + <Rectangle x:Name="Door3" Height="10" Canvas.Left="309" Canvas.Top="690" Width="680" Fill="Red"/> + <Rectangle x:Name="Door4" Height="534" Canvas.Left="989" Canvas.Top="156" Width="12" Fill="Red"/> + <Rectangle Name="DoorCP" Height="10" Canvas.Left="305" Width="694" Fill="Red"/> + <Canvas Name="RobotBody" Height="125" Canvas.Left="99" Canvas.Top="344" Width="126" Cursor="Hand"> + <Canvas.Background> + <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/Robot_Body.png"/> + </Canvas.Background> + <Canvas Name="Robot" Height="50" Canvas.Left="38" Canvas.Top="38" Width="50" RenderTransformOrigin="0.5,0.5"> + <Canvas x:Name="RobotArm1" Height="38" Width="114" RenderTransformOrigin="0.182,0.485" Canvas.Left="4" Canvas.Top="6"> + <Canvas.Background> + <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/Robot_Arm1.png"/> + </Canvas.Background> + <Canvas x:Name="RobotArm2" Height="34" Width="87" RenderTransformOrigin="0.787,0.49" Canvas.Left="28" Canvas.Top="2"> + <Canvas.Background> + <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/Robot_Arm2.png"/> + </Canvas.Background> + </Canvas> + </Canvas> + <Canvas x:Name="RobotHand" Height="171" Canvas.Top="-9" Width="78" RenderTransformOrigin="0.529,0.872" Canvas.Left="-14"> + <Canvas.Background> + <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/Robot_Arm.png"/> + </Canvas.Background> + <Canvas Name="RobotWafer" Height="77" Width="78" Canvas.Top="115" RenderTransformOrigin="0.5,0.5"> + <Ellipse Name="RobotWaferStatus" Fill="Silver" Height="77" Stroke="Black" Width="78"/> + <TextBlock Name="RobotWaferSourceName" Canvas.Left="23" TextWrapping="Wrap" Text="A1" Canvas.Top="22" Height="30" TextAlignment="Center" FontSize="22" LineHeight="22"/> + </Canvas> + </Canvas> + </Canvas> + </Canvas> + <Canvas Name="Port1" Background="BurlyWood" Height="156" Canvas.Left="30" Canvas.Top="523" Width="113" Cursor="Hand"/> + <Canvas Name="Port2" Background="BurlyWood" Height="156" Canvas.Left="161" Canvas.Top="523" Width="113" Cursor="Hand"/> + <Slider Name="RobotZ" Canvas.Left="18" Canvas.Top="398" Width="121" RenderTransformOrigin="0.5,0.5" Minimum="5" Maximum="244" IsEnabled="False" SmallChange="0.01"> + <Slider.RenderTransform> + <TransformGroup> + <ScaleTransform/> + <SkewTransform/> + <RotateTransform Angle="-90"/> + <TranslateTransform/> + </TransformGroup> + </Slider.RenderTransform> + </Slider> + <Canvas Name="UVLaser" Height="99" Canvas.Left="732" Canvas.Top="32" Width="255" Cursor="Hand"> + <Rectangle Fill="#FFF4F4F5" Height="99" Stroke="Black" Width="255"/> + <TextBlock x:Name="textBlock" Canvas.Left="80" TextWrapping="Wrap" Text="UV Laser" Canvas.Top="32" FontSize="25"/> + </Canvas> + <Canvas Name="Scanner" Height="90" Canvas.Left="337" Canvas.Top="37" Width="197" Cursor="Hand"> + <Rectangle Fill="#FFF4F4F5" Height="90" Stroke="Black" Width="197"/> + <TextBlock x:Name="textBlock1" Canvas.Left="55" TextWrapping="Wrap" Text="Scanner" Canvas.Top="27" FontSize="25"/> + </Canvas> + <Canvas x:Name="Attenuator" Height="75" Canvas.Left="556" Canvas.Top="44" Width="164" Cursor="Hand"> + <Rectangle Fill="#FFF4F4F5" Height="75" Stroke="Black" Width="164"/> + <TextBlock x:Name="textBlock2" Canvas.Left="23" TextWrapping="Wrap" Text="Attenuator" Canvas.Top="20" FontSize="25"/> + </Canvas> + </Canvas> +</UserControl> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml.cs b/SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml.cs new file mode 100644 index 0000000..760242d --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml.cs @@ -0,0 +1,388 @@ +癤퓎sing SA_LTT.Info.WaferInfo; +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Shapes; +using static SA_LTT.Info.WaferInfo.WaferInfo; +using static SA_LTT.Info.WaferInfo.WaferInfoManager; + +namespace SA_LTT_UI.Screen +{ + /// <summary> + /// Interaction logic for AnimationEquipment.xaml + /// </summary> + public partial class AnimationEquipment : UserControl + { + SolidColorBrush _doorOpenColor; + SolidColorBrush _doorCloseColor; + + SolidColorBrush _waferExistColor; + SolidColorBrush _waferEmptyColor; + SolidColorBrush _waferErrorColor; + SolidColorBrush _waferProcessCompleteColor; + + public delegate void MouseDownDel(object sender, MouseButtonEventArgs e); + + Dictionary<WaferNumbers, Shape> WaferShapes = new Dictionary<WaferNumbers, Shape>(); + public AnimationEquipment() + { + InitializeComponent(); + InitializeColor(); + InitializeUI(); + } + + private void InitializeColor() + { + _doorOpenColor = new SolidColorBrush(Colors.Red); + _doorCloseColor = new SolidColorBrush(Colors.Lime); + + _waferExistColor = new SolidColorBrush(Colors.Lime); + _waferEmptyColor = new SolidColorBrush(Colors.Transparent); + _waferErrorColor = new SolidColorBrush(Colors.Red); + _waferProcessCompleteColor = new SolidColorBrush(Colors.MediumPurple); + } + + private void InitializeUI() + { + foreach(WaferNumbers info in Enum.GetValues(typeof(WaferNumbers))) + { + if (WaferNumbers.A1 <= info && info <= WaferNumbers.A25) + { + Rectangle rectangle = new Rectangle(); + + rectangle.Height = 7; + rectangle.Width = 113; + rectangle.Stroke = new SolidColorBrush(Colors.Black); + WaferShapes[info] = rectangle; + Port1.Children.Add(rectangle); + Canvas.SetBottom(rectangle, 6 * (int)info); + } + else if (WaferNumbers.B1 <= info && info <= WaferNumbers.B25) + { + Rectangle rectangle = new Rectangle(); + + rectangle = new Rectangle(); + rectangle.Height = 7; + rectangle.Width = 113; + rectangle.Stroke = new SolidColorBrush(Colors.Black); + WaferShapes[info] = rectangle; + Port2.Children.Add(rectangle); + Canvas.SetBottom(rectangle, 6 * (int)(info - 25)); + } + else if(info == WaferNumbers.Robot) + { + Rectangle rectangle = new Rectangle(); + + rectangle = new Rectangle(); + rectangle.Height = 7; + rectangle.Width = 113; + rectangle.Stroke = new SolidColorBrush(Colors.Black); + WaferShapes[info] = rectangle; + } + else if (info == WaferNumbers.PreAligner) + { + Rectangle rectangle = new Rectangle(); + + rectangle = new Rectangle(); + rectangle.Height = 7; + rectangle.Width = 113; + rectangle.Stroke = new SolidColorBrush(Colors.Black); + WaferShapes[info] = rectangle; + } + else if (info == WaferNumbers.Chamber) + { + Rectangle rectangle = new Rectangle(); + + rectangle = new Rectangle(); + rectangle.Height = 7; + rectangle.Width = 113; + rectangle.Stroke = new SolidColorBrush(Colors.Black); + WaferShapes[info] = rectangle; + } + } + } + + //X : -2 ~ 384 + public void SetDoor1Status(bool open) + { + Door1.Fill = open ? _doorOpenColor : _doorCloseColor; + } + + public void SetDoor2Status(bool open) + { + Door2.Fill = open ? _doorOpenColor : _doorCloseColor; + } + + public void SetDoor3Status(bool open) + { + Door3.Fill = open ? _doorOpenColor : _doorCloseColor; + } + + public void SetDoor4Status(bool open) + { + Door4.Fill = open ? _doorOpenColor : _doorCloseColor; + } + + public void SetDoorCPStatus(bool open) + { + DoorCP.Fill = open ? _doorOpenColor : _doorCloseColor; + } + + public void SetChamberGate(bool open) + { + ChamberGate.Fill = open ? _doorOpenColor : _doorCloseColor; + } + + public void SetWaferExist(WaferNumbers waferNumber, WaferInfo waferInfo) + { + if(waferNumber == WaferNumbers.PreAligner) + { + if (waferInfo.IsStatus == WaferStatus.Empty) + { + PreAlignerWafer.Opacity = 0; + } + else if (waferInfo.IsStatus == WaferStatus.Exist) + { + PreAlignerWafer.Opacity = 100; + + if (waferInfo.IsProcessComplete) + { + PreAlignerWaferStatus.Fill = _waferProcessCompleteColor; + } + else + { + PreAlignerWaferStatus.Fill = new SolidColorBrush(Colors.Silver); + } + } + } + else if(waferNumber == WaferNumbers.Chamber) + { + if (waferInfo.IsStatus == WaferStatus.Empty) + { + ChamberWafer.Opacity = 0; + } + else if (waferInfo.IsStatus == WaferStatus.Exist) + { + ChamberWafer.Opacity = 100; + + if (waferInfo.IsProcessComplete) + { + ChamberWaferStatus.Fill = _waferProcessCompleteColor; + } + else + { + ChamberWaferStatus.Fill = new SolidColorBrush(Colors.Silver); + } + } + } + else if (waferNumber == WaferNumbers.Robot) + { + if (waferInfo.IsStatus == WaferStatus.Empty) + { + RobotWafer.Opacity = 0; + } + else if (waferInfo.IsStatus == WaferStatus.Exist) + { + RobotWafer.Opacity = 100; + + if (waferInfo.IsProcessComplete) + { + RobotWaferStatus.Fill = _waferProcessCompleteColor; + } + else + { + RobotWaferStatus.Fill = new SolidColorBrush(Colors.Silver); + } + } + } + else + { + if (waferInfo.IsStatus == WaferStatus.Empty) + { + WaferShapes[waferNumber].Fill = _waferEmptyColor; + } + else if (waferInfo.IsStatus == WaferStatus.Exist) + { + if(waferInfo.IsProcessComplete) + { + WaferShapes[waferNumber].Fill = _waferProcessCompleteColor; + } + else + { + WaferShapes[waferNumber].Fill = _waferExistColor; + } + } + else if (waferInfo.IsStatus == WaferStatus.Leaning) + { + WaferShapes[waferNumber].Fill = _waferErrorColor; + } + else if (waferInfo.IsStatus == WaferStatus.Overlap) + { + WaferShapes[waferNumber].Fill = _waferErrorColor; + } + } + } + + public void SetRobotPositionArm(double position) + { + position = position + 5.3; + //RobotArm1 + RotateTransform rt = new RotateTransform(); + rt.Angle = (position * 1.1); + TransformGroup tg1 = new TransformGroup(); + tg1.Children.Add(rt); + RobotArm1.RenderTransform = tg1; + + //RobotArm2 + rt = new RotateTransform(); + rt.Angle = -(position * 2.4); + tg1 = new TransformGroup(); + tg1.Children.Add(rt); + RobotArm2.RenderTransform = tg1; + + //Robot Hand + Thickness margin = RobotHand.Margin; + margin.Top = position * 3; + RobotHand.Margin = margin; + } + + public void SetRobotPositionAngle(double position) + { + RotateTransform rt = new RotateTransform(); + rt.Angle = 28 - position; + + TransformGroup tg1 = new TransformGroup(); + tg1.Children.Add(rt); + Robot.RenderTransform = tg1; + + RotateTransform rt1 = new RotateTransform(); + rt1.Angle = position - 28; + + TransformGroup tg2 = new TransformGroup(); + tg2.Children.Add(rt1); + + RobotWafer.RenderTransform = tg2; + } + + public void SetRobotPositionZ(double position) + { + double value = position; + if (value < 5) + { + value = 5; + } + else if (value > 244) + { + value = 244; + } + + RobotZ.Value = value; + } + + public void SetMotorPositionX(double position) + { + // 0 ~ 500 + Thickness margin = Chamber.Margin; + margin.Top = - (position * 1.298); + Chamber.Margin = margin; + } + + public void SetMotorPositionY(double position) + { + // 0 ~ 895 + Thickness margin = Motor_Y.Margin; + margin.Left = - (position * 2.2375); + Motor_Y.Margin = margin; + } + + public void SetMotorPositionT(double position) + { + RotateTransform rt = new RotateTransform(); + rt.Angle = -(position * 10); + + TransformGroup tg1 = new TransformGroup(); + tg1.Children.Add(rt); + Chamber.RenderTransform = tg1; + + RotateTransform rt1 = new RotateTransform(); + rt1.Angle = (position * 10); + + TransformGroup tg2 = new TransformGroup(); + tg2.Children.Add(rt1); + + ChamberWafer.RenderTransform = tg2; + } + + public void SetRobotWaferNum(WaferNumbers waferNumber) + { + RobotWaferSourceName.Text = waferNumber.ToString(); + } + + public void SetPreAlignerWaferNum(WaferNumbers waferNumber) + { + PreAlignerWaferSourceName.Text = waferNumber.ToString(); + } + + public void SetChamberWaferNum(WaferNumbers waferNumber) + { + ChamberWaferSourceName.Text = waferNumber.ToString(); + } + + public void SetChamberLiftPin(bool up) + { + if(up) + { + LiftPin.Value = 1; + } + else + { + LiftPin.Value = 0; + } + } + + public void SetIsAlignRun(bool run) + { + IsAlignRun.Fill = run ? _doorCloseColor : _doorOpenColor; + } + + public void AddPortMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler) + { + Port1.MouseDown += mouseButtonEventHandler; + Port2.MouseDown += mouseButtonEventHandler; + } + + public void AddChamberMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler) + { + Chamber.MouseDown += mouseButtonEventHandler; + } + + public void AddPreAlignerMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler) + { + PreAlignerBody.MouseDown += mouseButtonEventHandler; + } + + public void AddRobotMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler) + { + RobotBody.MouseDown += mouseButtonEventHandler; + } + + public void AddUvLaserMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler) + { + UVLaser.MouseDown += mouseButtonEventHandler; + } + + public void AddScannerMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler) + { + Scanner.MouseDown += mouseButtonEventHandler; + } + + + public void AddAttenuatorMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler) + { + Attenuator.MouseDown += mouseButtonEventHandler; + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml b/SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml new file mode 100644 index 0000000..ce4d74a --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml @@ -0,0 +1,38 @@ +癤�<UserControl x:Class="SA_LTT_UI.Screen.ChamberStatus" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:local="clr-namespace:SA_LTT_UI.Screen" + mc:Ignorable="d" Width="400" Height="400" Background="White" RenderTransformOrigin="0.5,0.5"> + <UserControl.RenderTransform> + <TransformGroup> + <ScaleTransform/> + <SkewTransform/> + <RotateTransform Angle="-90"/> + <TranslateTransform/> + </TransformGroup> + </UserControl.RenderTransform> + <Canvas x:Name="Chamber" RenderTransformOrigin="0.545,0.503"> + <Canvas.Background> + <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/Chamber.png"/> + </Canvas.Background> + <Ellipse Fill="#FFF3DCC6" Height="5" Canvas.Left="82" Canvas.Top="56" Width="5"/> + <Ellipse Fill="#FFF3DCC6" Height="5" Canvas.Left="82" Canvas.Top="108" Width="5"/> + <Ellipse Fill="#FFF3DCC6" Height="5" Canvas.Left="126" Canvas.Top="81" Width="5"/> + <Rectangle x:Name="ChamberGate" Fill="White" Height="315" Width="38" Canvas.Left="12" Canvas.Top="44"/> + <Canvas Name="ChamberWafer" Height="235" Width="235" Canvas.Top="84" RenderTransformOrigin="0.5,0.5" Canvas.Left="110"> + <Ellipse Name="ChamberWaferStatus" Fill="Silver" Height="235" Stroke="Black" Width="235"/> + <TextBlock Name="ChamberWaferSourceName" Canvas.Left="90" TextWrapping="Wrap" Text="A1" Canvas.Top="89" Height="54" TextAlignment="Center" FontSize="40" LineHeight="22" Width="56" RenderTransformOrigin="0.5,0.5"> + <TextBlock.RenderTransform> + <TransformGroup> + <ScaleTransform/> + <SkewTransform/> + <RotateTransform Angle="90"/> + <TranslateTransform/> + </TransformGroup> + </TextBlock.RenderTransform> + </TextBlock> + </Canvas> + </Canvas> +</UserControl> diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml.cs new file mode 100644 index 0000000..7d2680c --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml.cs @@ -0,0 +1,64 @@ +癤퓎sing SA_LTT.Info.WaferInfo; +using System.Windows.Controls; +using System.Windows.Media; +using static SA_LTT.Info.WaferInfo.WaferInfo; +using static SA_LTT.Info.WaferInfo.WaferInfoManager; + +namespace SA_LTT_UI.Screen +{ + /// <summary> + /// Interaction logic for ChamberStatus.xaml + /// </summary> + public partial class ChamberStatus : UserControl + { + SolidColorBrush _doorOpenColor; + SolidColorBrush _doorCloseColor; + + SolidColorBrush _waferExistColor; + SolidColorBrush _waferEmptyColor; + SolidColorBrush _waferProcessCompleteColor; + + public ChamberStatus() + { + InitializeComponent(); + + _doorOpenColor = new SolidColorBrush(Colors.Red); + _doorCloseColor = new SolidColorBrush(Colors.Lime); + + _waferExistColor = new SolidColorBrush(Colors.Lime); + _waferEmptyColor = new SolidColorBrush(Colors.Transparent); + _waferProcessCompleteColor = new SolidColorBrush(Colors.MediumPurple); + } + + public void SetChamberWaferExist(WaferInfo waferInfo) + { + if (waferInfo.IsStatus == WaferStatus.Empty) + { + ChamberWafer.Opacity = 0; + } + else if (waferInfo.IsStatus == WaferStatus.Exist) + { + ChamberWafer.Opacity = 100; + + if (waferInfo.IsProcessComplete) + { + ChamberWaferStatus.Fill = _waferProcessCompleteColor; + } + else + { + ChamberWaferStatus.Fill = new SolidColorBrush(Colors.Silver); + } + } + } + + public void SetChamberGate(bool open) + { + ChamberGate.Fill = open ? _doorOpenColor : _doorCloseColor; + } + + public void SetChamberWaferNum(WaferNumbers waferNumber) + { + ChamberWaferSourceName.Text = waferNumber.ToString(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/IoBar.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/IoBar.Designer.cs new file mode 100644 index 0000000..1f97042 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/IoBar.Designer.cs @@ -0,0 +1,87 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class IoBar + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.lb_Description = new System.Windows.Forms.Label(); + this.lb_Number = new System.Windows.Forms.Label(); + this.lb_State = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // lb_Description + // + this.lb_Description.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Description.Location = new System.Drawing.Point(114, 3); + this.lb_Description.Name = "lb_Description"; + this.lb_Description.Size = new System.Drawing.Size(303, 37); + this.lb_Description.TabIndex = 5; + this.lb_Description.Text = "Description"; + this.lb_Description.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Number + // + this.lb_Number.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Number.Location = new System.Drawing.Point(46, 3); + this.lb_Number.Name = "lb_Number"; + this.lb_Number.Size = new System.Drawing.Size(62, 37); + this.lb_Number.TabIndex = 4; + this.lb_Number.Text = "Number"; + this.lb_Number.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_State + // + this.lb_State.BackColor = System.Drawing.Color.Lime; + this.lb_State.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_State.Location = new System.Drawing.Point(3, 3); + this.lb_State.Name = "lb_State"; + this.lb_State.Size = new System.Drawing.Size(37, 37); + this.lb_State.TabIndex = 3; + this.lb_State.Tag = ""; + this.lb_State.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // IoBar + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.lb_Description); + this.Controls.Add(this.lb_Number); + this.Controls.Add(this.lb_State); + this.Margin = new System.Windows.Forms.Padding(0); + this.Name = "IoBar"; + this.Size = new System.Drawing.Size(420, 43); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label lb_Description; + private System.Windows.Forms.Label lb_Number; + private System.Windows.Forms.Label lb_State; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/IoBar.cs b/SA_LTT_UI/SA_LTT_UI/Screen/IoBar.cs new file mode 100644 index 0000000..a02fde8 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/IoBar.cs @@ -0,0 +1,52 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Screen +{ + public delegate void ClickEvent(object sender, EventArgs e); + + public partial class IoBar : UserControl + { + private int _number; + private string _description; + private bool _status; + + public bool Status + { + get + { + return _status; + } + + set + { + _status = value; + lb_State.BackColor = _status ? Color.Lime : Color.Green; + } + } + + public IoBar(int number, string description) + { + InitializeComponent(); + + _number = number; + _description = description; + + lb_State.Tag = _number; + lb_Number.Text = $"{_number}"; + lb_Description.Text = description; + } + + public void AddClickEvent(ClickEvent clicked) + { + lb_State.Click += new EventHandler(clicked); + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/IoBar.resx b/SA_LTT_UI/SA_LTT_UI/Screen/IoBar.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/IoBar.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml b/SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml new file mode 100644 index 0000000..94ead64 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml @@ -0,0 +1,10 @@ +癤�<UserControl x:Class="SA_LTT_UI.Screen.RecipeView" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:local="clr-namespace:SA_LTT_UI.Screen" + mc:Ignorable="d" + d:DesignHeight="300" d:DesignWidth="300"> + <Canvas Background="White"/> +</UserControl> diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml.cs b/SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml.cs new file mode 100644 index 0000000..70ff9b7 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml.cs @@ -0,0 +1,28 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace SA_LTT_UI.Screen +{ + /// <summary> + /// Interaction logic for RecipeView.xaml + /// </summary> + public partial class RecipeView : UserControl + { + public RecipeView() + { + InitializeComponent(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.Designer.cs new file mode 100644 index 0000000..4f0d75f --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.Designer.cs @@ -0,0 +1,115 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class ScreenAlarmSetting + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + this.dgv_AlarmInfos = new System.Windows.Forms.DataGridView(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.btn_Save = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.dgv_AlarmInfos)).BeginInit(); + this.SuspendLayout(); + // + // dgv_AlarmInfos + // + this.dgv_AlarmInfos.AllowUserToAddRows = false; + this.dgv_AlarmInfos.AllowUserToDeleteRows = false; + this.dgv_AlarmInfos.AllowUserToResizeColumns = false; + this.dgv_AlarmInfos.AllowUserToResizeRows = false; + this.dgv_AlarmInfos.BackgroundColor = System.Drawing.Color.White; + this.dgv_AlarmInfos.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dgv_AlarmInfos.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle3.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle3.Font = new System.Drawing.Font("Gulim", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle3.ForeColor = System.Drawing.Color.White; + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.SteelBlue; + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.White; + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgv_AlarmInfos.DefaultCellStyle = dataGridViewCellStyle3; + this.dgv_AlarmInfos.Dock = System.Windows.Forms.DockStyle.Top; + this.dgv_AlarmInfos.EnableHeadersVisualStyles = false; + this.dgv_AlarmInfos.GridColor = System.Drawing.Color.SteelBlue; + this.dgv_AlarmInfos.Location = new System.Drawing.Point(0, 0); + this.dgv_AlarmInfos.MultiSelect = false; + this.dgv_AlarmInfos.Name = "dgv_AlarmInfos"; + this.dgv_AlarmInfos.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dgv_AlarmInfos.RowHeadersVisible = false; + this.dgv_AlarmInfos.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; + dataGridViewCellStyle4.ForeColor = System.Drawing.Color.Black; + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.Color.CornflowerBlue; + this.dgv_AlarmInfos.RowsDefaultCellStyle = dataGridViewCellStyle4; + this.dgv_AlarmInfos.RowTemplate.Height = 23; + this.dgv_AlarmInfos.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.dgv_AlarmInfos.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgv_AlarmInfos.Size = new System.Drawing.Size(1916, 727); + this.dgv_AlarmInfos.TabIndex = 3; + this.dgv_AlarmInfos.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgv_AlarmInfos_CellValueChanged_1); + // + // btn_Cancel + // + this.btn_Cancel.Location = new System.Drawing.Point(1775, 733); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(108, 73); + this.btn_Cancel.TabIndex = 4; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); + // + // btn_Save + // + this.btn_Save.Location = new System.Drawing.Point(1648, 733); + this.btn_Save.Name = "btn_Save"; + this.btn_Save.Size = new System.Drawing.Size(108, 73); + this.btn_Save.TabIndex = 5; + this.btn_Save.Text = "Save"; + this.btn_Save.UseVisualStyleBackColor = true; + this.btn_Save.Click += new System.EventHandler(this.btn_Save_Click); + // + // ScreenAlarmSetting + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.btn_Save); + this.Controls.Add(this.btn_Cancel); + this.Controls.Add(this.dgv_AlarmInfos); + this.Name = "ScreenAlarmSetting"; + this.Size = new System.Drawing.Size(1916, 809); + ((System.ComponentModel.ISupportInitialize)(this.dgv_AlarmInfos)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.DataGridView dgv_AlarmInfos; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.Button btn_Save; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.cs new file mode 100644 index 0000000..4c1b607 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.cs @@ -0,0 +1,118 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Reflection; +using SA_LTT.Alarm; +using SA_LTT; + +namespace SA_LTT_UI.Screen +{ + public partial class ScreenAlarmSetting : UserControl + { + private MainFrame _mainFrame; + List<Alarm> alarms = new List<Alarm>(); + List<AlarmCode> changedAlarms = new List<AlarmCode>(); + public ScreenAlarmSetting(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + changedAlarms.Clear(); + RefreshAlarmInfoDataGridView(); + } + + public void RefreshAlarmInfoDataGridView() + { + try + { + //Datagridview Double Buffer �궗�슜. + Type dgvType = dgv_AlarmInfos.GetType(); + PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", + BindingFlags.Instance | BindingFlags.NonPublic); + pi.SetValue(dgv_AlarmInfos, true, null); + //================================ + + alarms.Clear(); + alarms.AddRange(_mainFrame.equipment.alarmManager.GetAlarms().Values); + + dgv_AlarmInfos.DataSource = alarms; + + dgv_AlarmInfos.Columns["Code"].Width = 400; + dgv_AlarmInfos.Columns["Code"].ReadOnly = false; + dgv_AlarmInfos.Columns["Description"].Width = 1140; + dgv_AlarmInfos.Columns["Heavy"].Width = 50; + dgv_AlarmInfos.Columns["Light"].Width = 50; + dgv_AlarmInfos.Columns["Level"].Visible = false; + dgv_AlarmInfos.Columns["Use"].Width = 50; + dgv_AlarmInfos.Columns["OccurredTime"].Width = 200; + dgv_AlarmInfos.Columns["OccurredTime"].ReadOnly = false; + + foreach (DataGridViewColumn column in dgv_AlarmInfos.Columns) + { + column.SortMode = DataGridViewColumnSortMode.NotSortable; + } + + foreach (DataGridViewRow row in dgv_AlarmInfos.Rows) + { + row.DefaultCellStyle.BackColor = Color.White; + } + + dgv_AlarmInfos.Refresh(); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + } + + private void dgv_AlarmInfos_CellValueChanged_1(object sender, DataGridViewCellEventArgs e) + { + int rowIndex = e.RowIndex; + + Alarm alarm = _mainFrame.equipment.alarmManager.GetAlarms()[alarms[rowIndex].Code].Clone(); + + if (alarm == alarms[rowIndex]) + { + if (changedAlarms.Exists(x => x == alarm.Code)) + { + changedAlarms.Remove(alarm.Code); + } + + dgv_AlarmInfos.Rows[rowIndex].DefaultCellStyle.BackColor = Color.White; + } + else + { + if (changedAlarms.Exists(x => x == alarm.Code) == false) + { + changedAlarms.Add(alarm.Code); + } + + dgv_AlarmInfos.Rows[rowIndex].DefaultCellStyle.BackColor = Color.Red; + } + } + + private void btn_Cancel_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + changedAlarms.Clear(); + RefreshAlarmInfoDataGridView(); + } + + private void btn_Save_Click(object sender, EventArgs e) + { + if (MessageBox.Show("蹂�寃쎌궗�빆�쓣 ���옣 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.equipment.alarmManager.Save(alarms); + RefreshAlarmInfoDataGridView(); + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.resx b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.Designer.cs new file mode 100644 index 0000000..d046530 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.Designer.cs @@ -0,0 +1,265 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class ScreenIO + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.flp_DigitalOutputLeft = new System.Windows.Forms.FlowLayoutPanel(); + this.flp_DigitalOutputRight = new System.Windows.Forms.FlowLayoutPanel(); + this.pnl_DigitalOutputs = new System.Windows.Forms.Panel(); + this.pnl_DigitalInputs = new System.Windows.Forms.Panel(); + this.flp_DigitalInputLeft = new System.Windows.Forms.FlowLayoutPanel(); + this.flp_DigitalInputRight = new System.Windows.Forms.FlowLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.flp_AnalogInputLeft = new System.Windows.Forms.FlowLayoutPanel(); + this.flp_AnalogInputRight = new System.Windows.Forms.FlowLayoutPanel(); + this.pnl_AnalogInputs = new System.Windows.Forms.Panel(); + this.pnl_AnalogOutpus = new System.Windows.Forms.Panel(); + this.flp_AnalogOutputLeft = new System.Windows.Forms.FlowLayoutPanel(); + this.flp_AnalogOutputRight = new System.Windows.Forms.FlowLayoutPanel(); + this.pnl_DigitalOutputs.SuspendLayout(); + this.pnl_DigitalInputs.SuspendLayout(); + this.pnl_AnalogInputs.SuspendLayout(); + this.pnl_AnalogOutpus.SuspendLayout(); + this.SuspendLayout(); + // + // flp_DigitalOutputLeft + // + this.flp_DigitalOutputLeft.AutoSize = true; + this.flp_DigitalOutputLeft.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flp_DigitalOutputLeft.Location = new System.Drawing.Point(1, 1); + this.flp_DigitalOutputLeft.Margin = new System.Windows.Forms.Padding(1); + this.flp_DigitalOutputLeft.Name = "flp_DigitalOutputLeft"; + this.flp_DigitalOutputLeft.Size = new System.Drawing.Size(425, 488); + this.flp_DigitalOutputLeft.TabIndex = 50; + // + // flp_DigitalOutputRight + // + this.flp_DigitalOutputRight.AutoSize = true; + this.flp_DigitalOutputRight.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flp_DigitalOutputRight.Location = new System.Drawing.Point(428, 1); + this.flp_DigitalOutputRight.Margin = new System.Windows.Forms.Padding(1); + this.flp_DigitalOutputRight.Name = "flp_DigitalOutputRight"; + this.flp_DigitalOutputRight.Size = new System.Drawing.Size(425, 488); + this.flp_DigitalOutputRight.TabIndex = 50; + // + // pnl_DigitalOutputs + // + this.pnl_DigitalOutputs.AutoScroll = true; + this.pnl_DigitalOutputs.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_DigitalOutputs.Controls.Add(this.flp_DigitalOutputLeft); + this.pnl_DigitalOutputs.Controls.Add(this.flp_DigitalOutputRight); + this.pnl_DigitalOutputs.Location = new System.Drawing.Point(881, 47); + this.pnl_DigitalOutputs.Name = "pnl_DigitalOutputs"; + this.pnl_DigitalOutputs.Size = new System.Drawing.Size(875, 492); + this.pnl_DigitalOutputs.TabIndex = 0; + // + // pnl_DigitalInputs + // + this.pnl_DigitalInputs.AutoScroll = true; + this.pnl_DigitalInputs.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_DigitalInputs.Controls.Add(this.flp_DigitalInputLeft); + this.pnl_DigitalInputs.Controls.Add(this.flp_DigitalInputRight); + this.pnl_DigitalInputs.Location = new System.Drawing.Point(0, 47); + this.pnl_DigitalInputs.Name = "pnl_DigitalInputs"; + this.pnl_DigitalInputs.Size = new System.Drawing.Size(875, 492); + this.pnl_DigitalInputs.TabIndex = 0; + // + // flp_DigitalInputLeft + // + this.flp_DigitalInputLeft.AutoSize = true; + this.flp_DigitalInputLeft.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flp_DigitalInputLeft.Location = new System.Drawing.Point(1, 1); + this.flp_DigitalInputLeft.Margin = new System.Windows.Forms.Padding(1); + this.flp_DigitalInputLeft.Name = "flp_DigitalInputLeft"; + this.flp_DigitalInputLeft.Size = new System.Drawing.Size(425, 488); + this.flp_DigitalInputLeft.TabIndex = 50; + // + // flp_DigitalInputRight + // + this.flp_DigitalInputRight.AutoSize = true; + this.flp_DigitalInputRight.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flp_DigitalInputRight.Location = new System.Drawing.Point(428, 1); + this.flp_DigitalInputRight.Margin = new System.Windows.Forms.Padding(1); + this.flp_DigitalInputRight.Name = "flp_DigitalInputRight"; + this.flp_DigitalInputRight.Size = new System.Drawing.Size(425, 488); + this.flp_DigitalInputRight.TabIndex = 50; + // + // label1 + // + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Font = new System.Drawing.Font("Gulim", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(875, 44); + this.label1.TabIndex = 1; + this.label1.Text = "DIGITAL INPUTS"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Font = new System.Drawing.Font("Gulim", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.Location = new System.Drawing.Point(881, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(875, 44); + this.label2.TabIndex = 1; + this.label2.Text = "DIGITAL OUTPUTS"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Font = new System.Drawing.Font("Gulim", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.Location = new System.Drawing.Point(0, 542); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(875, 44); + this.label3.TabIndex = 1; + this.label3.Text = "ANALOG INPUTS"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label4.Font = new System.Drawing.Font("Gulim", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label4.Location = new System.Drawing.Point(881, 542); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(875, 44); + this.label4.TabIndex = 1; + this.label4.Text = "ANALOG OUTPUTS"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // flp_AnalogInputLeft + // + this.flp_AnalogInputLeft.AutoSize = true; + this.flp_AnalogInputLeft.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flp_AnalogInputLeft.Location = new System.Drawing.Point(1, 1); + this.flp_AnalogInputLeft.Margin = new System.Windows.Forms.Padding(1); + this.flp_AnalogInputLeft.Name = "flp_AnalogInputLeft"; + this.flp_AnalogInputLeft.Size = new System.Drawing.Size(425, 202); + this.flp_AnalogInputLeft.TabIndex = 51; + // + // flp_AnalogInputRight + // + this.flp_AnalogInputRight.AutoSize = true; + this.flp_AnalogInputRight.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flp_AnalogInputRight.Location = new System.Drawing.Point(428, 1); + this.flp_AnalogInputRight.Margin = new System.Windows.Forms.Padding(1); + this.flp_AnalogInputRight.Name = "flp_AnalogInputRight"; + this.flp_AnalogInputRight.Size = new System.Drawing.Size(425, 202); + this.flp_AnalogInputRight.TabIndex = 51; + // + // pnl_AnalogInputs + // + this.pnl_AnalogInputs.AutoScroll = true; + this.pnl_AnalogInputs.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_AnalogInputs.Controls.Add(this.flp_AnalogInputLeft); + this.pnl_AnalogInputs.Controls.Add(this.flp_AnalogInputRight); + this.pnl_AnalogInputs.Location = new System.Drawing.Point(0, 589); + this.pnl_AnalogInputs.Name = "pnl_AnalogInputs"; + this.pnl_AnalogInputs.Size = new System.Drawing.Size(875, 210); + this.pnl_AnalogInputs.TabIndex = 52; + // + // pnl_AnalogOutpus + // + this.pnl_AnalogOutpus.AutoScroll = true; + this.pnl_AnalogOutpus.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_AnalogOutpus.Controls.Add(this.flp_AnalogOutputLeft); + this.pnl_AnalogOutpus.Controls.Add(this.flp_AnalogOutputRight); + this.pnl_AnalogOutpus.Location = new System.Drawing.Point(881, 589); + this.pnl_AnalogOutpus.Name = "pnl_AnalogOutpus"; + this.pnl_AnalogOutpus.Size = new System.Drawing.Size(875, 210); + this.pnl_AnalogOutpus.TabIndex = 52; + // + // flp_AnalogOutputLeft + // + this.flp_AnalogOutputLeft.AutoSize = true; + this.flp_AnalogOutputLeft.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flp_AnalogOutputLeft.Location = new System.Drawing.Point(1, 1); + this.flp_AnalogOutputLeft.Margin = new System.Windows.Forms.Padding(1); + this.flp_AnalogOutputLeft.Name = "flp_AnalogOutputLeft"; + this.flp_AnalogOutputLeft.Size = new System.Drawing.Size(425, 202); + this.flp_AnalogOutputLeft.TabIndex = 51; + // + // flp_AnalogOutputRight + // + this.flp_AnalogOutputRight.AutoSize = true; + this.flp_AnalogOutputRight.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flp_AnalogOutputRight.Location = new System.Drawing.Point(428, 1); + this.flp_AnalogOutputRight.Margin = new System.Windows.Forms.Padding(1); + this.flp_AnalogOutputRight.Name = "flp_AnalogOutputRight"; + this.flp_AnalogOutputRight.Size = new System.Drawing.Size(425, 202); + this.flp_AnalogOutputRight.TabIndex = 51; + // + // ScreenIO + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.pnl_AnalogOutpus); + this.Controls.Add(this.pnl_AnalogInputs); + this.Controls.Add(this.label4); + this.Controls.Add(this.label2); + this.Controls.Add(this.label3); + this.Controls.Add(this.label1); + this.Controls.Add(this.pnl_DigitalInputs); + this.Controls.Add(this.pnl_DigitalOutputs); + this.Name = "ScreenIO"; + this.Size = new System.Drawing.Size(1764, 803); + this.pnl_DigitalOutputs.ResumeLayout(false); + this.pnl_DigitalOutputs.PerformLayout(); + this.pnl_DigitalInputs.ResumeLayout(false); + this.pnl_DigitalInputs.PerformLayout(); + this.pnl_AnalogInputs.ResumeLayout(false); + this.pnl_AnalogInputs.PerformLayout(); + this.pnl_AnalogOutpus.ResumeLayout(false); + this.pnl_AnalogOutpus.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.FlowLayoutPanel flp_DigitalOutputLeft; + private System.Windows.Forms.FlowLayoutPanel flp_DigitalOutputRight; + private System.Windows.Forms.Panel pnl_DigitalOutputs; + private System.Windows.Forms.Panel pnl_DigitalInputs; + private System.Windows.Forms.FlowLayoutPanel flp_DigitalInputLeft; + private System.Windows.Forms.FlowLayoutPanel flp_DigitalInputRight; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.FlowLayoutPanel flp_AnalogInputLeft; + private System.Windows.Forms.FlowLayoutPanel flp_AnalogInputRight; + private System.Windows.Forms.Panel pnl_AnalogInputs; + private System.Windows.Forms.Panel pnl_AnalogOutpus; + private System.Windows.Forms.FlowLayoutPanel flp_AnalogOutputLeft; + private System.Windows.Forms.FlowLayoutPanel flp_AnalogOutputRight; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.cs new file mode 100644 index 0000000..76e14ee --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.cs @@ -0,0 +1,298 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using static SA_LTT.Module.Crevis; +using System.Threading; +using SA_LTT; +using padDLL; + +namespace SA_LTT_UI.Screen +{ + public partial class ScreenIO : UserControl + { + MainFrame _mainFrame; + Thread t_UIUpdate; + + bool updateCheck; + + private List<IoBar> InputIoBars = new List<IoBar>(); + private List<IoBar> OutputIoBars = new List<IoBar>(); + private List<AnalogBar> InputAnalogBars = new List<AnalogBar>(); + private List<AnalogBar> OutputAnalogBars = new List<AnalogBar>(); + + public ScreenIO(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + + InitalizeData(); + + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + + + private void InitalizeData() + { + FlowLayoutPanel fllayout = new FlowLayoutPanel(); + + int i = 0; + DigitalInput[] inputs = _mainFrame.equipment.crevis.DigitalInputs.Keys.ToArray(); + foreach (DigitalInput input in inputs) + { + IoBar ioBar = new IoBar(i, input.ToString()); + InputIoBars.Add(ioBar); + + if (i % 8 == 0) + { + fllayout = new FlowLayoutPanel(); + fllayout.AutoSize = true; + fllayout.BorderStyle = BorderStyle.FixedSingle; + fllayout.FlowDirection = FlowDirection.TopDown; + + if ((i / 8) % 2 == 0) + { + flp_DigitalInputLeft.Controls.Add(fllayout); + } + else + { + flp_DigitalInputRight.Controls.Add(fllayout); + } + } + + fllayout.Controls.Add(ioBar); + i++; + } + + i = 0; + DigitalOutput[] outputs = _mainFrame.equipment.crevis.DigitalOutputs.Keys.ToArray(); + foreach (DigitalOutput output in outputs) + { + IoBar ioBar = new IoBar(i, output.ToString()); + ioBar.AddClickEvent(DigitalOutputClicked); + OutputIoBars.Add(ioBar); + + if (i % 8 == 0) + { + fllayout = new FlowLayoutPanel(); + fllayout.AutoSize = true; + fllayout.BorderStyle = BorderStyle.FixedSingle; + fllayout.FlowDirection = FlowDirection.TopDown; + + if ((i / 8) % 2 == 0) + { + flp_DigitalOutputLeft.Controls.Add(fllayout); + } + else + { + flp_DigitalOutputRight.Controls.Add(fllayout); + } + } + + fllayout.Controls.Add(ioBar); + i++; + } + + i = 0; + AnalogInput[] analogInputs = _mainFrame.equipment.crevis.AnalogInputs.Keys.ToArray(); + foreach (AnalogInput output in analogInputs) + { + AnalogBar analogBar = new AnalogBar(i, output.ToString()); + InputAnalogBars.Add(analogBar); + + if (i % 4 == 0) + { + fllayout = new FlowLayoutPanel(); + fllayout.AutoSize = true; + fllayout.BorderStyle = BorderStyle.FixedSingle; + fllayout.FlowDirection = FlowDirection.TopDown; + + if ((i / 4) % 2 == 0) + { + flp_AnalogInputLeft.Controls.Add(fllayout); + } + else + { + flp_AnalogInputRight.Controls.Add(fllayout); + } + } + + fllayout.Controls.Add(analogBar); + i++; + } + + i = 0; + AnalogOutput[] analogOutputs = _mainFrame.equipment.crevis.AnalogOutputs.Keys.ToArray(); + foreach (AnalogOutput output in analogOutputs) + { + AnalogBar analogBar = new AnalogBar(i, output.ToString()); + analogBar.AddClickEvent(AnalogOutputClicked); + OutputAnalogBars.Add(analogBar); + + if (i % 4 == 0) + { + fllayout = new FlowLayoutPanel(); + fllayout.AutoSize = true; + fllayout.BorderStyle = BorderStyle.FixedSingle; + fllayout.FlowDirection = FlowDirection.TopDown; + + if ((i / 4) % 2 == 0) + { + flp_AnalogOutputLeft.Controls.Add(fllayout); + } + else + { + flp_AnalogOutputRight.Controls.Add(fllayout); + } + } + + fllayout.Controls.Add(analogBar); + i++; + } + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + int i = 0; + foreach(DigitalInput digitalInput in Enum.GetValues(typeof(DigitalInput))) + { + InputIoBars[i].Status = _mainFrame.equipment.crevis.DigitalInputs[digitalInput]; + i++; + } + + i = 0; + foreach (DigitalOutput digitalOutput in Enum.GetValues(typeof(DigitalOutput))) + { + OutputIoBars[i].Status = _mainFrame.equipment.crevis.DigitalOutputs[digitalOutput]; + i++; + } + + + i = 0; + foreach (AnalogInput input in Enum.GetValues(typeof(AnalogInput))) + { + InputAnalogBars[i].Value = _mainFrame.equipment.crevis.AnalogInputs[input]; + i++; + } + + i = 0; + foreach (AnalogOutput input in Enum.GetValues(typeof(AnalogOutput))) + { + OutputAnalogBars[i].Value = _mainFrame.equipment.crevis.AnalogOutputs[input]; + i++; + } + + if(_mainFrame.equipment.ProcessStatus == ProcessStatus.Idle || _mainFrame.equipment.ProcessStatus == ProcessStatus.Pause) + { + if(flp_AnalogOutputLeft.Enabled == false) + { + flp_AnalogOutputLeft.Enabled = true; + } + + if (flp_AnalogOutputRight.Enabled == false) + { + flp_AnalogOutputRight.Enabled = true; + } + + if (flp_DigitalOutputLeft.Enabled == false) + { + flp_DigitalOutputLeft.Enabled = true; + } + + if (flp_DigitalOutputRight.Enabled == false) + { + flp_DigitalOutputRight.Enabled = true; + } + } + else + { + if (flp_AnalogOutputLeft.Enabled == true) + { + flp_AnalogOutputLeft.Enabled = false; + } + + if (flp_AnalogOutputRight.Enabled == true) + { + flp_AnalogOutputRight.Enabled = false; + } + + if (flp_DigitalOutputLeft.Enabled == true) + { + flp_DigitalOutputLeft.Enabled = false; + } + + if (flp_DigitalOutputRight.Enabled == true) + { + flp_DigitalOutputRight.Enabled = false; + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void DigitalOutputClicked(object sender, EventArgs e) + { + Control control = (Control)sender; + DigitalOutput digitalOutput = (DigitalOutput)control.Tag; + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenIO : {digitalOutput.ToString()} {!_mainFrame.equipment.crevis.DigitalOutputs[digitalOutput]}"); + _mainFrame.equipment.crevis.WriteOutput(digitalOutput, !_mainFrame.equipment.crevis.DigitalOutputs[digitalOutput]); + } + + private void AnalogOutputClicked(object sender, EventArgs e) + { + var nPad = new NumericPad(); + nPad.Setup("0", "10"); //踰붿쐞 蹂�寃쏀빐�빞 �븿 + nPad.ShowDialog(); + double value = 0; + if(double.TryParse(nPad.GetValue(), out value)) + { + if (nPad.DialogResult != DialogResult.OK) return; + + Control control = (Control)sender; + AnalogOutput analoglOutput = (AnalogOutput)((int)control.Tag * 10); + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenIO : {analoglOutput.ToString()} {value}"); + _mainFrame.equipment.crevis.WriteAnalog(analoglOutput, value); + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.resx b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.Designer.cs new file mode 100644 index 0000000..065156d --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.Designer.cs @@ -0,0 +1,844 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class ScreenLaser + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend(); + System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series(); + this.splitter1 = new System.Windows.Forms.Splitter(); + this.pnl_Monitoring = new System.Windows.Forms.Panel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.btn_EnergyMeasurementSave = new System.Windows.Forms.Button(); + this.chart_EnergyMeasure = new System.Windows.Forms.DataVisualization.Charting.Chart(); + this.label52 = new System.Windows.Forms.Label(); + this.label26 = new System.Windows.Forms.Label(); + this.label41 = new System.Windows.Forms.Label(); + this.label25 = new System.Windows.Forms.Label(); + this.label30 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.lb_EnergyMeasurementPowerMeterPositionMove = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label38 = new System.Windows.Forms.Label(); + this.tb_Min = new System.Windows.Forms.TextBox(); + this.lb_EnergyMeasurementPowerMeterInitialize = new System.Windows.Forms.Label(); + this.label23 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.tb_Max = new System.Windows.Forms.TextBox(); + this.label19 = new System.Windows.Forms.Label(); + this.label22 = new System.Windows.Forms.Label(); + this.lb_EnergyMeasurementComplete = new System.Windows.Forms.Label(); + this.tb_Average = new System.Windows.Forms.TextBox(); + this.lb_EnergyMeasurementCenterPositionMove = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.tb_Count = new System.Windows.Forms.TextBox(); + this.lb_EnergyMeasurementAttenuatorSet = new System.Windows.Forms.Label(); + this.label24 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.label36 = new System.Windows.Forms.Label(); + this.lb_EnergyMeasurementPowerMeasure = new System.Windows.Forms.Label(); + this.lb_EnergyMeasurementLaserOn = new System.Windows.Forms.Label(); + this.tb_Power = new System.Windows.Forms.TextBox(); + this.label32 = new System.Windows.Forms.Label(); + this.lb_EnergyMeasurementLaserOff = new System.Windows.Forms.Label(); + this.label34 = new System.Windows.Forms.Label(); + this.label59 = new System.Windows.Forms.Label(); + this.label58 = new System.Windows.Forms.Label(); + this.label57 = new System.Windows.Forms.Label(); + this.label60 = new System.Windows.Forms.Label(); + this.label55 = new System.Windows.Forms.Label(); + this.label54 = new System.Windows.Forms.Label(); + this.label53 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.pnl_Main = new System.Windows.Forms.Panel(); + this.label12 = new System.Windows.Forms.Label(); + this.pnl_Laser_Connection = new System.Windows.Forms.Panel(); + this.btn_SetEnergyMeasurementAttenuatorAngle = new System.Windows.Forms.Button(); + this.lb_Laser_Connection = new System.Windows.Forms.Label(); + this.label21 = new System.Windows.Forms.Label(); + this.tb_EnergyMeasurementAttenuatorAngle = new System.Windows.Forms.TextBox(); + this.btn_EnergyMeasurementStop = new System.Windows.Forms.Button(); + this.btn_EnergyMeasurementStart = new System.Windows.Forms.Button(); + this.tb_SetEnergyMeasurementTime = new System.Windows.Forms.TextBox(); + this.tb_SetEnergyMeasurementAttenuatorAngle = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.tb_EnergyMeasurementTime = new System.Windows.Forms.TextBox(); + this.btn_SetEnergyMeasurementTime = new System.Windows.Forms.Button(); + this.tt_Description = new System.Windows.Forms.ToolTip(this.components); + this.pnl_Monitoring.SuspendLayout(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.chart_EnergyMeasure)).BeginInit(); + this.pnl_Main.SuspendLayout(); + this.pnl_Laser_Connection.SuspendLayout(); + this.SuspendLayout(); + // + // splitter1 + // + this.splitter1.Location = new System.Drawing.Point(0, 0); + this.splitter1.Name = "splitter1"; + this.splitter1.Size = new System.Drawing.Size(3, 803); + this.splitter1.TabIndex = 0; + this.splitter1.TabStop = false; + // + // pnl_Monitoring + // + this.pnl_Monitoring.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_Monitoring.Controls.Add(this.panel1); + this.pnl_Monitoring.Controls.Add(this.label1); + this.pnl_Monitoring.Dock = System.Windows.Forms.DockStyle.Right; + this.pnl_Monitoring.Location = new System.Drawing.Point(884, 0); + this.pnl_Monitoring.Name = "pnl_Monitoring"; + this.pnl_Monitoring.Size = new System.Drawing.Size(880, 803); + this.pnl_Monitoring.TabIndex = 11; + // + // panel1 + // + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Controls.Add(this.btn_EnergyMeasurementSave); + this.panel1.Controls.Add(this.chart_EnergyMeasure); + this.panel1.Controls.Add(this.label52); + this.panel1.Controls.Add(this.label26); + this.panel1.Controls.Add(this.label41); + this.panel1.Controls.Add(this.label25); + this.panel1.Controls.Add(this.label30); + this.panel1.Controls.Add(this.label16); + this.panel1.Controls.Add(this.lb_EnergyMeasurementPowerMeterPositionMove); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.label38); + this.panel1.Controls.Add(this.tb_Min); + this.panel1.Controls.Add(this.lb_EnergyMeasurementPowerMeterInitialize); + this.panel1.Controls.Add(this.label23); + this.panel1.Controls.Add(this.label18); + this.panel1.Controls.Add(this.tb_Max); + this.panel1.Controls.Add(this.label19); + this.panel1.Controls.Add(this.label22); + this.panel1.Controls.Add(this.lb_EnergyMeasurementComplete); + this.panel1.Controls.Add(this.tb_Average); + this.panel1.Controls.Add(this.lb_EnergyMeasurementCenterPositionMove); + this.panel1.Controls.Add(this.label15); + this.panel1.Controls.Add(this.tb_Count); + this.panel1.Controls.Add(this.lb_EnergyMeasurementAttenuatorSet); + this.panel1.Controls.Add(this.label24); + this.panel1.Controls.Add(this.label17); + this.panel1.Controls.Add(this.label36); + this.panel1.Controls.Add(this.lb_EnergyMeasurementPowerMeasure); + this.panel1.Controls.Add(this.lb_EnergyMeasurementLaserOn); + this.panel1.Controls.Add(this.tb_Power); + this.panel1.Controls.Add(this.label32); + this.panel1.Controls.Add(this.lb_EnergyMeasurementLaserOff); + this.panel1.Controls.Add(this.label34); + this.panel1.Controls.Add(this.label59); + this.panel1.Controls.Add(this.label58); + this.panel1.Controls.Add(this.label57); + this.panel1.Controls.Add(this.label60); + this.panel1.Controls.Add(this.label55); + this.panel1.Controls.Add(this.label54); + this.panel1.Controls.Add(this.label53); + this.panel1.Location = new System.Drawing.Point(4, 45); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(871, 752); + this.panel1.TabIndex = 61; + // + // btn_EnergyMeasurementSave + // + this.btn_EnergyMeasurementSave.Location = new System.Drawing.Point(709, 701); + this.btn_EnergyMeasurementSave.Name = "btn_EnergyMeasurementSave"; + this.btn_EnergyMeasurementSave.Size = new System.Drawing.Size(157, 46); + this.btn_EnergyMeasurementSave.TabIndex = 62; + this.btn_EnergyMeasurementSave.Text = ".CSV Save"; + this.btn_EnergyMeasurementSave.UseVisualStyleBackColor = true; + this.btn_EnergyMeasurementSave.Click += new System.EventHandler(this.btn_EnergyMeasurementSave_Click); + // + // chart_EnergyMeasure + // + chartArea2.Name = "ChartArea1"; + this.chart_EnergyMeasure.ChartAreas.Add(chartArea2); + legend2.Name = "Legend1"; + this.chart_EnergyMeasure.Legends.Add(legend2); + this.chart_EnergyMeasure.Location = new System.Drawing.Point(3, 271); + this.chart_EnergyMeasure.Name = "chart_EnergyMeasure"; + series2.ChartArea = "ChartArea1"; + series2.Legend = "Legend1"; + series2.Name = "Series1"; + this.chart_EnergyMeasure.Series.Add(series2); + this.chart_EnergyMeasure.Size = new System.Drawing.Size(863, 424); + this.chart_EnergyMeasure.TabIndex = 61; + // + // label52 + // + this.label52.BackColor = System.Drawing.Color.LightGray; + this.label52.Dock = System.Windows.Forms.DockStyle.Top; + this.label52.Location = new System.Drawing.Point(0, 0); + this.label52.Name = "label52"; + this.label52.Size = new System.Drawing.Size(869, 37); + this.label52.TabIndex = 3; + this.label52.Text = "�뼚 Energy Measurement Flow"; + this.label52.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label26 + // + this.label26.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label26.Font = new System.Drawing.Font("Gulim", 13F, System.Drawing.FontStyle.Bold); + this.label26.Location = new System.Drawing.Point(805, 225); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(61, 40); + this.label26.TabIndex = 54; + this.label26.Text = "J/cm짼"; + this.label26.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label41 + // + this.label41.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label41.Location = new System.Drawing.Point(54, 166); + this.label41.Name = "label41"; + this.label41.Size = new System.Drawing.Size(186, 40); + this.label41.TabIndex = 60; + this.label41.Text = "Power meter position move"; + this.label41.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label25 + // + this.label25.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label25.Font = new System.Drawing.Font("Gulim", 13F, System.Drawing.FontStyle.Bold); + this.label25.Location = new System.Drawing.Point(805, 179); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(61, 40); + this.label25.TabIndex = 53; + this.label25.Text = "J/cm짼"; + this.label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label30 + // + this.label30.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label30.Location = new System.Drawing.Point(54, 221); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(186, 40); + this.label30.TabIndex = 37; + this.label30.Text = "Attenuator set"; + this.label30.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label16 + // + this.label16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label16.Font = new System.Drawing.Font("Gulim", 13F, System.Drawing.FontStyle.Bold); + this.label16.Location = new System.Drawing.Point(805, 87); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(61, 40); + this.label16.TabIndex = 52; + this.label16.Text = "J/cm짼"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_EnergyMeasurementPowerMeterPositionMove + // + this.lb_EnergyMeasurementPowerMeterPositionMove.BackColor = System.Drawing.Color.Green; + this.lb_EnergyMeasurementPowerMeterPositionMove.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EnergyMeasurementPowerMeterPositionMove.Location = new System.Drawing.Point(8, 166); + this.lb_EnergyMeasurementPowerMeterPositionMove.Name = "lb_EnergyMeasurementPowerMeterPositionMove"; + this.lb_EnergyMeasurementPowerMeterPositionMove.Size = new System.Drawing.Size(40, 40); + this.lb_EnergyMeasurementPowerMeterPositionMove.TabIndex = 59; + this.lb_EnergyMeasurementPowerMeterPositionMove.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Font = new System.Drawing.Font("Gulim", 13F, System.Drawing.FontStyle.Bold); + this.label3.Location = new System.Drawing.Point(805, 133); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(61, 40); + this.label3.TabIndex = 51; + this.label3.Text = "J/cm짼"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label38 + // + this.label38.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label38.Location = new System.Drawing.Point(318, 221); + this.label38.Name = "label38"; + this.label38.Size = new System.Drawing.Size(186, 40); + this.label38.TabIndex = 45; + this.label38.Text = "Measure complete"; + this.label38.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Min + // + this.tb_Min.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Min.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Min.Location = new System.Drawing.Point(668, 225); + this.tb_Min.Name = "tb_Min"; + this.tb_Min.ReadOnly = true; + this.tb_Min.Size = new System.Drawing.Size(130, 40); + this.tb_Min.TabIndex = 46; + this.tb_Min.Text = "0"; + // + // lb_EnergyMeasurementPowerMeterInitialize + // + this.lb_EnergyMeasurementPowerMeterInitialize.BackColor = System.Drawing.Color.Green; + this.lb_EnergyMeasurementPowerMeterInitialize.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EnergyMeasurementPowerMeterInitialize.Location = new System.Drawing.Point(8, 56); + this.lb_EnergyMeasurementPowerMeterInitialize.Name = "lb_EnergyMeasurementPowerMeterInitialize"; + this.lb_EnergyMeasurementPowerMeterInitialize.Size = new System.Drawing.Size(40, 40); + this.lb_EnergyMeasurementPowerMeterInitialize.TabIndex = 32; + this.lb_EnergyMeasurementPowerMeterInitialize.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label23 + // + this.label23.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label23.Location = new System.Drawing.Point(524, 225); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(138, 40); + this.label23.TabIndex = 45; + this.label23.Text = "Min"; + this.label23.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label18 + // + this.label18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label18.Location = new System.Drawing.Point(54, 111); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(186, 40); + this.label18.TabIndex = 60; + this.label18.Text = "Center position move"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Max + // + this.tb_Max.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Max.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Max.Location = new System.Drawing.Point(668, 179); + this.tb_Max.Name = "tb_Max"; + this.tb_Max.ReadOnly = true; + this.tb_Max.Size = new System.Drawing.Size(130, 40); + this.tb_Max.TabIndex = 44; + this.tb_Max.Text = "0"; + // + // label19 + // + this.label19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label19.Location = new System.Drawing.Point(54, 56); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(186, 40); + this.label19.TabIndex = 33; + this.label19.Text = "Power meter initialize"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label22 + // + this.label22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label22.Location = new System.Drawing.Point(524, 179); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(138, 40); + this.label22.TabIndex = 43; + this.label22.Text = "Max"; + this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_EnergyMeasurementComplete + // + this.lb_EnergyMeasurementComplete.BackColor = System.Drawing.Color.Green; + this.lb_EnergyMeasurementComplete.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EnergyMeasurementComplete.Location = new System.Drawing.Point(272, 221); + this.lb_EnergyMeasurementComplete.Name = "lb_EnergyMeasurementComplete"; + this.lb_EnergyMeasurementComplete.Size = new System.Drawing.Size(40, 40); + this.lb_EnergyMeasurementComplete.TabIndex = 44; + this.lb_EnergyMeasurementComplete.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Average + // + this.tb_Average.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Average.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Average.Location = new System.Drawing.Point(668, 133); + this.tb_Average.Name = "tb_Average"; + this.tb_Average.ReadOnly = true; + this.tb_Average.Size = new System.Drawing.Size(130, 40); + this.tb_Average.TabIndex = 50; + this.tb_Average.Text = "0"; + // + // lb_EnergyMeasurementCenterPositionMove + // + this.lb_EnergyMeasurementCenterPositionMove.BackColor = System.Drawing.Color.Green; + this.lb_EnergyMeasurementCenterPositionMove.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EnergyMeasurementCenterPositionMove.Location = new System.Drawing.Point(8, 111); + this.lb_EnergyMeasurementCenterPositionMove.Name = "lb_EnergyMeasurementCenterPositionMove"; + this.lb_EnergyMeasurementCenterPositionMove.Size = new System.Drawing.Size(40, 40); + this.lb_EnergyMeasurementCenterPositionMove.TabIndex = 59; + this.lb_EnergyMeasurementCenterPositionMove.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label15 + // + this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label15.Location = new System.Drawing.Point(524, 133); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(138, 40); + this.label15.TabIndex = 49; + this.label15.Text = "Average"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Count + // + this.tb_Count.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Count.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Count.Location = new System.Drawing.Point(668, 41); + this.tb_Count.Name = "tb_Count"; + this.tb_Count.ReadOnly = true; + this.tb_Count.Size = new System.Drawing.Size(130, 40); + this.tb_Count.TabIndex = 48; + this.tb_Count.Text = "0"; + // + // lb_EnergyMeasurementAttenuatorSet + // + this.lb_EnergyMeasurementAttenuatorSet.BackColor = System.Drawing.Color.Green; + this.lb_EnergyMeasurementAttenuatorSet.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EnergyMeasurementAttenuatorSet.Location = new System.Drawing.Point(8, 221); + this.lb_EnergyMeasurementAttenuatorSet.Name = "lb_EnergyMeasurementAttenuatorSet"; + this.lb_EnergyMeasurementAttenuatorSet.Size = new System.Drawing.Size(40, 40); + this.lb_EnergyMeasurementAttenuatorSet.TabIndex = 36; + this.lb_EnergyMeasurementAttenuatorSet.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label24 + // + this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label24.Location = new System.Drawing.Point(524, 41); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(138, 40); + this.label24.TabIndex = 47; + this.label24.Text = "Count"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label17 + // + this.label17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label17.Location = new System.Drawing.Point(524, 87); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(138, 40); + this.label17.TabIndex = 41; + this.label17.Text = "Current Energy"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label36 + // + this.label36.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label36.Location = new System.Drawing.Point(318, 56); + this.label36.Name = "label36"; + this.label36.Size = new System.Drawing.Size(186, 40); + this.label36.TabIndex = 43; + this.label36.Text = "Laser on"; + this.label36.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_EnergyMeasurementPowerMeasure + // + this.lb_EnergyMeasurementPowerMeasure.BackColor = System.Drawing.Color.Green; + this.lb_EnergyMeasurementPowerMeasure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EnergyMeasurementPowerMeasure.Location = new System.Drawing.Point(272, 111); + this.lb_EnergyMeasurementPowerMeasure.Name = "lb_EnergyMeasurementPowerMeasure"; + this.lb_EnergyMeasurementPowerMeasure.Size = new System.Drawing.Size(40, 40); + this.lb_EnergyMeasurementPowerMeasure.TabIndex = 38; + this.lb_EnergyMeasurementPowerMeasure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_EnergyMeasurementLaserOn + // + this.lb_EnergyMeasurementLaserOn.BackColor = System.Drawing.Color.Green; + this.lb_EnergyMeasurementLaserOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EnergyMeasurementLaserOn.Location = new System.Drawing.Point(272, 56); + this.lb_EnergyMeasurementLaserOn.Name = "lb_EnergyMeasurementLaserOn"; + this.lb_EnergyMeasurementLaserOn.Size = new System.Drawing.Size(40, 40); + this.lb_EnergyMeasurementLaserOn.TabIndex = 42; + this.lb_EnergyMeasurementLaserOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Power + // + this.tb_Power.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Power.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Power.Location = new System.Drawing.Point(668, 87); + this.tb_Power.Name = "tb_Power"; + this.tb_Power.ReadOnly = true; + this.tb_Power.Size = new System.Drawing.Size(130, 40); + this.tb_Power.TabIndex = 42; + this.tb_Power.Text = "0"; + // + // label32 + // + this.label32.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label32.Location = new System.Drawing.Point(318, 111); + this.label32.Name = "label32"; + this.label32.Size = new System.Drawing.Size(186, 40); + this.label32.TabIndex = 39; + this.label32.Text = "Power measure"; + this.label32.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_EnergyMeasurementLaserOff + // + this.lb_EnergyMeasurementLaserOff.BackColor = System.Drawing.Color.Green; + this.lb_EnergyMeasurementLaserOff.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EnergyMeasurementLaserOff.Location = new System.Drawing.Point(272, 166); + this.lb_EnergyMeasurementLaserOff.Name = "lb_EnergyMeasurementLaserOff"; + this.lb_EnergyMeasurementLaserOff.Size = new System.Drawing.Size(40, 40); + this.lb_EnergyMeasurementLaserOff.TabIndex = 40; + this.lb_EnergyMeasurementLaserOff.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label34 + // + this.label34.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label34.Location = new System.Drawing.Point(318, 166); + this.label34.Name = "label34"; + this.label34.Size = new System.Drawing.Size(186, 40); + this.label34.TabIndex = 41; + this.label34.Text = "Laser off"; + this.label34.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label59 + // + this.label59.AutoSize = true; + this.label59.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label59.Location = new System.Drawing.Point(402, 206); + this.label59.Name = "label59"; + this.label59.Size = new System.Drawing.Size(18, 15); + this.label59.TabIndex = 30; + this.label59.Text = "�넃"; + this.label59.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label58 + // + this.label58.AutoSize = true; + this.label58.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label58.Location = new System.Drawing.Point(402, 151); + this.label58.Name = "label58"; + this.label58.Size = new System.Drawing.Size(18, 15); + this.label58.TabIndex = 30; + this.label58.Text = "�넃"; + this.label58.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label57 + // + this.label57.AutoSize = true; + this.label57.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label57.Location = new System.Drawing.Point(402, 96); + this.label57.Name = "label57"; + this.label57.Size = new System.Drawing.Size(18, 15); + this.label57.TabIndex = 30; + this.label57.Text = "�넃"; + this.label57.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label60 + // + this.label60.AutoSize = true; + this.label60.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label60.Location = new System.Drawing.Point(402, 41); + this.label60.Name = "label60"; + this.label60.Size = new System.Drawing.Size(18, 15); + this.label60.TabIndex = 30; + this.label60.Text = "�넃"; + this.label60.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label55 + // + this.label55.AutoSize = true; + this.label55.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label55.Location = new System.Drawing.Point(138, 206); + this.label55.Name = "label55"; + this.label55.Size = new System.Drawing.Size(18, 15); + this.label55.TabIndex = 30; + this.label55.Text = "�넃"; + this.label55.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label54 + // + this.label54.AutoSize = true; + this.label54.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label54.Location = new System.Drawing.Point(138, 151); + this.label54.Name = "label54"; + this.label54.Size = new System.Drawing.Size(18, 15); + this.label54.TabIndex = 30; + this.label54.Text = "�넃"; + this.label54.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label53 + // + this.label53.AutoSize = true; + this.label53.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label53.Location = new System.Drawing.Point(138, 96); + this.label53.Name = "label53"; + this.label53.Size = new System.Drawing.Size(18, 15); + this.label53.TabIndex = 30; + this.label53.Text = "�넃"; + this.label53.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label1 + // + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Dock = System.Windows.Forms.DockStyle.Top; + this.label1.Font = new System.Drawing.Font("Gulim", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(878, 40); + this.label1.TabIndex = 31; + this.label1.Text = "�뼚 Manual measurement flow"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnl_Main + // + this.pnl_Main.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_Main.Controls.Add(this.label12); + this.pnl_Main.Controls.Add(this.pnl_Laser_Connection); + this.pnl_Main.Dock = System.Windows.Forms.DockStyle.Left; + this.pnl_Main.Location = new System.Drawing.Point(3, 0); + this.pnl_Main.Name = "pnl_Main"; + this.pnl_Main.Size = new System.Drawing.Size(880, 803); + this.pnl_Main.TabIndex = 12; + // + // label12 + // + this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label12.Dock = System.Windows.Forms.DockStyle.Top; + this.label12.Font = new System.Drawing.Font("Gulim", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label12.Location = new System.Drawing.Point(0, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(878, 40); + this.label12.TabIndex = 31; + this.label12.Text = "�뼚 Laser measurement setting"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pnl_Laser_Connection + // + this.pnl_Laser_Connection.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_Laser_Connection.Controls.Add(this.btn_SetEnergyMeasurementAttenuatorAngle); + this.pnl_Laser_Connection.Controls.Add(this.lb_Laser_Connection); + this.pnl_Laser_Connection.Controls.Add(this.label21); + this.pnl_Laser_Connection.Controls.Add(this.tb_EnergyMeasurementAttenuatorAngle); + this.pnl_Laser_Connection.Controls.Add(this.btn_EnergyMeasurementStop); + this.pnl_Laser_Connection.Controls.Add(this.btn_EnergyMeasurementStart); + this.pnl_Laser_Connection.Controls.Add(this.tb_SetEnergyMeasurementTime); + this.pnl_Laser_Connection.Controls.Add(this.tb_SetEnergyMeasurementAttenuatorAngle); + this.pnl_Laser_Connection.Controls.Add(this.label5); + this.pnl_Laser_Connection.Controls.Add(this.tb_EnergyMeasurementTime); + this.pnl_Laser_Connection.Controls.Add(this.btn_SetEnergyMeasurementTime); + this.pnl_Laser_Connection.Location = new System.Drawing.Point(5, 44); + this.pnl_Laser_Connection.Name = "pnl_Laser_Connection"; + this.pnl_Laser_Connection.Size = new System.Drawing.Size(861, 180); + this.pnl_Laser_Connection.TabIndex = 6; + // + // btn_SetEnergyMeasurementAttenuatorAngle + // + this.btn_SetEnergyMeasurementAttenuatorAngle.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_SetEnergyMeasurementAttenuatorAngle.Location = new System.Drawing.Point(299, 54); + this.btn_SetEnergyMeasurementAttenuatorAngle.Name = "btn_SetEnergyMeasurementAttenuatorAngle"; + this.btn_SetEnergyMeasurementAttenuatorAngle.Size = new System.Drawing.Size(61, 40); + this.btn_SetEnergyMeasurementAttenuatorAngle.TabIndex = 46; + this.btn_SetEnergyMeasurementAttenuatorAngle.Text = "Set"; + this.btn_SetEnergyMeasurementAttenuatorAngle.UseVisualStyleBackColor = true; + this.btn_SetEnergyMeasurementAttenuatorAngle.Click += new System.EventHandler(this.btn_SetEnergyMeasurementAttenuatorAngle_Click); + // + // lb_Laser_Connection + // + this.lb_Laser_Connection.BackColor = System.Drawing.Color.LightGray; + this.lb_Laser_Connection.Dock = System.Windows.Forms.DockStyle.Top; + this.lb_Laser_Connection.Location = new System.Drawing.Point(0, 0); + this.lb_Laser_Connection.Name = "lb_Laser_Connection"; + this.lb_Laser_Connection.Size = new System.Drawing.Size(859, 37); + this.lb_Laser_Connection.TabIndex = 3; + this.lb_Laser_Connection.Text = "�뼚 Energy Measurement"; + this.lb_Laser_Connection.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label21 + // + this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label21.Location = new System.Drawing.Point(18, 54); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(138, 40); + this.label21.TabIndex = 44; + this.label21.Text = "Attenuator angle [쨘]"; + this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_EnergyMeasurementAttenuatorAngle + // + this.tb_EnergyMeasurementAttenuatorAngle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_EnergyMeasurementAttenuatorAngle.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_EnergyMeasurementAttenuatorAngle.Location = new System.Drawing.Point(162, 54); + this.tb_EnergyMeasurementAttenuatorAngle.Name = "tb_EnergyMeasurementAttenuatorAngle"; + this.tb_EnergyMeasurementAttenuatorAngle.ReadOnly = true; + this.tb_EnergyMeasurementAttenuatorAngle.Size = new System.Drawing.Size(62, 40); + this.tb_EnergyMeasurementAttenuatorAngle.TabIndex = 45; + this.tb_EnergyMeasurementAttenuatorAngle.Text = "0"; + // + // btn_EnergyMeasurementStop + // + this.btn_EnergyMeasurementStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_EnergyMeasurementStop.Location = new System.Drawing.Point(674, 122); + this.btn_EnergyMeasurementStop.Name = "btn_EnergyMeasurementStop"; + this.btn_EnergyMeasurementStop.Size = new System.Drawing.Size(140, 40); + this.btn_EnergyMeasurementStop.TabIndex = 47; + this.btn_EnergyMeasurementStop.Text = "STOP"; + this.btn_EnergyMeasurementStop.UseVisualStyleBackColor = true; + this.btn_EnergyMeasurementStop.Click += new System.EventHandler(this.btn_EnergyMeasurementStop_Click); + // + // btn_EnergyMeasurementStart + // + this.btn_EnergyMeasurementStart.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_EnergyMeasurementStart.Location = new System.Drawing.Point(527, 122); + this.btn_EnergyMeasurementStart.Name = "btn_EnergyMeasurementStart"; + this.btn_EnergyMeasurementStart.Size = new System.Drawing.Size(140, 40); + this.btn_EnergyMeasurementStart.TabIndex = 42; + this.btn_EnergyMeasurementStart.Text = "START"; + this.btn_EnergyMeasurementStart.UseVisualStyleBackColor = true; + this.btn_EnergyMeasurementStart.Click += new System.EventHandler(this.btn_EnergyMeasurementStart_Click); + // + // tb_SetEnergyMeasurementTime + // + this.tb_SetEnergyMeasurementTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_SetEnergyMeasurementTime.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_SetEnergyMeasurementTime.Location = new System.Drawing.Point(684, 52); + this.tb_SetEnergyMeasurementTime.Name = "tb_SetEnergyMeasurementTime"; + this.tb_SetEnergyMeasurementTime.Size = new System.Drawing.Size(62, 40); + this.tb_SetEnergyMeasurementTime.TabIndex = 38; + this.tt_Description.SetToolTip(this.tb_SetEnergyMeasurementTime, "n珥� �룞�븞 痢≪젙"); + // + // tb_SetEnergyMeasurementAttenuatorAngle + // + this.tb_SetEnergyMeasurementAttenuatorAngle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_SetEnergyMeasurementAttenuatorAngle.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_SetEnergyMeasurementAttenuatorAngle.Location = new System.Drawing.Point(231, 54); + this.tb_SetEnergyMeasurementAttenuatorAngle.Name = "tb_SetEnergyMeasurementAttenuatorAngle"; + this.tb_SetEnergyMeasurementAttenuatorAngle.Size = new System.Drawing.Size(62, 40); + this.tb_SetEnergyMeasurementAttenuatorAngle.TabIndex = 43; + this.tt_Description.SetToolTip(this.tb_SetEnergyMeasurementAttenuatorAngle, "Attenuator 媛곷룄 n�룄�뿉�꽌 痢≪젙"); + // + // label5 + // + this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label5.Location = new System.Drawing.Point(472, 52); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(138, 40); + this.label5.TabIndex = 39; + this.label5.Text = "Measure time \r\n(Sec)"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_EnergyMeasurementTime + // + this.tb_EnergyMeasurementTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_EnergyMeasurementTime.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_EnergyMeasurementTime.Location = new System.Drawing.Point(616, 52); + this.tb_EnergyMeasurementTime.Name = "tb_EnergyMeasurementTime"; + this.tb_EnergyMeasurementTime.ReadOnly = true; + this.tb_EnergyMeasurementTime.Size = new System.Drawing.Size(62, 40); + this.tb_EnergyMeasurementTime.TabIndex = 40; + this.tb_EnergyMeasurementTime.Text = "0"; + // + // btn_SetEnergyMeasurementTime + // + this.btn_SetEnergyMeasurementTime.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_SetEnergyMeasurementTime.Location = new System.Drawing.Point(753, 53); + this.btn_SetEnergyMeasurementTime.Name = "btn_SetEnergyMeasurementTime"; + this.btn_SetEnergyMeasurementTime.Size = new System.Drawing.Size(61, 39); + this.btn_SetEnergyMeasurementTime.TabIndex = 41; + this.btn_SetEnergyMeasurementTime.Text = "Set"; + this.btn_SetEnergyMeasurementTime.UseVisualStyleBackColor = true; + this.btn_SetEnergyMeasurementTime.Click += new System.EventHandler(this.btn_SetEnergyMeasurementMeasurementTime_Click); + // + // ScreenLaser + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.pnl_Main); + this.Controls.Add(this.pnl_Monitoring); + this.Controls.Add(this.splitter1); + this.Name = "ScreenLaser"; + this.Size = new System.Drawing.Size(1764, 803); + this.pnl_Monitoring.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.chart_EnergyMeasure)).EndInit(); + this.pnl_Main.ResumeLayout(false); + this.pnl_Laser_Connection.ResumeLayout(false); + this.pnl_Laser_Connection.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Splitter splitter1; + private System.Windows.Forms.Panel pnl_Monitoring; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label lb_EnergyMeasurementCenterPositionMove; + private System.Windows.Forms.Label label38; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Label lb_EnergyMeasurementComplete; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.Label label36; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label lb_EnergyMeasurementLaserOn; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label34; + private System.Windows.Forms.TextBox tb_Min; + private System.Windows.Forms.Label lb_EnergyMeasurementLaserOff; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.Label label32; + private System.Windows.Forms.TextBox tb_Count; + private System.Windows.Forms.Label lb_EnergyMeasurementPowerMeasure; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label label30; + private System.Windows.Forms.TextBox tb_Max; + private System.Windows.Forms.Label lb_EnergyMeasurementAttenuatorSet; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.TextBox tb_Average; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Label lb_EnergyMeasurementPowerMeterInitialize; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.TextBox tb_Power; + private System.Windows.Forms.Panel pnl_Main; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Panel pnl_Laser_Connection; + private System.Windows.Forms.Button btn_SetEnergyMeasurementAttenuatorAngle; + private System.Windows.Forms.TextBox tb_EnergyMeasurementAttenuatorAngle; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.TextBox tb_SetEnergyMeasurementAttenuatorAngle; + private System.Windows.Forms.Button btn_SetEnergyMeasurementTime; + private System.Windows.Forms.TextBox tb_EnergyMeasurementTime; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox tb_SetEnergyMeasurementTime; + private System.Windows.Forms.Label lb_Laser_Connection; + private System.Windows.Forms.Button btn_EnergyMeasurementStart; + private System.Windows.Forms.Button btn_EnergyMeasurementStop; + private System.Windows.Forms.ToolTip tt_Description; + private System.Windows.Forms.Label label41; + private System.Windows.Forms.Label lb_EnergyMeasurementPowerMeterPositionMove; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label52; + private System.Windows.Forms.Label label59; + private System.Windows.Forms.Label label58; + private System.Windows.Forms.Label label57; + private System.Windows.Forms.Label label60; + private System.Windows.Forms.Label label55; + private System.Windows.Forms.Label label54; + private System.Windows.Forms.Label label53; + private System.Windows.Forms.DataVisualization.Charting.Chart chart_EnergyMeasure; + private System.Windows.Forms.Button btn_EnergyMeasurementSave; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.cs new file mode 100644 index 0000000..71beb50 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.cs @@ -0,0 +1,454 @@ +癤퓎sing System; +using System.Drawing; +using System.Windows.Forms; +using System.Windows.Forms.DataVisualization.Charting; +using SA_LTT.Module; +using System.Threading; +using SA_LTT_UI.Viewer; +using SA_LTT; +using System.IO; +using System.Text; + +namespace SA_LTT_UI.Screen +{ + public partial class ScreenLaser : UserControl + { + private enum EnergyMeasurementSteps + { + Wait, + PowerMeterInitialize, + InitializeWait, + MoveCenterPosition, + CheckCenterPosition, + MovePowerMeterPosition, + CheckPowerMeterPosition, + AttenuatorSet, + CheckAttenuator, + LaserOn, + MeasurementStart, + Measurement, + MeasurementEnd, + End, + } + + // �뿬湲곗뿉 �뵲濡� Attenuator Cal 留뚮뱾吏� ,, �븘�떂 Sequecne�뿉 �엳�뒗嫄� �븸寃� �벝吏� ... + + MainFrame _mainFrame; + Thread t_EnergyMeasurement; + + private float _energyMeasurementAngle = 0; + private double _energyMeasurementTime = 0; + private SequenceTimer _measurementTimer = new SequenceTimer(); + + private EnergyMeasurementSteps energyMeasurmentStep = EnergyMeasurementSteps.Wait; + public ScreenLaser(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + InitializeChart(); + _mainFrame.equipment.powerMeter.EnergyMeasured += PowerMeter_EnergyMeasured; + + t_EnergyMeasurement = new Thread(EnergyMeasurement); + t_EnergyMeasurement.Start(); + } + + private void EnergyMeasurement() + { + while (_mainFrame.IsDisposed == false) + { + Thread.Sleep(100); + if (CheckEnergyMeasurementInterlock() == false) + { + EnergyMeasurementSequence(); + } + } + } + + private bool CheckEnergyMeasurementInterlock() + { + bool isInterlock = false; + + if(energyMeasurmentStep < EnergyMeasurementSteps.MeasurementEnd) + { + if(_mainFrame.equipment.powerMeter.IsOpen == false) + { + //isInterlock = true; + } + + if(_mainFrame.equipment.ProcessStatus != SA_LTT.ProcessStatus.Idle) + { + isInterlock = true; + } + } + + if(isInterlock) + { + if (energyMeasurmentStep != EnergyMeasurementSteps.Wait && energyMeasurmentStep < EnergyMeasurementSteps.MeasurementEnd) + { + energyMeasurmentStep = EnergyMeasurementSteps.MeasurementEnd; + isInterlock = false; + } + } + + return isInterlock; + } + + private void EnergyMeasurementSequence() + { + switch (energyMeasurmentStep) + { + case EnergyMeasurementSteps.Wait: + { + lb_EnergyMeasurementPowerMeterInitialize.BackColor = Color.Green; + lb_EnergyMeasurementCenterPositionMove.BackColor = Color.Green; + lb_EnergyMeasurementPowerMeterPositionMove.BackColor = Color.Green; + lb_EnergyMeasurementAttenuatorSet.BackColor = Color.Green; + lb_EnergyMeasurementLaserOn.BackColor = Color.Green; + lb_EnergyMeasurementPowerMeasure.BackColor = Color.Green; + lb_EnergyMeasurementLaserOff.BackColor = Color.Green; + lb_EnergyMeasurementComplete.BackColor = Color.Green; + break; + } + case EnergyMeasurementSteps.PowerMeterInitialize: + { + lb_EnergyMeasurementPowerMeterInitialize.BackColor = Color.Lime; + lb_EnergyMeasurementCenterPositionMove.BackColor = Color.Green; + lb_EnergyMeasurementPowerMeterPositionMove.BackColor = Color.Green; + lb_EnergyMeasurementAttenuatorSet.BackColor = Color.Green; + lb_EnergyMeasurementLaserOn.BackColor = Color.Green; + lb_EnergyMeasurementPowerMeasure.BackColor = Color.Green; + lb_EnergyMeasurementLaserOff.BackColor = Color.Green; + lb_EnergyMeasurementComplete.BackColor = Color.Green; + + _measurementTimer.ReStart(); + _mainFrame.equipment.powerMeter.ResetEnergyMeter(); + energyMeasurmentStep = EnergyMeasurementSteps.InitializeWait; + break; + } + case EnergyMeasurementSteps.InitializeWait: + { + if(_mainFrame.equipment.powerMeter.Enable && _mainFrame.equipment.powerMeter.CurrentMeasurementMode == PowerMeter.MeasurementMode.Energy) + { + if (_mainFrame.equipment.chamber.IsInposition) + { + if (_mainFrame.equipment.chamber.IsPowerMeterPosition) + { + lb_EnergyMeasurementPowerMeterPositionMove.BackColor = Color.Lime; + energyMeasurmentStep = EnergyMeasurementSteps.AttenuatorSet; + } + else + { + energyMeasurmentStep = EnergyMeasurementSteps.MoveCenterPosition; + } + } + } + else + { + if (_measurementTimer.Seconds > 20) + { + MessageBox.Show("Measurement 珥덇린�솕媛� �릺吏� �븡�븯�뒿�땲�떎. energy meter瑜� �솗�씤 �썑 �떎�떆 �떆�옉�빐 二쇱꽭�슂."); + energyMeasurmentStep = EnergyMeasurementSteps.MeasurementEnd; + } + } + break; + } + case EnergyMeasurementSteps.MoveCenterPosition: + { + if (_mainFrame.equipment.chamber.MoveCenterPosition()) + { + energyMeasurmentStep = EnergyMeasurementSteps.CheckCenterPosition; + } + break; + } + case EnergyMeasurementSteps.CheckCenterPosition: + { + if (_mainFrame.equipment.chamber.IsInposition) + { + if (_mainFrame.equipment.chamber.IsCenterPosition) + { + lb_EnergyMeasurementCenterPositionMove.BackColor = Color.Lime; + energyMeasurmentStep = EnergyMeasurementSteps.MovePowerMeterPosition; + } + else + { + energyMeasurmentStep = EnergyMeasurementSteps.MoveCenterPosition; + } + } + break; + } + case EnergyMeasurementSteps.MovePowerMeterPosition: + { + if (_mainFrame.equipment.chamber.MovePowerMeterPosition()) + { + energyMeasurmentStep = EnergyMeasurementSteps.CheckPowerMeterPosition; + } + break; + } + case EnergyMeasurementSteps.CheckPowerMeterPosition: + { + if (_mainFrame.equipment.chamber.IsInposition) + { + if (_mainFrame.equipment.chamber.IsPowerMeterPosition) + { + lb_EnergyMeasurementPowerMeterPositionMove.BackColor = Color.Lime; + energyMeasurmentStep = EnergyMeasurementSteps.AttenuatorSet; + } + else + { + energyMeasurmentStep = EnergyMeasurementSteps.MovePowerMeterPosition; + } + } + break; + } + case EnergyMeasurementSteps.AttenuatorSet: + { + _mainFrame.equipment.attenuator.MoveAbsolute(_energyMeasurementAngle); + energyMeasurmentStep = EnergyMeasurementSteps.CheckAttenuator; + + break; + } + case EnergyMeasurementSteps.CheckAttenuator: + { + if (_mainFrame.equipment.attenuator.MotorState == Attenuator.MotorRunState.Stopped) + { + if (_mainFrame.equipment.attenuator.IsAttenuatorAngleCorrect(_energyMeasurementAngle)) + { + lb_EnergyMeasurementAttenuatorSet.BackColor = Color.Lime; + energyMeasurmentStep = EnergyMeasurementSteps.LaserOn; + } + else + { + energyMeasurmentStep = EnergyMeasurementSteps.AttenuatorSet; + } + } + break; + } + case EnergyMeasurementSteps.LaserOn: + { + if(_mainFrame.equipment.chamber.IsPowerMeterPosition) + { + _mainFrame.equipment.scanner.LaserOn(); + + _measurementTimer.ReStart(); + lb_EnergyMeasurementLaserOn.BackColor = Color.Lime; + energyMeasurmentStep = EnergyMeasurementSteps.MeasurementStart; + } + break; + } + case EnergyMeasurementSteps.MeasurementStart: + { + if(_mainFrame.equipment.scanner.IsLaserOn) + { + if (_measurementTimer.Seconds > _mainFrame.equipment.settingParameterManager.SettingParameter.EnergyMeterHeatingTime) + { + _mainFrame.equipment.powerMeter.ResetMeasurementsEnergy(); + _measurementTimer.ReStart(); + lb_EnergyMeasurementPowerMeasure.BackColor = Color.Lime; + energyMeasurmentStep = EnergyMeasurementSteps.Measurement; + } + } + else + { + energyMeasurmentStep = EnergyMeasurementSteps.LaserOn; + } + break; + } + case EnergyMeasurementSteps.Measurement: + { + lb_EnergyMeasurementPowerMeasure.BackColor = lb_EnergyMeasurementPowerMeasure.BackColor == Color.Lime ? Color.Green : Color.Lime; + + if (_measurementTimer.Seconds > _energyMeasurementTime || _mainFrame.equipment.chamber.IsPowerMeterPosition == false) + { + lb_EnergyMeasurementPowerMeasure.BackColor = Color.Lime; + energyMeasurmentStep = EnergyMeasurementSteps.MeasurementEnd; + } + + break; + } + case EnergyMeasurementSteps.MeasurementEnd: + { + _mainFrame.equipment.scanner.LaserOff(); + lb_EnergyMeasurementLaserOff.BackColor = Color.Lime; + energyMeasurmentStep = EnergyMeasurementSteps.End; + break; + } + case EnergyMeasurementSteps.End: + { + lb_EnergyMeasurementComplete.BackColor = Color.Lime; + energyMeasurmentStep = EnergyMeasurementSteps.Wait; + break; + } + } + } + + private void PowerMeter_EnergyMeasured(double energy) + { + if (energyMeasurmentStep <= EnergyMeasurementSteps.MeasurementStart) return; + + if (InvokeRequired) + { + BeginInvoke(new EnergyMeasuredEvent(PowerMeter_EnergyMeasured), energy); + } + else + { + Series Se_MeasurementPower = chart_EnergyMeasure.Series.FindByName("MeasurementPower"); + + int i = Se_MeasurementPower.Points.Count; + double[] points = _mainFrame.equipment.powerMeter.MeasurementsEnergyPerUnitArea.ToArray(); + + for (; i < points.Length; i++) + { + double point = points[i]; + + if (point > chart_EnergyMeasure.ChartAreas[0].AxisY.Maximum) + chart_EnergyMeasure.ChartAreas[0].AxisY.Maximum = point + (point * 0.1); + + if (point < chart_EnergyMeasure.ChartAreas[0].AxisY.Minimum) + chart_EnergyMeasure.ChartAreas[0].AxisY.Minimum = point - (point * 0.1); + + Se_MeasurementPower.Points.AddXY(i, point); + } + + tb_Count.Text = $"{Se_MeasurementPower.Points.Count}"; + tb_Power.Text = $"{energy:F4}"; + tb_Average.Text = $"{_mainFrame.equipment.powerMeter.MeasurementAverageEnergyPerUnitArea:F4}"; + tb_Max.Text = $"{_mainFrame.equipment.powerMeter.MeasurementMaxEnergyPerUnitArea:F4}"; + tb_Min.Text = $"{_mainFrame.equipment.powerMeter.MeasurementMinEnergyPerUnitArea:F4}"; + } + } + + private void InitializeChart() + { + chart_EnergyMeasure.Series.Clear(); + + chart_EnergyMeasure.ChartAreas[0].AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount; + chart_EnergyMeasure.ChartAreas[0].AxisY.MajorGrid.Enabled = false; + + chart_EnergyMeasure.ChartAreas[0].AxisY.Maximum = -1; + chart_EnergyMeasure.ChartAreas[0].AxisY.Minimum = 99; + + Series Se_LeakBeamPower = chart_EnergyMeasure.Series.Add("MeasurementPower"); + Se_LeakBeamPower.ChartType = SeriesChartType.Line; + Se_LeakBeamPower.Color = Color.LightGreen; + Se_LeakBeamPower.MarkerSize = 1; + } + + private void btn_AttenuatorCalSave_Click(object sender, EventArgs e) + { + + } + + private void btn_AttenuatorCalReset_Click(object sender, EventArgs e) + { + + } + + private void btn_EnergyMeasurementStart_Click(object sender, EventArgs e) + { + if (CheckEnergyMeasurementInterlock() == false && energyMeasurmentStep == EnergyMeasurementSteps.Wait) + { + + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd == false || _mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter == false || _mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent != _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent) + { + string message = string.Empty; + + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd == false) + { + message += "LDD媛� �떕���엳�뒿�땲�떎. \r\n"; + } + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter == false) + { + message += "Shutter媛� �떕���엳�뒿�땲�떎. \r\n"; + } + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent != _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent) + { + message += $"Set current媛� {_mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent}�씠 �븘�떃�땲�떎. \r\n \r\n"; + } + + if (MessageBox.Show(message + "吏꾪뻾 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + } + + tb_Count.Text = "0"; + tb_Power.Text = "0"; + tb_Average.Text = "0"; + tb_Max.Text = "0"; + tb_Min.Text = "0"; + + InitializeChart(); + + energyMeasurmentStep = EnergyMeasurementSteps.PowerMeterInitialize; + } + else + { + Viewer.MessageBoxPad mbp = new Viewer.MessageBoxPad("Process status 媛� Idle �씪 �븣 吏꾪뻾�븷 �닔 �엳�뒿�땲�떎."); + mbp.Show(); + } + } + + private void btn_EnergyMeasurementStop_Click(object sender, EventArgs e) + { + if (CheckEnergyMeasurementInterlock() == false) + { + energyMeasurmentStep = EnergyMeasurementSteps.MeasurementEnd; + } + else + { + Viewer.MessageBoxPad mbp = new Viewer.MessageBoxPad("Process status 媛� Idle �씪 �븣 吏꾪뻾�븷 �닔 �엳�뒿�땲�떎."); + mbp.Show(); + } + } + + private void btn_SetEnergyMeasurementAttenuatorAngle_Click(object sender, EventArgs e) + { + float angle; + float.TryParse(tb_SetEnergyMeasurementAttenuatorAngle.Text, out angle); + + tb_EnergyMeasurementAttenuatorAngle.Text = angle.ToString("F2"); + _energyMeasurementAngle = angle; + } + + private void btn_SetEnergyMeasurementMeasurementTime_Click(object sender, EventArgs e) + { + double time; + double.TryParse(tb_SetEnergyMeasurementTime.Text, out time); + + tb_EnergyMeasurementTime.Text = time.ToString("F2"); + + _energyMeasurementTime = time; + } + + private void btn_EnergyMeasurementSave_Click(object sender, EventArgs e) + { + SaveFileDialog dialog = new SaveFileDialog(); + dialog.Title = "�뙆�씪 ���옣�븯湲�"; + dialog.Filter = "CSV �뙆�씪|*.csv|Text �뙆�씪|*.txt"; + dialog.InitialDirectory = "D:\\"; + dialog.FileName = $"EnergyMeasurementResult"; + if (dialog.ShowDialog() != DialogResult.OK) + return; + + string selectPath = dialog.FileName; + + try + { + using (StreamWriter outPutFile = new StreamWriter(selectPath, false, Encoding.Default)) + { + int i = 1; + foreach (double energy in _mainFrame.equipment.powerMeter.MeasurementsEnergyPerUnitArea) + { + outPutFile.WriteLine($"{i},{energy}", Encoding.Default); + i++; + } + } + } + catch(Exception ex) + { + + } + + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.resx b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.resx new file mode 100644 index 0000000..0a3de8d --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.resx @@ -0,0 +1,129 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="tt_Description.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> + <metadata name="tt_Description.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> + <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>82</value> + </metadata> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.Designer.cs new file mode 100644 index 0000000..16620fb --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.Designer.cs @@ -0,0 +1,197 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class ScreenLog + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.dtp_StartDateTime = new System.Windows.Forms.DateTimePicker(); + this.mc_DateTime = new System.Windows.Forms.MonthCalendar(); + this.btn_AlarmOccurredLog = new System.Windows.Forms.Button(); + this.dtp_EndDateTime = new System.Windows.Forms.DateTimePicker(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.btn_AlarmChangedLog = new System.Windows.Forms.Button(); + this.lv_Log = new System.Windows.Forms.ListView(); + this.btn_EnergyDropCheckLog = new System.Windows.Forms.Button(); + this.btn_AttenuatorCalLog = new System.Windows.Forms.Button(); + this.btn_ProcessLog = new System.Windows.Forms.Button(); + this.btn_ButtonLog = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // dtp_StartDateTime + // + this.dtp_StartDateTime.Location = new System.Drawing.Point(57, 180); + this.dtp_StartDateTime.Name = "dtp_StartDateTime"; + this.dtp_StartDateTime.Size = new System.Drawing.Size(172, 21); + this.dtp_StartDateTime.TabIndex = 1; + this.dtp_StartDateTime.ValueChanged += new System.EventHandler(this.dtp_StartDateTime_ValueChanged); + // + // mc_DateTime + // + this.mc_DateTime.Location = new System.Drawing.Point(9, 9); + this.mc_DateTime.Name = "mc_DateTime"; + this.mc_DateTime.TabIndex = 2; + this.mc_DateTime.DateChanged += new System.Windows.Forms.DateRangeEventHandler(this.mc_DateTime_DateChanged); + // + // btn_AlarmOccurredLog + // + this.btn_AlarmOccurredLog.Location = new System.Drawing.Point(9, 234); + this.btn_AlarmOccurredLog.Name = "btn_AlarmOccurredLog"; + this.btn_AlarmOccurredLog.Size = new System.Drawing.Size(220, 38); + this.btn_AlarmOccurredLog.TabIndex = 3; + this.btn_AlarmOccurredLog.Text = "Alarm Occurred Log"; + this.btn_AlarmOccurredLog.UseVisualStyleBackColor = true; + this.btn_AlarmOccurredLog.Click += new System.EventHandler(this.btn_AlarmOccurredLog_Click); + // + // dtp_EndDateTime + // + this.dtp_EndDateTime.Location = new System.Drawing.Point(57, 207); + this.dtp_EndDateTime.Name = "dtp_EndDateTime"; + this.dtp_EndDateTime.Size = new System.Drawing.Size(172, 21); + this.dtp_EndDateTime.TabIndex = 1; + this.dtp_EndDateTime.ValueChanged += new System.EventHandler(this.dtp_EndDateTime_ValueChanged); + // + // label1 + // + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Location = new System.Drawing.Point(9, 180); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(42, 21); + this.label1.TabIndex = 4; + this.label1.Text = "Start"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Location = new System.Drawing.Point(9, 207); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(42, 21); + this.label2.TabIndex = 4; + this.label2.Text = "End"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_AlarmChangedLog + // + this.btn_AlarmChangedLog.Location = new System.Drawing.Point(9, 278); + this.btn_AlarmChangedLog.Name = "btn_AlarmChangedLog"; + this.btn_AlarmChangedLog.Size = new System.Drawing.Size(220, 38); + this.btn_AlarmChangedLog.TabIndex = 3; + this.btn_AlarmChangedLog.Text = "Alarm Changed Log"; + this.btn_AlarmChangedLog.UseVisualStyleBackColor = true; + this.btn_AlarmChangedLog.Click += new System.EventHandler(this.btn_AlarmChangedLog_Click); + // + // lv_Log + // + this.lv_Log.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lv_Log.FullRowSelect = true; + this.lv_Log.GridLines = true; + this.lv_Log.Location = new System.Drawing.Point(235, 0); + this.lv_Log.MultiSelect = false; + this.lv_Log.Name = "lv_Log"; + this.lv_Log.Size = new System.Drawing.Size(1678, 809); + this.lv_Log.TabIndex = 480; + this.lv_Log.UseCompatibleStateImageBehavior = false; + this.lv_Log.View = System.Windows.Forms.View.Details; + // + // btn_EnergyDropCheckLog + // + this.btn_EnergyDropCheckLog.Location = new System.Drawing.Point(9, 366); + this.btn_EnergyDropCheckLog.Name = "btn_EnergyDropCheckLog"; + this.btn_EnergyDropCheckLog.Size = new System.Drawing.Size(220, 38); + this.btn_EnergyDropCheckLog.TabIndex = 3; + this.btn_EnergyDropCheckLog.Text = "Energy drop check Log"; + this.btn_EnergyDropCheckLog.UseVisualStyleBackColor = true; + this.btn_EnergyDropCheckLog.Click += new System.EventHandler(this.btn_EnergyDropCheckLog_Click); + // + // btn_AttenuatorCalLog + // + this.btn_AttenuatorCalLog.Location = new System.Drawing.Point(9, 410); + this.btn_AttenuatorCalLog.Name = "btn_AttenuatorCalLog"; + this.btn_AttenuatorCalLog.Size = new System.Drawing.Size(220, 38); + this.btn_AttenuatorCalLog.TabIndex = 3; + this.btn_AttenuatorCalLog.Text = "Attenuator cal Log"; + this.btn_AttenuatorCalLog.UseVisualStyleBackColor = true; + this.btn_AttenuatorCalLog.Click += new System.EventHandler(this.btn_AttenuatorCalLog_Click); + // + // btn_ProcessLog + // + this.btn_ProcessLog.Location = new System.Drawing.Point(9, 454); + this.btn_ProcessLog.Name = "btn_ProcessLog"; + this.btn_ProcessLog.Size = new System.Drawing.Size(220, 38); + this.btn_ProcessLog.TabIndex = 3; + this.btn_ProcessLog.Text = "Process Log"; + this.btn_ProcessLog.UseVisualStyleBackColor = true; + this.btn_ProcessLog.Click += new System.EventHandler(this.btn_ProcessLog_Click); + // + // btn_ButtonLog + // + this.btn_ButtonLog.Location = new System.Drawing.Point(9, 322); + this.btn_ButtonLog.Name = "btn_ButtonLog"; + this.btn_ButtonLog.Size = new System.Drawing.Size(220, 38); + this.btn_ButtonLog.TabIndex = 3; + this.btn_ButtonLog.Text = "Button Log"; + this.btn_ButtonLog.UseVisualStyleBackColor = true; + this.btn_ButtonLog.Click += new System.EventHandler(this.btn_ButtonLog_Click); + // + // ScreenLog + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.lv_Log); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.btn_ProcessLog); + this.Controls.Add(this.btn_AttenuatorCalLog); + this.Controls.Add(this.btn_ButtonLog); + this.Controls.Add(this.btn_EnergyDropCheckLog); + this.Controls.Add(this.btn_AlarmChangedLog); + this.Controls.Add(this.btn_AlarmOccurredLog); + this.Controls.Add(this.mc_DateTime); + this.Controls.Add(this.dtp_EndDateTime); + this.Controls.Add(this.dtp_StartDateTime); + this.Name = "ScreenLog"; + this.Size = new System.Drawing.Size(1916, 809); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.DateTimePicker dtp_StartDateTime; + private System.Windows.Forms.MonthCalendar mc_DateTime; + private System.Windows.Forms.Button btn_AlarmOccurredLog; + private System.Windows.Forms.DateTimePicker dtp_EndDateTime; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button btn_AlarmChangedLog; + private System.Windows.Forms.ListView lv_Log; + private System.Windows.Forms.Button btn_EnergyDropCheckLog; + private System.Windows.Forms.Button btn_AttenuatorCalLog; + private System.Windows.Forms.Button btn_ProcessLog; + private System.Windows.Forms.Button btn_ButtonLog; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.cs new file mode 100644 index 0000000..960f78b --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.cs @@ -0,0 +1,297 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using SA_LTT; +using System.IO; + +namespace SA_LTT_UI.Screen +{ + public partial class ScreenLog : UserControl + { + private MainFrame _mainFrame; + + public ScreenLog(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + lv_Log.MultiSelect = true; + } + + private void mc_DateTime_DateChanged(object sender, DateRangeEventArgs e) + { + dtp_StartDateTime.Value = mc_DateTime.SelectionStart; + dtp_EndDateTime.Value = mc_DateTime.SelectionEnd; + } + + private void dtp_StartDateTime_ValueChanged(object sender, EventArgs e) + { + mc_DateTime.SelectionStart = dtp_StartDateTime.Value; + } + + private void dtp_EndDateTime_ValueChanged(object sender, EventArgs e) + { + mc_DateTime.SelectionEnd = dtp_EndDateTime.Value; + } + + private void btn_AlarmOccurredLog_Click(object sender, EventArgs e) + { + lv_Log.Columns.Clear(); + lv_Log.Items.Clear(); + + lv_Log.Columns.Add("Date", 200); + lv_Log.Columns.Add("Alarm Code", 400); + lv_Log.Columns.Add("Description", 200); + lv_Log.Columns.Add("Level", 200); + + List<DateTime> selectedDates = new List<DateTime>(); + + DateTime devDateTime = mc_DateTime.SelectionStart; + + while(true) + { + selectedDates.Add(devDateTime); + + devDateTime = devDateTime.AddDays(1); + + if (devDateTime > mc_DateTime.SelectionEnd) + { + break; + } + } + + string[] logs = GetLogsInFile(EquipmentLogManager.s_alarmOccurredLogPath, "AlarmOccurred_", selectedDates); + + foreach (string log in logs) + { + ListViewItem logDatas = new ListViewItem(log.Split(',')); + lv_Log.Items.Add(logDatas); + } + } + + private void btn_AlarmChangedLog_Click(object sender, EventArgs e) + { + lv_Log.Columns.Clear(); + lv_Log.Items.Clear(); + + lv_Log.Columns.Add("Date", 200); + lv_Log.Columns.Add("Alarm Code", 400); + lv_Log.Columns.Add("Description", 200); + lv_Log.Columns.Add("Level", 200); + lv_Log.Columns.Add("Use", 200); + + List<DateTime> selectedDates = new List<DateTime>(); + + DateTime devDateTime = mc_DateTime.SelectionStart; + + while (true) + { + selectedDates.Add(devDateTime); + + devDateTime = devDateTime.AddDays(1); + + if (devDateTime > mc_DateTime.SelectionEnd) + { + break; + } + } + + string[] logs = GetLogsInFile(EquipmentLogManager.s_alarmChangedLogPath, "AlarmChanged_", selectedDates); + + foreach (string log in logs) + { + ListViewItem logDatas = new ListViewItem(log.Split(',')); + lv_Log.Items.Add(logDatas); + } + } + + /// <summary> + /// 濡쒓렇 媛��졇�삤湲�. + /// ex) D:\\Log\\AlarmOccurred\\2022\\07\\AlarmOccurred_28.log + /// rootPath : D:\\Log\\AlarmOccurred\\ + /// filePattern : AlarmOccurred_ + /// extension : .log + /// </summary> + /// <param name="rootPath">Root �뙆�씪 寃쎈줈.</param> + /// <param name="filePattern">�뙆�씪 �뙣�꽩.</param> + /// <param name="selectedDateTime">log 媛��졇�삱 �궇吏�</param> + /// <param name="extension">�뙆�씪 �솗�옣�옄 (湲곕낯 .log)</param> + /// <returns></returns> + private string[] GetLogsInFile(string rootPath, string filePattern, List<DateTime> selectedDateTime, string extension = ".log") + { + List<string> logs = new List<string>(); + logs.Clear(); + + foreach (DateTime logDate in selectedDateTime) + { + string path = rootPath + $@"{logDate.Year}\{logDate.Month:00}\{filePattern}{logDate.Day:00}{extension}"; + + if (File.Exists(path) == false) + continue; + + //�뙆�씪 �뿴�젮�엳�뼱�룄 �씫�쓣 �닔 �엳�룄濡� �젣�옉. + using (FileStream fs = File.Open(path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite)) + { + using (StreamReader sr = new StreamReader(fs)) + { + while (true) + { + string logdata = sr.ReadLine(); + + if (logdata == null) + { + break; + } + else + { + logs.Add(logdata); + } + } + sr.Close(); + } + + fs.Close(); + } + } + + return logs.ToArray(); + } + + private void btn_EnergyDropCheckLog_Click(object sender, EventArgs e) + { + lv_Log.Columns.Clear(); + lv_Log.Items.Clear(); + + lv_Log.Columns.Add("Date", 200); + lv_Log.Columns.Add("Description", 800); + + List<DateTime> selectedDates = new List<DateTime>(); + + DateTime devDateTime = mc_DateTime.SelectionStart; + + while (true) + { + selectedDates.Add(devDateTime); + + devDateTime = devDateTime.AddDays(1); + + if (devDateTime > mc_DateTime.SelectionEnd) + { + break; + } + } + + string[] logs = GetLogsInFile(EquipmentLogManager.s_energyDropCheckLogPath, "EnergyDropCheck_", selectedDates); + + foreach (string log in logs) + { + ListViewItem logDatas = new ListViewItem(log.Split(',')); + lv_Log.Items.Add(logDatas); + } + } + + private void btn_AttenuatorCalLog_Click(object sender, EventArgs e) + { + lv_Log.Columns.Clear(); + lv_Log.Items.Clear(); + + lv_Log.Columns.Add("Date", 200); + lv_Log.Columns.Add("Description", 800); + + List<DateTime> selectedDates = new List<DateTime>(); + + DateTime devDateTime = mc_DateTime.SelectionStart; + + while (true) + { + selectedDates.Add(devDateTime); + + devDateTime = devDateTime.AddDays(1); + + if (devDateTime > mc_DateTime.SelectionEnd) + { + break; + } + } + + string[] logs = GetLogsInFile(EquipmentLogManager.s_attenuatorCalLogPath, "AttenuatorCal_", selectedDates); + + foreach (string log in logs) + { + ListViewItem logDatas = new ListViewItem(log.Split(',')); + lv_Log.Items.Add(logDatas); + } + } + + private void btn_ProcessLog_Click(object sender, EventArgs e) + { + lv_Log.Columns.Clear(); + lv_Log.Items.Clear(); + + lv_Log.Columns.Add("Date", 200); + lv_Log.Columns.Add("Description", 800); + + List<DateTime> selectedDates = new List<DateTime>(); + + DateTime devDateTime = mc_DateTime.SelectionStart; + + while (true) + { + selectedDates.Add(devDateTime); + + devDateTime = devDateTime.AddDays(1); + + if (devDateTime > mc_DateTime.SelectionEnd) + { + break; + } + } + + string[] logs = GetLogsInFile(EquipmentLogManager.s_processLogPath, "Process_", selectedDates); + + foreach (string log in logs) + { + ListViewItem logDatas = new ListViewItem(log.Split(',')); + lv_Log.Items.Add(logDatas); + } + } + + private void btn_ButtonLog_Click(object sender, EventArgs e) + { + lv_Log.Columns.Clear(); + lv_Log.Items.Clear(); + + lv_Log.Columns.Add("Date", 200); + lv_Log.Columns.Add("Event", 800); + + List<DateTime> selectedDates = new List<DateTime>(); + + DateTime devDateTime = mc_DateTime.SelectionStart; + + while (true) + { + selectedDates.Add(devDateTime); + + devDateTime = devDateTime.AddDays(1); + + if (devDateTime > mc_DateTime.SelectionEnd) + { + break; + } + } + + string[] logs = GetLogsInFile(EquipmentLogManager.s_buttonLogPath, "Button_", selectedDates); + + foreach (string log in logs) + { + ListViewItem logDatas = new ListViewItem(log.Split(',')); + lv_Log.Items.Add(logDatas); + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.resx b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.Designer.cs new file mode 100644 index 0000000..2ab2414 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.Designer.cs @@ -0,0 +1,1493 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class ScreenMain + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.timer = new System.Windows.Forms.Timer(this.components); + this.label3 = new System.Windows.Forms.Label(); + this.elementHost2 = new System.Windows.Forms.Integration.ElementHost(); + this.tb_PmcSequence = new System.Windows.Forms.TextBox(); + this.panel3 = new System.Windows.Forms.Panel(); + this.label5 = new System.Windows.Forms.Label(); + this.tb_TmcSequence = new System.Windows.Forms.TextBox(); + this.lb_PowerMeter = new System.Windows.Forms.Label(); + this.lb_UvLaser = new System.Windows.Forms.Label(); + this.lb_PowerPmac = new System.Windows.Forms.Label(); + this.lb_FFU = new System.Windows.Forms.Label(); + this.lb_TempControler = new System.Windows.Forms.Label(); + this.lb_Attenuator = new System.Windows.Forms.Label(); + this.lb_Robot = new System.Windows.Forms.Label(); + this.lb_PreAligner = new System.Windows.Forms.Label(); + this.lb_Scanner = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.lb_EquipmentStatus = new System.Windows.Forms.Label(); + this.tb_TactTime = new System.Windows.Forms.TextBox(); + this.btn_Start = new System.Windows.Forms.Button(); + this.btn_Pause = new System.Windows.Forms.Button(); + this.btn_Stop = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.btn_AttenuatorCalView = new System.Windows.Forms.Button(); + this.btn_EnergyDropCheckView = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label6 = new System.Windows.Forms.Label(); + this.lb_AttenuatorAngle = new System.Windows.Forms.Label(); + this.label50 = new System.Windows.Forms.Label(); + this.lb_ActualCurrent = new System.Windows.Forms.Label(); + this.label52 = new System.Windows.Forms.Label(); + this.lb_SetCurrent = new System.Windows.Forms.Label(); + this.label53 = new System.Windows.Forms.Label(); + this.lb_DiodeVoltage = new System.Windows.Forms.Label(); + this.label54 = new System.Windows.Forms.Label(); + this.lb_MaxCurrent = new System.Windows.Forms.Label(); + this.gb_System_status = new System.Windows.Forms.GroupBox(); + this.lb_PowerOn = new System.Windows.Forms.Label(); + this.lb_LDDOn = new System.Windows.Forms.Label(); + this.lb_KeySwitch = new System.Windows.Forms.Label(); + this.lb_LDDInterlock = new System.Windows.Forms.Label(); + this.lb_QSWOn = new System.Windows.Forms.Label(); + this.lb_ShutterInterlock = new System.Windows.Forms.Label(); + this.lb_ShutterEnable = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.label32 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label33 = new System.Windows.Forms.Label(); + this.tb_RecipeEnergy = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.tb_RecipeHeightOverlap = new System.Windows.Forms.TextBox(); + this.tb_RecipeWidthOverlap = new System.Windows.Forms.TextBox(); + this.el_CurrentWaferProcess = new System.Windows.Forms.Integration.ElementHost(); + this.panel8 = new System.Windows.Forms.Panel(); + this.label37 = new System.Windows.Forms.Label(); + this.label23 = new System.Windows.Forms.Label(); + this.label24 = new System.Windows.Forms.Label(); + this.label38 = new System.Windows.Forms.Label(); + this.label36 = new System.Windows.Forms.Label(); + this.tb_RecipeBeamWidth = new System.Windows.Forms.TextBox(); + this.tb_RecipeBeamHeight = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.panel6 = new System.Windows.Forms.Panel(); + this.label34 = new System.Windows.Forms.Label(); + this.label35 = new System.Windows.Forms.Label(); + this.tb_RecipeEdgeRound = new System.Windows.Forms.TextBox(); + this.label21 = new System.Windows.Forms.Label(); + this.tb_RecipeName = new System.Windows.Forms.TextBox(); + this.lb_Hatch = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.tb_RecipeRadius = new System.Windows.Forms.TextBox(); + this.label152 = new System.Windows.Forms.Label(); + this.tb_RecipeDistancePrimaryFlat = new System.Windows.Forms.TextBox(); + this.lb_LaserOn = new System.Windows.Forms.Label(); + this.lb_LaserOff = new System.Windows.Forms.Label(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.panel7 = new System.Windows.Forms.Panel(); + this.tb_Port2Status = new System.Windows.Forms.TextBox(); + this.tb_Port2RecipeName = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.btn_Port2RecipeSet = new System.Windows.Forms.Button(); + this.lv_Port2Recipes = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.panel5 = new System.Windows.Forms.Panel(); + this.tb_Port1Status = new System.Windows.Forms.TextBox(); + this.tb_Port1RecipeName = new System.Windows.Forms.TextBox(); + this.label43 = new System.Windows.Forms.Label(); + this.btn_Port1RecipeSet = new System.Windows.Forms.Button(); + this.lv_Port1Recipes = new System.Windows.Forms.ListView(); + this.columnHeader10 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader11 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.cb_Maint = new System.Windows.Forms.CheckBox(); + this.cb_RunStop = new System.Windows.Forms.CheckBox(); + this.cb_AutoRun = new System.Windows.Forms.CheckBox(); + this.btn_SequenceView = new System.Windows.Forms.Button(); + this.panel3.SuspendLayout(); + this.panel1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.gb_System_status.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel6.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel5.SuspendLayout(); + this.SuspendLayout(); + // + // label3 + // + this.label3.BackColor = System.Drawing.SystemColors.Control; + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Font = new System.Drawing.Font("Gulim", 20F, System.Drawing.FontStyle.Bold); + this.label3.Location = new System.Drawing.Point(300, 3); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(1000, 101); + this.label3.TabIndex = 1; + this.label3.Text = "DIT SIC LASER ANNEAL"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // elementHost2 + // + this.elementHost2.Location = new System.Drawing.Point(300, 107); + this.elementHost2.Name = "elementHost2"; + this.elementHost2.Size = new System.Drawing.Size(1000, 700); + this.elementHost2.TabIndex = 4; + this.elementHost2.Text = "elementHost2"; + this.elementHost2.Child = null; + // + // tb_PmcSequence + // + this.tb_PmcSequence.Location = new System.Drawing.Point(115, 55); + this.tb_PmcSequence.Name = "tb_PmcSequence"; + this.tb_PmcSequence.ReadOnly = true; + this.tb_PmcSequence.Size = new System.Drawing.Size(172, 21); + this.tb_PmcSequence.TabIndex = 5; + // + // panel3 + // + this.panel3.BackColor = System.Drawing.SystemColors.Control; + this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel3.Controls.Add(this.label5); + this.panel3.Controls.Add(this.tb_TmcSequence); + this.panel3.Controls.Add(this.lb_PowerMeter); + this.panel3.Controls.Add(this.lb_UvLaser); + this.panel3.Controls.Add(this.lb_PowerPmac); + this.panel3.Controls.Add(this.lb_FFU); + this.panel3.Controls.Add(this.lb_TempControler); + this.panel3.Controls.Add(this.lb_Attenuator); + this.panel3.Controls.Add(this.lb_Robot); + this.panel3.Controls.Add(this.lb_PreAligner); + this.panel3.Controls.Add(this.lb_Scanner); + this.panel3.Controls.Add(this.label4); + this.panel3.Controls.Add(this.label2); + this.panel3.Controls.Add(this.lb_EquipmentStatus); + this.panel3.Controls.Add(this.tb_TactTime); + this.panel3.Controls.Add(this.tb_PmcSequence); + this.panel3.Location = new System.Drawing.Point(3, 163); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(292, 644); + this.panel3.TabIndex = 463; + // + // label5 + // + this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label5.Location = new System.Drawing.Point(3, 28); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(106, 21); + this.label5.TabIndex = 113; + this.label5.Text = "TMC Sequence"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_TmcSequence + // + this.tb_TmcSequence.Location = new System.Drawing.Point(115, 29); + this.tb_TmcSequence.Name = "tb_TmcSequence"; + this.tb_TmcSequence.ReadOnly = true; + this.tb_TmcSequence.Size = new System.Drawing.Size(172, 21); + this.tb_TmcSequence.TabIndex = 112; + // + // lb_PowerMeter + // + this.lb_PowerMeter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerMeter.Location = new System.Drawing.Point(3, 618); + this.lb_PowerMeter.Name = "lb_PowerMeter"; + this.lb_PowerMeter.Size = new System.Drawing.Size(284, 21); + this.lb_PowerMeter.TabIndex = 111; + this.lb_PowerMeter.Text = "PowerMeter"; + this.lb_PowerMeter.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_UvLaser + // + this.lb_UvLaser.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_UvLaser.Location = new System.Drawing.Point(3, 594); + this.lb_UvLaser.Name = "lb_UvLaser"; + this.lb_UvLaser.Size = new System.Drawing.Size(284, 21); + this.lb_UvLaser.TabIndex = 111; + this.lb_UvLaser.Text = "UV Laser"; + this.lb_UvLaser.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PowerPmac + // + this.lb_PowerPmac.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerPmac.Location = new System.Drawing.Point(3, 570); + this.lb_PowerPmac.Name = "lb_PowerPmac"; + this.lb_PowerPmac.Size = new System.Drawing.Size(284, 21); + this.lb_PowerPmac.TabIndex = 111; + this.lb_PowerPmac.Text = "Power Pmac"; + this.lb_PowerPmac.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_FFU + // + this.lb_FFU.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_FFU.Location = new System.Drawing.Point(3, 546); + this.lb_FFU.Name = "lb_FFU"; + this.lb_FFU.Size = new System.Drawing.Size(284, 21); + this.lb_FFU.TabIndex = 111; + this.lb_FFU.Text = "FFU"; + this.lb_FFU.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TempControler + // + this.lb_TempControler.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TempControler.Location = new System.Drawing.Point(3, 522); + this.lb_TempControler.Name = "lb_TempControler"; + this.lb_TempControler.Size = new System.Drawing.Size(284, 21); + this.lb_TempControler.TabIndex = 111; + this.lb_TempControler.Text = "TempControler"; + this.lb_TempControler.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Attenuator + // + this.lb_Attenuator.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Attenuator.Location = new System.Drawing.Point(3, 498); + this.lb_Attenuator.Name = "lb_Attenuator"; + this.lb_Attenuator.Size = new System.Drawing.Size(284, 21); + this.lb_Attenuator.TabIndex = 111; + this.lb_Attenuator.Text = "Attenuator"; + this.lb_Attenuator.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Robot + // + this.lb_Robot.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Robot.Location = new System.Drawing.Point(3, 474); + this.lb_Robot.Name = "lb_Robot"; + this.lb_Robot.Size = new System.Drawing.Size(284, 21); + this.lb_Robot.TabIndex = 111; + this.lb_Robot.Text = "Robot"; + this.lb_Robot.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PreAligner + // + this.lb_PreAligner.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PreAligner.Location = new System.Drawing.Point(3, 450); + this.lb_PreAligner.Name = "lb_PreAligner"; + this.lb_PreAligner.Size = new System.Drawing.Size(284, 21); + this.lb_PreAligner.TabIndex = 111; + this.lb_PreAligner.Text = "PreAligner"; + this.lb_PreAligner.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Scanner + // + this.lb_Scanner.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Scanner.Location = new System.Drawing.Point(3, 426); + this.lb_Scanner.Name = "lb_Scanner"; + this.lb_Scanner.Size = new System.Drawing.Size(284, 21); + this.lb_Scanner.TabIndex = 111; + this.lb_Scanner.Text = "Scanner"; + this.lb_Scanner.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label4.Location = new System.Drawing.Point(3, 82); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(106, 21); + this.label4.TabIndex = 111; + this.label4.Text = "Process Time(s)"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Location = new System.Drawing.Point(3, 54); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(106, 21); + this.label2.TabIndex = 111; + this.label2.Text = "PMC Sequence"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_EquipmentStatus + // + this.lb_EquipmentStatus.AutoEllipsis = true; + this.lb_EquipmentStatus.BackColor = System.Drawing.SystemColors.Control; + this.lb_EquipmentStatus.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EquipmentStatus.Font = new System.Drawing.Font("Malgun Gothic", 12F); + this.lb_EquipmentStatus.ForeColor = System.Drawing.Color.Black; + this.lb_EquipmentStatus.Location = new System.Drawing.Point(-1, -1); + this.lb_EquipmentStatus.Name = "lb_EquipmentStatus"; + this.lb_EquipmentStatus.Size = new System.Drawing.Size(292, 27); + this.lb_EquipmentStatus.TabIndex = 10; + this.lb_EquipmentStatus.Text = "�뼚 Equipment Status"; + this.lb_EquipmentStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_TactTime + // + this.tb_TactTime.Location = new System.Drawing.Point(115, 82); + this.tb_TactTime.Name = "tb_TactTime"; + this.tb_TactTime.ReadOnly = true; + this.tb_TactTime.Size = new System.Drawing.Size(172, 21); + this.tb_TactTime.TabIndex = 5; + // + // btn_Start + // + this.btn_Start.Font = new System.Drawing.Font("Gulim", 15F, System.Drawing.FontStyle.Bold); + this.btn_Start.Location = new System.Drawing.Point(3, 3); + this.btn_Start.Name = "btn_Start"; + this.btn_Start.Size = new System.Drawing.Size(137, 73); + this.btn_Start.TabIndex = 464; + this.btn_Start.Text = "RUN"; + this.btn_Start.UseVisualStyleBackColor = true; + this.btn_Start.Click += new System.EventHandler(this.btn_Start_Click); + // + // btn_Pause + // + this.btn_Pause.Font = new System.Drawing.Font("Gulim", 15F, System.Drawing.FontStyle.Bold); + this.btn_Pause.Location = new System.Drawing.Point(157, 3); + this.btn_Pause.Name = "btn_Pause"; + this.btn_Pause.Size = new System.Drawing.Size(137, 73); + this.btn_Pause.TabIndex = 464; + this.btn_Pause.Text = "PAUSE"; + this.btn_Pause.UseVisualStyleBackColor = true; + this.btn_Pause.Click += new System.EventHandler(this.btn_Pause_Click); + // + // btn_Stop + // + this.btn_Stop.Font = new System.Drawing.Font("Gulim", 15F, System.Drawing.FontStyle.Bold); + this.btn_Stop.Location = new System.Drawing.Point(157, 83); + this.btn_Stop.Name = "btn_Stop"; + this.btn_Stop.Size = new System.Drawing.Size(137, 73); + this.btn_Stop.TabIndex = 464; + this.btn_Stop.Text = "STOP"; + this.btn_Stop.UseVisualStyleBackColor = true; + this.btn_Stop.Click += new System.EventHandler(this.btn_Stop_Click); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.SystemColors.Control; + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Controls.Add(this.btn_SequenceView); + this.panel1.Controls.Add(this.btn_AttenuatorCalView); + this.panel1.Controls.Add(this.btn_EnergyDropCheckView); + this.panel1.Controls.Add(this.groupBox1); + this.panel1.Controls.Add(this.gb_System_status); + this.panel1.Controls.Add(this.label16); + this.panel1.Location = new System.Drawing.Point(1303, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(610, 236); + this.panel1.TabIndex = 465; + // + // btn_AttenuatorCalView + // + this.btn_AttenuatorCalView.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_AttenuatorCalView.Location = new System.Drawing.Point(476, 104); + this.btn_AttenuatorCalView.Name = "btn_AttenuatorCalView"; + this.btn_AttenuatorCalView.Size = new System.Drawing.Size(122, 60); + this.btn_AttenuatorCalView.TabIndex = 25; + this.btn_AttenuatorCalView.Text = "Attenuator cal view"; + this.btn_AttenuatorCalView.UseVisualStyleBackColor = true; + this.btn_AttenuatorCalView.Click += new System.EventHandler(this.btn_AttenuatorCalView_Click); + // + // btn_EnergyDropCheckView + // + this.btn_EnergyDropCheckView.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_EnergyDropCheckView.Location = new System.Drawing.Point(476, 34); + this.btn_EnergyDropCheckView.Name = "btn_EnergyDropCheckView"; + this.btn_EnergyDropCheckView.Size = new System.Drawing.Size(122, 60); + this.btn_EnergyDropCheckView.TabIndex = 25; + this.btn_EnergyDropCheckView.Text = "Energy drop check view"; + this.btn_EnergyDropCheckView.UseVisualStyleBackColor = true; + this.btn_EnergyDropCheckView.Click += new System.EventHandler(this.btn_EnergyDropCheckView_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.lb_AttenuatorAngle); + this.groupBox1.Controls.Add(this.label50); + this.groupBox1.Controls.Add(this.lb_ActualCurrent); + this.groupBox1.Controls.Add(this.label52); + this.groupBox1.Controls.Add(this.lb_SetCurrent); + this.groupBox1.Controls.Add(this.label53); + this.groupBox1.Controls.Add(this.lb_DiodeVoltage); + this.groupBox1.Controls.Add(this.label54); + this.groupBox1.Controls.Add(this.lb_MaxCurrent); + this.groupBox1.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.groupBox1.Location = new System.Drawing.Point(209, 30); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(257, 197); + this.groupBox1.TabIndex = 24; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Power Control"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label6.Location = new System.Drawing.Point(6, 171); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(110, 14); + this.label6.TabIndex = 24; + this.label6.Text = "Attenuator (쨘)"; + // + // lb_AttenuatorAngle + // + this.lb_AttenuatorAngle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_AttenuatorAngle.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_AttenuatorAngle.Location = new System.Drawing.Point(174, 166); + this.lb_AttenuatorAngle.Name = "lb_AttenuatorAngle"; + this.lb_AttenuatorAngle.Size = new System.Drawing.Size(77, 23); + this.lb_AttenuatorAngle.TabIndex = 25; + this.lb_AttenuatorAngle.Text = "0.04"; + this.lb_AttenuatorAngle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label50 + // + this.label50.AutoSize = true; + this.label50.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label50.Location = new System.Drawing.Point(6, 25); + this.label50.Name = "label50"; + this.label50.Size = new System.Drawing.Size(121, 14); + this.label50.TabIndex = 17; + this.label50.Text = "Set Current (A)"; + // + // lb_ActualCurrent + // + this.lb_ActualCurrent.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ActualCurrent.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ActualCurrent.Location = new System.Drawing.Point(174, 49); + this.lb_ActualCurrent.Name = "lb_ActualCurrent"; + this.lb_ActualCurrent.Size = new System.Drawing.Size(77, 23); + this.lb_ActualCurrent.TabIndex = 23; + this.lb_ActualCurrent.Text = "0.04"; + this.lb_ActualCurrent.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label52 + // + this.label52.AutoSize = true; + this.label52.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label52.Location = new System.Drawing.Point(7, 54); + this.label52.Name = "label52"; + this.label52.Size = new System.Drawing.Size(142, 14); + this.label52.TabIndex = 18; + this.label52.Text = "Actual Current (A)"; + // + // lb_SetCurrent + // + this.lb_SetCurrent.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_SetCurrent.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_SetCurrent.Location = new System.Drawing.Point(174, 20); + this.lb_SetCurrent.Name = "lb_SetCurrent"; + this.lb_SetCurrent.Size = new System.Drawing.Size(77, 23); + this.lb_SetCurrent.TabIndex = 23; + this.lb_SetCurrent.Text = "0.04"; + this.lb_SetCurrent.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label53 + // + this.label53.AutoSize = true; + this.label53.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label53.Location = new System.Drawing.Point(6, 83); + this.label53.Name = "label53"; + this.label53.Size = new System.Drawing.Size(140, 14); + this.label53.TabIndex = 19; + this.label53.Text = "Diode Voltage (V)"; + // + // lb_DiodeVoltage + // + this.lb_DiodeVoltage.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_DiodeVoltage.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_DiodeVoltage.Location = new System.Drawing.Point(174, 78); + this.lb_DiodeVoltage.Name = "lb_DiodeVoltage"; + this.lb_DiodeVoltage.Size = new System.Drawing.Size(77, 23); + this.lb_DiodeVoltage.TabIndex = 22; + this.lb_DiodeVoltage.Text = "0.04"; + this.lb_DiodeVoltage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label54 + // + this.label54.AutoSize = true; + this.label54.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label54.Location = new System.Drawing.Point(7, 112); + this.label54.Name = "label54"; + this.label54.Size = new System.Drawing.Size(134, 14); + this.label54.TabIndex = 20; + this.label54.Text = "Max. Current (A)"; + // + // lb_MaxCurrent + // + this.lb_MaxCurrent.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MaxCurrent.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_MaxCurrent.Location = new System.Drawing.Point(174, 107); + this.lb_MaxCurrent.Name = "lb_MaxCurrent"; + this.lb_MaxCurrent.Size = new System.Drawing.Size(77, 23); + this.lb_MaxCurrent.TabIndex = 21; + this.lb_MaxCurrent.Text = "0.04"; + this.lb_MaxCurrent.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // gb_System_status + // + this.gb_System_status.Controls.Add(this.lb_PowerOn); + this.gb_System_status.Controls.Add(this.lb_LDDOn); + this.gb_System_status.Controls.Add(this.lb_KeySwitch); + this.gb_System_status.Controls.Add(this.lb_LDDInterlock); + this.gb_System_status.Controls.Add(this.lb_QSWOn); + this.gb_System_status.Controls.Add(this.lb_ShutterInterlock); + this.gb_System_status.Controls.Add(this.lb_ShutterEnable); + this.gb_System_status.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_System_status.Location = new System.Drawing.Point(3, 30); + this.gb_System_status.Name = "gb_System_status"; + this.gb_System_status.Size = new System.Drawing.Size(200, 197); + this.gb_System_status.TabIndex = 13; + this.gb_System_status.TabStop = false; + this.gb_System_status.Text = "System status"; + // + // lb_PowerOn + // + this.lb_PowerOn.BackColor = System.Drawing.Color.Red; + this.lb_PowerOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerOn.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_PowerOn.ForeColor = System.Drawing.Color.Black; + this.lb_PowerOn.Location = new System.Drawing.Point(6, 20); + this.lb_PowerOn.Name = "lb_PowerOn"; + this.lb_PowerOn.Size = new System.Drawing.Size(188, 19); + this.lb_PowerOn.TabIndex = 4; + this.lb_PowerOn.Text = "Power"; + this.lb_PowerOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LDDOn + // + this.lb_LDDOn.BackColor = System.Drawing.Color.Red; + this.lb_LDDOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LDDOn.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LDDOn.ForeColor = System.Drawing.Color.Black; + this.lb_LDDOn.Location = new System.Drawing.Point(6, 95); + this.lb_LDDOn.Name = "lb_LDDOn"; + this.lb_LDDOn.Size = new System.Drawing.Size(188, 19); + this.lb_LDDOn.TabIndex = 4; + this.lb_LDDOn.Text = "LDD"; + this.lb_LDDOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_KeySwitch + // + this.lb_KeySwitch.BackColor = System.Drawing.Color.Red; + this.lb_KeySwitch.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_KeySwitch.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_KeySwitch.ForeColor = System.Drawing.Color.Black; + this.lb_KeySwitch.Location = new System.Drawing.Point(6, 70); + this.lb_KeySwitch.Name = "lb_KeySwitch"; + this.lb_KeySwitch.Size = new System.Drawing.Size(188, 19); + this.lb_KeySwitch.TabIndex = 4; + this.lb_KeySwitch.Text = "Key Switch"; + this.lb_KeySwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LDDInterlock + // + this.lb_LDDInterlock.BackColor = System.Drawing.Color.Red; + this.lb_LDDInterlock.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LDDInterlock.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LDDInterlock.ForeColor = System.Drawing.Color.Black; + this.lb_LDDInterlock.Location = new System.Drawing.Point(6, 170); + this.lb_LDDInterlock.Name = "lb_LDDInterlock"; + this.lb_LDDInterlock.Size = new System.Drawing.Size(188, 19); + this.lb_LDDInterlock.TabIndex = 4; + this.lb_LDDInterlock.Text = "LDD Interlock"; + this.lb_LDDInterlock.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_QSWOn + // + this.lb_QSWOn.BackColor = System.Drawing.Color.Red; + this.lb_QSWOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_QSWOn.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_QSWOn.ForeColor = System.Drawing.Color.Black; + this.lb_QSWOn.Location = new System.Drawing.Point(6, 120); + this.lb_QSWOn.Name = "lb_QSWOn"; + this.lb_QSWOn.Size = new System.Drawing.Size(188, 19); + this.lb_QSWOn.TabIndex = 4; + this.lb_QSWOn.Text = "Pulse"; + this.lb_QSWOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ShutterInterlock + // + this.lb_ShutterInterlock.BackColor = System.Drawing.Color.Red; + this.lb_ShutterInterlock.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ShutterInterlock.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ShutterInterlock.ForeColor = System.Drawing.Color.Black; + this.lb_ShutterInterlock.Location = new System.Drawing.Point(6, 145); + this.lb_ShutterInterlock.Name = "lb_ShutterInterlock"; + this.lb_ShutterInterlock.Size = new System.Drawing.Size(188, 19); + this.lb_ShutterInterlock.TabIndex = 4; + this.lb_ShutterInterlock.Text = "Shutter Interlock"; + this.lb_ShutterInterlock.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ShutterEnable + // + this.lb_ShutterEnable.BackColor = System.Drawing.Color.Red; + this.lb_ShutterEnable.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ShutterEnable.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ShutterEnable.ForeColor = System.Drawing.Color.Black; + this.lb_ShutterEnable.Location = new System.Drawing.Point(6, 45); + this.lb_ShutterEnable.Name = "lb_ShutterEnable"; + this.lb_ShutterEnable.Size = new System.Drawing.Size(188, 19); + this.lb_ShutterEnable.TabIndex = 4; + this.lb_ShutterEnable.Text = "Shutter"; + this.lb_ShutterEnable.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label16 + // + this.label16.AutoEllipsis = true; + this.label16.BackColor = System.Drawing.SystemColors.Control; + this.label16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label16.Dock = System.Windows.Forms.DockStyle.Top; + this.label16.Font = new System.Drawing.Font("Malgun Gothic", 12F); + this.label16.ForeColor = System.Drawing.Color.Black; + this.label16.Location = new System.Drawing.Point(0, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(608, 27); + this.label16.TabIndex = 10; + this.label16.Text = "�뼚 UV Laser Info"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.SystemColors.Control; + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel2.Controls.Add(this.panel4); + this.panel2.Controls.Add(this.el_CurrentWaferProcess); + this.panel2.Controls.Add(this.panel8); + this.panel2.Controls.Add(this.label1); + this.panel2.Controls.Add(this.panel6); + this.panel2.Location = new System.Drawing.Point(3, 6); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(596, 525); + this.panel2.TabIndex = 466; + // + // panel4 + // + this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel4.Controls.Add(this.label32); + this.panel4.Controls.Add(this.label15); + this.panel4.Controls.Add(this.label11); + this.panel4.Controls.Add(this.label33); + this.panel4.Controls.Add(this.tb_RecipeEnergy); + this.panel4.Controls.Add(this.label12); + this.panel4.Controls.Add(this.label14); + this.panel4.Controls.Add(this.label13); + this.panel4.Controls.Add(this.tb_RecipeHeightOverlap); + this.panel4.Controls.Add(this.tb_RecipeWidthOverlap); + this.panel4.Location = new System.Drawing.Point(3, 250); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(182, 175); + this.panel4.TabIndex = 469; + // + // label32 + // + this.label32.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label32.Font = new System.Drawing.Font("Gulim", 8F); + this.label32.Location = new System.Drawing.Point(140, 146); + this.label32.Name = "label32"; + this.label32.Size = new System.Drawing.Size(37, 21); + this.label32.TabIndex = 110; + this.label32.Text = "J/cm짼"; + this.label32.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label15 + // + this.label15.BackColor = System.Drawing.Color.Silver; + this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label15.Dock = System.Windows.Forms.DockStyle.Top; + this.label15.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label15.Location = new System.Drawing.Point(0, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(180, 23); + this.label15.TabIndex = 0; + this.label15.Text = "Overlap"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label11 + // + this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label11.Location = new System.Drawing.Point(3, 26); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(174, 21); + this.label11.TabIndex = 104; + this.label11.Text = "Beam Height Overlap"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label33 + // + this.label33.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label33.Location = new System.Drawing.Point(3, 122); + this.label33.Name = "label33"; + this.label33.Size = new System.Drawing.Size(174, 21); + this.label33.TabIndex = 109; + this.label33.Text = "Energy"; + this.label33.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_RecipeEnergy + // + this.tb_RecipeEnergy.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_RecipeEnergy.Location = new System.Drawing.Point(3, 146); + this.tb_RecipeEnergy.Name = "tb_RecipeEnergy"; + this.tb_RecipeEnergy.ReadOnly = true; + this.tb_RecipeEnergy.Size = new System.Drawing.Size(131, 21); + this.tb_RecipeEnergy.TabIndex = 111; + this.tb_RecipeEnergy.Text = "0"; + // + // label12 + // + this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label12.Location = new System.Drawing.Point(140, 50); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(37, 21); + this.label12.TabIndex = 106; + this.label12.Text = "mm"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label14 + // + this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label14.Location = new System.Drawing.Point(140, 98); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(37, 21); + this.label14.TabIndex = 106; + this.label14.Text = "mm"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label13 + // + this.label13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label13.Location = new System.Drawing.Point(3, 74); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(174, 21); + this.label13.TabIndex = 104; + this.label13.Text = "Beam Width Overlap"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_RecipeHeightOverlap + // + this.tb_RecipeHeightOverlap.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_RecipeHeightOverlap.Location = new System.Drawing.Point(3, 50); + this.tb_RecipeHeightOverlap.Name = "tb_RecipeHeightOverlap"; + this.tb_RecipeHeightOverlap.ReadOnly = true; + this.tb_RecipeHeightOverlap.Size = new System.Drawing.Size(131, 21); + this.tb_RecipeHeightOverlap.TabIndex = 107; + this.tb_RecipeHeightOverlap.Text = "0"; + // + // tb_RecipeWidthOverlap + // + this.tb_RecipeWidthOverlap.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_RecipeWidthOverlap.Location = new System.Drawing.Point(3, 98); + this.tb_RecipeWidthOverlap.Name = "tb_RecipeWidthOverlap"; + this.tb_RecipeWidthOverlap.ReadOnly = true; + this.tb_RecipeWidthOverlap.Size = new System.Drawing.Size(131, 21); + this.tb_RecipeWidthOverlap.TabIndex = 108; + this.tb_RecipeWidthOverlap.Text = "0"; + // + // el_CurrentWaferProcess + // + this.el_CurrentWaferProcess.Location = new System.Drawing.Point(191, 120); + this.el_CurrentWaferProcess.Name = "el_CurrentWaferProcess"; + this.el_CurrentWaferProcess.Size = new System.Drawing.Size(400, 400); + this.el_CurrentWaferProcess.TabIndex = 468; + this.el_CurrentWaferProcess.Text = "elementHost3"; + this.el_CurrentWaferProcess.Child = null; + // + // panel8 + // + this.panel8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel8.Controls.Add(this.label37); + this.panel8.Controls.Add(this.label23); + this.panel8.Controls.Add(this.label24); + this.panel8.Controls.Add(this.label38); + this.panel8.Controls.Add(this.label36); + this.panel8.Controls.Add(this.tb_RecipeBeamWidth); + this.panel8.Controls.Add(this.tb_RecipeBeamHeight); + this.panel8.Location = new System.Drawing.Point(3, 119); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(182, 125); + this.panel8.TabIndex = 468; + // + // label37 + // + this.label37.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label37.Location = new System.Drawing.Point(3, 74); + this.label37.Name = "label37"; + this.label37.Size = new System.Drawing.Size(174, 21); + this.label37.TabIndex = 111; + this.label37.Text = "Beam Height"; + this.label37.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label23 + // + this.label23.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label23.Location = new System.Drawing.Point(4, 26); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(173, 21); + this.label23.TabIndex = 107; + this.label23.Text = "Beam Width"; + this.label23.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label24 + // + this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label24.Location = new System.Drawing.Point(140, 50); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(37, 21); + this.label24.TabIndex = 109; + this.label24.Text = "mm"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label38 + // + this.label38.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label38.Location = new System.Drawing.Point(140, 98); + this.label38.Name = "label38"; + this.label38.Size = new System.Drawing.Size(37, 21); + this.label38.TabIndex = 112; + this.label38.Text = "mm"; + this.label38.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label36 + // + this.label36.BackColor = System.Drawing.Color.Silver; + this.label36.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label36.Dock = System.Windows.Forms.DockStyle.Top; + this.label36.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label36.Location = new System.Drawing.Point(0, 0); + this.label36.Name = "label36"; + this.label36.Size = new System.Drawing.Size(180, 23); + this.label36.TabIndex = 0; + this.label36.Text = "Beam Info"; + this.label36.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_RecipeBeamWidth + // + this.tb_RecipeBeamWidth.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_RecipeBeamWidth.Location = new System.Drawing.Point(3, 50); + this.tb_RecipeBeamWidth.Name = "tb_RecipeBeamWidth"; + this.tb_RecipeBeamWidth.ReadOnly = true; + this.tb_RecipeBeamWidth.Size = new System.Drawing.Size(132, 21); + this.tb_RecipeBeamWidth.TabIndex = 106; + this.tb_RecipeBeamWidth.Text = "0"; + // + // tb_RecipeBeamHeight + // + this.tb_RecipeBeamHeight.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_RecipeBeamHeight.Location = new System.Drawing.Point(2, 98); + this.tb_RecipeBeamHeight.Name = "tb_RecipeBeamHeight"; + this.tb_RecipeBeamHeight.ReadOnly = true; + this.tb_RecipeBeamHeight.Size = new System.Drawing.Size(132, 21); + this.tb_RecipeBeamHeight.TabIndex = 110; + this.tb_RecipeBeamHeight.Text = "0"; + // + // label1 + // + this.label1.AutoEllipsis = true; + this.label1.BackColor = System.Drawing.SystemColors.Control; + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Dock = System.Windows.Forms.DockStyle.Top; + this.label1.Font = new System.Drawing.Font("Malgun Gothic", 12F); + this.label1.ForeColor = System.Drawing.Color.Black; + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(594, 27); + this.label1.TabIndex = 10; + this.label1.Text = "�뼚 Current Recipe Info"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel6 + // + this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel6.Controls.Add(this.label34); + this.panel6.Controls.Add(this.label35); + this.panel6.Controls.Add(this.tb_RecipeEdgeRound); + this.panel6.Controls.Add(this.label21); + this.panel6.Controls.Add(this.tb_RecipeName); + this.panel6.Controls.Add(this.lb_Hatch); + this.panel6.Controls.Add(this.label20); + this.panel6.Controls.Add(this.label19); + this.panel6.Controls.Add(this.label8); + this.panel6.Controls.Add(this.tb_RecipeRadius); + this.panel6.Controls.Add(this.label152); + this.panel6.Controls.Add(this.tb_RecipeDistancePrimaryFlat); + this.panel6.Location = new System.Drawing.Point(3, 30); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(598, 83); + this.panel6.TabIndex = 467; + // + // label34 + // + this.label34.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label34.Location = new System.Drawing.Point(450, 26); + this.label34.Name = "label34"; + this.label34.Size = new System.Drawing.Size(138, 21); + this.label34.TabIndex = 103; + this.label34.Text = "Edge Round"; + this.label34.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label35 + // + this.label35.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label35.Location = new System.Drawing.Point(551, 52); + this.label35.Name = "label35"; + this.label35.Size = new System.Drawing.Size(37, 21); + this.label35.TabIndex = 105; + this.label35.Text = "mm"; + this.label35.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_RecipeEdgeRound + // + this.tb_RecipeEdgeRound.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_RecipeEdgeRound.Location = new System.Drawing.Point(450, 52); + this.tb_RecipeEdgeRound.Name = "tb_RecipeEdgeRound"; + this.tb_RecipeEdgeRound.ReadOnly = true; + this.tb_RecipeEdgeRound.Size = new System.Drawing.Size(95, 21); + this.tb_RecipeEdgeRound.TabIndex = 104; + this.tb_RecipeEdgeRound.Text = "0"; + // + // label21 + // + this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label21.Location = new System.Drawing.Point(3, 26); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(138, 21); + this.label21.TabIndex = 101; + this.label21.Text = "Name"; + this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_RecipeName + // + this.tb_RecipeName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_RecipeName.Location = new System.Drawing.Point(3, 52); + this.tb_RecipeName.Name = "tb_RecipeName"; + this.tb_RecipeName.ReadOnly = true; + this.tb_RecipeName.Size = new System.Drawing.Size(138, 21); + this.tb_RecipeName.TabIndex = 102; + // + // lb_Hatch + // + this.lb_Hatch.BackColor = System.Drawing.Color.Silver; + this.lb_Hatch.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Hatch.Dock = System.Windows.Forms.DockStyle.Top; + this.lb_Hatch.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lb_Hatch.Location = new System.Drawing.Point(0, 0); + this.lb_Hatch.Name = "lb_Hatch"; + this.lb_Hatch.Size = new System.Drawing.Size(596, 23); + this.lb_Hatch.TabIndex = 0; + this.lb_Hatch.Text = "Wafer Info"; + this.lb_Hatch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label20 + // + this.label20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label20.Location = new System.Drawing.Point(152, 26); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(138, 21); + this.label20.TabIndex = 81; + this.label20.Text = "Radius"; + this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label19 + // + this.label19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label19.Location = new System.Drawing.Point(301, 26); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(138, 21); + this.label19.TabIndex = 81; + this.label19.Text = "Primary Flat"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label8.Location = new System.Drawing.Point(402, 52); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(37, 21); + this.label8.TabIndex = 100; + this.label8.Text = "mm"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_RecipeRadius + // + this.tb_RecipeRadius.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_RecipeRadius.Location = new System.Drawing.Point(152, 52); + this.tb_RecipeRadius.Name = "tb_RecipeRadius"; + this.tb_RecipeRadius.ReadOnly = true; + this.tb_RecipeRadius.Size = new System.Drawing.Size(95, 21); + this.tb_RecipeRadius.TabIndex = 82; + this.tb_RecipeRadius.Text = "0"; + // + // label152 + // + this.label152.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label152.Location = new System.Drawing.Point(253, 52); + this.label152.Name = "label152"; + this.label152.Size = new System.Drawing.Size(37, 21); + this.label152.TabIndex = 83; + this.label152.Text = "mm"; + this.label152.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_RecipeDistancePrimaryFlat + // + this.tb_RecipeDistancePrimaryFlat.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_RecipeDistancePrimaryFlat.Location = new System.Drawing.Point(301, 52); + this.tb_RecipeDistancePrimaryFlat.Name = "tb_RecipeDistancePrimaryFlat"; + this.tb_RecipeDistancePrimaryFlat.ReadOnly = true; + this.tb_RecipeDistancePrimaryFlat.Size = new System.Drawing.Size(95, 21); + this.tb_RecipeDistancePrimaryFlat.TabIndex = 99; + this.tb_RecipeDistancePrimaryFlat.Text = "0"; + // + // lb_LaserOn + // + this.lb_LaserOn.BackColor = System.Drawing.Color.Red; + this.lb_LaserOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LaserOn.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LaserOn.ForeColor = System.Drawing.Color.Black; + this.lb_LaserOn.Location = new System.Drawing.Point(339, 129); + this.lb_LaserOn.Name = "lb_LaserOn"; + this.lb_LaserOn.Size = new System.Drawing.Size(128, 35); + this.lb_LaserOn.TabIndex = 4; + this.lb_LaserOn.Text = "Laser On"; + this.lb_LaserOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LaserOff + // + this.lb_LaserOff.BackColor = System.Drawing.Color.Lime; + this.lb_LaserOff.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LaserOff.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LaserOff.ForeColor = System.Drawing.Color.Black; + this.lb_LaserOff.Location = new System.Drawing.Point(339, 184); + this.lb_LaserOff.Name = "lb_LaserOff"; + this.lb_LaserOff.Size = new System.Drawing.Size(128, 35); + this.lb_LaserOff.TabIndex = 4; + this.lb_LaserOff.Text = "Laser Off"; + this.lb_LaserOff.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Location = new System.Drawing.Point(1303, 245); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(610, 562); + this.tabControl1.TabIndex = 467; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.panel2); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(602, 536); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Current Recipe Info"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.panel7); + this.tabPage2.Controls.Add(this.panel5); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(602, 536); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Foup Recipe Info"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // panel7 + // + this.panel7.BackColor = System.Drawing.SystemColors.Control; + this.panel7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel7.Controls.Add(this.tb_Port2Status); + this.panel7.Controls.Add(this.tb_Port2RecipeName); + this.panel7.Controls.Add(this.label7); + this.panel7.Controls.Add(this.btn_Port2RecipeSet); + this.panel7.Controls.Add(this.lv_Port2Recipes); + this.panel7.Location = new System.Drawing.Point(307, 6); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(289, 524); + this.panel7.TabIndex = 470; + // + // tb_Port2Status + // + this.tb_Port2Status.Location = new System.Drawing.Point(191, 31); + this.tb_Port2Status.Name = "tb_Port2Status"; + this.tb_Port2Status.ReadOnly = true; + this.tb_Port2Status.Size = new System.Drawing.Size(92, 21); + this.tb_Port2Status.TabIndex = 469; + this.tb_Port2Status.DoubleClick += new System.EventHandler(this.tb_Port2Status_DoubleClick); + // + // tb_Port2RecipeName + // + this.tb_Port2RecipeName.Location = new System.Drawing.Point(84, 31); + this.tb_Port2RecipeName.Name = "tb_Port2RecipeName"; + this.tb_Port2RecipeName.ReadOnly = true; + this.tb_Port2RecipeName.Size = new System.Drawing.Size(92, 21); + this.tb_Port2RecipeName.TabIndex = 469; + // + // label7 + // + this.label7.AutoEllipsis = true; + this.label7.BackColor = System.Drawing.SystemColors.Control; + this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label7.Dock = System.Windows.Forms.DockStyle.Top; + this.label7.Font = new System.Drawing.Font("Malgun Gothic", 12F); + this.label7.ForeColor = System.Drawing.Color.Black; + this.label7.Location = new System.Drawing.Point(0, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(287, 27); + this.label7.TabIndex = 10; + this.label7.Text = "�뼚 Port 2"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Port2RecipeSet + // + this.btn_Port2RecipeSet.Location = new System.Drawing.Point(3, 30); + this.btn_Port2RecipeSet.Name = "btn_Port2RecipeSet"; + this.btn_Port2RecipeSet.Size = new System.Drawing.Size(75, 23); + this.btn_Port2RecipeSet.TabIndex = 467; + this.btn_Port2RecipeSet.Text = "Set"; + this.btn_Port2RecipeSet.UseVisualStyleBackColor = true; + this.btn_Port2RecipeSet.Click += new System.EventHandler(this.btn_Port2RecipeSet_Click); + // + // lv_Port2Recipes + // + this.lv_Port2Recipes.AutoArrange = false; + this.lv_Port2Recipes.BackColor = System.Drawing.Color.White; + this.lv_Port2Recipes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2}); + this.lv_Port2Recipes.FullRowSelect = true; + this.lv_Port2Recipes.GridLines = true; + this.lv_Port2Recipes.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lv_Port2Recipes.Location = new System.Drawing.Point(3, 59); + this.lv_Port2Recipes.Name = "lv_Port2Recipes"; + this.lv_Port2Recipes.Size = new System.Drawing.Size(280, 460); + this.lv_Port2Recipes.TabIndex = 468; + this.lv_Port2Recipes.UseCompatibleStateImageBehavior = false; + this.lv_Port2Recipes.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "No."; + this.columnHeader1.Width = 50; + // + // columnHeader2 + // + this.columnHeader2.Text = "Recipe Name"; + this.columnHeader2.Width = 220; + // + // panel5 + // + this.panel5.BackColor = System.Drawing.SystemColors.Control; + this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel5.Controls.Add(this.tb_Port1Status); + this.panel5.Controls.Add(this.tb_Port1RecipeName); + this.panel5.Controls.Add(this.label43); + this.panel5.Controls.Add(this.btn_Port1RecipeSet); + this.panel5.Controls.Add(this.lv_Port1Recipes); + this.panel5.Location = new System.Drawing.Point(6, 6); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(289, 524); + this.panel5.TabIndex = 470; + // + // tb_Port1Status + // + this.tb_Port1Status.Location = new System.Drawing.Point(191, 31); + this.tb_Port1Status.Name = "tb_Port1Status"; + this.tb_Port1Status.ReadOnly = true; + this.tb_Port1Status.Size = new System.Drawing.Size(92, 21); + this.tb_Port1Status.TabIndex = 469; + this.tb_Port1Status.DoubleClick += new System.EventHandler(this.tb_Port1Status_DoubleClick); + // + // tb_Port1RecipeName + // + this.tb_Port1RecipeName.Location = new System.Drawing.Point(84, 31); + this.tb_Port1RecipeName.Name = "tb_Port1RecipeName"; + this.tb_Port1RecipeName.ReadOnly = true; + this.tb_Port1RecipeName.Size = new System.Drawing.Size(92, 21); + this.tb_Port1RecipeName.TabIndex = 469; + // + // label43 + // + this.label43.AutoEllipsis = true; + this.label43.BackColor = System.Drawing.SystemColors.Control; + this.label43.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label43.Dock = System.Windows.Forms.DockStyle.Top; + this.label43.Font = new System.Drawing.Font("Malgun Gothic", 12F); + this.label43.ForeColor = System.Drawing.Color.Black; + this.label43.Location = new System.Drawing.Point(0, 0); + this.label43.Name = "label43"; + this.label43.Size = new System.Drawing.Size(287, 27); + this.label43.TabIndex = 10; + this.label43.Text = "�뼚 Port 1"; + this.label43.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Port1RecipeSet + // + this.btn_Port1RecipeSet.Location = new System.Drawing.Point(3, 30); + this.btn_Port1RecipeSet.Name = "btn_Port1RecipeSet"; + this.btn_Port1RecipeSet.Size = new System.Drawing.Size(75, 23); + this.btn_Port1RecipeSet.TabIndex = 467; + this.btn_Port1RecipeSet.Text = "Set"; + this.btn_Port1RecipeSet.UseVisualStyleBackColor = true; + this.btn_Port1RecipeSet.Click += new System.EventHandler(this.btn_Port1RecipeSet_Click); + // + // lv_Port1Recipes + // + this.lv_Port1Recipes.AutoArrange = false; + this.lv_Port1Recipes.BackColor = System.Drawing.Color.White; + this.lv_Port1Recipes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader10, + this.columnHeader11}); + this.lv_Port1Recipes.FullRowSelect = true; + this.lv_Port1Recipes.GridLines = true; + this.lv_Port1Recipes.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lv_Port1Recipes.Location = new System.Drawing.Point(3, 59); + this.lv_Port1Recipes.Name = "lv_Port1Recipes"; + this.lv_Port1Recipes.Size = new System.Drawing.Size(280, 460); + this.lv_Port1Recipes.TabIndex = 468; + this.lv_Port1Recipes.UseCompatibleStateImageBehavior = false; + this.lv_Port1Recipes.View = System.Windows.Forms.View.Details; + // + // columnHeader10 + // + this.columnHeader10.Text = "No."; + this.columnHeader10.Width = 50; + // + // columnHeader11 + // + this.columnHeader11.Text = "Recipe Name"; + this.columnHeader11.Width = 220; + // + // cb_Maint + // + this.cb_Maint.Appearance = System.Windows.Forms.Appearance.Button; + this.cb_Maint.CheckAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.cb_Maint.Font = new System.Drawing.Font("Gulim", 15F, System.Drawing.FontStyle.Bold); + this.cb_Maint.Location = new System.Drawing.Point(3, 83); + this.cb_Maint.Name = "cb_Maint"; + this.cb_Maint.Size = new System.Drawing.Size(137, 73); + this.cb_Maint.TabIndex = 468; + this.cb_Maint.Text = "MAINT"; + this.cb_Maint.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.cb_Maint.UseVisualStyleBackColor = true; + this.cb_Maint.CheckedChanged += new System.EventHandler(this.cb_Maint_CheckedChanged); + // + // cb_RunStop + // + this.cb_RunStop.Appearance = System.Windows.Forms.Appearance.Button; + this.cb_RunStop.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.cb_RunStop.Location = new System.Drawing.Point(301, 4); + this.cb_RunStop.Name = "cb_RunStop"; + this.cb_RunStop.Size = new System.Drawing.Size(104, 38); + this.cb_RunStop.TabIndex = 469; + this.cb_RunStop.Text = "RunStop"; + this.cb_RunStop.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.cb_RunStop.UseVisualStyleBackColor = true; + this.cb_RunStop.CheckedChanged += new System.EventHandler(this.cb_RunStop_CheckedChanged); + // + // cb_AutoRun + // + this.cb_AutoRun.AutoSize = true; + this.cb_AutoRun.Location = new System.Drawing.Point(301, 82); + this.cb_AutoRun.Name = "cb_AutoRun"; + this.cb_AutoRun.Size = new System.Drawing.Size(71, 16); + this.cb_AutoRun.TabIndex = 470; + this.cb_AutoRun.Text = "AutoRun"; + this.cb_AutoRun.UseVisualStyleBackColor = true; + this.cb_AutoRun.CheckedChanged += new System.EventHandler(this.cb_AutoRun_CheckedChanged); + // + // btn_SequenceView + // + this.btn_SequenceView.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_SequenceView.Location = new System.Drawing.Point(476, 167); + this.btn_SequenceView.Name = "btn_SequenceView"; + this.btn_SequenceView.Size = new System.Drawing.Size(122, 60); + this.btn_SequenceView.TabIndex = 25; + this.btn_SequenceView.Text = "Sequence view"; + this.btn_SequenceView.UseVisualStyleBackColor = true; + this.btn_SequenceView.Click += new System.EventHandler(this.btn_SequenceView_Click); + // + // ScreenMain + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.cb_AutoRun); + this.Controls.Add(this.cb_RunStop); + this.Controls.Add(this.cb_Maint); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.lb_LaserOff); + this.Controls.Add(this.lb_LaserOn); + this.Controls.Add(this.panel1); + this.Controls.Add(this.btn_Pause); + this.Controls.Add(this.btn_Stop); + this.Controls.Add(this.btn_Start); + this.Controls.Add(this.panel3); + this.Controls.Add(this.label3); + this.Controls.Add(this.elementHost2); + this.Name = "ScreenMain"; + this.Size = new System.Drawing.Size(1916, 810); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.panel1.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.gb_System_status.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel4.PerformLayout(); + this.panel8.ResumeLayout(false); + this.panel8.PerformLayout(); + this.panel6.ResumeLayout(false); + this.panel6.PerformLayout(); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.panel7.PerformLayout(); + this.panel5.ResumeLayout(false); + this.panel5.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Timer timer; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Integration.ElementHost elementHost2; + private AnimationEquipment animationEquipment1; + private System.Windows.Forms.TextBox tb_PmcSequence; + private System.Windows.Forms.Panel panel3; + internal System.Windows.Forms.Label lb_EquipmentStatus; + private System.Windows.Forms.Button btn_Start; + private System.Windows.Forms.Button btn_Pause; + private System.Windows.Forms.Button btn_Stop; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox tb_TmcSequence; + private System.Windows.Forms.Label lb_Scanner; + private System.Windows.Forms.Label lb_UvLaser; + private System.Windows.Forms.Label lb_PowerPmac; + private System.Windows.Forms.Label lb_FFU; + private System.Windows.Forms.Label lb_TempControler; + private System.Windows.Forms.Label lb_Attenuator; + private System.Windows.Forms.Label lb_Robot; + private System.Windows.Forms.Label lb_PreAligner; + private System.Windows.Forms.Panel panel1; + internal System.Windows.Forms.Label label16; + private System.Windows.Forms.Panel panel2; + internal System.Windows.Forms.Label label1; + private System.Windows.Forms.GroupBox gb_System_status; + private System.Windows.Forms.Label lb_PowerOn; + private System.Windows.Forms.Label lb_LDDOn; + private System.Windows.Forms.Label lb_KeySwitch; + private System.Windows.Forms.Label lb_LDDInterlock; + private System.Windows.Forms.Label lb_QSWOn; + private System.Windows.Forms.Label lb_ShutterInterlock; + private System.Windows.Forms.Label lb_ShutterEnable; + private System.Windows.Forms.Label label50; + private System.Windows.Forms.Label label52; + private System.Windows.Forms.Label label53; + private System.Windows.Forms.Label label54; + private System.Windows.Forms.Label lb_MaxCurrent; + private System.Windows.Forms.Label lb_DiodeVoltage; + private System.Windows.Forms.Label lb_SetCurrent; + private System.Windows.Forms.Label lb_ActualCurrent; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label lb_AttenuatorAngle; + private System.Windows.Forms.Integration.ElementHost el_CurrentWaferProcess; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Label label34; + private System.Windows.Forms.Label label35; + private System.Windows.Forms.TextBox tb_RecipeEdgeRound; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.TextBox tb_RecipeName; + private System.Windows.Forms.Label lb_Hatch; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TextBox tb_RecipeRadius; + private System.Windows.Forms.Label label152; + private System.Windows.Forms.TextBox tb_RecipeDistancePrimaryFlat; + private System.Windows.Forms.Panel panel8; + private System.Windows.Forms.Label label37; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label label38; + private System.Windows.Forms.Label label36; + private System.Windows.Forms.TextBox tb_RecipeBeamWidth; + private System.Windows.Forms.TextBox tb_RecipeBeamHeight; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Label label32; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label33; + private System.Windows.Forms.TextBox tb_RecipeEnergy; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.TextBox tb_RecipeHeightOverlap; + private System.Windows.Forms.TextBox tb_RecipeWidthOverlap; + private System.Windows.Forms.Label lb_LaserOff; + private System.Windows.Forms.Label lb_LaserOn; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.Panel panel7; + internal System.Windows.Forms.Label label7; + private System.Windows.Forms.Button btn_Port2RecipeSet; + private System.Windows.Forms.ListView lv_Port2Recipes; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.Panel panel5; + internal System.Windows.Forms.Label label43; + private System.Windows.Forms.Button btn_Port1RecipeSet; + private System.Windows.Forms.ListView lv_Port1Recipes; + private System.Windows.Forms.ColumnHeader columnHeader10; + private System.Windows.Forms.ColumnHeader columnHeader11; + private System.Windows.Forms.TextBox tb_Port2RecipeName; + private System.Windows.Forms.TextBox tb_Port1RecipeName; + private System.Windows.Forms.CheckBox cb_Maint; + private System.Windows.Forms.TextBox tb_Port2Status; + private System.Windows.Forms.TextBox tb_Port1Status; + private System.Windows.Forms.Label lb_PowerMeter; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_TactTime; + private System.Windows.Forms.CheckBox cb_RunStop; + private System.Windows.Forms.CheckBox cb_AutoRun; + private System.Windows.Forms.Button btn_AttenuatorCalView; + private System.Windows.Forms.Button btn_EnergyDropCheckView; + private System.Windows.Forms.Button btn_SequenceView; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.cs new file mode 100644 index 0000000..95ff770 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.cs @@ -0,0 +1,624 @@ +癤퓎sing SA_LTT; +using SA_LTT.Info.RecipeInfo; +using SA_LTT.Info.WaferInfo; +using SA_LTT_UI.Viewer; +using System; +using System.Collections; +using System.Drawing; +using System.Windows.Forms; +using static SA_LTT.Info.WaferInfo.WaferInfoManager; + +namespace SA_LTT_UI.Screen +{ + public partial class ScreenMain : UserControl + { + private MainFrame _mainFrame; + private AnimationEquipment _animationEquipment = new AnimationEquipment(); + private WaferProcessPointView _waferProcessPointView = new WaferProcessPointView(); + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public ScreenMain(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + + elementHost2.Child = _animationEquipment; + el_CurrentWaferProcess.Child = _waferProcessPointView; + + _animationEquipment.AddPortMouseDownEvent(AnimationPortMouseDown); + _animationEquipment.AddChamberMouseDownEvent(AnimationChamberMouseDown); + _animationEquipment.AddPreAlignerMouseDownEvent(AnimationPreAlignerMouseDown); + _animationEquipment.AddRobotMouseDownEvent(AnimationRobotMouseDown); + _animationEquipment.AddUvLaserMouseDownEvent(AnimationUvLaserMouseDown); + _animationEquipment.AddScannerMouseDownEvent(AnimationScannerMouseDown); + _animationEquipment.AddAttenuatorMouseDownEvent(AnimationAttenuatorMouseDown); + + _mainFrame.equipment.AddRecipeExcutedEvent(_sequence_RecipeExcuted); + _mainFrame.equipment.AddProcessInfoExcutedEvent(_sequence_ProcessInfoExcuted); + + timer.Tick += Timer_Tick; + timer.Start(); + } + + private void _sequence_RecipeExcuted(Recipe recipe) + { + if(InvokeRequired) + { + BeginInvoke(new RecipeExcuteEvent(_sequence_RecipeExcuted), recipe); + } + else + { + _waferProcessPointView.ClearProcessArea(); + _waferProcessPointView.Radius = recipe.Radius; + _waferProcessPointView.PrimaryFlat = recipe.DistanceFromCenterToPrimaryFlat; + + tb_RecipeName.Text = recipe.Name; + tb_RecipeRadius.Text = recipe.Radius.ToString(); + tb_RecipeDistancePrimaryFlat.Text = recipe.DistanceFromCenterToPrimaryFlat.ToString(); + tb_RecipeEdgeRound.Text = recipe.EdgeRound.ToString(); + + tb_RecipeBeamWidth.Text = recipe.BeamWidth.ToString(); + tb_RecipeBeamHeight.Text = recipe.BeamHeight.ToString(); + + foreach (ProcessInfo processInfo in recipe.ProcessInfoList) + { + processInfo.SetProcessData(); + + _waferProcessPointView.AddProcessArea(processInfo.ProcessStartY, processInfo.ProcessEndY, processInfo.ProcessList.ToArray()); + } + } + } + + private void _sequence_ProcessInfoExcuted(ProcessInfo processInfo, int processInfoIndex) + { + if (InvokeRequired) + { + BeginInvoke(new ProcessInfoExcuteEvent(_sequence_ProcessInfoExcuted), processInfo, processInfoIndex); + } + else + { + tb_RecipeWidthOverlap.Text = processInfo.BeamWidthOverlap.ToString(); + tb_RecipeHeightOverlap.Text = processInfo.BeamHeightOverlap.ToString(); + tb_RecipeEnergy.Text = processInfo.Energy.ToString(); + + _waferProcessPointView.HighlightProcessAreas(processInfoIndex); + } + } + + private void Timer_Tick(object sender, EventArgs e) + { + try + { + if (_mainFrame.equipment.IsEnergyDropCheckRun) + { + if (_mainFrame.energyDropCheckViewer.Visible == false) + { + EnergyDropCheckViewShow(); + } + else + { + if (_mainFrame.energyDropCheckViewer.TopMost == false) + _mainFrame.energyDropCheckViewer.TopMost = true; + } + } + else + { + if (_mainFrame.energyDropCheckViewer.TopMost) + { + _mainFrame.energyDropCheckViewer.TopMost = false; + } + } + + if (_mainFrame.equipment.IsAttenuatorCalRun) + { + if (_mainFrame.attenuatorCalViewer.Visible == false) + { + AttenuatorCalViewShow(); + } + else + { + if (_mainFrame.attenuatorCalViewer.TopMost == false) + _mainFrame.attenuatorCalViewer.TopMost = true; + } + } + else + { + if (_mainFrame.attenuatorCalViewer.TopMost) + { + _mainFrame.attenuatorCalViewer.TopMost = false; + } + } + + tb_PmcSequence.Text = _mainFrame.equipment.PmcStep.ToString(); + tb_TmcSequence.Text = _mainFrame.equipment.TmcStep.ToString(); + + _animationEquipment.SetDoor1Status(_mainFrame.equipment.crevis.DigitalInputs[SA_LTT.Module.Crevis.DigitalInput.DOOR_LOCK_OPEN_1]); + _animationEquipment.SetDoor2Status(_mainFrame.equipment.crevis.DigitalInputs[SA_LTT.Module.Crevis.DigitalInput.DOOR_LOCK_OPEN_2]); + _animationEquipment.SetDoor3Status(_mainFrame.equipment.crevis.DigitalInputs[SA_LTT.Module.Crevis.DigitalInput.DOOR_LOCK_OPEN_3]); + _animationEquipment.SetDoor4Status(_mainFrame.equipment.crevis.DigitalInputs[SA_LTT.Module.Crevis.DigitalInput.DOOR_LOCK_OPEN_4]); + _animationEquipment.SetDoorCPStatus(_mainFrame.equipment.crevis.DigitalInputs[SA_LTT.Module.Crevis.DigitalInput.CP_BOX_OPEN]); + + _animationEquipment.SetMotorPositionX(_mainFrame.equipment.powerPmac.GetAxisActualPos(SA_LTT.Module.PmacAxis.X_Axis)); + _animationEquipment.SetMotorPositionY(_mainFrame.equipment.powerPmac.GetAxisActualPos(SA_LTT.Module.PmacAxis.Y_Axis)); + _animationEquipment.SetMotorPositionT(_mainFrame.equipment.powerPmac.GetAxisActualPos(SA_LTT.Module.PmacAxis.T_Axis)); + + _animationEquipment.SetRobotPositionArm(_mainFrame.equipment.robot.PositionR); + _animationEquipment.SetRobotPositionAngle(_mainFrame.equipment.robot.PositionT); + _animationEquipment.SetRobotPositionZ(_mainFrame.equipment.robot.PositionZ); + _animationEquipment.SetRobotWaferNum(_mainFrame.equipment.waferInfoManager.GetWaferInfo(WaferNumbers.Robot).SourceNumber); + + _animationEquipment.SetIsAlignRun(_mainFrame.equipment.preAligner.IsAlignRun); + _animationEquipment.SetPreAlignerWaferNum(_mainFrame.equipment.waferInfoManager.GetWaferInfo(WaferNumbers.PreAligner).SourceNumber); + + _animationEquipment.SetChamberWaferNum(_mainFrame.equipment.chamber.WaferInfo.SourceNumber); + _animationEquipment.SetChamberLiftPin(_mainFrame.equipment.chamber.IsLiftPinUp); + + _animationEquipment.SetChamberGate(_mainFrame.equipment.crevis.DigitalInputs[SA_LTT.Module.Crevis.DigitalInput.CMB_GATE_OPEN]); + + UpdateModuleConnectionInfo(); + UpdateLaserInfo(); + + tb_Port1Status.Text = _mainFrame.equipment.port1Foup.status.ToString(); + tb_Port2Status.Text = _mainFrame.equipment.port2Foup.status.ToString(); + + tb_TactTime.Text = _mainFrame.equipment.ProcessTactTimeSeconds.ToString("F3"); + + foreach (WaferNumbers info in Enum.GetValues(typeof(WaferNumbers))) + { + WaferInfo waferInfo = _mainFrame.equipment.waferInfoManager.GetWaferInfo(info); + _animationEquipment.SetWaferExist(info, waferInfo); + } + } + catch(Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + private void UpdateModuleConnectionInfo() + { + lb_Scanner.BackColor = _mainFrame.equipment.scanner.IsInitialized ? Color.Lime : Color.Red; + lb_PreAligner.BackColor = _mainFrame.equipment.preAligner.IsOpen? Color.Lime : Color.Red; + lb_Robot.BackColor = _mainFrame.equipment.robot.IsOpen ? Color.Lime : Color.Red; + lb_Attenuator.BackColor = _mainFrame.equipment.attenuator.IsOpen ? Color.Lime : Color.Red; + lb_TempControler.BackColor = _mainFrame.equipment.tempControl.IsOpen ? Color.Lime : Color.Red; + lb_FFU.BackColor = _mainFrame.equipment.ffu.IsOpen ? Color.Lime : Color.Red; + lb_PowerPmac.BackColor = _mainFrame.equipment.powerPmac.IsOpen() ? Color.Lime : Color.Red; + lb_UvLaser.BackColor = _mainFrame.equipment.piLaser.IsOpen ? Color.Lime : Color.Red; + lb_PowerMeter.BackColor = _mainFrame.equipment.powerMeter.IsOpen ? Color.Lime : Color.Red; + } + + private void UpdateLaserInfo() + { + lb_PowerOn.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.PowerOn ? Color.Lime : Color.Red; + lb_ShutterEnable.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.ShutterEnabled ? Color.Lime : Color.Red; + lb_KeySwitch.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.KeySwitch ? Color.Lime : Color.Red; + lb_LDDOn.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.LddOn ? Color.Lime : Color.Red; + lb_QSWOn.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.QswOn ? Color.Lime : Color.Red; + lb_ShutterInterlock.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.ShutterInterlock ? Color.Lime : Color.Red; + lb_LDDInterlock.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.LddInterlock ? Color.Lime : Color.Red; + + lb_LaserOn.BackColor = _mainFrame.equipment.scanner.IsLaserOn ? Color.Lime : Color.Red; + lb_LaserOff.BackColor = !_mainFrame.equipment.scanner.IsLaserOn ? Color.Lime : Color.Red; + + lb_SetCurrent.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent.ToString("F2"); + lb_ActualCurrent.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.ActualCurrent.ToString("F2"); + lb_DiodeVoltage.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.DiodeVoltage.ToString("F2"); + lb_MaxCurrent.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent.ToString("F2"); + + lb_AttenuatorAngle.Text = _mainFrame.equipment.attenuator.Degree.ToString("F3"); + } + + private void AnimationPortMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : WaferInfoViewer"); + + _mainFrame.waferInfoViewer.Show(); + _mainFrame.waferInfoViewer.WindowState = FormWindowState.Normal; + _mainFrame.waferInfoViewer.TopMost = true; + _mainFrame.waferInfoViewer.TopMost = false; + } + + private void AnimationChamberMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : ChamberViewer"); + + _mainFrame.chamberViewer.Show(); + _mainFrame.chamberViewer.WindowState = FormWindowState.Normal; + _mainFrame.chamberViewer.TopMost = true; + _mainFrame.chamberViewer.TopMost = false; + } + + private void AnimationPreAlignerMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : PreAlignerViewer"); + + _mainFrame.preAignViewer.Show(); + _mainFrame.preAignViewer.WindowState = FormWindowState.Normal; + _mainFrame.preAignViewer.TopMost = true; + _mainFrame.preAignViewer.TopMost = false; + } + + private void AnimationRobotMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : RobotViewer"); + + _mainFrame.robotViewer.Show(); + _mainFrame.robotViewer.WindowState = FormWindowState.Normal; + _mainFrame.robotViewer.TopMost = true; + _mainFrame.robotViewer.TopMost = false; + } + + private void AnimationUvLaserMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : UvLaserViewer"); + + _mainFrame.piLaserViewer.Show(); + _mainFrame.piLaserViewer.WindowState = FormWindowState.Normal; + _mainFrame.piLaserViewer.TopMost = true; + _mainFrame.piLaserViewer.TopMost = false; + } + + private void AnimationScannerMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : ScannerViewer"); + + _mainFrame.scannerViewer.Show(); + _mainFrame.scannerViewer.WindowState = FormWindowState.Normal; + _mainFrame.scannerViewer.TopMost = true; + _mainFrame.scannerViewer.TopMost = false; + } + + private void AnimationAttenuatorMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : AttenuatorViewer"); + + _mainFrame.attenuatorViewer.Show(); + _mainFrame.attenuatorViewer.WindowState = FormWindowState.Normal; + _mainFrame.attenuatorViewer.TopMost = true; + _mainFrame.attenuatorViewer.TopMost = false; + } + + private void btn_Start_Click(object sender, EventArgs e) + { + + if (MessageBox.Show("Run �떎�뻾 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + if (_mainFrame.equipment.alarmManager.OccurredAlarms.Exists(x => x.Level == AlarmLevel.Heavy)) + { + MessageBox.Show("Alarm�씠 諛쒖깮以묒엯�땲�떎.", "�솗�씤", MessageBoxButtons.OK); + return; + } + else + { + if(_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd == false || _mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter == false || _mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent != _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent) + { + string message = string.Empty; + + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd == false) + { + message += "LDD媛� �떕���엳�뒿�땲�떎. \r\n"; + } + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter == false) + { + message += "Shutter媛� �떕���엳�뒿�땲�떎. \r\n"; + } + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent != _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent) + { + message += $"Set current媛� {_mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent}�씠 �븘�떃�땲�떎. \r\n \r\n"; + } + + if (MessageBox.Show(message + "吏꾪뻾 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + } + + if(_mainFrame.equipment.TmcStep == Sequence.TmcSteps.Wait && (_mainFrame.equipment.port1Foup.foupRecipe.Name == null || _mainFrame.equipment.port2Foup.foupRecipe.Name == null)) + { + string message = string.Empty; + + if (_mainFrame.equipment.port1Foup.foupRecipe.Name == null) + { + message += "Port1 recipe "; + } + + if (_mainFrame.equipment.port2Foup.foupRecipe.Name == null) + { + message += "Port2 recipe "; + } + + if (MessageBox.Show(message + "媛� �꽕�젙�릺�뼱 �엳吏� �븡�뒿�땲�떎. 吏꾪뻾 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + } + + if (_mainFrame.equipment.ProcessStart()) + { + SequenceViewShow(); + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + } + } + } + } + + private void btn_Pause_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.equipment.ProcessPause(); + } + + private void btn_Stop_Click(object sender, EventArgs e) + { + if (MessageBox.Show("Sequence 珥덇린�솕 諛� \n�셿�쟾 �젙吏� �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + if (_mainFrame.equipment.ProcessStatus != ProcessStatus.Pause) + { + if (_mainFrame.equipment.ProcessStatus != ProcessStatus.Idle) + { + MessageBox.Show("Pause �긽�깭�뿉�꽌 蹂�寃쎌씠 媛��뒫 �빀�땲�떎.", "�솗�씤", MessageBoxButtons.OK); + } + return; + } + else + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.equipment.ProcessStop(); + } + } + } + + private void cb_Maint_CheckedChanged(object sender, EventArgs e) + { + if (_mainFrame.equipment.ProcessStatus != ProcessStatus.Idle) + { + if (_mainFrame.equipment.ProcessStatus != ProcessStatus.Idle) + { + Viewer.MessageBoxPad mbp = new Viewer.MessageBoxPad("Process status媛� Idle�씠 �븘�떃�땲�떎."); + mbp.Show(); + } + cb_Maint.Checked = _mainFrame.equipment.EquipmentMode == EquipmentMode.Teach ? true : false; + return; + } + + if (cb_Maint.Checked) + { + if (_mainFrame.equipment.EquipmentMode == EquipmentMode.Auto && _mainFrame.equipment.ChangeMode(EquipmentMode.Teach)) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} true"); + + _mainFrame.maintenanceViewer.Show(); + cb_Maint.Checked = true; + } + else + { + cb_Maint.Checked = false; + } + } + else + { + if (_mainFrame.equipment.EquipmentMode == EquipmentMode.Teach && _mainFrame.equipment.ChangeMode(EquipmentMode.Auto)) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} false"); + + cb_Maint.Checked = false; + } + else + { + cb_Maint.Checked = true; + } + } + } + + private void btn_Port1RecipeSet_Click(object sender, EventArgs e) + { + FoupRecipeSelectViewer foupRecipeSelectViewer = new FoupRecipeSelectViewer(_mainFrame); + + if (foupRecipeSelectViewer.ShowDialog() == DialogResult.OK) + { + if(foupRecipeSelectViewer.CurrentFoupRecipe != null) + { + _mainFrame.equipment.port1Foup.foupRecipe = foupRecipeSelectViewer.CurrentFoupRecipe.Clone(); + tb_Port1RecipeName.Text = _mainFrame.equipment.port1Foup.foupRecipe.Name; + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMain : Port1Recipe Set {_mainFrame.equipment.port1Foup.foupRecipe.Name}"); + Port1RecipeUpdate(); + } + } + } + + private void btn_Port2RecipeSet_Click(object sender, EventArgs e) + { + FoupRecipeSelectViewer foupRecipeSelectViewer = new FoupRecipeSelectViewer(_mainFrame); + + if (foupRecipeSelectViewer.ShowDialog() == DialogResult.OK) + { + if (foupRecipeSelectViewer.CurrentFoupRecipe != null) + { + _mainFrame.equipment.port2Foup.foupRecipe = foupRecipeSelectViewer.CurrentFoupRecipe.Clone(); + tb_Port2RecipeName.Text = _mainFrame.equipment.port2Foup.foupRecipe.Name; + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMain : Port2Recipe Set {_mainFrame.equipment.port1Foup.foupRecipe.Name}"); + Port2RecipeUpdate(); + } + } + } + + private void Port1RecipeUpdate() + { + lv_Port1Recipes.Items.Clear(); + + if (_mainFrame.equipment.port1Foup.foupRecipe != null) + { + FoupRecipe originalRecipe = _mainFrame.equipment.foupRecipeManager.GetRecipe(_mainFrame.equipment.port1Foup.foupRecipe.Name); + + for (int i = 24; i >= 0; i--) + { + ListViewItem lvi = new ListViewItem($"{i + 1}"); + + if (originalRecipe.RecipeNames[i] == null) + { + lvi.SubItems.Add("Empty"); + } + else + { + lvi.SubItems.Add(originalRecipe.RecipeNames[i]); + } + + lv_Port1Recipes.Items.Add(lvi); + } + } + } + + private void Port2RecipeUpdate() + { + lv_Port2Recipes.Items.Clear(); + + if (_mainFrame.equipment.port2Foup.foupRecipe != null) + { + FoupRecipe originalRecipe = _mainFrame.equipment.foupRecipeManager.GetRecipe(_mainFrame.equipment.port2Foup.foupRecipe.Name); + + for (int i = 24; i >= 0; i--) + { + ListViewItem lvi = new ListViewItem($"{i + 1}"); + + if (originalRecipe.RecipeNames[i] == null) + { + lvi.SubItems.Add("Empty"); + } + else + { + lvi.SubItems.Add(originalRecipe.RecipeNames[i]); + } + + lv_Port2Recipes.Items.Add(lvi); + } + } + } + + private void tb_Port1Status_DoubleClick(object sender, EventArgs e) + { + if(_mainFrame.equipment.ProcessStatus == ProcessStatus.Idle) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} Ready"); + + _mainFrame.equipment.port1Foup.status = SA_LTT.Info.FoupInfo.FoupStatus.Ready; + } + else + { + Viewer.MessageBoxPad mbp = new Viewer.MessageBoxPad("Idle �긽�깭�뿉�꽌留� 蹂�寃� 媛��뒫 �빀�땲�떎."); + mbp.Show(); + } + } + + private void tb_Port2Status_DoubleClick(object sender, EventArgs e) + { + if (_mainFrame.equipment.ProcessStatus == ProcessStatus.Idle) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} Ready"); + + _mainFrame.equipment.port2Foup.status = SA_LTT.Info.FoupInfo.FoupStatus.Ready; + } + else + { + Viewer.MessageBoxPad mbp = new Viewer.MessageBoxPad("Idle �긽�깭�뿉�꽌留� 蹂�寃� 媛��뒫 �빀�땲�떎."); + mbp.Show(); + } + } + + private void cb_RunStop_CheckedChanged(object sender, EventArgs e) + { + if(cb_RunStop.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} true"); + } + else + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} false"); + } + + _mainFrame.equipment.IsRunStop = cb_RunStop.Checked; + } + + private void cb_AutoRun_CheckedChanged(object sender, EventArgs e) + { + if(cb_AutoRun.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} true"); + } + else + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} false"); + } + + _mainFrame.equipment.IsAutoRun = cb_AutoRun.Checked; + } + + private void EnergyDropCheckViewShow() + { + if(_mainFrame.energyDropCheckViewer.Visible == false) + { + _mainFrame.energyDropCheckViewer.Show(); + } + + _mainFrame.energyDropCheckViewer.WindowState = FormWindowState.Normal; + _mainFrame.energyDropCheckViewer.TopMost = true; + _mainFrame.energyDropCheckViewer.TopMost = false; + } + + private void AttenuatorCalViewShow() + { + if (_mainFrame.attenuatorCalViewer.Visible == false) + { + _mainFrame.attenuatorCalViewer.Show(); + } + + _mainFrame.attenuatorCalViewer.WindowState = FormWindowState.Normal; + _mainFrame.attenuatorCalViewer.TopMost = true; + _mainFrame.attenuatorCalViewer.TopMost = false; + } + + private void SequenceViewShow() + { + if (_mainFrame.sequenceViewer.Visible == false) + { + _mainFrame.sequenceViewer.Show(); + } + + _mainFrame.sequenceViewer.WindowState = FormWindowState.Normal; + _mainFrame.sequenceViewer.TopMost = true; + _mainFrame.sequenceViewer.TopMost = false; + } + + private void btn_EnergyDropCheckView_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + EnergyDropCheckViewShow(); + } + + private void btn_AttenuatorCalView_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + AttenuatorCalViewShow(); + } + + private void btn_SequenceView_Click(object sender, EventArgs e) + { + _mainFrame.sequenceViewer.Show(); + _mainFrame.sequenceViewer.WindowState = FormWindowState.Normal; + _mainFrame.sequenceViewer.TopMost = true; + _mainFrame.sequenceViewer.TopMost = false; + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.resx b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.resx new file mode 100644 index 0000000..d1ed6a3 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.resx @@ -0,0 +1,126 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="timer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> + <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>81</value> + </metadata> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.Designer.cs new file mode 100644 index 0000000..ac3c01b --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.Designer.cs @@ -0,0 +1,139 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class ScreenMaintenance + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.pnl_Main = new System.Windows.Forms.Panel(); + this.rb_Setting = new System.Windows.Forms.RadioButton(); + this.rb_IO = new System.Windows.Forms.RadioButton(); + this.rb_Motor = new System.Windows.Forms.RadioButton(); + this.rb_Laser = new System.Windows.Forms.RadioButton(); + this.rb_Parameter = new System.Windows.Forms.RadioButton(); + this.SuspendLayout(); + // + // pnl_Main + // + this.pnl_Main.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_Main.Location = new System.Drawing.Point(3, 3); + this.pnl_Main.Name = "pnl_Main"; + this.pnl_Main.Size = new System.Drawing.Size(1764, 803); + this.pnl_Main.TabIndex = 6; + // + // rb_Setting + // + this.rb_Setting.Appearance = System.Windows.Forms.Appearance.Button; + this.rb_Setting.Font = new System.Drawing.Font("Gulim", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.rb_Setting.Location = new System.Drawing.Point(1771, 70); + this.rb_Setting.Name = "rb_Setting"; + this.rb_Setting.Size = new System.Drawing.Size(142, 61); + this.rb_Setting.TabIndex = 7; + this.rb_Setting.Text = "SETTING"; + this.rb_Setting.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.rb_Setting.UseVisualStyleBackColor = true; + this.rb_Setting.CheckedChanged += new System.EventHandler(this.rb_IO_CheckedChanged); + // + // rb_IO + // + this.rb_IO.Appearance = System.Windows.Forms.Appearance.Button; + this.rb_IO.Checked = true; + this.rb_IO.Font = new System.Drawing.Font("Gulim", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.rb_IO.Location = new System.Drawing.Point(1771, 3); + this.rb_IO.Name = "rb_IO"; + this.rb_IO.Size = new System.Drawing.Size(142, 61); + this.rb_IO.TabIndex = 8; + this.rb_IO.TabStop = true; + this.rb_IO.Text = "IO"; + this.rb_IO.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.rb_IO.UseVisualStyleBackColor = true; + this.rb_IO.CheckedChanged += new System.EventHandler(this.rb_IO_CheckedChanged); + // + // rb_Motor + // + this.rb_Motor.Appearance = System.Windows.Forms.Appearance.Button; + this.rb_Motor.Font = new System.Drawing.Font("Gulim", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.rb_Motor.Location = new System.Drawing.Point(1771, 137); + this.rb_Motor.Name = "rb_Motor"; + this.rb_Motor.Size = new System.Drawing.Size(142, 61); + this.rb_Motor.TabIndex = 9; + this.rb_Motor.Text = "MOTOR"; + this.rb_Motor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.rb_Motor.UseVisualStyleBackColor = true; + this.rb_Motor.CheckedChanged += new System.EventHandler(this.rb_IO_CheckedChanged); + // + // rb_Laser + // + this.rb_Laser.Appearance = System.Windows.Forms.Appearance.Button; + this.rb_Laser.Font = new System.Drawing.Font("Gulim", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.rb_Laser.Location = new System.Drawing.Point(1771, 204); + this.rb_Laser.Name = "rb_Laser"; + this.rb_Laser.Size = new System.Drawing.Size(142, 61); + this.rb_Laser.TabIndex = 9; + this.rb_Laser.Text = "LASER"; + this.rb_Laser.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.rb_Laser.UseVisualStyleBackColor = true; + this.rb_Laser.CheckedChanged += new System.EventHandler(this.rb_IO_CheckedChanged); + // + // rb_Parameter + // + this.rb_Parameter.Appearance = System.Windows.Forms.Appearance.Button; + this.rb_Parameter.Font = new System.Drawing.Font("Gulim", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.rb_Parameter.Location = new System.Drawing.Point(1771, 271); + this.rb_Parameter.Name = "rb_Parameter"; + this.rb_Parameter.Size = new System.Drawing.Size(142, 61); + this.rb_Parameter.TabIndex = 9; + this.rb_Parameter.Text = "PARAMETER"; + this.rb_Parameter.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.rb_Parameter.UseVisualStyleBackColor = true; + this.rb_Parameter.CheckedChanged += new System.EventHandler(this.rb_IO_CheckedChanged); + // + // ScreenMaintenance + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.rb_Parameter); + this.Controls.Add(this.rb_Laser); + this.Controls.Add(this.rb_Motor); + this.Controls.Add(this.rb_Setting); + this.Controls.Add(this.pnl_Main); + this.Controls.Add(this.rb_IO); + this.Name = "ScreenMaintenance"; + this.Size = new System.Drawing.Size(1916, 809); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel pnl_Main; + private System.Windows.Forms.RadioButton rb_Setting; + private System.Windows.Forms.RadioButton rb_IO; + private System.Windows.Forms.RadioButton rb_Motor; + private System.Windows.Forms.RadioButton rb_Laser; + private System.Windows.Forms.RadioButton rb_Parameter; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.cs new file mode 100644 index 0000000..e8e35cf --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.cs @@ -0,0 +1,59 @@ +癤퓎sing System; +using System.Windows.Forms; +using SA_LTT.UserInfo; +using SA_LTT_UI.Viewer; +using SA_LTT; + +namespace SA_LTT_UI.Screen +{ + public partial class ScreenMaintenance : UserControl + { + MainFrame _mainFrame; + + public ScreenMaintenance(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + + pnl_Main.Controls.Clear(); + + pnl_Main.Controls.Add(_mainFrame.screenIO); + } + + private void rb_IO_CheckedChanged(object sender, EventArgs e) + { + pnl_Main.Controls.Clear(); + + if (rb_IO.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + pnl_Main.Controls.Add(_mainFrame.screenIO); + } + else if (rb_Setting.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + pnl_Main.Controls.Add(_mainFrame.screenSetting); + } + else if(rb_Motor.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + pnl_Main.Controls.Add(_mainFrame.screenMotionMaintenance); + } + else if(rb_Laser.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + pnl_Main.Controls.Add(_mainFrame.screenLaser); + } + else if(rb_Parameter.Checked) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + pnl_Main.Controls.Add(_mainFrame.screenParameter); + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.resx b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.Designer.cs new file mode 100644 index 0000000..bd3b1ec --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.Designer.cs @@ -0,0 +1,1879 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class ScreenMotionMaintenance + { + /// <summary> + /// �븘�닔 �뵒�옄�씠�꼫 蹂��닔�엯�땲�떎. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// �궗�슜 以묒씤 紐⑤뱺 由ъ냼�뒪瑜� �젙由ы빀�땲�떎. + /// </summary> + /// <param name="disposing">愿�由щ릺�뒗 由ъ냼�뒪瑜� �궘�젣�빐�빞 �븯硫� true�씠怨�, 洹몃젃吏� �븡�쑝硫� false�엯�땲�떎.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 援ъ꽦 �슂�냼 �뵒�옄�씠�꼫�뿉�꽌 �깮�꽦�븳 肄붾뱶 + + /// <summary> + /// �뵒�옄�씠�꼫 吏��썝�뿉 �븘�슂�븳 硫붿꽌�뱶�엯�땲�떎. + /// �씠 硫붿꽌�뱶�쓽 �궡�슜�쓣 肄붾뱶 �렪吏묎린濡� �닔�젙�븯吏� 留덉꽭�슂. + /// </summary> + private void InitializeComponent() + { + this.ListView_AxisPosList = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader9 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader6 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader7 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader8 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.lblVel3 = new System.Windows.Forms.Label(); + this.lblPos3 = new System.Windows.Forms.Label(); + this.label51 = new System.Windows.Forms.Label(); + this.label52 = new System.Windows.Forms.Label(); + this.lblInPos3 = new System.Windows.Forms.Label(); + this.lblServo3 = new System.Windows.Forms.Label(); + this.lblPLimit3 = new System.Windows.Forms.Label(); + this.lblNLimit3 = new System.Windows.Forms.Label(); + this.lblFault3 = new System.Windows.Forms.Label(); + this.lblHomeComp3 = new System.Windows.Forms.Label(); + this.lblVel2 = new System.Windows.Forms.Label(); + this.lblPos2 = new System.Windows.Forms.Label(); + this.label39 = new System.Windows.Forms.Label(); + this.label40 = new System.Windows.Forms.Label(); + this.lblInPos2 = new System.Windows.Forms.Label(); + this.lblServo2 = new System.Windows.Forms.Label(); + this.lblPLimit2 = new System.Windows.Forms.Label(); + this.lblNLimit2 = new System.Windows.Forms.Label(); + this.lblFault2 = new System.Windows.Forms.Label(); + this.lblHomeComp2 = new System.Windows.Forms.Label(); + this.lblVel1 = new System.Windows.Forms.Label(); + this.lblPos1 = new System.Windows.Forms.Label(); + this.label30 = new System.Windows.Forms.Label(); + this.label27 = new System.Windows.Forms.Label(); + this.label25 = new System.Windows.Forms.Label(); + this.label24 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.lblInPos1 = new System.Windows.Forms.Label(); + this.lblServo1 = new System.Windows.Forms.Label(); + this.lblPLimit1 = new System.Windows.Forms.Label(); + this.lblNLimit1 = new System.Windows.Forms.Label(); + this.lblFault1 = new System.Windows.Forms.Label(); + this.lblHomeComp1 = new System.Windows.Forms.Label(); + this.btnReset = new System.Windows.Forms.Button(); + this.Label_LED_InPos = new System.Windows.Forms.Label(); + this.Set_Control_Acc = new System.Windows.Forms.TextBox(); + this.Btn_Jog_CCW = new System.Windows.Forms.Button(); + this.Btn_Jog_CW = new System.Windows.Forms.Button(); + this.Btn_Jog_Stop = new System.Windows.Forms.Button(); + this.Btn_Move_Rel_CCW = new System.Windows.Forms.Button(); + this.Btn_Move_Rel_CW = new System.Windows.Forms.Button(); + this.BtnAllStop = new System.Windows.Forms.Button(); + this.BtnAllHome = new System.Windows.Forms.Button(); + this.BtnAllServoOFF = new System.Windows.Forms.Button(); + this.BtnAllServoON = new System.Windows.Forms.Button(); + this.Btn_Move_Abs = new System.Windows.Forms.Button(); + this.Btn_Home = new System.Windows.Forms.Button(); + this.Btn_PositionSet = new System.Windows.Forms.Button(); + this.Btn_ServoOnOff = new System.Windows.Forms.Button(); + this.Btn_PositionMove = new System.Windows.Forms.Button(); + this.Label_Select_Axis_PosVal = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.Label_Select_Axis_PosName = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.Label_LED_ServoOn = new System.Windows.Forms.Label(); + this.Label_LED_PlusLimit = new System.Windows.Forms.Label(); + this.Label_LED_MinusLimit = new System.Windows.Forms.Label(); + this.Label_LED_FlowingError = new System.Windows.Forms.Label(); + this.Label_LED_Home = new System.Windows.Forms.Label(); + this.tbCurPos = new System.Windows.Forms.TextBox(); + this.Set_Control_Pos = new System.Windows.Forms.TextBox(); + this.Set_Control_Speed = new System.Windows.Forms.TextBox(); + this.tbCurSpeed = new System.Windows.Forms.TextBox(); + this.Set_Select_AccelVal = new System.Windows.Forms.TextBox(); + this.Set_Select_SpeedVal = new System.Windows.Forms.TextBox(); + this.Set_Select_PosVal = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.Label_CurrentInfo_AxisName = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.Label_CurrentInfo_PositionName = new System.Windows.Forms.Label(); + this.label28 = new System.Windows.Forms.Label(); + this.label29 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.Label_CurrentInfo_AxisNo = new System.Windows.Forms.Label(); + this.Label_CurrentInfo_PosIndex = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.Label_Subject_Current = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.btn_PiLaserView = new System.Windows.Forms.Button(); + this.btn_PreAlign = new System.Windows.Forms.Button(); + this.btn_Robot = new System.Windows.Forms.Button(); + this.btn_ChillerView = new System.Windows.Forms.Button(); + this.btn_PowerMeterView = new System.Windows.Forms.Button(); + this.btn_Attenuator = new System.Windows.Forms.Button(); + this.btn_ScannerView = new System.Windows.Forms.Button(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.tb_ChamberVacuumPressure = new System.Windows.Forms.TextBox(); + this.tb_MainCDAFlow = new System.Windows.Forms.TextBox(); + this.tb_N2PTPPressure = new System.Windows.Forms.TextBox(); + this.label22 = new System.Windows.Forms.Label(); + this.label21 = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.tb_MainVacuumPressure = new System.Windows.Forms.TextBox(); + this.label19 = new System.Windows.Forms.Label(); + this.tb_MainCDAPressure = new System.Windows.Forms.TextBox(); + this.label14 = new System.Windows.Forms.Label(); + this.btn_VisionView = new System.Windows.Forms.Button(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // ListView_AxisPosList + // + this.ListView_AxisPosList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader9, + this.columnHeader2, + this.columnHeader3, + this.columnHeader4, + this.columnHeader5, + this.columnHeader6, + this.columnHeader7, + this.columnHeader8}); + this.ListView_AxisPosList.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ListView_AxisPosList.FullRowSelect = true; + this.ListView_AxisPosList.GridLines = true; + this.ListView_AxisPosList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.ListView_AxisPosList.HideSelection = false; + this.ListView_AxisPosList.Location = new System.Drawing.Point(6, 10); + this.ListView_AxisPosList.MultiSelect = false; + this.ListView_AxisPosList.Name = "ListView_AxisPosList"; + this.ListView_AxisPosList.OwnerDraw = true; + this.ListView_AxisPosList.Size = new System.Drawing.Size(615, 738); + this.ListView_AxisPosList.TabIndex = 0; + this.ListView_AxisPosList.UseCompatibleStateImageBehavior = false; + this.ListView_AxisPosList.View = System.Windows.Forms.View.Details; + this.ListView_AxisPosList.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.ListView_AxisPosList_DrawColumnHeader); + this.ListView_AxisPosList.DrawSubItem += new System.Windows.Forms.DrawListViewSubItemEventHandler(this.ListView_AxisPosList_DrawSubItem); + this.ListView_AxisPosList.SelectedIndexChanged += new System.EventHandler(this.ListView_AxisPosList_SelectedIndexChanged); + // + // columnHeader1 + // + this.columnHeader1.Text = "No"; + this.columnHeader1.Width = 30; + // + // columnHeader9 + // + this.columnHeader9.Text = "EnumNo"; + this.columnHeader9.Width = 38; + // + // columnHeader2 + // + this.columnHeader2.Text = "異� 紐낆묶"; + this.columnHeader2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.columnHeader2.Width = 95; + // + // columnHeader3 + // + this.columnHeader3.Text = "�룷吏��뀡 紐낆묶"; + this.columnHeader3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.columnHeader3.Width = 125; + // + // columnHeader4 + // + this.columnHeader4.Text = "異�"; + this.columnHeader4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.columnHeader4.Width = 28; + // + // columnHeader5 + // + this.columnHeader5.Text = "IDX"; + this.columnHeader5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.columnHeader5.Width = 38; + // + // columnHeader6 + // + this.columnHeader6.Text = "�쐞移�[mm]"; + this.columnHeader6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.columnHeader6.Width = 68; + // + // columnHeader7 + // + this.columnHeader7.Text = "�냽�룄[mm/s]"; + this.columnHeader7.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.columnHeader7.Width = 75; + // + // columnHeader8 + // + this.columnHeader8.Text = "媛��냽�룄[ms]"; + this.columnHeader8.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.columnHeader8.Width = 73; + // + // lblVel3 + // + this.lblVel3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblVel3.BackColor = System.Drawing.Color.White; + this.lblVel3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblVel3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblVel3.ForeColor = System.Drawing.Color.Black; + this.lblVel3.Location = new System.Drawing.Point(1064, 568); + this.lblVel3.Margin = new System.Windows.Forms.Padding(0); + this.lblVel3.Name = "lblVel3"; + this.lblVel3.Size = new System.Drawing.Size(128, 24); + this.lblVel3.TabIndex = 176; + this.lblVel3.Text = "0.0000"; + this.lblVel3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPos3 + // + this.lblPos3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblPos3.BackColor = System.Drawing.Color.White; + this.lblPos3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPos3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblPos3.ForeColor = System.Drawing.Color.Black; + this.lblPos3.Location = new System.Drawing.Point(1064, 542); + this.lblPos3.Margin = new System.Windows.Forms.Padding(0); + this.lblPos3.Name = "lblPos3"; + this.lblPos3.Size = new System.Drawing.Size(128, 24); + this.lblPos3.TabIndex = 175; + this.lblPos3.Text = "0.0000"; + this.lblPos3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label51 + // + this.label51.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label51.BackColor = System.Drawing.Color.White; + this.label51.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label51.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label51.ForeColor = System.Drawing.Color.Black; + this.label51.Location = new System.Drawing.Point(1029, 568); + this.label51.Margin = new System.Windows.Forms.Padding(0); + this.label51.Name = "label51"; + this.label51.Size = new System.Drawing.Size(35, 24); + this.label51.TabIndex = 174; + this.label51.Text = "V"; + this.label51.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label52 + // + this.label52.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label52.BackColor = System.Drawing.Color.White; + this.label52.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label52.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label52.ForeColor = System.Drawing.Color.Black; + this.label52.Location = new System.Drawing.Point(1029, 542); + this.label52.Margin = new System.Windows.Forms.Padding(0); + this.label52.Name = "label52"; + this.label52.Size = new System.Drawing.Size(35, 24); + this.label52.TabIndex = 173; + this.label52.Text = "P"; + this.label52.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblInPos3 + // + this.lblInPos3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblInPos3.BackColor = System.Drawing.Color.White; + this.lblInPos3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblInPos3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblInPos3.ForeColor = System.Drawing.Color.Black; + this.lblInPos3.Location = new System.Drawing.Point(1029, 698); + this.lblInPos3.Margin = new System.Windows.Forms.Padding(0); + this.lblInPos3.Name = "lblInPos3"; + this.lblInPos3.Size = new System.Drawing.Size(163, 24); + this.lblInPos3.TabIndex = 172; + this.lblInPos3.Text = "IN POS"; + this.lblInPos3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblServo3 + // + this.lblServo3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblServo3.BackColor = System.Drawing.Color.White; + this.lblServo3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblServo3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblServo3.ForeColor = System.Drawing.Color.Black; + this.lblServo3.Location = new System.Drawing.Point(1029, 594); + this.lblServo3.Margin = new System.Windows.Forms.Padding(0); + this.lblServo3.Name = "lblServo3"; + this.lblServo3.Size = new System.Drawing.Size(163, 24); + this.lblServo3.TabIndex = 167; + this.lblServo3.Text = "SERVO"; + this.lblServo3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPLimit3 + // + this.lblPLimit3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblPLimit3.BackColor = System.Drawing.Color.White; + this.lblPLimit3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPLimit3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold); + this.lblPLimit3.ForeColor = System.Drawing.Color.Black; + this.lblPLimit3.Location = new System.Drawing.Point(1029, 620); + this.lblPLimit3.Margin = new System.Windows.Forms.Padding(0); + this.lblPLimit3.Name = "lblPLimit3"; + this.lblPLimit3.Size = new System.Drawing.Size(163, 24); + this.lblPLimit3.TabIndex = 168; + this.lblPLimit3.Text = "P LIMIT"; + this.lblPLimit3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblNLimit3 + // + this.lblNLimit3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblNLimit3.BackColor = System.Drawing.Color.White; + this.lblNLimit3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblNLimit3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblNLimit3.ForeColor = System.Drawing.Color.Black; + this.lblNLimit3.Location = new System.Drawing.Point(1029, 646); + this.lblNLimit3.Margin = new System.Windows.Forms.Padding(0); + this.lblNLimit3.Name = "lblNLimit3"; + this.lblNLimit3.Size = new System.Drawing.Size(163, 24); + this.lblNLimit3.TabIndex = 169; + this.lblNLimit3.Text = "N LIMIT"; + this.lblNLimit3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblFault3 + // + this.lblFault3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblFault3.BackColor = System.Drawing.Color.White; + this.lblFault3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblFault3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblFault3.ForeColor = System.Drawing.Color.Black; + this.lblFault3.Location = new System.Drawing.Point(1029, 672); + this.lblFault3.Margin = new System.Windows.Forms.Padding(0); + this.lblFault3.Name = "lblFault3"; + this.lblFault3.Size = new System.Drawing.Size(163, 24); + this.lblFault3.TabIndex = 170; + this.lblFault3.Text = "FAULT"; + this.lblFault3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblHomeComp3 + // + this.lblHomeComp3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblHomeComp3.BackColor = System.Drawing.Color.White; + this.lblHomeComp3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblHomeComp3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblHomeComp3.ForeColor = System.Drawing.Color.Black; + this.lblHomeComp3.Location = new System.Drawing.Point(1029, 724); + this.lblHomeComp3.Margin = new System.Windows.Forms.Padding(0); + this.lblHomeComp3.Name = "lblHomeComp3"; + this.lblHomeComp3.Size = new System.Drawing.Size(163, 24); + this.lblHomeComp3.TabIndex = 171; + this.lblHomeComp3.Text = "HOME COMPLETE"; + this.lblHomeComp3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblVel2 + // + this.lblVel2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblVel2.BackColor = System.Drawing.Color.White; + this.lblVel2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblVel2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblVel2.ForeColor = System.Drawing.Color.Black; + this.lblVel2.Location = new System.Drawing.Point(857, 568); + this.lblVel2.Margin = new System.Windows.Forms.Padding(0); + this.lblVel2.Name = "lblVel2"; + this.lblVel2.Size = new System.Drawing.Size(128, 24); + this.lblVel2.TabIndex = 166; + this.lblVel2.Text = "0.0000"; + this.lblVel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPos2 + // + this.lblPos2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblPos2.BackColor = System.Drawing.Color.White; + this.lblPos2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPos2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblPos2.ForeColor = System.Drawing.Color.Black; + this.lblPos2.Location = new System.Drawing.Point(857, 542); + this.lblPos2.Margin = new System.Windows.Forms.Padding(0); + this.lblPos2.Name = "lblPos2"; + this.lblPos2.Size = new System.Drawing.Size(128, 24); + this.lblPos2.TabIndex = 165; + this.lblPos2.Text = "0.0000"; + this.lblPos2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label39 + // + this.label39.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label39.BackColor = System.Drawing.Color.White; + this.label39.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label39.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label39.ForeColor = System.Drawing.Color.Black; + this.label39.Location = new System.Drawing.Point(822, 568); + this.label39.Margin = new System.Windows.Forms.Padding(0); + this.label39.Name = "label39"; + this.label39.Size = new System.Drawing.Size(35, 24); + this.label39.TabIndex = 164; + this.label39.Text = "V"; + this.label39.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label40 + // + this.label40.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label40.BackColor = System.Drawing.Color.White; + this.label40.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label40.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label40.ForeColor = System.Drawing.Color.Black; + this.label40.Location = new System.Drawing.Point(822, 542); + this.label40.Margin = new System.Windows.Forms.Padding(0); + this.label40.Name = "label40"; + this.label40.Size = new System.Drawing.Size(35, 24); + this.label40.TabIndex = 163; + this.label40.Text = "P"; + this.label40.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblInPos2 + // + this.lblInPos2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblInPos2.BackColor = System.Drawing.Color.White; + this.lblInPos2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblInPos2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblInPos2.ForeColor = System.Drawing.Color.Black; + this.lblInPos2.Location = new System.Drawing.Point(822, 698); + this.lblInPos2.Margin = new System.Windows.Forms.Padding(0); + this.lblInPos2.Name = "lblInPos2"; + this.lblInPos2.Size = new System.Drawing.Size(163, 24); + this.lblInPos2.TabIndex = 162; + this.lblInPos2.Text = "IN POS"; + this.lblInPos2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblServo2 + // + this.lblServo2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblServo2.BackColor = System.Drawing.Color.White; + this.lblServo2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblServo2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblServo2.ForeColor = System.Drawing.Color.Black; + this.lblServo2.Location = new System.Drawing.Point(822, 594); + this.lblServo2.Margin = new System.Windows.Forms.Padding(0); + this.lblServo2.Name = "lblServo2"; + this.lblServo2.Size = new System.Drawing.Size(163, 24); + this.lblServo2.TabIndex = 157; + this.lblServo2.Text = "SERVO"; + this.lblServo2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPLimit2 + // + this.lblPLimit2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblPLimit2.BackColor = System.Drawing.Color.White; + this.lblPLimit2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPLimit2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold); + this.lblPLimit2.ForeColor = System.Drawing.Color.Black; + this.lblPLimit2.Location = new System.Drawing.Point(822, 620); + this.lblPLimit2.Margin = new System.Windows.Forms.Padding(0); + this.lblPLimit2.Name = "lblPLimit2"; + this.lblPLimit2.Size = new System.Drawing.Size(163, 24); + this.lblPLimit2.TabIndex = 158; + this.lblPLimit2.Text = "P LIMIT"; + this.lblPLimit2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblNLimit2 + // + this.lblNLimit2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblNLimit2.BackColor = System.Drawing.Color.White; + this.lblNLimit2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblNLimit2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblNLimit2.ForeColor = System.Drawing.Color.Black; + this.lblNLimit2.Location = new System.Drawing.Point(822, 646); + this.lblNLimit2.Margin = new System.Windows.Forms.Padding(0); + this.lblNLimit2.Name = "lblNLimit2"; + this.lblNLimit2.Size = new System.Drawing.Size(163, 24); + this.lblNLimit2.TabIndex = 159; + this.lblNLimit2.Text = "N LIMIT"; + this.lblNLimit2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblFault2 + // + this.lblFault2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblFault2.BackColor = System.Drawing.Color.White; + this.lblFault2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblFault2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblFault2.ForeColor = System.Drawing.Color.Black; + this.lblFault2.Location = new System.Drawing.Point(822, 672); + this.lblFault2.Margin = new System.Windows.Forms.Padding(0); + this.lblFault2.Name = "lblFault2"; + this.lblFault2.Size = new System.Drawing.Size(163, 24); + this.lblFault2.TabIndex = 160; + this.lblFault2.Text = "FAULT"; + this.lblFault2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblHomeComp2 + // + this.lblHomeComp2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblHomeComp2.BackColor = System.Drawing.Color.White; + this.lblHomeComp2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblHomeComp2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblHomeComp2.ForeColor = System.Drawing.Color.Black; + this.lblHomeComp2.Location = new System.Drawing.Point(822, 724); + this.lblHomeComp2.Margin = new System.Windows.Forms.Padding(0); + this.lblHomeComp2.Name = "lblHomeComp2"; + this.lblHomeComp2.Size = new System.Drawing.Size(163, 24); + this.lblHomeComp2.TabIndex = 161; + this.lblHomeComp2.Text = "HOME COMPLETE"; + this.lblHomeComp2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblVel1 + // + this.lblVel1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblVel1.BackColor = System.Drawing.Color.White; + this.lblVel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblVel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblVel1.ForeColor = System.Drawing.Color.Black; + this.lblVel1.Location = new System.Drawing.Point(659, 568); + this.lblVel1.Margin = new System.Windows.Forms.Padding(0); + this.lblVel1.Name = "lblVel1"; + this.lblVel1.Size = new System.Drawing.Size(128, 24); + this.lblVel1.TabIndex = 156; + this.lblVel1.Text = "0.0000"; + this.lblVel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPos1 + // + this.lblPos1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblPos1.BackColor = System.Drawing.Color.White; + this.lblPos1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPos1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblPos1.ForeColor = System.Drawing.Color.Black; + this.lblPos1.Location = new System.Drawing.Point(659, 542); + this.lblPos1.Margin = new System.Windows.Forms.Padding(0); + this.lblPos1.Name = "lblPos1"; + this.lblPos1.Size = new System.Drawing.Size(128, 24); + this.lblPos1.TabIndex = 155; + this.lblPos1.Text = "0.0000"; + this.lblPos1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label30 + // + this.label30.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label30.BackColor = System.Drawing.Color.White; + this.label30.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label30.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label30.ForeColor = System.Drawing.Color.Black; + this.label30.Location = new System.Drawing.Point(624, 568); + this.label30.Margin = new System.Windows.Forms.Padding(0); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(35, 24); + this.label30.TabIndex = 154; + this.label30.Text = "V"; + this.label30.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label27 + // + this.label27.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label27.BackColor = System.Drawing.Color.White; + this.label27.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label27.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label27.ForeColor = System.Drawing.Color.Black; + this.label27.Location = new System.Drawing.Point(624, 542); + this.label27.Margin = new System.Windows.Forms.Padding(0); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(35, 24); + this.label27.TabIndex = 153; + this.label27.Text = "P"; + this.label27.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label25 + // + this.label25.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label25.BackColor = System.Drawing.Color.YellowGreen; + this.label25.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label25.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label25.Location = new System.Drawing.Point(1029, 518); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(163, 24); + this.label25.TabIndex = 151; + this.label25.Text = "T AXIS"; + this.label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label24 + // + this.label24.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label24.BackColor = System.Drawing.Color.YellowGreen; + this.label24.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label24.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label24.Location = new System.Drawing.Point(822, 518); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(163, 24); + this.label24.TabIndex = 150; + this.label24.Text = "X AXIS"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label13 + // + this.label13.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label13.BackColor = System.Drawing.Color.YellowGreen; + this.label13.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label13.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label13.Location = new System.Drawing.Point(624, 518); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(163, 24); + this.label13.TabIndex = 149; + this.label13.Text = "Y AXIS"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblInPos1 + // + this.lblInPos1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblInPos1.BackColor = System.Drawing.Color.White; + this.lblInPos1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblInPos1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblInPos1.ForeColor = System.Drawing.Color.Black; + this.lblInPos1.Location = new System.Drawing.Point(624, 698); + this.lblInPos1.Margin = new System.Windows.Forms.Padding(0); + this.lblInPos1.Name = "lblInPos1"; + this.lblInPos1.Size = new System.Drawing.Size(163, 24); + this.lblInPos1.TabIndex = 148; + this.lblInPos1.Text = "IN POS"; + this.lblInPos1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblServo1 + // + this.lblServo1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblServo1.BackColor = System.Drawing.Color.White; + this.lblServo1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblServo1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblServo1.ForeColor = System.Drawing.Color.Black; + this.lblServo1.Location = new System.Drawing.Point(624, 594); + this.lblServo1.Margin = new System.Windows.Forms.Padding(0); + this.lblServo1.Name = "lblServo1"; + this.lblServo1.Size = new System.Drawing.Size(163, 24); + this.lblServo1.TabIndex = 143; + this.lblServo1.Text = "SERVO"; + this.lblServo1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPLimit1 + // + this.lblPLimit1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblPLimit1.BackColor = System.Drawing.Color.White; + this.lblPLimit1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPLimit1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold); + this.lblPLimit1.ForeColor = System.Drawing.Color.Black; + this.lblPLimit1.Location = new System.Drawing.Point(624, 620); + this.lblPLimit1.Margin = new System.Windows.Forms.Padding(0); + this.lblPLimit1.Name = "lblPLimit1"; + this.lblPLimit1.Size = new System.Drawing.Size(163, 24); + this.lblPLimit1.TabIndex = 144; + this.lblPLimit1.Text = "P LIMIT"; + this.lblPLimit1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblNLimit1 + // + this.lblNLimit1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblNLimit1.BackColor = System.Drawing.Color.White; + this.lblNLimit1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblNLimit1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblNLimit1.ForeColor = System.Drawing.Color.Black; + this.lblNLimit1.Location = new System.Drawing.Point(624, 646); + this.lblNLimit1.Margin = new System.Windows.Forms.Padding(0); + this.lblNLimit1.Name = "lblNLimit1"; + this.lblNLimit1.Size = new System.Drawing.Size(163, 24); + this.lblNLimit1.TabIndex = 145; + this.lblNLimit1.Text = "N LIMIT"; + this.lblNLimit1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblFault1 + // + this.lblFault1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblFault1.BackColor = System.Drawing.Color.White; + this.lblFault1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblFault1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblFault1.ForeColor = System.Drawing.Color.Black; + this.lblFault1.Location = new System.Drawing.Point(624, 672); + this.lblFault1.Margin = new System.Windows.Forms.Padding(0); + this.lblFault1.Name = "lblFault1"; + this.lblFault1.Size = new System.Drawing.Size(163, 24); + this.lblFault1.TabIndex = 146; + this.lblFault1.Text = "FAULT"; + this.lblFault1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblHomeComp1 + // + this.lblHomeComp1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lblHomeComp1.BackColor = System.Drawing.Color.White; + this.lblHomeComp1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblHomeComp1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblHomeComp1.ForeColor = System.Drawing.Color.Black; + this.lblHomeComp1.Location = new System.Drawing.Point(624, 724); + this.lblHomeComp1.Margin = new System.Windows.Forms.Padding(0); + this.lblHomeComp1.Name = "lblHomeComp1"; + this.lblHomeComp1.Size = new System.Drawing.Size(163, 24); + this.lblHomeComp1.TabIndex = 147; + this.lblHomeComp1.Text = "HOME COMPLETE"; + this.lblHomeComp1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btnReset + // + this.btnReset.Anchor = System.Windows.Forms.AnchorStyles.None; + this.btnReset.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnReset.Location = new System.Drawing.Point(627, 322); + this.btnReset.Name = "btnReset"; + this.btnReset.Size = new System.Drawing.Size(124, 58); + this.btnReset.TabIndex = 142; + this.btnReset.Text = "Reset"; + this.btnReset.UseVisualStyleBackColor = true; + this.btnReset.Click += new System.EventHandler(this.btnReset_Click); + // + // Label_LED_InPos + // + this.Label_LED_InPos.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_LED_InPos.BackColor = System.Drawing.Color.White; + this.Label_LED_InPos.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.Label_LED_InPos.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Label_LED_InPos.ForeColor = System.Drawing.Color.Black; + this.Label_LED_InPos.Location = new System.Drawing.Point(1150, 135); + this.Label_LED_InPos.Margin = new System.Windows.Forms.Padding(0); + this.Label_LED_InPos.Name = "Label_LED_InPos"; + this.Label_LED_InPos.Size = new System.Drawing.Size(21, 24); + this.Label_LED_InPos.TabIndex = 141; + this.Label_LED_InPos.Text = "I"; + this.Label_LED_InPos.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Set_Control_Acc + // + this.Set_Control_Acc.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Set_Control_Acc.BackColor = System.Drawing.SystemColors.Info; + this.Set_Control_Acc.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Set_Control_Acc.Location = new System.Drawing.Point(992, 290); + this.Set_Control_Acc.Name = "Set_Control_Acc"; + this.Set_Control_Acc.Size = new System.Drawing.Size(108, 21); + this.Set_Control_Acc.TabIndex = 139; + this.Set_Control_Acc.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.Set_Control_Acc.Click += new System.EventHandler(this.Set_Control_Acc_Click); + // + // Btn_Jog_CCW + // + this.Btn_Jog_CCW.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Btn_Jog_CCW.BackColor = System.Drawing.SystemColors.ControlDark; + this.Btn_Jog_CCW.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Btn_Jog_CCW.Location = new System.Drawing.Point(1105, 319); + this.Btn_Jog_CCW.Name = "Btn_Jog_CCW"; + this.Btn_Jog_CCW.Size = new System.Drawing.Size(90, 62); + this.Btn_Jog_CCW.TabIndex = 128; + this.Btn_Jog_CCW.Text = "-"; + this.Btn_Jog_CCW.UseVisualStyleBackColor = false; + this.Btn_Jog_CCW.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Btn_Jog_CCW_MouseDown); + this.Btn_Jog_CCW.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Btn_Jog_CCW_MouseUp); + // + // Btn_Jog_CW + // + this.Btn_Jog_CW.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Btn_Jog_CW.BackColor = System.Drawing.SystemColors.ControlDark; + this.Btn_Jog_CW.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Btn_Jog_CW.Location = new System.Drawing.Point(1105, 254); + this.Btn_Jog_CW.Name = "Btn_Jog_CW"; + this.Btn_Jog_CW.Size = new System.Drawing.Size(90, 62); + this.Btn_Jog_CW.TabIndex = 129; + this.Btn_Jog_CW.Text = "+"; + this.Btn_Jog_CW.UseVisualStyleBackColor = false; + this.Btn_Jog_CW.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Btn_Jog_CW_MouseDown); + this.Btn_Jog_CW.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Btn_Jog_CW_MouseUp); + // + // Btn_Jog_Stop + // + this.Btn_Jog_Stop.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Btn_Jog_Stop.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Btn_Jog_Stop.Location = new System.Drawing.Point(1015, 321); + this.Btn_Jog_Stop.Name = "Btn_Jog_Stop"; + this.Btn_Jog_Stop.Size = new System.Drawing.Size(87, 59); + this.Btn_Jog_Stop.TabIndex = 130; + this.Btn_Jog_Stop.Text = "�젙吏�"; + this.Btn_Jog_Stop.UseVisualStyleBackColor = true; + this.Btn_Jog_Stop.Click += new System.EventHandler(this.Btn_Jog_Stop_Click); + // + // Btn_Move_Rel_CCW + // + this.Btn_Move_Rel_CCW.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Btn_Move_Rel_CCW.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Btn_Move_Rel_CCW.Location = new System.Drawing.Point(928, 321); + this.Btn_Move_Rel_CCW.Name = "Btn_Move_Rel_CCW"; + this.Btn_Move_Rel_CCW.Size = new System.Drawing.Size(87, 59); + this.Btn_Move_Rel_CCW.TabIndex = 131; + this.Btn_Move_Rel_CCW.Text = "�긽���씠�룞 -"; + this.Btn_Move_Rel_CCW.UseVisualStyleBackColor = true; + this.Btn_Move_Rel_CCW.Click += new System.EventHandler(this.Btn_Move_Rel_CCW_Click); + // + // Btn_Move_Rel_CW + // + this.Btn_Move_Rel_CW.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Btn_Move_Rel_CW.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Btn_Move_Rel_CW.Location = new System.Drawing.Point(841, 321); + this.Btn_Move_Rel_CW.Name = "Btn_Move_Rel_CW"; + this.Btn_Move_Rel_CW.Size = new System.Drawing.Size(87, 59); + this.Btn_Move_Rel_CW.TabIndex = 132; + this.Btn_Move_Rel_CW.Text = "�긽���씠�룞 +"; + this.Btn_Move_Rel_CW.UseVisualStyleBackColor = true; + this.Btn_Move_Rel_CW.Click += new System.EventHandler(this.Btn_Move_Rel_CW_Click); + // + // BtnAllStop + // + this.BtnAllStop.Anchor = System.Windows.Forms.AnchorStyles.None; + this.BtnAllStop.BackColor = System.Drawing.Color.PaleTurquoise; + this.BtnAllStop.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.BtnAllStop.Location = new System.Drawing.Point(915, 420); + this.BtnAllStop.Name = "BtnAllStop"; + this.BtnAllStop.Size = new System.Drawing.Size(138, 52); + this.BtnAllStop.TabIndex = 136; + this.BtnAllStop.Text = "[#1] All Stop"; + this.BtnAllStop.UseVisualStyleBackColor = false; + this.BtnAllStop.Click += new System.EventHandler(this.BtnAllStop_Click); + // + // BtnAllHome + // + this.BtnAllHome.Anchor = System.Windows.Forms.AnchorStyles.None; + this.BtnAllHome.BackColor = System.Drawing.Color.PaleTurquoise; + this.BtnAllHome.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.BtnAllHome.Location = new System.Drawing.Point(1057, 420); + this.BtnAllHome.Name = "BtnAllHome"; + this.BtnAllHome.Size = new System.Drawing.Size(138, 52); + this.BtnAllHome.TabIndex = 135; + this.BtnAllHome.Text = "[#1] All Home"; + this.BtnAllHome.UseVisualStyleBackColor = false; + this.BtnAllHome.Visible = false; + this.BtnAllHome.Click += new System.EventHandler(this.BtnAllHome_Click); + // + // BtnAllServoOFF + // + this.BtnAllServoOFF.Anchor = System.Windows.Forms.AnchorStyles.None; + this.BtnAllServoOFF.BackColor = System.Drawing.Color.PaleTurquoise; + this.BtnAllServoOFF.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.BtnAllServoOFF.Location = new System.Drawing.Point(771, 420); + this.BtnAllServoOFF.Name = "BtnAllServoOFF"; + this.BtnAllServoOFF.Size = new System.Drawing.Size(138, 52); + this.BtnAllServoOFF.TabIndex = 134; + this.BtnAllServoOFF.Text = "[#1] All Servo Off"; + this.BtnAllServoOFF.UseVisualStyleBackColor = false; + this.BtnAllServoOFF.Click += new System.EventHandler(this.BtnAllServoOFF_Click); + // + // BtnAllServoON + // + this.BtnAllServoON.Anchor = System.Windows.Forms.AnchorStyles.None; + this.BtnAllServoON.BackColor = System.Drawing.Color.PaleTurquoise; + this.BtnAllServoON.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.BtnAllServoON.Location = new System.Drawing.Point(627, 420); + this.BtnAllServoON.Name = "BtnAllServoON"; + this.BtnAllServoON.Size = new System.Drawing.Size(138, 52); + this.BtnAllServoON.TabIndex = 133; + this.BtnAllServoON.Text = "[#1] All Servo On"; + this.BtnAllServoON.UseVisualStyleBackColor = false; + this.BtnAllServoON.Click += new System.EventHandler(this.BtnAllServoON_Click); + // + // Btn_Move_Abs + // + this.Btn_Move_Abs.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Btn_Move_Abs.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Btn_Move_Abs.Location = new System.Drawing.Point(754, 321); + this.Btn_Move_Abs.Name = "Btn_Move_Abs"; + this.Btn_Move_Abs.Size = new System.Drawing.Size(87, 59); + this.Btn_Move_Abs.TabIndex = 137; + this.Btn_Move_Abs.Text = "�젅���씠�룞"; + this.Btn_Move_Abs.UseVisualStyleBackColor = true; + this.Btn_Move_Abs.Click += new System.EventHandler(this.Btn_Move_Abs_Click); + // + // Btn_Home + // + this.Btn_Home.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Btn_Home.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Btn_Home.Location = new System.Drawing.Point(627, 254); + this.Btn_Home.Name = "Btn_Home"; + this.Btn_Home.Size = new System.Drawing.Size(124, 61); + this.Btn_Home.TabIndex = 138; + this.Btn_Home.Text = "HOME"; + this.Btn_Home.UseVisualStyleBackColor = true; + this.Btn_Home.Click += new System.EventHandler(this.Btn_Home_Click); + // + // Btn_PositionSet + // + this.Btn_PositionSet.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Btn_PositionSet.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Btn_PositionSet.Location = new System.Drawing.Point(885, 159); + this.Btn_PositionSet.Name = "Btn_PositionSet"; + this.Btn_PositionSet.Size = new System.Drawing.Size(75, 59); + this.Btn_PositionSet.TabIndex = 125; + this.Btn_PositionSet.Text = "�쐞移� �꽕�젙"; + this.Btn_PositionSet.UseVisualStyleBackColor = true; + this.Btn_PositionSet.Click += new System.EventHandler(this.Btn_PositionSet_Click); + // + // Btn_ServoOnOff + // + this.Btn_ServoOnOff.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Btn_ServoOnOff.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Btn_ServoOnOff.Location = new System.Drawing.Point(1115, 160); + this.Btn_ServoOnOff.Name = "Btn_ServoOnOff"; + this.Btn_ServoOnOff.Size = new System.Drawing.Size(80, 59); + this.Btn_ServoOnOff.TabIndex = 126; + this.Btn_ServoOnOff.Text = "Servo On/Off"; + this.Btn_ServoOnOff.UseVisualStyleBackColor = true; + this.Btn_ServoOnOff.Click += new System.EventHandler(this.Btn_ServoOnOff_Click); + // + // Btn_PositionMove + // + this.Btn_PositionMove.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Btn_PositionMove.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Btn_PositionMove.Location = new System.Drawing.Point(809, 159); + this.Btn_PositionMove.Name = "Btn_PositionMove"; + this.Btn_PositionMove.Size = new System.Drawing.Size(75, 59); + this.Btn_PositionMove.TabIndex = 127; + this.Btn_PositionMove.Text = "���옣 �쐞移� �씠�룞"; + this.Btn_PositionMove.UseVisualStyleBackColor = true; + this.Btn_PositionMove.Click += new System.EventHandler(this.Btn_PositionMove_Click); + // + // Label_Select_Axis_PosVal + // + this.Label_Select_Axis_PosVal.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_Select_Axis_PosVal.BackColor = System.Drawing.Color.Black; + this.Label_Select_Axis_PosVal.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.Label_Select_Axis_PosVal.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label_Select_Axis_PosVal.ForeColor = System.Drawing.Color.Yellow; + this.Label_Select_Axis_PosVal.Location = new System.Drawing.Point(690, 190); + this.Label_Select_Axis_PosVal.Name = "Label_Select_Axis_PosVal"; + this.Label_Select_Axis_PosVal.Size = new System.Drawing.Size(118, 27); + this.Label_Select_Axis_PosVal.TabIndex = 123; + this.Label_Select_Axis_PosVal.Text = " "; + this.Label_Select_Axis_PosVal.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label5 + // + this.label5.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label5.BackColor = System.Drawing.Color.DarkGray; + this.label5.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label5.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label5.Location = new System.Drawing.Point(627, 190); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(62, 27); + this.label5.TabIndex = 124; + this.label5.Text = "�쐞移� [mm]"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label_Select_Axis_PosName + // + this.Label_Select_Axis_PosName.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_Select_Axis_PosName.BackColor = System.Drawing.Color.Black; + this.Label_Select_Axis_PosName.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.Label_Select_Axis_PosName.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label_Select_Axis_PosName.ForeColor = System.Drawing.Color.Yellow; + this.Label_Select_Axis_PosName.Location = new System.Drawing.Point(690, 160); + this.Label_Select_Axis_PosName.Name = "Label_Select_Axis_PosName"; + this.Label_Select_Axis_PosName.Size = new System.Drawing.Size(118, 27); + this.Label_Select_Axis_PosName.TabIndex = 121; + this.Label_Select_Axis_PosName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label6.BackColor = System.Drawing.Color.DarkGray; + this.label6.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label6.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(627, 160); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(62, 27); + this.label6.TabIndex = 122; + this.label6.Text = "異� �젙蹂�"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label4.BackColor = System.Drawing.Color.Gold; + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label4.Font = new System.Drawing.Font("Arial", 9F); + this.label4.Location = new System.Drawing.Point(627, 135); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(424, 24); + this.label4.TabIndex = 120; + this.label4.Text = " �뿇 媛쒕퀎 紐⑦꽣 議곗옉 諛� �쐞移섏꽕�젙"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // Label_LED_ServoOn + // + this.Label_LED_ServoOn.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_LED_ServoOn.BackColor = System.Drawing.Color.White; + this.Label_LED_ServoOn.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.Label_LED_ServoOn.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Label_LED_ServoOn.ForeColor = System.Drawing.Color.Black; + this.Label_LED_ServoOn.Location = new System.Drawing.Point(1054, 135); + this.Label_LED_ServoOn.Margin = new System.Windows.Forms.Padding(0); + this.Label_LED_ServoOn.Name = "Label_LED_ServoOn"; + this.Label_LED_ServoOn.Size = new System.Drawing.Size(21, 24); + this.Label_LED_ServoOn.TabIndex = 115; + this.Label_LED_ServoOn.Text = "S"; + this.Label_LED_ServoOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label_LED_PlusLimit + // + this.Label_LED_PlusLimit.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_LED_PlusLimit.BackColor = System.Drawing.Color.White; + this.Label_LED_PlusLimit.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.Label_LED_PlusLimit.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold); + this.Label_LED_PlusLimit.ForeColor = System.Drawing.Color.Black; + this.Label_LED_PlusLimit.Location = new System.Drawing.Point(1078, 135); + this.Label_LED_PlusLimit.Margin = new System.Windows.Forms.Padding(0); + this.Label_LED_PlusLimit.Name = "Label_LED_PlusLimit"; + this.Label_LED_PlusLimit.Size = new System.Drawing.Size(21, 24); + this.Label_LED_PlusLimit.TabIndex = 116; + this.Label_LED_PlusLimit.Text = "P"; + this.Label_LED_PlusLimit.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label_LED_MinusLimit + // + this.Label_LED_MinusLimit.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_LED_MinusLimit.BackColor = System.Drawing.Color.White; + this.Label_LED_MinusLimit.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.Label_LED_MinusLimit.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Label_LED_MinusLimit.ForeColor = System.Drawing.Color.Black; + this.Label_LED_MinusLimit.Location = new System.Drawing.Point(1102, 135); + this.Label_LED_MinusLimit.Margin = new System.Windows.Forms.Padding(0); + this.Label_LED_MinusLimit.Name = "Label_LED_MinusLimit"; + this.Label_LED_MinusLimit.Size = new System.Drawing.Size(21, 24); + this.Label_LED_MinusLimit.TabIndex = 117; + this.Label_LED_MinusLimit.Text = "N"; + this.Label_LED_MinusLimit.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label_LED_FlowingError + // + this.Label_LED_FlowingError.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_LED_FlowingError.BackColor = System.Drawing.Color.White; + this.Label_LED_FlowingError.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.Label_LED_FlowingError.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Label_LED_FlowingError.ForeColor = System.Drawing.Color.Black; + this.Label_LED_FlowingError.Location = new System.Drawing.Point(1126, 135); + this.Label_LED_FlowingError.Margin = new System.Windows.Forms.Padding(0); + this.Label_LED_FlowingError.Name = "Label_LED_FlowingError"; + this.Label_LED_FlowingError.Size = new System.Drawing.Size(21, 24); + this.Label_LED_FlowingError.TabIndex = 118; + this.Label_LED_FlowingError.Text = "F"; + this.Label_LED_FlowingError.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label_LED_Home + // + this.Label_LED_Home.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_LED_Home.BackColor = System.Drawing.Color.White; + this.Label_LED_Home.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.Label_LED_Home.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Label_LED_Home.ForeColor = System.Drawing.Color.Black; + this.Label_LED_Home.Location = new System.Drawing.Point(1174, 135); + this.Label_LED_Home.Margin = new System.Windows.Forms.Padding(0); + this.Label_LED_Home.Name = "Label_LED_Home"; + this.Label_LED_Home.Size = new System.Drawing.Size(21, 24); + this.Label_LED_Home.TabIndex = 119; + this.Label_LED_Home.Text = "H"; + this.Label_LED_Home.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbCurPos + // + this.tbCurPos.Anchor = System.Windows.Forms.AnchorStyles.None; + this.tbCurPos.Enabled = false; + this.tbCurPos.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbCurPos.Location = new System.Drawing.Point(1041, 194); + this.tbCurPos.Name = "tbCurPos"; + this.tbCurPos.Size = new System.Drawing.Size(70, 21); + this.tbCurPos.TabIndex = 108; + this.tbCurPos.Text = "0"; + this.tbCurPos.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // Set_Control_Pos + // + this.Set_Control_Pos.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Set_Control_Pos.BackColor = System.Drawing.SystemColors.Info; + this.Set_Control_Pos.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Set_Control_Pos.Location = new System.Drawing.Point(756, 290); + this.Set_Control_Pos.Name = "Set_Control_Pos"; + this.Set_Control_Pos.Size = new System.Drawing.Size(108, 21); + this.Set_Control_Pos.TabIndex = 109; + this.Set_Control_Pos.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.Set_Control_Pos.Click += new System.EventHandler(this.Set_Control_Pos_Click); + // + // Set_Control_Speed + // + this.Set_Control_Speed.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Set_Control_Speed.BackColor = System.Drawing.SystemColors.Info; + this.Set_Control_Speed.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Set_Control_Speed.Location = new System.Drawing.Point(873, 290); + this.Set_Control_Speed.Name = "Set_Control_Speed"; + this.Set_Control_Speed.Size = new System.Drawing.Size(108, 21); + this.Set_Control_Speed.TabIndex = 110; + this.Set_Control_Speed.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.Set_Control_Speed.Click += new System.EventHandler(this.Set_Control_Speed_Click); + // + // tbCurSpeed + // + this.tbCurSpeed.Anchor = System.Windows.Forms.AnchorStyles.None; + this.tbCurSpeed.Enabled = false; + this.tbCurSpeed.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbCurSpeed.Location = new System.Drawing.Point(965, 194); + this.tbCurSpeed.Name = "tbCurSpeed"; + this.tbCurSpeed.Size = new System.Drawing.Size(70, 21); + this.tbCurSpeed.TabIndex = 114; + this.tbCurSpeed.Text = "0"; + this.tbCurSpeed.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // Set_Select_AccelVal + // + this.Set_Select_AccelVal.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Set_Select_AccelVal.BackColor = System.Drawing.SystemColors.Info; + this.Set_Select_AccelVal.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Set_Select_AccelVal.Location = new System.Drawing.Point(1089, 98); + this.Set_Select_AccelVal.Name = "Set_Select_AccelVal"; + this.Set_Select_AccelVal.Size = new System.Drawing.Size(106, 21); + this.Set_Select_AccelVal.TabIndex = 112; + this.Set_Select_AccelVal.Tag = "ACCEL"; + this.Set_Select_AccelVal.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.Set_Select_AccelVal.Click += new System.EventHandler(this.Set_Select_AccelVal_Click); + // + // Set_Select_SpeedVal + // + this.Set_Select_SpeedVal.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Set_Select_SpeedVal.BackColor = System.Drawing.SystemColors.Info; + this.Set_Select_SpeedVal.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Set_Select_SpeedVal.Location = new System.Drawing.Point(895, 98); + this.Set_Select_SpeedVal.Name = "Set_Select_SpeedVal"; + this.Set_Select_SpeedVal.Size = new System.Drawing.Size(93, 21); + this.Set_Select_SpeedVal.TabIndex = 113; + this.Set_Select_SpeedVal.Tag = "SPEED"; + this.Set_Select_SpeedVal.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.Set_Select_SpeedVal.Click += new System.EventHandler(this.Set_Select_SpeedVal_Click); + // + // Set_Select_PosVal + // + this.Set_Select_PosVal.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Set_Select_PosVal.BackColor = System.Drawing.SystemColors.Info; + this.Set_Select_PosVal.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Set_Select_PosVal.Location = new System.Drawing.Point(712, 98); + this.Set_Select_PosVal.Name = "Set_Select_PosVal"; + this.Set_Select_PosVal.Size = new System.Drawing.Size(93, 21); + this.Set_Select_PosVal.TabIndex = 111; + this.Set_Select_PosVal.Tag = "POSITION"; + this.Set_Select_PosVal.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.Set_Select_PosVal.Click += new System.EventHandler(this.Set_Select_PosVal_Click); + // + // label3 + // + this.label3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label3.BackColor = System.Drawing.Color.DarkGray; + this.label3.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(993, 94); + this.label3.Margin = new System.Windows.Forms.Padding(0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(202, 28); + this.label3.TabIndex = 93; + this.label3.Text = " 媛��냽�룄 [ms]"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label2 + // + this.label2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label2.BackColor = System.Drawing.Color.DarkGray; + this.label2.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.Location = new System.Drawing.Point(810, 94); + this.label2.Margin = new System.Windows.Forms.Padding(0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(178, 28); + this.label2.TabIndex = 96; + this.label2.Text = " �냽�룄 [mm/s]"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label1 + // + this.label1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label1.BackColor = System.Drawing.Color.DarkGray; + this.label1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(627, 94); + this.label1.Margin = new System.Windows.Forms.Padding(0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(178, 28); + this.label1.TabIndex = 94; + this.label1.Text = " �쐞移� [mm]"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label17 + // + this.label17.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label17.BackColor = System.Drawing.Color.DarkGray; + this.label17.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label17.Location = new System.Drawing.Point(627, 34); + this.label17.Margin = new System.Windows.Forms.Padding(0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(178, 28); + this.label17.TabIndex = 95; + this.label17.Text = "異� 紐낆묶"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label_CurrentInfo_AxisName + // + this.Label_CurrentInfo_AxisName.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_CurrentInfo_AxisName.BackColor = System.Drawing.Color.Gainsboro; + this.Label_CurrentInfo_AxisName.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label_CurrentInfo_AxisName.Location = new System.Drawing.Point(627, 64); + this.Label_CurrentInfo_AxisName.Margin = new System.Windows.Forms.Padding(0); + this.Label_CurrentInfo_AxisName.Name = "Label_CurrentInfo_AxisName"; + this.Label_CurrentInfo_AxisName.Size = new System.Drawing.Size(178, 28); + this.Label_CurrentInfo_AxisName.TabIndex = 97; + this.Label_CurrentInfo_AxisName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label18 + // + this.label18.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label18.BackColor = System.Drawing.Color.DarkGray; + this.label18.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label18.Location = new System.Drawing.Point(810, 34); + this.label18.Margin = new System.Windows.Forms.Padding(0); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(178, 28); + this.label18.TabIndex = 98; + this.label18.Text = "�룷吏��뀡 紐낆묶"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label_CurrentInfo_PositionName + // + this.Label_CurrentInfo_PositionName.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_CurrentInfo_PositionName.BackColor = System.Drawing.Color.Gainsboro; + this.Label_CurrentInfo_PositionName.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label_CurrentInfo_PositionName.Location = new System.Drawing.Point(810, 64); + this.Label_CurrentInfo_PositionName.Margin = new System.Windows.Forms.Padding(0); + this.Label_CurrentInfo_PositionName.Name = "Label_CurrentInfo_PositionName"; + this.Label_CurrentInfo_PositionName.Size = new System.Drawing.Size(178, 28); + this.Label_CurrentInfo_PositionName.TabIndex = 99; + this.Label_CurrentInfo_PositionName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label28 + // + this.label28.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label28.BackColor = System.Drawing.Color.DarkGray; + this.label28.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label28.Location = new System.Drawing.Point(993, 34); + this.label28.Margin = new System.Windows.Forms.Padding(0); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(88, 28); + this.label28.TabIndex = 100; + this.label28.Text = "異� 踰덊샇"; + this.label28.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label29 + // + this.label29.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label29.BackColor = System.Drawing.Color.DarkGray; + this.label29.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label29.Location = new System.Drawing.Point(1086, 34); + this.label29.Margin = new System.Windows.Forms.Padding(0); + this.label29.Name = "label29"; + this.label29.Size = new System.Drawing.Size(109, 28); + this.label29.TabIndex = 101; + this.label29.Text = "�쐞移� �씤�뜳�뒪"; + this.label29.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label8.BackColor = System.Drawing.Color.Gainsboro; + this.label8.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label8.Location = new System.Drawing.Point(1039, 160); + this.label8.Margin = new System.Windows.Forms.Padding(0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(72, 59); + this.label8.TabIndex = 106; + this.label8.Text = "\r\n�쁽�옱 �쐞移�"; + this.label8.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label11 + // + this.label11.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label11.BackColor = System.Drawing.Color.Gainsboro; + this.label11.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label11.Location = new System.Drawing.Point(754, 254); + this.label11.Margin = new System.Windows.Forms.Padding(0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(109, 65); + this.label11.TabIndex = 105; + this.label11.Text = "\r\n�쐞移� [mm]"; + this.label11.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label10 + // + this.label10.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label10.BackColor = System.Drawing.Color.Gainsboro; + this.label10.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label10.Location = new System.Drawing.Point(871, 254); + this.label10.Margin = new System.Windows.Forms.Padding(0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(109, 65); + this.label10.TabIndex = 102; + this.label10.Text = "\r\n�냽�룄 [mm/s]"; + this.label10.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label7 + // + this.label7.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label7.BackColor = System.Drawing.Color.Gainsboro; + this.label7.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label7.Location = new System.Drawing.Point(962, 160); + this.label7.Margin = new System.Windows.Forms.Padding(0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(72, 59); + this.label7.TabIndex = 103; + this.label7.Text = "\r\n�쁽�옱 �냽�룄"; + this.label7.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // Label_CurrentInfo_AxisNo + // + this.Label_CurrentInfo_AxisNo.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_CurrentInfo_AxisNo.BackColor = System.Drawing.Color.Gainsboro; + this.Label_CurrentInfo_AxisNo.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label_CurrentInfo_AxisNo.Location = new System.Drawing.Point(993, 64); + this.Label_CurrentInfo_AxisNo.Margin = new System.Windows.Forms.Padding(0); + this.Label_CurrentInfo_AxisNo.Name = "Label_CurrentInfo_AxisNo"; + this.Label_CurrentInfo_AxisNo.Size = new System.Drawing.Size(88, 28); + this.Label_CurrentInfo_AxisNo.TabIndex = 104; + this.Label_CurrentInfo_AxisNo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Label_CurrentInfo_PosIndex + // + this.Label_CurrentInfo_PosIndex.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_CurrentInfo_PosIndex.BackColor = System.Drawing.Color.Gainsboro; + this.Label_CurrentInfo_PosIndex.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label_CurrentInfo_PosIndex.Location = new System.Drawing.Point(1086, 64); + this.Label_CurrentInfo_PosIndex.Margin = new System.Windows.Forms.Padding(0); + this.Label_CurrentInfo_PosIndex.Name = "Label_CurrentInfo_PosIndex"; + this.Label_CurrentInfo_PosIndex.Size = new System.Drawing.Size(109, 28); + this.Label_CurrentInfo_PosIndex.TabIndex = 107; + this.Label_CurrentInfo_PosIndex.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label12 + // + this.label12.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label12.BackColor = System.Drawing.Color.Gold; + this.label12.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label12.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label12.Location = new System.Drawing.Point(624, 491); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(568, 24); + this.label12.TabIndex = 91; + this.label12.Text = " �뿇 異� �긽�깭 �젙蹂�"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label15 + // + this.label15.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label15.BackColor = System.Drawing.Color.Gold; + this.label15.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label15.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label15.Location = new System.Drawing.Point(627, 393); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(568, 24); + this.label15.TabIndex = 90; + this.label15.Text = " �뿇 �쟾泥� 紐⑦꽣 議곗옉 (Chamber #1, #2)"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label9 + // + this.label9.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label9.BackColor = System.Drawing.Color.Gold; + this.label9.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label9.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label9.Location = new System.Drawing.Point(627, 229); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(568, 24); + this.label9.TabIndex = 89; + this.label9.Text = " �뿇 議곌렇 �쐞移� �씠�룞"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // Label_Subject_Current + // + this.Label_Subject_Current.Anchor = System.Windows.Forms.AnchorStyles.None; + this.Label_Subject_Current.BackColor = System.Drawing.Color.Gold; + this.Label_Subject_Current.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.Label_Subject_Current.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label_Subject_Current.Location = new System.Drawing.Point(627, 10); + this.Label_Subject_Current.Name = "Label_Subject_Current"; + this.Label_Subject_Current.Size = new System.Drawing.Size(568, 24); + this.Label_Subject_Current.TabIndex = 92; + this.Label_Subject_Current.Text = " �뿇 �꽑�깮�맂 �룷吏��뀡�쓽 �쁽�옱 �젙蹂�"; + this.Label_Subject_Current.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label16 + // + this.label16.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label16.BackColor = System.Drawing.Color.Gainsboro; + this.label16.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label16.Location = new System.Drawing.Point(990, 254); + this.label16.Margin = new System.Windows.Forms.Padding(0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(109, 65); + this.label16.TabIndex = 140; + this.label16.Text = "\r\n媛��냽�룄 [ms]\r\n"; + this.label16.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.btn_PiLaserView); + this.groupBox1.Controls.Add(this.btn_PreAlign); + this.groupBox1.Controls.Add(this.btn_Robot); + this.groupBox1.Controls.Add(this.btn_VisionView); + this.groupBox1.Controls.Add(this.btn_ChillerView); + this.groupBox1.Controls.Add(this.btn_PowerMeterView); + this.groupBox1.Controls.Add(this.btn_Attenuator); + this.groupBox1.Controls.Add(this.btn_ScannerView); + this.groupBox1.Location = new System.Drawing.Point(1224, 10); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(512, 125); + this.groupBox1.TabIndex = 177; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Module"; + // + // btn_PiLaserView + // + this.btn_PiLaserView.Location = new System.Drawing.Point(6, 71); + this.btn_PiLaserView.Name = "btn_PiLaserView"; + this.btn_PiLaserView.Size = new System.Drawing.Size(119, 45); + this.btn_PiLaserView.TabIndex = 1; + this.btn_PiLaserView.Text = "UV Laser"; + this.btn_PiLaserView.UseVisualStyleBackColor = true; + this.btn_PiLaserView.Click += new System.EventHandler(this.btn_PiLaserView_Click); + // + // btn_PreAlign + // + this.btn_PreAlign.Location = new System.Drawing.Point(381, 20); + this.btn_PreAlign.Name = "btn_PreAlign"; + this.btn_PreAlign.Size = new System.Drawing.Size(119, 45); + this.btn_PreAlign.TabIndex = 0; + this.btn_PreAlign.Text = "PreAlign"; + this.btn_PreAlign.UseVisualStyleBackColor = true; + this.btn_PreAlign.Click += new System.EventHandler(this.btn_PreAlign_Click); + // + // btn_Robot + // + this.btn_Robot.Location = new System.Drawing.Point(256, 20); + this.btn_Robot.Name = "btn_Robot"; + this.btn_Robot.Size = new System.Drawing.Size(119, 45); + this.btn_Robot.TabIndex = 0; + this.btn_Robot.Text = "Robot"; + this.btn_Robot.UseVisualStyleBackColor = true; + this.btn_Robot.Click += new System.EventHandler(this.btn_Robot_Click); + // + // btn_ChillerView + // + this.btn_ChillerView.Location = new System.Drawing.Point(256, 71); + this.btn_ChillerView.Name = "btn_ChillerView"; + this.btn_ChillerView.Size = new System.Drawing.Size(119, 45); + this.btn_ChillerView.TabIndex = 0; + this.btn_ChillerView.Text = "Chiller"; + this.btn_ChillerView.UseVisualStyleBackColor = true; + this.btn_ChillerView.Click += new System.EventHandler(this.btn_ChillerView_Click); + // + // btn_PowerMeterView + // + this.btn_PowerMeterView.Location = new System.Drawing.Point(131, 71); + this.btn_PowerMeterView.Name = "btn_PowerMeterView"; + this.btn_PowerMeterView.Size = new System.Drawing.Size(119, 45); + this.btn_PowerMeterView.TabIndex = 0; + this.btn_PowerMeterView.Text = "Energy Meter"; + this.btn_PowerMeterView.UseVisualStyleBackColor = true; + this.btn_PowerMeterView.Click += new System.EventHandler(this.btn_PowerMeterView_Click); + // + // btn_Attenuator + // + this.btn_Attenuator.Location = new System.Drawing.Point(131, 20); + this.btn_Attenuator.Name = "btn_Attenuator"; + this.btn_Attenuator.Size = new System.Drawing.Size(119, 45); + this.btn_Attenuator.TabIndex = 0; + this.btn_Attenuator.Text = "Attenuator"; + this.btn_Attenuator.UseVisualStyleBackColor = true; + this.btn_Attenuator.Click += new System.EventHandler(this.btn_Attenuator_Click); + // + // btn_ScannerView + // + this.btn_ScannerView.Location = new System.Drawing.Point(6, 20); + this.btn_ScannerView.Name = "btn_ScannerView"; + this.btn_ScannerView.Size = new System.Drawing.Size(119, 45); + this.btn_ScannerView.TabIndex = 0; + this.btn_ScannerView.Text = "Scanner"; + this.btn_ScannerView.UseVisualStyleBackColor = true; + this.btn_ScannerView.Click += new System.EventHandler(this.btn_ScannerView_Click); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.tb_ChamberVacuumPressure); + this.groupBox2.Controls.Add(this.tb_MainCDAFlow); + this.groupBox2.Controls.Add(this.tb_N2PTPPressure); + this.groupBox2.Controls.Add(this.label22); + this.groupBox2.Controls.Add(this.label21); + this.groupBox2.Controls.Add(this.label20); + this.groupBox2.Controls.Add(this.tb_MainVacuumPressure); + this.groupBox2.Controls.Add(this.label19); + this.groupBox2.Controls.Add(this.tb_MainCDAPressure); + this.groupBox2.Controls.Add(this.label14); + this.groupBox2.Location = new System.Drawing.Point(1224, 141); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(512, 173); + this.groupBox2.TabIndex = 178; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "GR200"; + // + // tb_ChamberVacuumPressure + // + this.tb_ChamberVacuumPressure.BackColor = System.Drawing.SystemColors.Info; + this.tb_ChamberVacuumPressure.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_ChamberVacuumPressure.Location = new System.Drawing.Point(16, 130); + this.tb_ChamberVacuumPressure.Name = "tb_ChamberVacuumPressure"; + this.tb_ChamberVacuumPressure.ReadOnly = true; + this.tb_ChamberVacuumPressure.Size = new System.Drawing.Size(106, 21); + this.tb_ChamberVacuumPressure.TabIndex = 145; + this.tb_ChamberVacuumPressure.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // tb_MainCDAFlow + // + this.tb_MainCDAFlow.BackColor = System.Drawing.SystemColors.Info; + this.tb_MainCDAFlow.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MainCDAFlow.Location = new System.Drawing.Point(390, 53); + this.tb_MainCDAFlow.Name = "tb_MainCDAFlow"; + this.tb_MainCDAFlow.ReadOnly = true; + this.tb_MainCDAFlow.Size = new System.Drawing.Size(106, 21); + this.tb_MainCDAFlow.TabIndex = 145; + this.tb_MainCDAFlow.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // tb_N2PTPPressure + // + this.tb_N2PTPPressure.BackColor = System.Drawing.SystemColors.Info; + this.tb_N2PTPPressure.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_N2PTPPressure.Location = new System.Drawing.Point(265, 53); + this.tb_N2PTPPressure.Name = "tb_N2PTPPressure"; + this.tb_N2PTPPressure.ReadOnly = true; + this.tb_N2PTPPressure.Size = new System.Drawing.Size(106, 21); + this.tb_N2PTPPressure.TabIndex = 145; + this.tb_N2PTPPressure.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label22 + // + this.label22.BackColor = System.Drawing.Color.Gainsboro; + this.label22.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label22.Location = new System.Drawing.Point(15, 94); + this.label22.Margin = new System.Windows.Forms.Padding(0); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(109, 65); + this.label22.TabIndex = 146; + this.label22.Text = "Chamber Vacuum Pressure"; + this.label22.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label21 + // + this.label21.BackColor = System.Drawing.Color.Gainsboro; + this.label21.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label21.Location = new System.Drawing.Point(389, 17); + this.label21.Margin = new System.Windows.Forms.Padding(0); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(109, 65); + this.label21.TabIndex = 146; + this.label21.Text = "\r\nMain CDA Flow"; + this.label21.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label20 + // + this.label20.BackColor = System.Drawing.Color.Gainsboro; + this.label20.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label20.Location = new System.Drawing.Point(264, 17); + this.label20.Margin = new System.Windows.Forms.Padding(0); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(109, 65); + this.label20.TabIndex = 146; + this.label20.Text = "\r\nN2 PTP Pressure"; + this.label20.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // tb_MainVacuumPressure + // + this.tb_MainVacuumPressure.BackColor = System.Drawing.SystemColors.Info; + this.tb_MainVacuumPressure.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MainVacuumPressure.Location = new System.Drawing.Point(140, 53); + this.tb_MainVacuumPressure.Name = "tb_MainVacuumPressure"; + this.tb_MainVacuumPressure.ReadOnly = true; + this.tb_MainVacuumPressure.Size = new System.Drawing.Size(106, 21); + this.tb_MainVacuumPressure.TabIndex = 143; + this.tb_MainVacuumPressure.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label19 + // + this.label19.BackColor = System.Drawing.Color.Gainsboro; + this.label19.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label19.Location = new System.Drawing.Point(139, 17); + this.label19.Margin = new System.Windows.Forms.Padding(0); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(109, 65); + this.label19.TabIndex = 144; + this.label19.Text = "Main Vacuum Pressure"; + this.label19.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // tb_MainCDAPressure + // + this.tb_MainCDAPressure.BackColor = System.Drawing.SystemColors.Info; + this.tb_MainCDAPressure.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MainCDAPressure.Location = new System.Drawing.Point(15, 55); + this.tb_MainCDAPressure.Name = "tb_MainCDAPressure"; + this.tb_MainCDAPressure.ReadOnly = true; + this.tb_MainCDAPressure.Size = new System.Drawing.Size(106, 21); + this.tb_MainCDAPressure.TabIndex = 141; + this.tb_MainCDAPressure.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label14 + // + this.label14.BackColor = System.Drawing.Color.Gainsboro; + this.label14.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label14.Location = new System.Drawing.Point(14, 19); + this.label14.Margin = new System.Windows.Forms.Padding(0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(109, 65); + this.label14.TabIndex = 142; + this.label14.Text = "Main CDA Pressure"; + this.label14.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // btn_VisionView + // + this.btn_VisionView.Location = new System.Drawing.Point(381, 71); + this.btn_VisionView.Name = "btn_VisionView"; + this.btn_VisionView.Size = new System.Drawing.Size(119, 45); + this.btn_VisionView.TabIndex = 0; + this.btn_VisionView.Text = "Vision"; + this.btn_VisionView.UseVisualStyleBackColor = true; + this.btn_VisionView.Click += new System.EventHandler(this.btn_VisionView_Click); + // + // ScreenMotionMaintenance + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.lblVel3); + this.Controls.Add(this.lblPos3); + this.Controls.Add(this.label51); + this.Controls.Add(this.label52); + this.Controls.Add(this.lblInPos3); + this.Controls.Add(this.lblServo3); + this.Controls.Add(this.lblPLimit3); + this.Controls.Add(this.lblNLimit3); + this.Controls.Add(this.lblFault3); + this.Controls.Add(this.lblHomeComp3); + this.Controls.Add(this.lblVel2); + this.Controls.Add(this.lblPos2); + this.Controls.Add(this.label39); + this.Controls.Add(this.label40); + this.Controls.Add(this.lblInPos2); + this.Controls.Add(this.lblServo2); + this.Controls.Add(this.lblPLimit2); + this.Controls.Add(this.lblNLimit2); + this.Controls.Add(this.lblFault2); + this.Controls.Add(this.lblHomeComp2); + this.Controls.Add(this.lblVel1); + this.Controls.Add(this.lblPos1); + this.Controls.Add(this.label30); + this.Controls.Add(this.label27); + this.Controls.Add(this.label25); + this.Controls.Add(this.label24); + this.Controls.Add(this.label13); + this.Controls.Add(this.lblInPos1); + this.Controls.Add(this.lblServo1); + this.Controls.Add(this.lblPLimit1); + this.Controls.Add(this.lblNLimit1); + this.Controls.Add(this.lblFault1); + this.Controls.Add(this.lblHomeComp1); + this.Controls.Add(this.btnReset); + this.Controls.Add(this.Label_LED_InPos); + this.Controls.Add(this.Set_Control_Acc); + this.Controls.Add(this.Btn_Jog_CCW); + this.Controls.Add(this.Btn_Jog_CW); + this.Controls.Add(this.Btn_Jog_Stop); + this.Controls.Add(this.Btn_Move_Rel_CCW); + this.Controls.Add(this.Btn_Move_Rel_CW); + this.Controls.Add(this.BtnAllStop); + this.Controls.Add(this.BtnAllHome); + this.Controls.Add(this.BtnAllServoOFF); + this.Controls.Add(this.BtnAllServoON); + this.Controls.Add(this.Btn_Move_Abs); + this.Controls.Add(this.Btn_Home); + this.Controls.Add(this.Btn_PositionSet); + this.Controls.Add(this.Btn_ServoOnOff); + this.Controls.Add(this.Btn_PositionMove); + this.Controls.Add(this.Label_Select_Axis_PosVal); + this.Controls.Add(this.label5); + this.Controls.Add(this.Label_Select_Axis_PosName); + this.Controls.Add(this.label6); + this.Controls.Add(this.label4); + this.Controls.Add(this.Label_LED_ServoOn); + this.Controls.Add(this.Label_LED_PlusLimit); + this.Controls.Add(this.Label_LED_MinusLimit); + this.Controls.Add(this.Label_LED_FlowingError); + this.Controls.Add(this.Label_LED_Home); + this.Controls.Add(this.tbCurPos); + this.Controls.Add(this.Set_Control_Pos); + this.Controls.Add(this.Set_Control_Speed); + this.Controls.Add(this.tbCurSpeed); + this.Controls.Add(this.Set_Select_AccelVal); + this.Controls.Add(this.Set_Select_SpeedVal); + this.Controls.Add(this.Set_Select_PosVal); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.label17); + this.Controls.Add(this.Label_CurrentInfo_AxisName); + this.Controls.Add(this.label18); + this.Controls.Add(this.Label_CurrentInfo_PositionName); + this.Controls.Add(this.label28); + this.Controls.Add(this.label29); + this.Controls.Add(this.label8); + this.Controls.Add(this.label11); + this.Controls.Add(this.label10); + this.Controls.Add(this.label7); + this.Controls.Add(this.Label_CurrentInfo_AxisNo); + this.Controls.Add(this.Label_CurrentInfo_PosIndex); + this.Controls.Add(this.label12); + this.Controls.Add(this.label15); + this.Controls.Add(this.label9); + this.Controls.Add(this.Label_Subject_Current); + this.Controls.Add(this.label16); + this.Controls.Add(this.ListView_AxisPosList); + this.Name = "ScreenMotionMaintenance"; + this.Size = new System.Drawing.Size(1764, 803); + this.VisibleChanged += new System.EventHandler(this.Screen_SubPmc_Maintenance_VisibleChanged); + this.groupBox1.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ListView ListView_AxisPosList; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.ColumnHeader columnHeader4; + private System.Windows.Forms.ColumnHeader columnHeader5; + private System.Windows.Forms.ColumnHeader columnHeader6; + private System.Windows.Forms.ColumnHeader columnHeader7; + private System.Windows.Forms.ColumnHeader columnHeader8; + private System.Windows.Forms.ColumnHeader columnHeader9; + private System.Windows.Forms.Label lblVel3; + private System.Windows.Forms.Label lblPos3; + private System.Windows.Forms.Label label51; + private System.Windows.Forms.Label label52; + private System.Windows.Forms.Label lblInPos3; + private System.Windows.Forms.Label lblServo3; + private System.Windows.Forms.Label lblPLimit3; + private System.Windows.Forms.Label lblNLimit3; + private System.Windows.Forms.Label lblFault3; + private System.Windows.Forms.Label lblHomeComp3; + private System.Windows.Forms.Label lblVel2; + private System.Windows.Forms.Label lblPos2; + private System.Windows.Forms.Label label39; + private System.Windows.Forms.Label label40; + private System.Windows.Forms.Label lblInPos2; + private System.Windows.Forms.Label lblServo2; + private System.Windows.Forms.Label lblPLimit2; + private System.Windows.Forms.Label lblNLimit2; + private System.Windows.Forms.Label lblFault2; + private System.Windows.Forms.Label lblHomeComp2; + private System.Windows.Forms.Label lblVel1; + private System.Windows.Forms.Label lblPos1; + private System.Windows.Forms.Label label30; + private System.Windows.Forms.Label label27; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label lblInPos1; + private System.Windows.Forms.Label lblServo1; + private System.Windows.Forms.Label lblPLimit1; + private System.Windows.Forms.Label lblNLimit1; + private System.Windows.Forms.Label lblFault1; + private System.Windows.Forms.Label lblHomeComp1; + private System.Windows.Forms.Button btnReset; + private System.Windows.Forms.Label Label_LED_InPos; + private System.Windows.Forms.TextBox Set_Control_Acc; + private System.Windows.Forms.Button Btn_Jog_CCW; + private System.Windows.Forms.Button Btn_Jog_CW; + private System.Windows.Forms.Button Btn_Jog_Stop; + private System.Windows.Forms.Button Btn_Move_Rel_CCW; + private System.Windows.Forms.Button Btn_Move_Rel_CW; + private System.Windows.Forms.Button BtnAllStop; + private System.Windows.Forms.Button BtnAllHome; + private System.Windows.Forms.Button BtnAllServoOFF; + private System.Windows.Forms.Button BtnAllServoON; + private System.Windows.Forms.Button Btn_Move_Abs; + private System.Windows.Forms.Button Btn_Home; + private System.Windows.Forms.Button Btn_PositionSet; + private System.Windows.Forms.Button Btn_ServoOnOff; + private System.Windows.Forms.Button Btn_PositionMove; + private System.Windows.Forms.Label Label_Select_Axis_PosVal; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label Label_Select_Axis_PosName; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label Label_LED_ServoOn; + private System.Windows.Forms.Label Label_LED_PlusLimit; + private System.Windows.Forms.Label Label_LED_MinusLimit; + private System.Windows.Forms.Label Label_LED_FlowingError; + private System.Windows.Forms.Label Label_LED_Home; + private System.Windows.Forms.TextBox tbCurPos; + private System.Windows.Forms.TextBox Set_Control_Pos; + private System.Windows.Forms.TextBox Set_Control_Speed; + private System.Windows.Forms.TextBox tbCurSpeed; + private System.Windows.Forms.TextBox Set_Select_AccelVal; + private System.Windows.Forms.TextBox Set_Select_SpeedVal; + private System.Windows.Forms.TextBox Set_Select_PosVal; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Label Label_CurrentInfo_AxisName; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label Label_CurrentInfo_PositionName; + private System.Windows.Forms.Label label28; + private System.Windows.Forms.Label label29; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label Label_CurrentInfo_AxisNo; + private System.Windows.Forms.Label Label_CurrentInfo_PosIndex; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label Label_Subject_Current; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button btn_PreAlign; + private System.Windows.Forms.Button btn_Robot; + private System.Windows.Forms.Button btn_Attenuator; + private System.Windows.Forms.Button btn_ScannerView; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TextBox tb_MainVacuumPressure; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.TextBox tb_MainCDAPressure; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.TextBox tb_ChamberVacuumPressure; + private System.Windows.Forms.TextBox tb_MainCDAFlow; + private System.Windows.Forms.TextBox tb_N2PTPPressure; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Button btn_PiLaserView; + private System.Windows.Forms.Button btn_PowerMeterView; + private System.Windows.Forms.Button btn_ChillerView; + private System.Windows.Forms.Button btn_VisionView; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.cs new file mode 100644 index 0000000..2140a6a --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.cs @@ -0,0 +1,2035 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +using System.Text.RegularExpressions; +using System.Threading; +using System.IO; +using System.Net.NetworkInformation; + +using SA_LTT.Module; +using padDLL; +using SA_LTT; + +namespace SA_LTT_UI.Screen +{ + public partial class ScreenMotionMaintenance : UserControl + { + ////Stage #1 + //const int iXNum = 2; + //const int iYNum = 1; + //const int iTNum = 3; + //const int iSNum = 5; + + ////Stage #2 + //const int iXNum2 = 7; + //const int iYNum2 = 6; + //const int iTNum2 = 8; + //const int iSNum2 = 10; + + //------- + + private enum List_Index + { + NO = 0, + EnumNo, + Axis_Name, + Pos_Name, + Axis, + PosIndex, + Position, + Speed, + Accel, + } + + private enum eThread + { + _UpdateScreen, + + _ThreadUmac, + + _Axis_S_Home, + _Axis_All_Home1, + _Axis_All_Home2, + + enMax, + } + + Thread[] ArrThread = new Thread[(int)eThread.enMax]; + + private int m_nSelect_RowIndex = -1; + private int m_nSelectAxis_Index = -1; + private int m_nSelectPos_Index = -1; + MainFrame _mainFrame; + + object updateUIlock = new object(); + bool updateUIlockcheck = false; + + delegate void UpdateScreenDelegate(); + delegate void SlowScreenDelegate(); + + bool[] m_bOldAxisStatus = new bool[6]; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public ScreenMotionMaintenance(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + + for (int i = 0; i < m_bOldAxisStatus.Length; i++) + m_bOldAxisStatus[i] = false; + + //洹몃━�뱶 珥덇린�솕 + InitView(); + + //UMAC 異� �꽕�젙 + //UmacSetValue(); + + //thread + ThreadInit(); + ThreadStart(); + + + + // + //acc �벑 �뙆�씪誘명꽣媛믪� Stage #1, #2 媛� 異뺤뿉 �룞�씪�븯寃� �쟻�슜 + + //------------------------------------- + //Stage #1 + // + // PLC Program Bug (�솢 �뿬湲곗뿉�꽌 �씠嫄� �꽕�젙�븯吏�??) + //_parentForm._UmacCtrl.MoveS_Acc(Convert.ToInt16(_IoMemory.ReadIo(eSystemParam.Func_Stage_MOV_S_Accel))); + //_parentForm._UmacCtrl.MoveT_Acc(Convert.ToInt16(_IoMemory.ReadIo(eSystemParam.Func_Stage_MOV_T_Accel))); + //_parentForm._UmacCtrl.MoveXY_Acc(Convert.ToInt16(_IoMemory.ReadIo(eSystemParam.Func_Stage_MOV_X_Accel))); + //_parentForm._UmacCtrl.MoveXY_SetSpeed(Convert.ToDouble(_IoMemory.ReadIo(eSystemParam.Stage_XY_MOV_Spd))); + //_parentForm._UmacCtrl.MoveT_SetSpeed(1); + + + //// + ////Stage #2 + //// + ////todo. LYW 異붽� + //_parentForm._UmacCtrl.MoveS_Acc2(Convert.ToInt16(_IoMemory.ReadIo(eSystemParam.Func_Stage_MOV_S_Accel))); + //_parentForm._UmacCtrl.MoveT_Acc2(Convert.ToInt16(_IoMemory.ReadIo(eSystemParam.Func_Stage_MOV_T_Accel))); + //_parentForm._UmacCtrl.MoveXY_Acc2(Convert.ToInt16(_IoMemory.ReadIo(eSystemParam.Func_Stage_MOV_X_Accel))); + //_parentForm._UmacCtrl.MoveXY_SetSpeed2(Convert.ToDouble(_IoMemory.ReadIo(eSystemParam.Stage_XY_MOV_Spd))); + //_parentForm._UmacCtrl.MoveT_SetSpeed2(1); + } + + //*************************************************************************************** + // 珥덇린�솕 + //*************************************************************************************** + #region "Initialize" + + //private void UmacSetValue() + //{ + // try + // { + // _parentForm._UmacCtrl.XAxisNum = iXNum; + // _parentForm._UmacCtrl.YAxisNum = iYNum; + // _parentForm._UmacCtrl.TAxisNum = iTNum; + // _parentForm._UmacCtrl.SAxisNum = iSNum; //Shutter + + // //todo. LYW 異붽� + // _parentForm._UmacCtrl.XAxisNum2 = iXNum2; + // _parentForm._UmacCtrl.YAxisNum2 = iYNum2; + // _parentForm._UmacCtrl.TAxisNum2 = iTNum2; + // } + // catch (Exception ee) + // { + // _parentForm.WriteToDebugLog("Screen_PMC_Manual : UmacSetValue::" + ee.ToString()); + // } + //} + + private void InitView() + { + ImageList dumImgList = new ImageList(); + dumImgList.ImageSize = new System.Drawing.Size(1, 20); //由ъ뒪�듃 酉� �씪�씤 媛꾧꺽 議곗젅�슜(�넂�씠) + ListView_AxisPosList.SmallImageList = dumImgList; + + ListView_AxisPosList.Items.Clear(); + + int nCnt = 0; + int nPosIndex = 0; + bool[] bRecipeLoad = new bool[2]; + string[] strRecipeName = new string[2]; + + //bRecipeLoad[0] = LoadTeachDataFromRecipe(true, out strRecipeName[0]); + //bRecipeLoad[1] = LoadTeachDataFromRecipe(false, out strRecipeName[1]); + + for (int nIndex = 0; nIndex < _mainFrame.equipment.powerPmac.m_AxisAllList.Count; nIndex++) + { + for (nPosIndex = 0; nPosIndex < _mainFrame.equipment.powerPmac.m_AxisAllList[nIndex].TeachList.Count; nPosIndex++) + { + nCnt++; + ListViewItem _Item = ListView_AxisPosList.Items.Add(nCnt.ToString("000")); //No + _Item.SubItems.Add(_mainFrame.equipment.powerPmac.m_AxisAllList[nIndex].EnumAxisNo.ToString()); //EnumNo + _Item.SubItems.Add(_mainFrame.equipment.powerPmac.m_AxisAllList[nIndex].Name); //異� �씠由� + _Item.SubItems.Add(_mainFrame.equipment.powerPmac.m_AxisAllList[nIndex].TeachList[nPosIndex].Name.ToString()); //�룷吏��뀡 �씠由� + _Item.SubItems.Add(_mainFrame.equipment.powerPmac.m_AxisAllList[nIndex].AxisNo.ToString()); //AxisNo + _Item.SubItems.Add(string.Format("{0}", nPosIndex + 1)); //�씤�뜳�뒪 + _Item.SubItems.Add(_mainFrame.equipment.powerPmac.m_AxisAllList[nIndex].TeachList[nPosIndex].Position.ToString()); //�쐞移� + _Item.SubItems.Add(_mainFrame.equipment.powerPmac.m_AxisAllList[nIndex].TeachList[nPosIndex].Speed.ToString()); //�냽�룄 + _Item.SubItems.Add(_mainFrame.equipment.powerPmac.m_AxisAllList[nIndex].TeachList[nPosIndex].Accel.ToString()); //媛��냽 + } + } + } + #endregion + + + //*************************************************************************************** + // Functions + //*************************************************************************************** + #region "Functions (PMC �떆���뒪 �젣�쇅)" + + private bool CheckSelectAxisPos() + { + bool bRtn = false; + + if (m_nSelectAxis_Index >= 0 + && m_nSelectPos_Index >= 0 + && m_nSelect_RowIndex >= 0) + { + bRtn = true; + } + return bRtn; + } + + #endregion + + + + //*************************************************************************************** + // Thread + //*************************************************************************************** + // + #region "Thread" + + //�긽�깭 �뾽�뜲�씠�듃 異붽� + //Stage1Info() + //Stage2Info() + private void ThreadInit() + { + + + ArrThread[(int)eThread._UpdateScreen] = new Thread(ProcUpdateScreen); + // _ThreadClass[(int)eThread._Axis_S_Home] = new eThreadClass(200, false, S_Axis_Home); + //_ThreadClass[(int)eThread._Axis_All_Home1] = new eThreadClass(200, false, All_Axis_Home1); + //_ThreadClass[(int)eThread._Axis_All_Home2] = new eThreadClass(200, false, All_Axis_Home2); + //Test Proce MOve + // _ThreadClass[(int)eThread._PMC_ManualProc] = new eThreadClass(200, false, ProcMoveMelting); + // _ThreadClass[(int)eThread._Purge_Proc] = new eThreadClass(200, false, ProcPurge); + + // _parentForm.EventThreadStop += new EventThreadStop(this.ThreadClose); + } + + private void ThreadStart() + { + if (!_mainFrame.m_bSimulationMode) + { + ArrThread[(int)eThread._UpdateScreen].Start(); + } + + } + + private void ProcUpdateScreen() + { + while (_mainFrame.IsDisposed == false) + { + try + { + Thread.Sleep(500); + if (this.Visible) + UpdateScreen(); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + } + + private void UpdateScreen() + { + try + { + if (InvokeRequired) + { + lock (updateUIlock) + { + if (updateUIlockcheck) + Monitor.Wait(updateUIlock); + else + updateUIlockcheck = true; + } + + BeginInvoke(new UpdateScreenDelegate(UpdateScreen)); + return; + } + lock (updateUIlock) + { + try + { + if(this.Visible) + { + MotorInfo(); + DisplaySelectedAxisInfo(); + GR200Update(); + } + + } + finally + { + Monitor.Pulse(updateUIlock); + updateUIlockcheck = false; + } + } + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + #endregion + + + //*************************************************************************************** + // �떆���뒪 + //*************************************************************************************** + #region "PMC #1, PMC #2 Sequence" + + + + #endregion + + + //*************************************************************************************** + // 踰꾪듉 �벑 �씠踰ㅽ듃 + //*************************************************************************************** + #region "Button / Key Pad Event" + + //---------------------------------------------------------------------------------------- + // + //�꽑�깮�맂 �룷吏��뀡�쓽 �쁽�옱 �젙蹂� + // + //Position + private void Set_Select_PosVal_Click(object sender, EventArgs e) + { + var nPad = new NumericPad(); + nPad.Setup("-100", "2000"); //踰붿쐞 蹂�寃쏀빐�빞 �븿 + nPad.ShowDialog(); + + if (nPad.DialogResult != DialogResult.OK) return; + + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Select_PosVal_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Select_PosVal_Click"); //Button LogDB + + Set_Select_PosVal.Text = nPad.GetValue(); + + ChangePosition(); + SaveServoData(); + _mainFrame.equipment.powerPmac.LoadMotorData(); + } + + private void ChangePosition() + { + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Select_PosVal_TextChanged"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Select_PosVal_TextChanged"); //Button LogDB + + + //怨듭쑀硫붾え由ъ뿉 �쟾�떖 + // + + //Grid�뿉�꽌 �쐞移섍컪 update + + //���옣 + // + + if (CheckSelectAxisPos() == false) + { + Set_Select_PosVal.Text = ""; + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Select_PosVal.Text = NULL"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Select_PosVal.Text = NULL"); //Button LogDB + + return; + } + + string strTag = Set_Select_PosVal.Tag as string; + if (strTag == "POSITION") + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Position {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Name} {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Position} -> {Set_Select_PosVal.Text}"); + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Position = Convert.ToDouble(Set_Select_PosVal.Text); + ListView_AxisPosList.Items[m_nSelect_RowIndex].SubItems[(int)List_Index.Position].Text = Set_Select_PosVal.Text; + //SaveServoData(); + } + else if (strTag == "SPEED") + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Speed {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Name} {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Speed} -> {Set_Select_SpeedVal.Text}"); + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Speed = Convert.ToDouble(Set_Select_SpeedVal.Text); + ListView_AxisPosList.Items[m_nSelect_RowIndex].SubItems[(int)List_Index.Speed].Text = Set_Select_SpeedVal.Text; + //SaveServoData(); + } + else if (strTag == "ACCEL") + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Accel {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Name} {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Accel} -> {Set_Select_AccelVal.Text}"); + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Accel = Convert.ToDouble(Set_Select_AccelVal.Text); + ListView_AxisPosList.Items[m_nSelect_RowIndex].SubItems[(int)List_Index.Accel].Text = Set_Select_AccelVal.Text; + //SaveServoData(); + } + } + + + //Speed + private void Set_Select_SpeedVal_Click(object sender, EventArgs e) + { + var nPad = new NumericPad(); + nPad.Setup("0", "1000"); //踰붿쐞 蹂�寃쏀빐�빞 �븿 + nPad.ShowDialog(); + + if (nPad.DialogResult != DialogResult.OK) return; + + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Select_SpeedVal_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Select_SpeedVal_Click"); //Button LogDB + + Set_Select_SpeedVal.Text = nPad.GetValue(); + + ChangeSpeed(); + SaveServoData(); + } + + private void ChangeSpeed() + { + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Select_SpeedVal_TextChanged"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Select_SpeedVal_TextChanged"); //Button LogDB + + + //怨듭쑀硫붾え由ъ뿉 �쟾�떖 + // + + //Grid�뿉�꽌 �쐞移섍컪 update + + //���옣 + // + + if (CheckSelectAxisPos() == false) + { + Set_Select_SpeedVal.Text = ""; + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Select_SpeedVal.Text = NULL"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Select_SpeedVal.Text = NULL"); //Button LogDB + + return; + } + + string strTag = Set_Select_SpeedVal.Tag as string; + if (strTag == "POSITION") + { + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Position = Convert.ToDouble(Set_Select_PosVal.Text); + ListView_AxisPosList.Items[m_nSelect_RowIndex].SubItems[(int)List_Index.Position].Text = Set_Select_PosVal.Text; + //SaveServoData(); + } + else if (strTag == "SPEED") + { + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Speed = Convert.ToDouble(Set_Select_SpeedVal.Text); + ListView_AxisPosList.Items[m_nSelect_RowIndex].SubItems[(int)List_Index.Speed].Text = Set_Select_SpeedVal.Text; + //SaveServoData(); + } + else if (strTag == "ACCEL") + { + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Accel = Convert.ToDouble(Set_Select_AccelVal.Text); + ListView_AxisPosList.Items[m_nSelect_RowIndex].SubItems[(int)List_Index.Accel].Text = Set_Select_AccelVal.Text; + //SaveServoData(); + } + } + + + //Accel + private void Set_Select_AccelVal_Click(object sender, EventArgs e) + { + var nPad = new NumericPad(); + nPad.Setup("0", "1000"); //踰붿쐞 蹂�寃쏀빐�빞 �븿 + nPad.ShowDialog(); + + if (nPad.DialogResult != DialogResult.OK) return; + + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Select_AccelVal_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Select_AccelVal_Click"); //Button LogDB + + Set_Select_AccelVal.Text = nPad.GetValue(); + + ChangeAccel(); + SaveServoData(); + } + + private void ChangeAccel() + { + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Select_AccelVal_TextChanged"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Select_AccelVal_TextChanged"); //Button LogDB + + + //怨듭쑀硫붾え由ъ뿉 �쟾�떖 + // + + //Grid�뿉�꽌 �쐞移섍컪 update + + //���옣 + // + + + if (CheckSelectAxisPos() == false) + { + Set_Select_AccelVal.Text = ""; + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Select_AccelVal.Text = NULL"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Select_AccelVal.Text = NULL"); //Button LogDB + + return; + } + + string strTag = Set_Select_AccelVal.Tag as string; + if (strTag == "POSITION") + { + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Position = Convert.ToDouble(Set_Select_PosVal.Text); + ListView_AxisPosList.Items[m_nSelect_RowIndex].SubItems[(int)List_Index.Position].Text = Set_Select_PosVal.Text; + //SaveServoData(); + } + else if (strTag == "SPEED") + { + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Speed = Convert.ToDouble(Set_Select_SpeedVal.Text); + ListView_AxisPosList.Items[m_nSelect_RowIndex].SubItems[(int)List_Index.Speed].Text = Set_Select_SpeedVal.Text; + //SaveServoData(); + } + else if (strTag == "ACCEL") + { + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Accel = Convert.ToDouble(Set_Select_AccelVal.Text); + ListView_AxisPosList.Items[m_nSelect_RowIndex].SubItems[(int)List_Index.Accel].Text = Set_Select_AccelVal.Text; + //SaveServoData(); + } + } + + private void SaveServoData() + { + _mainFrame.equipment.powerPmac.SaveMotorData(); + } + + //---------------------------------------------------------------------------------------- + // + //議곌렇 �쐞移� �씠�룞 + // + + //�냽�룄 + private void Set_Control_Speed_Click(object sender, EventArgs e) + { + var nPad = new NumericPad(); + nPad.Setup("0", "1000"); //踰붿쐞 蹂�寃쏀빐�빞 �븿 + nPad.ShowDialog(); + + if (nPad.DialogResult != DialogResult.OK) return; + + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Control_Speed_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Control_Speed_Click"); //Button LogDB + + Set_Control_Speed.Text = nPad.GetValue(); + } + + private void Set_Control_Speed_TextChanged(object sender, EventArgs e) + { + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Control_Speed_TextChanged"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Control_Speed_TextChanged"); //Button LogDB + + + //怨듭쑀硫붾え由ъ뿉 �쟾�떖 (�씠�룞 �냽�룄) + // + + //Grid�뿉�꽌 �쐞移섍컪 update + + } + + //�쐞移� + private void Set_Control_Pos_Click(object sender, EventArgs e) + { + var nPad = new NumericPad(); + nPad.Setup("-2000", "2000"); //踰붿쐞 蹂�寃쏀빐�빞 �븿 + nPad.ShowDialog(); + + if (nPad.DialogResult != DialogResult.OK) return; + + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Control_Pos_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Control_Pos_Click"); //Button LogDB + + Set_Control_Pos.Text = nPad.GetValue(); + } + + private void Set_Control_Pos_TextChanged(object sender, EventArgs e) + { + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Control_Pos_TextChanged"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Control_Pos_TextChanged"); //Button LogDB + + + //怨듭쑀硫붾え由ъ뿉 �쟾�떖 (�씠�룞 �냽�룄) + // + + //Grid�뿉�꽌 �쐞移섍컪 update + + } + + //Stage #1 + public void All_Axis_Home1() + { + //try + //{ + // if (bATT_n_Robot_Home == false) + // ATT_n_Robot_Home(); //todo. LYW 遺꾨━ + + // bool _bServoCheck_S, _bServoCheck_X, _bServoCheck_Y, _bServoCheck_T; + + // //var ioPad = new DigitalIoPad(); + // //ioPad.Setup(PadItem.NoYes, "All Axis Homing?"); + // //ioPad.ShowDialog(); + // //if (ioPad.DialogResult != DialogResult.OK) return; + + // //if (ioPad.GetValue() == "YES") + // //{ + // // Set Home Speed + // _parentForm._UmacCtrl.Home_SetSpeed(UmacAxis.S_Axis, Convert.ToDouble(_IoMemory.ReadIo(eSystemParam.Stage_S_Home_Spd))); + // _parentForm._UmacCtrl.Home_SetSpeed(UmacAxis.Y_Axis, Convert.ToDouble(_IoMemory.ReadIo(eSystemParam.Stage_Y_Home_Spd))); + // _parentForm._UmacCtrl.Home_SetSpeed(UmacAxis.X_Axis, Convert.ToDouble(_IoMemory.ReadIo(eSystemParam.Stage_X_Home_Spd))); + // _parentForm._UmacCtrl.Home_SetSpeed(UmacAxis.T_Axis, 1); + + // _bServoCheck_S = _parentForm._UmacCtrl.GetAxisStatus(UmacAxis.S_Axis, AxisStatus.ServoStatus); + // if (!_bServoCheck_S) _parentForm._UmacCtrl.Amp_Enable(UmacAxis.S_Axis, true); + + // _bServoCheck_X = _parentForm._UmacCtrl.GetAxisStatus(UmacAxis.X_Axis, AxisStatus.ServoStatus); + // if (!_bServoCheck_X) _parentForm._UmacCtrl.Amp_Enable(UmacAxis.X_Axis, true); + + // _bServoCheck_Y = _parentForm._UmacCtrl.GetAxisStatus(UmacAxis.Y_Axis, AxisStatus.ServoStatus); + // if (!_bServoCheck_Y) _parentForm._UmacCtrl.Amp_Enable(UmacAxis.Y_Axis, true); + + // _bServoCheck_T = _parentForm._UmacCtrl.GetAxisStatus(UmacAxis.T_Axis, AxisStatus.ServoStatus); + // if (!_bServoCheck_T) _parentForm._UmacCtrl.Amp_Enable(UmacAxis.T_Axis, true); + + // _parentForm._UmacCtrl.Home_SetSpeed(UmacAxis.S_Axis, Convert.ToDouble(_IoMemory.ReadIo(eSystemParam.Stage_S_Home_Spd))); + // _parentForm._UmacCtrl.Home_Start(UmacAxis.S_Axis, true); + + // if (!HomeWaitMove(UmacAxis.S_Axis, 1000, 120000)) + // { + // _parentForm.MSGShow("S-Axis Home Time Out"); + // this._parentForm._Main_Screen._SelfChkWork.MotionAlarm[3] = true; + // return; + // } + + // if (_parentForm._UmacCtrl.Home_Status(UmacAxis.S_Axis)) + // { + // //210831 hslee + // _parentForm._MotionFunc.MoveSToClosePos(false); + // //_parentForm._UmacCtrl.MoveS_SetPos(Convert.ToDouble(_IoMemory.ReadIo(eUserParam.Stage_S_Close_Pos))); + // //_parentForm._UmacCtrl.MoveS_Run(); + // } + // Thread.Sleep(50); + + // _parentForm._UmacCtrl.Home_Start(UmacAxis.Y_Axis, true); + // if (!HomeWaitMove(UmacAxis.Y_Axis, 1000, 120000)) { _parentForm.MSGShow("Y-Axis Home Time Out"); _parentForm._UmacCtrl.MoveXYTStop(); this._parentForm._Main_Screen._SelfChkWork.MotionAlarm[1] = true; return; } + // Thread.Sleep(50); + + // _parentForm._UmacCtrl.Home_Start(UmacAxis.T_Axis, true); + // if (!HomeWaitMove(UmacAxis.T_Axis, 1000, 120000)) { _parentForm.MSGShow("T-Axis Home Time Out"); _parentForm._UmacCtrl.MoveXYTStop(); this._parentForm._Main_Screen._SelfChkWork.MotionAlarm[2] = true; return; } + // Thread.Sleep(50); + + // _parentForm._UmacCtrl.Home_Start(UmacAxis.X_Axis, true); + // if (!HomeWaitMove(UmacAxis.X_Axis, 1000, 120000)) { _parentForm.MSGShow("X-Axis Home Time Out"); _parentForm._UmacCtrl.MoveXYTStop(); this._parentForm._Main_Screen._SelfChkWork.MotionAlarm[0] = true; return; } + // _parentForm._TriggerBoard.Set_Reset_EncoderCounter(); + + // _parentForm.MSGShow("All Axis Home Complete"); + //} + //catch (Exception ee) + //{ + // _parentForm.WriteToDebugLog("Screen_PMC_Manual : All_Axis_Home ::" + ee.ToString()); + //} + } + + //Stage #2 + public void All_Axis_Home2() + { + //try + //{ + // if(bATT_n_Robot_Home == false) + // ATT_n_Robot_Home(); //todo. LYW 遺꾨━ + + // bool _bServoCheck_S, _bServoCheck_X, _bServoCheck_Y, _bServoCheck_T; + + + // //var ioPad = new DigitalIoPad(); + // //ioPad.Setup(PadItem.NoYes, "All Axis Homing?"); + // //ioPad.ShowDialog(); + // //if (ioPad.DialogResult != DialogResult.OK) return; + + // //if (ioPad.GetValue() == "YES") + // //{ + // // Set Home Speed + // //_parentForm._UmacCtrl.Home_SetSpeed(Axis.S_Axis2, Convert.ToDouble(_IoMemory.ReadIo(eSystemParam.Stage_S_Home_Spd))); + // _parentForm._UmacCtrl.Home_SetSpeed(UmacAxis.Y_Axis2, Convert.ToDouble(_IoMemory.ReadIo(eSystemParam.Stage_Y_Home_Spd))); + // _parentForm._UmacCtrl.Home_SetSpeed(UmacAxis.X_Axis2, Convert.ToDouble(_IoMemory.ReadIo(eSystemParam.Stage_X_Home_Spd))); + // _parentForm._UmacCtrl.Home_SetSpeed(UmacAxis.T_Axis2, 1); + + // //_bServoCheck_S = Convert.ToBoolean(_IoMemory.ReadIo(eModule_Motion_Info.S_ServeSts)); + // //if (!_bServoCheck_S) _parentForm._UmacCtrl.Amp_Enable(Axis.S_Axis2, true); + + // _bServoCheck_X = _parentForm._UmacCtrl.GetAxisStatus(UmacAxis.X_Axis2, AxisStatus.ServoStatus); + // if (!_bServoCheck_X) _parentForm._UmacCtrl.Amp_Enable(UmacAxis.X_Axis2, true); + + // _bServoCheck_Y = _parentForm._UmacCtrl.GetAxisStatus(UmacAxis.Y_Axis2, AxisStatus.ServoStatus); + // if (!_bServoCheck_Y) _parentForm._UmacCtrl.Amp_Enable(UmacAxis.Y_Axis2, true); + + // _bServoCheck_T = _parentForm._UmacCtrl.GetAxisStatus(UmacAxis.T_Axis2, AxisStatus.ServoStatus); + // if (!_bServoCheck_T) _parentForm._UmacCtrl.Amp_Enable(UmacAxis.T_Axis2, true); + + // //_parentForm._UmacCtrl.Home_SetSpeed(Axis.S_Axis2, Convert.ToDouble(_IoMemory.ReadIo(eSystemParam.Stage_S_Home_Spd))); + // //_parentForm._UmacCtrl.Home_Start(Axis.S_Axis2, true); + + // //if (!HomeWaitMove(Axis.S_Axis, 1000, 120000)) + // //{ + // // _parentForm.MSGShow("S-Axis Home Time Out"); + // // this._parentForm._Main_Screen._SelfChkWork.MotionAlarm[3] = true; + // // return; + // //} + + // //if (_parentForm._UmacCtrl.Home_Status(Axis.S_Axis)) + // //{ + // // _parentForm._UmacCtrl.MoveS_SetPos(Convert.ToDouble(_IoMemory.ReadIo(eUserParam.Stage_S_Close_Pos))); + // // _parentForm._UmacCtrl.MoveS_Run(); + // //} + // Thread.Sleep(50); + + // _parentForm._UmacCtrl.Home_Start(UmacAxis.Y_Axis2, true); + // if (!HomeWaitMove(UmacAxis.Y_Axis2, 1000, 120000)) { _parentForm.MSGShow("Y-Axis2 Home Time Out"); _parentForm._MotionFunc.MoveAllStop(); this._parentForm._Main_Screen._SelfChkWork.MotionAlarm[1] = true; return; } + // Thread.Sleep(50); + + // _parentForm._UmacCtrl.Home_Start(UmacAxis.T_Axis2, true); + // if (!HomeWaitMove(UmacAxis.T_Axis2, 1000, 120000)) { _parentForm.MSGShow("T-Axis2 Home Time Out"); _parentForm._MotionFunc.MoveAllStop(); this._parentForm._Main_Screen._SelfChkWork.MotionAlarm[2] = true; return; } + // Thread.Sleep(50); + + // _parentForm._UmacCtrl.Home_Start(UmacAxis.X_Axis2, true); + // if (!HomeWaitMove(UmacAxis.X_Axis2, 1000, 120000)) { _parentForm.MSGShow("X-Axis2 Home Time Out"); _parentForm._MotionFunc.MoveAllStop(); this._parentForm._Main_Screen._SelfChkWork.MotionAlarm[0] = true; return; } + // _parentForm._TriggerBoard.Set_Reset_EncoderCounter(); + + // _parentForm.MSGShow("All Axis2 Home Complete"); + //} + //catch (Exception ee) + //{ + // _parentForm.WriteToDebugLog("Screen_Maint_Manual : All_Axis2_Home ::" + ee.ToString()); + //} + } + + #endregion + + + #region "�쟾泥� 紐⑦꽣 議곗옉" + + //CMB #1 - �쟾泥� 紐⑦꽣 servo on + private void BtnAllServoON_Click(object sender, EventArgs e) + { + AllServoON(); + } + + //CMB #1 - �쟾泥� 紐⑦꽣 servo off + private void BtnAllServoOFF_Click(object sender, EventArgs e) + { + AllServoOFF(); + } + + //CMB #1 - �쟾泥� 紐⑦꽣 home + private void BtnAllHome_Click(object sender, EventArgs e) + { + All_Home1(); + } + + //CMB #1 - �쟾泥� 紐⑦꽣 stop + private void BtnAllStop_Click(object sender, EventArgs e) + { + All_Stop(); + } + + private void AllServoON() + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "ALL SERVO ON?"); + ioPad.ShowDialog(); + if (ioPad.DialogResult != DialogResult.OK) return; + if (ioPad.GetValue() != "YES") return; + + //_parentForm.WriteToBtnLog("Screen_PMC_Maintenance : btnAllServoON1_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "btnAllServoON1_Click"); //Button LogDB + + try + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : All Servo on"); + + _mainFrame.equipment.powerPmac.ServoOnOff(PmacAxis.X_Axis, true); + _mainFrame.equipment.powerPmac.ServoOnOff(PmacAxis.Y_Axis, true); + _mainFrame.equipment.powerPmac.ServoOnOff(PmacAxis.T_Axis, true); + + //_parentForm._UmacCtrl.Amp_Enable(Axis.S_Axis, true);//??? + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + private void AllServoOFF() + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "ALL SERVO OFF?"); + ioPad.ShowDialog(); + if (ioPad.DialogResult != DialogResult.OK) return; + if (ioPad.GetValue() != "YES") return; + + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : All servo off"); + + //_parentForm.WriteToBtnLog("Screen_PMC_Maintenance : btnAllServoOFF1_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "btnAllServoOFF1_Click"); //Button LogDB + + try + { + _mainFrame.equipment.powerPmac.ServoOnOff(PmacAxis.X_Axis, false); + _mainFrame.equipment.powerPmac.ServoOnOff(PmacAxis.Y_Axis, false); + _mainFrame.equipment.powerPmac.ServoOnOff(PmacAxis.T_Axis, false); + //_parentForm._UmacCtrl.Amp_Enable(Axis.S_Axis, false); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + + + private void All_Home1() + { + //var ioPad = new DigitalIoPad(); + //ioPad.Setup(PadItem.NoYes, "Do you want to start all axis's initial job?"); + //ioPad.ShowDialog(); + //if (ioPad.DialogResult != DialogResult.OK) return; + //if (ioPad.GetValue() != "YES") return; + ////_parentForm.WriteToBtnLog("Screen_PMC_Manual : btnAllHome_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "btnAllHome1_Click"); //Button LogDB + + //if (_parentForm._AlarmMgr.ScanAlarmRegistered(Alarm_List.AL_STAGE_CDA_PRESS_HIGH) || _parentForm._AlarmMgr.ScanAlarmRegistered(Alarm_List.AL_STAGE_CDA_PRESS_LOW)) + //{ _parentForm.MSGShow("Check Stage CDA Alarm !!"); return; } + + //if (_parentForm._IO_Dual_Screen.Get_PMC_DO(PMC_DOUT.X1_AXIS_DYNAMIC_BRAKE_OFF) == false) + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.X1_AXIS_DYNAMIC_BRAKE_OFF, true); + + //if (_parentForm._IO_Dual_Screen.Get_PMC_DO(PMC_DOUT.Y1_AXIS_DYNAMIC_BRAKE_OFF) == false) + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.Y1_AXIS_DYNAMIC_BRAKE_OFF, true); + + //_ThreadClass[(int)eThread._Axis_All_Home1].Start(); + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : All home"); + } + + private void All_Stop() + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "ALL STOP?"); + ioPad.ShowDialog(); + if (ioPad.DialogResult != DialogResult.OK) return; + if (ioPad.GetValue() != "YES") return; + + //_parentForm.WriteToBtnLog("Screen_PMC_Maintenance : btnAllServoOFF1_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "btnAllServoOFF1_Click"); //Button LogDB + + try + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : All stop"); + _mainFrame.equipment.powerPmac.MoveStop(PmacAxis.X_Axis); + _mainFrame.equipment.powerPmac.MoveStop(PmacAxis.Y_Axis); + _mainFrame.equipment.powerPmac.MoveStop(PmacAxis.T_Axis); + //_parentForm._UmacCtrl.Amp_Enable(Axis.S_Axis, false); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + + private void All_Home2() + { + //var ioPad = new DigitalIoPad(); + //ioPad.Setup(PadItem.NoYes, "Do you want to start all axis's initial job?"); + //ioPad.ShowDialog(); + //if (ioPad.DialogResult != DialogResult.OK) return; + //if (ioPad.GetValue() != "YES") return; + ////_parentForm.WriteToBtnLog("Screen_PMC_Manual : btnAllHome_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "btnAllHome2_Click"); //Button LogDB + + //if (_parentForm._AlarmMgr.ScanAlarmRegistered(Alarm_List.AL_STAGE_CDA_PRESS_HIGH) || _parentForm._AlarmMgr.ScanAlarmRegistered(Alarm_List.AL_STAGE_CDA_PRESS_LOW)) + //{ _parentForm.MSGShow("Check Stage CDA Alarm !!"); return; } + + //if (_parentForm._IO_Dual_Screen.Get_PMC_DO(PMC_DOUT.X2_AXIS_DYNAMIC_BRAKE_OFF) == false) + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.X2_AXIS_DYNAMIC_BRAKE_OFF, true); + + //if (_parentForm._IO_Dual_Screen.Get_PMC_DO(PMC_DOUT.Y2_AXIS_DYNAMIC_BRAKE_OFF) == false) + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.Y2_AXIS_DYNAMIC_BRAKE_OFF, true); + + //_ThreadClass[(int)eThread._Axis_All_Home2].Start(); + } + + private void All_Stop2() + { + + } + + //------------------------------------------------ + + //CMB #2 - �쟾泥� 紐⑦꽣 servo on + private void BtnAllServoON2_Click(object sender, EventArgs e) + { + //AllServoON_Stage2(); + } + + //CMB #2 - �쟾泥� 紐⑦꽣 servo off + private void BtnAllServoOFF2_Click(object sender, EventArgs e) + { + //AllServoOFF_Stage2(); + } + + //CMB #2 - �쟾泥� 紐⑦꽣 home + private void BtnAllHome2_Click(object sender, EventArgs e) + { + + } + + //CMB #2 - �쟾泥� 紐⑦꽣 stop + private void BtnAllStop2_Click(object sender, EventArgs e) + { + + } + + #endregion + + + //*************************************************************************************** + // Stage I/O �젙蹂� �몴�떆 (洹몃옒�뵿 泥섎━) + //*************************************************************************************** + + //GDI+ + #region Field + /// <summary> + /// 洹몃옒�봽 �뒪�젅�뱶 + /// </summary> + private Thread graphThread; + + /// <summary> + /// Bitmap �젙�쓽 + /// </summary> + int bitmapWidth; + int bitmapHeight; + Bitmap bitmap; + + int bitmapWidth1; + int bitmapHeight1; + Bitmap bitmap1; + + /// <summary> + /// 洹몃옒�뵿 而щ윭 + /// </summary> + SolidBrush _brush_Empty = new SolidBrush(Color.White); //Idle + SolidBrush _brush_Lime = new SolidBrush(Color.Lime); //OK + SolidBrush _brush_Limit = new SolidBrush(Color.LightCoral); //Alarm, Error, Limit + SolidBrush _brush_Alarm = new SolidBrush(Color.Red); //Alarm, Error, Limit + SolidBrush _brush_Complete = new SolidBrush(Color.LightGreen); //OK + + /// <summary> + /// �꽕�젙媛� �젙�쓽 + /// </summary> + private int nTextSize = 7; //Text size + private string nStr = "";//bar index + private int nBarW = 65;//bar size W + private int nBarH = 16;//bar size H + private int nOffset;//bar 媛� �긽�븯媛꾧꺽 + private int nStartX = 1;//bar 肉뚮━�뒗 �떆�옉�쐞移� + private int[] nShift = { 0, 65 + 4, 130 + 6, 195 + 8 }; + private int i = 1; + + string[] Index_X1 = new string[] { "X1 Limit +", "X1 Limit -", "X1 Home", "X1 Inpos", "X1 Alarm", "X1 Error", "X1 AmpFault", "X1 Servo", "0", "0" }; + string[] Index_Y1 = new string[] { "Y1 Limit +", "Y1 Limit -", "Y1 Home", "Y1 Inpos", "Y1 Alarm", "Y1 Error", "Y1 AmpFault", "Y1 Servo", "0", "0" }; + string[] Index_T1 = new string[] { "T1 Limit +", "T1 Limit -", "T1 Home", "T1 Inpos", "T1 Alarm", "T1 Error", "T1 AmpFault", "T1 Servo", "0", "0" }; + string[] Index_S1 = new string[] { "S1 Limit +", "S1 Limit -", "S1 Home", "S1 Inpos", "S1 Alarm", "S1 Error", "S1 AmpFault", "S1 Servo", "0", "0" }; + + string[] Index_X2 = new string[] { "X2 Limit +", "X2 Limit -", "X2 Home", "X2 Inpos", "X2 Alarm", "X2 Error", "X2 AmpFault", "X2 Servo", "0", "0" }; + string[] Index_Y2 = new string[] { "Y2 Limit +", "Y2 Limit -", "Y2 Home", "Y2 Inpos", "Y2 Alarm", "Y2 Error", "Y2 AmpFault", "Y2 Servo", "0", "0" }; + string[] Index_T2 = new string[] { "T2 Limit +", "T2 Limit -", "T2 Home", "T2 Inpos", "T2 Alarm", "T2 Error", "T2 AmpFault", "T2 Servo", "0", "0" }; + string[] Index_S2 = new string[] { "S2 Limit +", "S2 Limit -", "S2 Home", "S2 Inpos", "S2 Alarm", "S2 Error", "S2 AmpFault", "S2 Servo", "0", "0" }; + + #endregion "---------------" + + #region "Stage Information 洹몃옒�뵿 泥섎━" + + Graphics _graphics_Stage1; + Graphics _graphics_Stage2; + + + private void DisplayStageInfo() + { + try + { + //if (!_parentForm._IO_Dual_Screen.Get_PMC_DI(PMC_DIN.Y1_MOTOR_OVERTEMP)) + //{ + // _parentForm.AddAlarm(Alarm_List.AL_STAGE_Y1_AXIS_OVERTEMP); + // _parentForm._Main_Screen.ProcPause(); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_1, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_2, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_3, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_4, false); + //} + //if (!_parentForm._IO_Dual_Screen.Get_PMC_DI(PMC_DIN.Y2_MOTOR_OVERTEMP)) + //{ + // _parentForm.AddAlarm(Alarm_List.AL_STAGE_Y2_AXIS_OVERTEMP); + // _parentForm._Main_Screen.ProcPause(); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_1, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_2, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_3, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_4, false); + //} + //if (!_parentForm._IO_Dual_Screen.Get_PMC_DI(PMC_DIN.X1_MOTOR_OVERTEMP)) + //{ + // _parentForm.AddAlarm(Alarm_List.AL_STAGE_X1_AXIS_OVERTEMP); + // _parentForm._Main_Screen.ProcPause(); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_1, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_2, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_3, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_4, false); + //} + //if (!_parentForm._IO_Dual_Screen.Get_PMC_DI(PMC_DIN.X2_MOTOR_OVERTEMP)) + //{ + // _parentForm.AddAlarm(Alarm_List.AL_STAGE_X2_AXIS_OVERTEMP); //X2 alarm 異붽� + // _parentForm._Main_Screen.ProcPause(); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_1, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_2, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_3, false); + // _parentForm._IO_Dual_Screen.Set_PMC_IoBit(PMC_DOUT.SHUTTER_OPN_4, false); + //} + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + private double[] m_dOldPos = new double[(int)PmacAxis.enMax]; + private double[] m_dOldSpeed = new double[(int)PmacAxis.enMax]; + private bool[,] m_bOldStatus = new bool[(int)PmacAxis.enMax, 6]; + private void MotorInfo() + { + try + { + Label[] lblPos = { lblPos1, lblPos2, lblPos3 }; + Label[] lblVel = { lblVel1, lblVel2, lblVel3 }; + Label[] lblServo = { lblServo1, lblServo2, lblServo3 }; + Label[] lblPLimit = { lblPLimit1, lblPLimit2, lblPLimit3 }; + Label[] lblNLimit = { lblNLimit1, lblNLimit2, lblNLimit3 }; + Label[] lblFault = { lblFault1, lblFault2, lblFault3 }; + Label[] lblInPos = { lblInPos1, lblInPos2, lblInPos3 }; + Label[] lblHomeComplete = { lblHomeComp1, lblHomeComp2, lblHomeComp3 }; + int nCnt = 0; + + for(int i = 0; i < (int)PmacAxis.enMax; i++) + { + nCnt = 0; + //Pos + if(m_dOldPos[i] != _mainFrame.equipment.powerPmac.GetAxisActualPos((PmacAxis)i)) + { + m_dOldPos[i] = _mainFrame.equipment.powerPmac.GetAxisActualPos((PmacAxis)i); + + lblPos[i].Text = m_dOldPos[i].ToString(); + } + //Vel + if (m_dOldSpeed[i] != _mainFrame.equipment.powerPmac.GetAxisActualSpeed((PmacAxis)i)) + { + m_dOldSpeed[i] = _mainFrame.equipment.powerPmac.GetAxisActualSpeed((PmacAxis)i); + + lblVel[i].Text = m_dOldSpeed[i].ToString(); + } + //Servo + if (m_bOldStatus[i, nCnt] != _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.ServoOn)) + { + m_bOldStatus[i, nCnt] = _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.ServoOn); + + if(m_bOldStatus[i, nCnt]) + lblServo[i].BackColor = Color.Green; + else + lblServo[i].BackColor = Color.Transparent; + } + nCnt++; + //PLIMIT + if (m_bOldStatus[i, nCnt] != _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.PLimit_HW)) + { + m_bOldStatus[i, nCnt] = _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.PLimit_HW); + + if (m_bOldStatus[i, nCnt]) + lblPLimit[i].BackColor = Color.Red; + else + lblPLimit[i].BackColor = Color.Transparent; + } + nCnt++; + //NLIMIT + if (m_bOldStatus[i, nCnt] != _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.NLimit_HW)) + { + m_bOldStatus[i, nCnt] = _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.NLimit_HW); + + if (m_bOldStatus[i, nCnt]) + lblNLimit[i].BackColor = Color.Red; + else + lblNLimit[i].BackColor = Color.Transparent; + } + nCnt++; + //FAULT + if (m_bOldStatus[i, nCnt] != _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.AmpFault)) + { + m_bOldStatus[i, nCnt] = _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.AmpFault); + + if (m_bOldStatus[i, nCnt]) + lblFault[i].BackColor = Color.Red; + else + lblFault[i].BackColor = Color.Transparent; + } + nCnt++; + //INPOS + if (m_bOldStatus[i, nCnt] != _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.InPos)) + { + m_bOldStatus[i, nCnt] = _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.InPos); + + if (m_bOldStatus[i, nCnt]) + lblInPos[i].BackColor = Color.Green; + else + lblInPos[i].BackColor = Color.Transparent; + } + nCnt++; + //HOME COMP + if (m_bOldStatus[i, nCnt] != _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.HomeComplete)) + { + m_bOldStatus[i, nCnt] = _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.HomeComplete); + + if (m_bOldStatus[i, nCnt]) + lblHomeComplete[i].BackColor = Color.Green; + else + lblHomeComplete[i].BackColor = Color.Transparent; + } + nCnt++; + } + + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + private void DisplaySelectedAxisInfo() + { + bool[] bTemp = new bool[6]; + for (int i = 0; i < bTemp.Length; i++) + bTemp[i] = false; + + if (CheckSelectAxisPos() == false) + { + return; + } + + //tbCurPos.Text = _IoMemory.ReadIo((eModule_Motion_Info)((int)eModule_Motion_Info.Y_CurPos + m_nSelectAxis_Index)); + //tbCurSpeed.Text = _IoMemory.ReadIo((eModule_Motion_Info)((int)eModule_Motion_Info.Y_CurSpd + m_nSelectAxis_Index)); + tbCurPos.Text = _mainFrame.equipment.powerPmac.GetAxisActualPos(PmacAxis.Y_Axis + m_nSelectAxis_Index).ToString("F4"); + tbCurSpeed.Text = _mainFrame.equipment.powerPmac.GetAxisActualSpeed(PmacAxis.Y_Axis + m_nSelectAxis_Index).ToString("F4"); + + //Servo + bTemp[0] = _mainFrame.equipment.powerPmac.GetAxisStatus(PmacAxis.Y_Axis + m_nSelectAxis_Index, AxisStatus.ServoOn); + //PlusLimit + bTemp[1] = _mainFrame.equipment.powerPmac.GetAxisStatus(PmacAxis.Y_Axis + m_nSelectAxis_Index, AxisStatus.PLimit_HW); + //MinusLimit + bTemp[2] = _mainFrame.equipment.powerPmac.GetAxisStatus(PmacAxis.Y_Axis + m_nSelectAxis_Index, AxisStatus.NLimit_HW); + //Fault + //Alarm + bTemp[3] = _mainFrame.equipment.powerPmac.GetAxisStatus(PmacAxis.Y_Axis + m_nSelectAxis_Index, AxisStatus.AmpFault); + //In Position + bTemp[4] = _mainFrame.equipment.powerPmac.GetAxisStatus(PmacAxis.Y_Axis + m_nSelectAxis_Index, AxisStatus.InPos); + //Home + bTemp[5] = _mainFrame.equipment.powerPmac.GetAxisStatus(PmacAxis.Y_Axis + m_nSelectAxis_Index, AxisStatus.HomeComplete); + + //LED + int nCnt = 0; + //Servo + if (m_bOldAxisStatus[nCnt] != bTemp[nCnt]) + { + if (bTemp[nCnt]) + Label_LED_ServoOn.BackColor = Color.Green; + else + Label_LED_ServoOn.BackColor = Color.White; + m_bOldAxisStatus[nCnt] = bTemp[nCnt]; + } + nCnt++; + + //PlusLimit + if (m_bOldAxisStatus[nCnt] != bTemp[nCnt]) + { + if (bTemp[nCnt]) + Label_LED_PlusLimit.BackColor = Color.Red; + else + Label_LED_PlusLimit.BackColor = Color.White; + m_bOldAxisStatus[nCnt] = bTemp[nCnt]; + } + nCnt++; + + //MinusLimit + if (m_bOldAxisStatus[nCnt] != bTemp[nCnt]) + { + if (bTemp[nCnt]) + Label_LED_MinusLimit.BackColor = Color.Red; + else + Label_LED_MinusLimit.BackColor = Color.White; + m_bOldAxisStatus[nCnt] = bTemp[nCnt]; + } + nCnt++; + + //Fault + if (m_bOldAxisStatus[nCnt] != bTemp[nCnt]) + { + if (bTemp[nCnt]) + Label_LED_FlowingError.BackColor = Color.Red; + else + Label_LED_FlowingError.BackColor = Color.White; + m_bOldAxisStatus[nCnt] = bTemp[nCnt]; + } + nCnt++; + + //InPosition + if (m_bOldAxisStatus[nCnt] != bTemp[nCnt]) + { + if (bTemp[nCnt]) + Label_LED_InPos.BackColor = Color.Green; + else + Label_LED_InPos.BackColor = Color.White; + m_bOldAxisStatus[nCnt] = bTemp[nCnt]; + } + nCnt++; + + //Home + if (m_bOldAxisStatus[nCnt] != bTemp[nCnt]) + { + if (bTemp[nCnt]) + Label_LED_Home.BackColor = Color.Green; + else + Label_LED_Home.BackColor = Color.White; + m_bOldAxisStatus[nCnt] = bTemp[nCnt]; + } + nCnt++; + } + + private void GR200Update() + { + tb_MainCDAPressure.Text = _mainFrame.equipment.gr200.MainCDAPressure.ToString(); + tb_MainVacuumPressure.Text = _mainFrame.equipment.gr200.MainVacuumPressure.ToString(); + tb_N2PTPPressure.Text = _mainFrame.equipment.gr200.N2PTPressure.ToString(); + tb_MainCDAFlow.Text = _mainFrame.equipment.gr200.MainCDAFlow.ToString(); + tb_ChamberVacuumPressure.Text = _mainFrame.equipment.gr200.ChamberVacuumPressure.ToString(); + } + + #endregion "---------------" + + + //*************************************************************************************** + // ListView Event + //*************************************************************************************** + #region "ListView Event" + + private void ListView_AxisPosList_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) + { + e.DrawDefault = true; + } + + private void ListView_AxisPosList_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) + { + ListView _ListView = sender as ListView; + int nIndex = e.ItemIndex; + int nColumn = e.ColumnIndex; + + //if (e.SubItem.Bounds.Width == e.SubItem.Bounds.Right) + //{ + // e.DrawDefault = true; + // return; + //} + if (nColumn == 0)//e.SubItem.Bounds.Width == e.SubItem.Bounds.Right) + { + e.DrawDefault = true; + return; + } + if (nIndex > -1) + { + //int nAxis = int.Parse(e.SubItem.Text.ToString()); + int nAxis = int.Parse(_ListView.Items[nIndex].SubItems[(int)List_Index.EnumNo].Text); + + #region Select �깋 蹂�寃�. + Graphics g = e.Graphics; + g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default; + g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SystemDefault; + + //�궗�슜�븷 釉뚮윭�돩 �꽑�뼵 + SolidBrush backBrush = null; + SolidBrush foreBrush = null; + + //�꽑�깮�맂 �빆紐⑹씠 �븘�땶寃쎌슦 �씪諛섏쟻�쑝濡� 釉뚮윭�돩 �깮�꽦 + if ((e.ItemState & ListViewItemStates.Focused) == 0) + { + backBrush = new SolidBrush(SystemColors.Window); + foreBrush = new SolidBrush(SystemColors.WindowText); + } + else + {//�꽑�깮�맂 �빆紐⑹쓽 寃쎌슦�뒗 �꽑�깮�맂 �빆紐⑹씤 寃쎌슦 釉뚮윭�돩 �깮�꽦 + backBrush = new SolidBrush(SystemColors.Highlight); + foreBrush = new SolidBrush(SystemColors.HighlightText); + } + + //媛뺤“ �씤�뜳�뒪媛� �꽕�젙 �맂 寃쎌슦 + if (nAxis % 3 == 1) + { + if (foreBrush != null) + foreBrush.Dispose(); + + if (e.Item.Selected == true) + //|| (e.ItemState & ListViewItemStates.Focused) == ListViewItemStates.Focused) + {//�꽑�깮�맂 �빆紐⑹쓽 寃쎌슦 釉뚮윭�돩 �깮�꽦 + backBrush = new SolidBrush(Color.LightGreen);//Color.Lime + foreBrush = new SolidBrush(Color.Blue); + } + else + {//�룷而ㅼ뒪媛� �븘�땶 �냸�� �꽑�깮 �깋�쑝濡� �뀓�뒪�듃 釉뚮윭�돩瑜� �깮�꽦 + backBrush = new SolidBrush(Color.LightGreen);//Color.Lime + foreBrush = new SolidBrush(SystemColors.WindowText); + } + } + else if (nAxis % 3 == 2) + { + if (foreBrush != null) + foreBrush.Dispose(); + + if (e.Item.Selected == true) + //|| (e.ItemState & ListViewItemStates.Focused) == ListViewItemStates.Focused) + {//�꽑�깮�맂 �빆紐⑹쓽 寃쎌슦 釉뚮윭�돩 �깮�꽦 + backBrush = new SolidBrush(Color.LightBlue);//Color.DeepSkyBlue + foreBrush = new SolidBrush(Color.Blue); + } + else + {//�룷而ㅼ뒪媛� �븘�땶 �냸�� �꽑�깮 �깋�쑝濡� �뀓�뒪�듃 釉뚮윭�돩瑜� �깮�꽦 + backBrush = new SolidBrush(Color.LightBlue);//Color.DeepSkyBlue + foreBrush = new SolidBrush(SystemColors.WindowText); + } + } + else + { + if (foreBrush != null) + foreBrush.Dispose(); + + if (e.Item.Selected == true) + //|| (e.ItemState & ListViewItemStates.Focused) == ListViewItemStates.Focused) + {//�꽑�깮�맂 �빆紐⑹쓽 寃쎌슦 釉뚮윭�돩 �깮�꽦 + backBrush = new SolidBrush(Color.LightYellow);//Color.Gold + foreBrush = new SolidBrush(Color.Blue); + } + else + {//�룷而ㅼ뒪媛� �븘�땶 �냸�� �꽑�깮 �깋�쑝濡� �뀓�뒪�듃 釉뚮윭�돩瑜� �깮�꽦 + backBrush = new SolidBrush(Color.LightYellow);//Color.Gold + foreBrush = new SolidBrush(SystemColors.WindowText); + } + } + //諛곌꼍�깋 梨꾩슦湲� + g.FillRectangle(backBrush, e.SubItem.Bounds.X, e.SubItem.Bounds.Y, e.SubItem.Bounds.Width, e.SubItem.Bounds.Height); + + //�븘�씠�뀥 �뀓�뒪�듃 Draw 媛��슫�뜲 �젙�젹. + Rectangle drawRect = new Rectangle(e.SubItem.Bounds.X, e.SubItem.Bounds.Y, e.SubItem.Bounds.Width, e.SubItem.Bounds.Height); + StringFormat stringFormat = new StringFormat(); + stringFormat.Alignment = StringAlignment.Center; + stringFormat.LineAlignment = StringAlignment.Center; + g.DrawString(e.SubItem.Text, _ListView.Font, foreBrush, drawRect, stringFormat); + + //由ъ냼�뒪 �빐�젣 + if (backBrush != null) + backBrush.Dispose(); + + if (foreBrush != null) + foreBrush.Dispose(); + #endregion + } + else + { + e.DrawDefault = true; + } + } + + private void ListView_AxisPosList_SelectedIndexChanged(object sender, EventArgs e) + { + ListView listView = sender as ListView; + if (listView.SelectedItems.Count <= 0) + return; + + int nIndex = listView.SelectedItems[0].Index; + if (nIndex < 0) + return; + + Label_CurrentInfo_AxisName.Text = listView.Items[nIndex].SubItems[(int)List_Index.Axis_Name].Text; + //Label_CurrentInfo_AxisName.Text = listView.Items[nIndex].SubItems[2].Text; + Label_Select_Axis_PosName.Text = Label_CurrentInfo_PositionName.Text = listView.Items[nIndex].SubItems[(int)List_Index.Pos_Name].Text; + Label_CurrentInfo_AxisNo.Text = listView.Items[nIndex].SubItems[(int)List_Index.Axis].Text; + Label_CurrentInfo_PosIndex.Text = listView.Items[nIndex].SubItems[(int)List_Index.PosIndex].Text; + Label_Select_Axis_PosVal.Text = Set_Select_PosVal.Text = listView.Items[nIndex].SubItems[(int)List_Index.Position].Text; + Set_Select_SpeedVal.Text = listView.Items[nIndex].SubItems[(int)List_Index.Speed].Text; + Set_Select_AccelVal.Text = listView.Items[nIndex].SubItems[(int)List_Index.Accel].Text; + + try + { + if (ListView_AxisPosList.SelectedItems.Count > 0) + m_nSelect_RowIndex = ListView_AxisPosList.SelectedItems[0].Index; + + m_nSelectAxis_Index = int.Parse(listView.Items[nIndex].SubItems[(int)List_Index.EnumNo].Text); + m_nSelectPos_Index = int.Parse(Label_CurrentInfo_PosIndex.Text) - 1; + } + catch + { + m_nSelect_RowIndex = -1; + m_nSelectAxis_Index = -1; + m_nSelectPos_Index = -1; + } + } + + #endregion + + #region "JOG" + + //+ 諛⑺뼢 + private void Btn_Jog_CW_MouseDown(object sender, MouseEventArgs e) + { + try + { + if (!JogMoveInterlockCheck(true, false)) + return; + //_parentForm.WriteToBtnLog("Screen_PMC_Manual : btnYJogM_MouseDown"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "btnJogP_MouseDown"); //Button LogDB + + + //_parentForm._frmPmc.EXTShutterCLS(); + + //if (_parentForm._AlarmMgr.ScanAlarmRegistered(Alarm_List.AL_STAGE_CDA_PRESS_HIGH) || _parentForm._AlarmMgr.ScanAlarmRegistered(Alarm_List.AL_STAGE_CDA_PRESS_LOW)) + //{ _parentForm.MSGShow("Check Stage CDA Alarm !!"); return; } + + //210831 hslee + //_parentForm._MotionFunc.MoveSToClosePos(false); + + //異� 踰덊샇�뿉 �뵲�씪 援щ텇�븯�뿬 �쟻�슜 - �닔�젙�븘�슂 + //if (!_parentForm._frmPmc.ChkGateCLS(0)) return; + //if (!_parentForm._frmPmc.ChkGateCLS(1)) return; + // + + //210817 hslee + //�젙留� �떕�뼱�븯�뒗 諛⑸쾿�씠吏�留� �씠踰덉뿏 �벐�옄 + //pmac + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Positiove Jog {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} Speed {Set_Control_Speed.Text}"); + _mainFrame.equipment.powerPmac.MoveJog((PmacAxis)m_nSelectAxis_Index, Convert.ToDouble(Set_Control_Speed.Text), MotionDirection.Plus); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + private void Btn_Jog_CW_MouseUp(object sender, MouseEventArgs e) + { + try + { + //if (!JogMoveInterlockCheck(true, true)) + // return; + //PMac + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Stop {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name}"); + _mainFrame.equipment.powerPmac.MoveStop((PmacAxis)m_nSelectAxis_Index); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + //-諛⑺뼢 + private void Btn_Jog_CCW_MouseDown(object sender, MouseEventArgs e) + { + try + { + if (!JogMoveInterlockCheck(true, false)) + return; + //_parentForm.WriteToBtnLog("Screen_PMC_Manual : btnYJogM_MouseDown"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "btnJogM_MouseDown"); //Button LogDB + + //_parentForm._IOFunc.SolExtAllShutterOpenClose(false, false); + + //if (_parentForm._AlarmMgr.ScanAlarmRegistered(Alarm_List.AL_STAGE_CDA_PRESS_HIGH) || _parentForm._AlarmMgr.ScanAlarmRegistered(Alarm_List.AL_STAGE_CDA_PRESS_LOW)) + //{ _parentForm.MSGShow("Check Stage CDA Alarm !!"); return; } + + //210831 hslee + // _parentForm._MotionFunc.MoveSToClosePos(false); + + //異� 踰덊샇�뿉 �뵲�씪 援щ텇�븯�뿬 �쟻�슜 - �닔�젙�븘�슂 + //if (!_parentForm._frmPmc.ChkGateCLS(0)) return; + //if (!_parentForm._frmPmc.ChkGateCLS(1)) return; + // + + //PMac + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Negative Jog {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} Speed {Set_Control_Speed.Text}"); + _mainFrame.equipment.powerPmac.MoveJog((PmacAxis)m_nSelectAxis_Index, Convert.ToDouble(Set_Control_Speed.Text), MotionDirection.Minus); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + private void Btn_Jog_CCW_MouseUp(object sender, MouseEventArgs e) + { + try + { + //if (!JogMoveInterlockCheck(true, true)) + // return; + //PMac + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Stop {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name}"); + _mainFrame.equipment.powerPmac.MoveStop((PmacAxis)m_nSelectAxis_Index); + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + + #endregion + + #region "異� 援щ룞踰꾪듉" + + /// <summary> + /// ���옣�쐞移� �씠�룞 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void Btn_PositionMove_Click(object sender, EventArgs e) + { + //�꽑�깮�맂 �씤�뜳�뒪 泥댄겕 + if (!CheckSelectAxisPos()) + return; + //議곌렇 UI �씤�꽣�씫泥댄겕 + //if (!JogMoveInterlockCheck()) + // return; + + //�씠�룞 + double dPos = _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Position; + double dSpeed = _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Speed; + double dAcc = _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Accel; + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Position Move {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} Position {dPos}, Speed {dSpeed}, Accel {dAcc}"); + MoveAbs(m_nSelectAxis_Index, dPos, dSpeed, dAcc); + } + + /// <summary> + /// �쐞移� �꽕�젙 踰꾪듉 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void Btn_PositionSet_Click(object sender, EventArgs e) + { + bool[] bRecipeLoad = new bool[2]; + bool[] bRecipeSave = { false, false }; + string[] strRecipeName = new string[2]; + if (MessageBox.Show("�꽑�깮�븳 �쐞移섎�� ���옣�븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Position = Convert.ToDouble(tbCurPos.Text); + //20210917 + ListView_AxisPosList.Items[m_nSelect_RowIndex].SubItems[6].Text = _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Position.ToString(); //�쐞移� + Set_Select_PosVal.Text = _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Position.ToString(); + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Set Position {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Name} Position {tbCurPos.Text}"); + SaveServoData(); + // InitView(); + } + + /// <summary> + /// Servo On/Off 踰꾪듉 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void Btn_ServoOnOff_Click(object sender, EventArgs e) + { + string strMsg = ""; + bool bCurStatus = _mainFrame.equipment.powerPmac.GetAxisStatus(PmacAxis.Y_Axis + m_nSelectAxis_Index, AxisStatus.ServoOn);/*_IoMemory.ReadIoBool(eModule_Motion_Info.Y_ServeSts + m_nSelectAxis_Index);*/ + + if (bCurStatus) + strMsg = "�꽑�깮 異� Servo瑜� Off �븯�떆寃좎뒿�땲源�?"; + else + strMsg = "�꽑�깮 異� Servo瑜� On �븯�떆寃좎뒿�땲源�?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + if(bCurStatus) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Position {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} Servo Off"); + } + else + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Position {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} Servo On"); + } + + _mainFrame.equipment.powerPmac.ServoOnOff((PmacAxis)m_nSelectAxis_Index, !bCurStatus); + } + + /// <summary> + /// �쟾泥� Home 踰꾪듉 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void Btn_Home_Click(object sender, EventArgs e) + { + //�씤�꽣�씫 異붽��븘�슂 + if (!CheckSelectAxisPos()) + { + MessageBox.Show("異� �꽑�깮�씠 �릺�뼱�엳吏� �븡�뒿�땲�떎.", "Warning"); + return; + } + + //Home Start + double dSpeed = 0.0; + + //�씤�꽣�씫�� �븣�븘�꽌... + //switch(m_nSelectAxis_Index) + //{ + // case (int)UmacAxis.X_Axis: + // case (int)UmacAxis.Y_Axis: + // case (int)UmacAxis.T_Axis: + // if(!CheckChamberGateClose(true)) + // { + // MessageBox.Show("Chamber Gate媛� �떕���엳吏� �븡�뒿�땲�떎", "Warning"); + // return; + // } + // break; + + // case (int)UmacAxis.X_Axis2: + // case (int)UmacAxis.Y_Axis2: + // case (int)UmacAxis.T_Axis2: + // if (!CheckChamberGateClose(false)) + // { + // MessageBox.Show("Chamber2 Gate媛� �떕���엳吏� �븡�뒿�땲�떎", "Warning"); + // return; + // } + // break; + + // default: + // break; + //} + + //PMAC + //�냽�룄�꽕�젙 �븞�븿! + //dSpeed = _mainFrame.equipment.powerPmac.GetAxisHommingSpeed((PmacAxis)m_nSelectAxis_Index); + //_parentForm._UmacCtrl.Home_SetSpeed((PmacAxis)m_nSelectAxis_Index, dSpeed); + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Home {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name}"); + _mainFrame.equipment.powerPmac.StartHomming((PmacAxis)m_nSelectAxis_Index); + + } + + /// <summary> + /// �쟾泥� �젙吏� 踰꾪듉 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + + + /// <summary> + /// �젅���씠�룞 踰꾪듉 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + /// + + private bool JogMoveInterlockCheck(bool bJogMoveFlag, bool bMsgFlag) + { + if (!CheckSelectAxisPos()) + { + if (bMsgFlag) + MessageBox.Show("異� �꽑�깮�씠 �릺�뼱�엳吏� �븡�뒿�땲�떎.", "Warning"); + return false; + } + + if (!bJogMoveFlag) + { + if (Set_Control_Pos.Text == "" || Set_Control_Pos == null) + { + if (bMsgFlag) + MessageBox.Show("�쐞移섍� �엯�젰�릺�뼱�엳吏� �븡�뒿�땲�떎.", "Warning"); + return false; + } + if (Set_Control_Acc.Text == "" || Set_Control_Acc == null) + { + if (bMsgFlag) + MessageBox.Show("媛��냽�룄媛� �엯�젰�릺�뼱�엳吏� �븡�뒿�땲�떎.", "Warning"); + return false; + } + } + if (Set_Control_Speed.Text == "" || Set_Control_Speed == null) + { + if (bMsgFlag) + MessageBox.Show("�냽�룄媛� �엯�젰�릺�뼱�엳吏� �븡�뒿�땲�떎.", "Warning"); + return false; + } + + //�벐�젮硫� �벐�옄! + //if (!CheckChamberGateClose(true)) + //{ + // MessageBox.Show("Chamber Gate媛� �떕���엳吏� �븡�뒿�땲�떎", "Warning"); + // return false; + //} + + return true; + } + private void Btn_Move_Abs_Click(object sender, EventArgs e) + { + //議곌렇 UI �씤�꽣�씫泥댄겕 + if (!JogMoveInterlockCheck(false, true)) + return; + + //�씠�룞 + double dPos = Convert.ToDouble(Set_Control_Pos.Text); + double dSpeed = Convert.ToDouble(Set_Control_Speed.Text); + double dAcc = Convert.ToDouble(Set_Control_Acc.Text); + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Abs {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} Position {dPos}, Speed {dSpeed}, Accel {dAcc}"); + + if (!MoveAbs(m_nSelectAxis_Index, dPos, dSpeed, dAcc)) + { + MessageBox.Show("�꽑�깮�쐞移섎줈 �씠�룞�븷 �닔 �뾾�뒿�땲�떎"); + } + } + + /// <summary> + /// + 諛⑺뼢 �긽���씠�룞 踰꾪듉 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void Btn_Move_Rel_CW_Click(object sender, EventArgs e) + { + //議곌렇 UI �씤�꽣�씫泥댄겕 + if (!JogMoveInterlockCheck(false, true)) + return; + + //�씠�룞 + double dPos = Convert.ToDouble(Set_Control_Pos.Text); + double dSpeed = Convert.ToDouble(Set_Control_Speed.Text); + double dAcc = Convert.ToDouble(Set_Control_Acc.Text); + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Rel {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} Position {dPos}, Speed {dSpeed}, Accel {dAcc}"); + + if (!MoveRel(m_nSelectAxis_Index, dPos, dSpeed, dAcc)) + { + MessageBox.Show("�꽑�깮�쐞移섎줈 �씠�룞�븷 �닔 �뾾�뒿�땲�떎"); + } + } + + /// <summary> + /// - 諛⑺뼢 �긽���씠�룞 踰꾪듉 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void Btn_Move_Rel_CCW_Click(object sender, EventArgs e) + { + //�꽑�깮�맂 �씤�뜳�뒪 泥댄겕 + if (!CheckSelectAxisPos()) + return; + //議곌렇 UI �씤�꽣�씫泥댄겕 + if (!JogMoveInterlockCheck(false, true)) + return; + + //�씠�룞 + double dPos = Convert.ToDouble(Set_Control_Pos.Text) * -1; + double dSpeed = Convert.ToDouble(Set_Control_Speed.Text); + double dAcc = Convert.ToDouble(Set_Control_Acc.Text); + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Rel {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name} Position {dPos}, Speed {dSpeed}, Accel {dAcc}"); + + if (!MoveRel(m_nSelectAxis_Index, dPos, dSpeed, dAcc)) + { + MessageBox.Show("�꽑�깮�쐞移섎줈 �씠�룞�븷 �닔 �뾾�뒿�땲�떎"); + } + + } + + /// <summary> + /// �쁽�옱 �씠�룞以묒씤 異� �젙吏� (�꽑�깮�맂 異�) + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void Btn_Jog_Stop_Click(object sender, EventArgs e) + { + //�꽑�깮�맂 �씤�뜳�뒪 泥댄겕 + if (!CheckSelectAxisPos()) + return; + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Stop {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name}"); + _mainFrame.equipment.powerPmac.MoveStop((PmacAxis)m_nSelectAxis_Index); + } + + #endregion + + #region "異� 援щ룞 �븿�닔" + + /// <summary> + /// ���옣�쐞移� �씠�룞�븿�닔 + /// </summary> + private void PositionMove() + { + //�꽑�깮�맂 �씤�뜳�뒪 泥댄겕 + if (CheckSelectAxisPos() == false) + { + return; + } + + if (MessageBox.Show("�꽑�깮�븳 �쐞移섎줈 �씠�룞 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + double dPos = _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Position; + double dSpeed = _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Speed; + double dAcc = _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].TeachList[m_nSelectPos_Index].Accel; + + bool bRet = _mainFrame.equipment.powerPmac.MoveAbs((PmacAxis)m_nSelectAxis_Index, dPos, dSpeed, dAcc); + // + //濡쒓렇 ���옣 + // + + if (!bRet) + { + MessageBox.Show("異⑸룎 �쐞�뿕�씠 �엳嫄곕굹, �쁽�옱 �쐞移� 諛� �냽�룄 �꽕�젙�씠 �옒紐� �릺�뿀�뒿�땲�떎. 蹂�寃� 諛붾엻�땲�떎.", "寃쎄퀬"); + return; + } + } + + private bool MoveAbs(int nAxis, double dPos, double dSpeed, double dAcc) + { + string strMsg = ""; + + //�솗�씤 + strMsg = string.Format("{0}瑜� {1}濡� �젅�� �씠�룞 �븯�떆寃좎뒿�땲源�?", + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name, dPos); + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return true; + } + + bool bRet; + + //PMac + bRet = _mainFrame.equipment.powerPmac.MoveAbs((PmacAxis)m_nSelectAxis_Index, dPos, dSpeed, dAcc); + + // + //濡쒓렇 ���옣 + // + + //if (!bRet) + //{ + // MessageBox.Show("異⑸룎 �쐞�뿕�씠 �엳嫄곕굹, �쁽�옱 �쐞移� 諛� �냽�룄 �꽕�젙�씠 �옒紐� �릺�뿀�뒿�땲�떎. 蹂�寃� 諛붾엻�땲�떎.", "寃쎄퀬"); + // return false; + //} + return bRet; + } + + private bool MoveRel(int nAxis, double dPos, double dSpeed, double dAcc) + { + string strMsg = ""; + + //�솗�씤 + strMsg = string.Format("{0}瑜� {1}留뚰겮 �긽�� �씠�룞 �븯�떆寃좎뒿�땲源�?", + _mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name, Set_Control_Pos.Text); + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return true; + } + + bool bRet; + + //�젙留� �떕�뼱�븯�뒗 諛⑸쾿�씠吏�留� �씠踰덉뿏 �벐�옄 + //Umac + bRet = _mainFrame.equipment.powerPmac.MoveRel((PmacAxis)m_nSelectAxis_Index, dPos, dSpeed, dAcc); + // + //濡쒓렇 ���옣 + // + + if (!bRet) + { + //MessageBox.Show("異⑸룎 �쐞�뿕�씠 �엳嫄곕굹, �쁽�옱 �쐞移� 諛� �냽�룄 �꽕�젙�씠 �옒紐� �릺�뿀�뒿�땲�떎. 蹂�寃� 諛붾엻�땲�떎.", "寃쎄퀬"); + return false; + } + return bRet; + } + + + + + #endregion + + private void Set_Control_Acc_TextChanged(object sender, EventArgs e) + { + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Control_Acc_TextChanged"); //Button LogDB + } + + private void Set_Control_Acc_Click(object sender, EventArgs e) + { + var nPad = new NumericPad(); + nPad.Setup("0", "1000"); //踰붿쐞 蹂�寃쏀빐�빞 �븿 + nPad.ShowDialog(); + + if (nPad.DialogResult != DialogResult.OK) return; + + //_parentForm.WriteToBtnLog("Screen_PMC_Maint : Set_Control_Speed_Click"); + //_parentForm._DB_Screen.NM_Menu_Btn_LogDB(_parentForm.UserID, "Screen_PMC_Maint", "Set_Control_Acc_Click"); //Button LogDB + + Set_Control_Acc.Text = nPad.GetValue(); + } + + private void btnReset_Click(object sender, EventArgs e) + { + if (!CheckSelectAxisPos()) + { + MessageBox.Show("異� �꽑�깮�씠 �릺�뼱�엳吏� �븡�뒿�땲�떎.", "Warning"); + return; + } + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenMotionMaintenance : Reset {_mainFrame.equipment.powerPmac.m_AxisAllList[m_nSelectAxis_Index].Name}"); + _mainFrame.equipment.powerPmac.ClearErrorAll(); + } + + private bool CheckChamberGateClose(bool bCh1) + { + return false; + //�굹以묒뿉 �궡由ъ옄 + //if (bCh1) + //{ + // if (!_parentForm._IOFunc.IsChamber1GateOpenClose(false)) + // return false; + //} + //else + //{ + // if (!_parentForm._IOFunc.IsChamber2GateOpenClose(false)) + // return false; + //} + + //return true; + } + + private void Screen_SubPmc_Maintenance_VisibleChanged(object sender, EventArgs e) + { + InitView(); + } + + private void btn_ScannerView_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.scannerViewer.Show(); + _mainFrame.scannerViewer.WindowState = FormWindowState.Normal; + _mainFrame.scannerViewer.TopMost = true; + _mainFrame.scannerViewer.TopMost = false; + } + + private void btn_Attenuator_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.attenuatorViewer.Show(); + _mainFrame.attenuatorViewer.WindowState = FormWindowState.Normal; + _mainFrame.attenuatorViewer.TopMost = true; + _mainFrame.attenuatorViewer.TopMost = false; + } + + private void btn_Robot_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.robotViewer.Show(); + _mainFrame.robotViewer.WindowState = FormWindowState.Normal; + _mainFrame.robotViewer.TopMost = true; + _mainFrame.robotViewer.TopMost = false; + } + + private void btn_PreAlign_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.preAignViewer.Show(); + _mainFrame.preAignViewer.WindowState = FormWindowState.Normal; + _mainFrame.preAignViewer.TopMost = true; + _mainFrame.preAignViewer.TopMost = false; + } + + private void btn_PiLaserView_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.piLaserViewer.Show(); + _mainFrame.piLaserViewer.WindowState = FormWindowState.Normal; + _mainFrame.piLaserViewer.TopMost = true; + _mainFrame.piLaserViewer.TopMost = false; + } + + private void btn_PowerMeterView_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.powermeterViewer.Show(); + _mainFrame.powermeterViewer.WindowState = FormWindowState.Normal; + _mainFrame.powermeterViewer.TopMost = true; + _mainFrame.powermeterViewer.TopMost = false; + } + + private void btn_ChillerView_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.chillerViewer.Show(); + _mainFrame.chillerViewer.WindowState = FormWindowState.Normal; + _mainFrame.chillerViewer.TopMost = true; + _mainFrame.chillerViewer.TopMost = false; + } + + private void btn_VisionView_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.visionViewer.Show(); + _mainFrame.visionViewer.WindowState = FormWindowState.Normal; + _mainFrame.visionViewer.TopMost = true; + _mainFrame.visionViewer.TopMost = false; + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.resx b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.Designer.cs new file mode 100644 index 0000000..c543dd0 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.Designer.cs @@ -0,0 +1,1510 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class ScreenParameter + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.pnl_Mode = new System.Windows.Forms.Panel(); + this.panel16 = new System.Windows.Forms.Panel(); + this.panel35 = new System.Windows.Forms.Panel(); + this.btn_AlignNotUse = new System.Windows.Forms.Button(); + this.btn_AlignUse = new System.Windows.Forms.Button(); + this.label34 = new System.Windows.Forms.Label(); + this.panel28 = new System.Windows.Forms.Panel(); + this.btn_ShutterAlwaysOnNotUse = new System.Windows.Forms.Button(); + this.btn_ShutterAlwaysOnUse = new System.Windows.Forms.Button(); + this.label27 = new System.Windows.Forms.Label(); + this.panel15 = new System.Windows.Forms.Panel(); + this.btn_AttenuatorCalNotUse = new System.Windows.Forms.Button(); + this.btn_AttenuatorCalUse = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.panel6 = new System.Windows.Forms.Panel(); + this.btn_EnergyMeasurementNotUse = new System.Windows.Forms.Button(); + this.btn_EnergyMeasurementUse = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.btn_Mode_Reset = new System.Windows.Forms.Button(); + this.btn_Mode_Save = new System.Windows.Forms.Button(); + this.lb_Select_Mode = new System.Windows.Forms.Label(); + this.panel14 = new System.Windows.Forms.Panel(); + this.label4 = new System.Windows.Forms.Label(); + this.btn_EnergyDropCheckNotUse = new System.Windows.Forms.Button(); + this.btn_EnergyDropCheckUse = new System.Windows.Forms.Button(); + this.lb_Mode = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.btn_Setting_Save = new System.Windows.Forms.Button(); + this.btn_Setting_Reset = new System.Windows.Forms.Button(); + this.pnl_Setting = new System.Windows.Forms.Panel(); + this.panel30 = new System.Windows.Forms.Panel(); + this.panel34 = new System.Windows.Forms.Panel(); + this.tb_VisionHeartBeatTimeOut = new System.Windows.Forms.TextBox(); + this.label33 = new System.Windows.Forms.Label(); + this.panel32 = new System.Windows.Forms.Panel(); + this.tb_VisionTimeOut = new System.Windows.Forms.TextBox(); + this.label31 = new System.Windows.Forms.Label(); + this.label29 = new System.Windows.Forms.Label(); + this.panel12 = new System.Windows.Forms.Panel(); + this.label10 = new System.Windows.Forms.Label(); + this.panel13 = new System.Windows.Forms.Panel(); + this.tb_EnergyDropCheckCycle = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.panel17 = new System.Windows.Forms.Panel(); + this.tb_EnergyDropCheckMeasurementTime = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.panel22 = new System.Windows.Forms.Panel(); + this.tb_EnergyDropCheckErrorOccuredRange = new System.Windows.Forms.TextBox(); + this.label17 = new System.Windows.Forms.Label(); + this.panel18 = new System.Windows.Forms.Panel(); + this.tb_EnergyDropCheckTargetEnergy = new System.Windows.Forms.TextBox(); + this.label13 = new System.Windows.Forms.Label(); + this.panel19 = new System.Windows.Forms.Panel(); + this.tb_EnergyDropCheckTargetAngle = new System.Windows.Forms.TextBox(); + this.label14 = new System.Windows.Forms.Label(); + this.panel5 = new System.Windows.Forms.Panel(); + this.label5 = new System.Windows.Forms.Label(); + this.panel7 = new System.Windows.Forms.Panel(); + this.tb_AttenuatorCalCycle = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.panel8 = new System.Windows.Forms.Panel(); + this.tb_AttenuatorCalMeasurementTime = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.panel21 = new System.Windows.Forms.Panel(); + this.tb_AttenuatorCalAngleStep = new System.Windows.Forms.TextBox(); + this.label16 = new System.Windows.Forms.Label(); + this.panel20 = new System.Windows.Forms.Panel(); + this.tb_AttenuatorCalEndAngle = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); + this.panel9 = new System.Windows.Forms.Panel(); + this.tb_AttenuatorCalStartAngle = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.panel11 = new System.Windows.Forms.Panel(); + this.tb_AttenuatorCalCoolingTime = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label24 = new System.Windows.Forms.Label(); + this.panel4 = new System.Windows.Forms.Panel(); + this.tb_BeamHeight = new System.Windows.Forms.TextBox(); + this.label25 = new System.Windows.Forms.Label(); + this.panel29 = new System.Windows.Forms.Panel(); + this.tb_EnergyMeterHeatingTime = new System.Windows.Forms.TextBox(); + this.label28 = new System.Windows.Forms.Label(); + this.panel27 = new System.Windows.Forms.Panel(); + this.tb_BeamWidth = new System.Windows.Forms.TextBox(); + this.label26 = new System.Windows.Forms.Label(); + this.panel10 = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.tb_EnergyMeasurementRetryCount = new System.Windows.Forms.TextBox(); + this.label23 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.tb_EnergyMeasurementStep = new System.Windows.Forms.TextBox(); + this.label22 = new System.Windows.Forms.Label(); + this.lb_EnergyMeasurement = new System.Windows.Forms.Label(); + this.panel26 = new System.Windows.Forms.Panel(); + this.tb_EnergyMeasurementCycle = new System.Windows.Forms.TextBox(); + this.label21 = new System.Windows.Forms.Label(); + this.panel25 = new System.Windows.Forms.Panel(); + this.tb_EnergyMeasurementWaferCountCycle = new System.Windows.Forms.TextBox(); + this.label20 = new System.Windows.Forms.Label(); + this.panel23 = new System.Windows.Forms.Panel(); + this.tb_EnergyMeasurementErrorOccuredRange = new System.Windows.Forms.TextBox(); + this.label18 = new System.Windows.Forms.Label(); + this.panel24 = new System.Windows.Forms.Panel(); + this.tb_EnergyMeasurementTime = new System.Windows.Forms.TextBox(); + this.label19 = new System.Windows.Forms.Label(); + this.tt_Desctiption = new System.Windows.Forms.ToolTip(this.components); + this.pnl_Mode.SuspendLayout(); + this.panel16.SuspendLayout(); + this.panel35.SuspendLayout(); + this.panel28.SuspendLayout(); + this.panel15.SuspendLayout(); + this.panel6.SuspendLayout(); + this.panel14.SuspendLayout(); + this.pnl_Setting.SuspendLayout(); + this.panel30.SuspendLayout(); + this.panel34.SuspendLayout(); + this.panel32.SuspendLayout(); + this.panel12.SuspendLayout(); + this.panel13.SuspendLayout(); + this.panel17.SuspendLayout(); + this.panel22.SuspendLayout(); + this.panel18.SuspendLayout(); + this.panel19.SuspendLayout(); + this.panel5.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel21.SuspendLayout(); + this.panel20.SuspendLayout(); + this.panel9.SuspendLayout(); + this.panel11.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel29.SuspendLayout(); + this.panel27.SuspendLayout(); + this.panel10.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panel26.SuspendLayout(); + this.panel25.SuspendLayout(); + this.panel23.SuspendLayout(); + this.panel24.SuspendLayout(); + this.SuspendLayout(); + // + // pnl_Mode + // + this.pnl_Mode.BackColor = System.Drawing.Color.White; + this.pnl_Mode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_Mode.Controls.Add(this.panel16); + this.pnl_Mode.Controls.Add(this.lb_Mode); + this.pnl_Mode.Dock = System.Windows.Forms.DockStyle.Left; + this.pnl_Mode.Location = new System.Drawing.Point(0, 0); + this.pnl_Mode.Name = "pnl_Mode"; + this.pnl_Mode.Size = new System.Drawing.Size(880, 803); + this.pnl_Mode.TabIndex = 5; + // + // panel16 + // + this.panel16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel16.Controls.Add(this.panel35); + this.panel16.Controls.Add(this.panel28); + this.panel16.Controls.Add(this.panel15); + this.panel16.Controls.Add(this.panel6); + this.panel16.Controls.Add(this.btn_Mode_Reset); + this.panel16.Controls.Add(this.btn_Mode_Save); + this.panel16.Controls.Add(this.lb_Select_Mode); + this.panel16.Controls.Add(this.panel14); + this.panel16.Location = new System.Drawing.Point(3, 43); + this.panel16.Name = "panel16"; + this.panel16.Size = new System.Drawing.Size(870, 756); + this.panel16.TabIndex = 35; + // + // panel35 + // + this.panel35.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel35.Controls.Add(this.btn_AlignNotUse); + this.panel35.Controls.Add(this.btn_AlignUse); + this.panel35.Controls.Add(this.label34); + this.panel35.Location = new System.Drawing.Point(214, 97); + this.panel35.Name = "panel35"; + this.panel35.Size = new System.Drawing.Size(205, 51); + this.panel35.TabIndex = 63; + // + // btn_AlignNotUse + // + this.btn_AlignNotUse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_AlignNotUse.Location = new System.Drawing.Point(104, 25); + this.btn_AlignNotUse.Name = "btn_AlignNotUse"; + this.btn_AlignNotUse.Size = new System.Drawing.Size(95, 21); + this.btn_AlignNotUse.TabIndex = 43; + this.btn_AlignNotUse.Text = "NOT USE"; + this.btn_AlignNotUse.UseVisualStyleBackColor = true; + this.btn_AlignNotUse.Click += new System.EventHandler(this.btn_Mode_Click); + // + // btn_AlignUse + // + this.btn_AlignUse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_AlignUse.Location = new System.Drawing.Point(3, 25); + this.btn_AlignUse.Name = "btn_AlignUse"; + this.btn_AlignUse.Size = new System.Drawing.Size(95, 21); + this.btn_AlignUse.TabIndex = 42; + this.btn_AlignUse.Text = "USE"; + this.btn_AlignUse.UseVisualStyleBackColor = true; + this.btn_AlignUse.Click += new System.EventHandler(this.btn_Mode_Click); + // + // label34 + // + this.label34.BackColor = System.Drawing.Color.Silver; + this.label34.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label34.Dock = System.Windows.Forms.DockStyle.Top; + this.label34.Font = new System.Drawing.Font("援대┝", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label34.Location = new System.Drawing.Point(0, 0); + this.label34.Name = "label34"; + this.label34.Size = new System.Drawing.Size(203, 22); + this.label34.TabIndex = 41; + this.label34.Text = "Align Use"; + this.label34.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel28 + // + this.panel28.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel28.Controls.Add(this.btn_ShutterAlwaysOnNotUse); + this.panel28.Controls.Add(this.btn_ShutterAlwaysOnUse); + this.panel28.Controls.Add(this.label27); + this.panel28.Location = new System.Drawing.Point(3, 97); + this.panel28.Name = "panel28"; + this.panel28.Size = new System.Drawing.Size(205, 51); + this.panel28.TabIndex = 62; + // + // btn_ShutterAlwaysOnNotUse + // + this.btn_ShutterAlwaysOnNotUse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_ShutterAlwaysOnNotUse.Location = new System.Drawing.Point(104, 25); + this.btn_ShutterAlwaysOnNotUse.Name = "btn_ShutterAlwaysOnNotUse"; + this.btn_ShutterAlwaysOnNotUse.Size = new System.Drawing.Size(95, 21); + this.btn_ShutterAlwaysOnNotUse.TabIndex = 43; + this.btn_ShutterAlwaysOnNotUse.Text = "NOT USE"; + this.btn_ShutterAlwaysOnNotUse.UseVisualStyleBackColor = true; + this.btn_ShutterAlwaysOnNotUse.Click += new System.EventHandler(this.btn_Mode_Click); + // + // btn_ShutterAlwaysOnUse + // + this.btn_ShutterAlwaysOnUse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_ShutterAlwaysOnUse.Location = new System.Drawing.Point(3, 25); + this.btn_ShutterAlwaysOnUse.Name = "btn_ShutterAlwaysOnUse"; + this.btn_ShutterAlwaysOnUse.Size = new System.Drawing.Size(95, 21); + this.btn_ShutterAlwaysOnUse.TabIndex = 42; + this.btn_ShutterAlwaysOnUse.Text = "USE"; + this.btn_ShutterAlwaysOnUse.UseVisualStyleBackColor = true; + this.btn_ShutterAlwaysOnUse.Click += new System.EventHandler(this.btn_Mode_Click); + // + // label27 + // + this.label27.BackColor = System.Drawing.Color.Silver; + this.label27.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label27.Dock = System.Windows.Forms.DockStyle.Top; + this.label27.Font = new System.Drawing.Font("援대┝", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label27.Location = new System.Drawing.Point(0, 0); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(203, 22); + this.label27.TabIndex = 41; + this.label27.Text = "Shutter always on"; + this.label27.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel15 + // + this.panel15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel15.Controls.Add(this.btn_AttenuatorCalNotUse); + this.panel15.Controls.Add(this.btn_AttenuatorCalUse); + this.panel15.Controls.Add(this.label1); + this.panel15.Location = new System.Drawing.Point(214, 40); + this.panel15.Name = "panel15"; + this.panel15.Size = new System.Drawing.Size(205, 51); + this.panel15.TabIndex = 62; + // + // btn_AttenuatorCalNotUse + // + this.btn_AttenuatorCalNotUse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_AttenuatorCalNotUse.Location = new System.Drawing.Point(104, 25); + this.btn_AttenuatorCalNotUse.Name = "btn_AttenuatorCalNotUse"; + this.btn_AttenuatorCalNotUse.Size = new System.Drawing.Size(95, 21); + this.btn_AttenuatorCalNotUse.TabIndex = 43; + this.btn_AttenuatorCalNotUse.Text = "NOT USE"; + this.btn_AttenuatorCalNotUse.UseVisualStyleBackColor = true; + this.btn_AttenuatorCalNotUse.Click += new System.EventHandler(this.btn_Mode_Click); + // + // btn_AttenuatorCalUse + // + this.btn_AttenuatorCalUse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_AttenuatorCalUse.Location = new System.Drawing.Point(3, 25); + this.btn_AttenuatorCalUse.Name = "btn_AttenuatorCalUse"; + this.btn_AttenuatorCalUse.Size = new System.Drawing.Size(95, 21); + this.btn_AttenuatorCalUse.TabIndex = 42; + this.btn_AttenuatorCalUse.Text = "USE"; + this.btn_AttenuatorCalUse.UseVisualStyleBackColor = true; + this.btn_AttenuatorCalUse.Click += new System.EventHandler(this.btn_Mode_Click); + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Silver; + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Dock = System.Windows.Forms.DockStyle.Top; + this.label1.Font = new System.Drawing.Font("援대┝", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(203, 22); + this.label1.TabIndex = 41; + this.label1.Text = "Attenuator cal"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel6 + // + this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel6.Controls.Add(this.btn_EnergyMeasurementNotUse); + this.panel6.Controls.Add(this.btn_EnergyMeasurementUse); + this.panel6.Controls.Add(this.label3); + this.panel6.Location = new System.Drawing.Point(425, 40); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(205, 51); + this.panel6.TabIndex = 62; + // + // btn_EnergyMeasurementNotUse + // + this.btn_EnergyMeasurementNotUse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_EnergyMeasurementNotUse.Location = new System.Drawing.Point(104, 25); + this.btn_EnergyMeasurementNotUse.Name = "btn_EnergyMeasurementNotUse"; + this.btn_EnergyMeasurementNotUse.Size = new System.Drawing.Size(95, 21); + this.btn_EnergyMeasurementNotUse.TabIndex = 43; + this.btn_EnergyMeasurementNotUse.Text = "NOT USE"; + this.btn_EnergyMeasurementNotUse.UseVisualStyleBackColor = true; + this.btn_EnergyMeasurementNotUse.Click += new System.EventHandler(this.btn_Mode_Click); + // + // btn_EnergyMeasurementUse + // + this.btn_EnergyMeasurementUse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_EnergyMeasurementUse.Location = new System.Drawing.Point(3, 25); + this.btn_EnergyMeasurementUse.Name = "btn_EnergyMeasurementUse"; + this.btn_EnergyMeasurementUse.Size = new System.Drawing.Size(95, 21); + this.btn_EnergyMeasurementUse.TabIndex = 42; + this.btn_EnergyMeasurementUse.Text = "USE"; + this.btn_EnergyMeasurementUse.UseVisualStyleBackColor = true; + this.btn_EnergyMeasurementUse.Click += new System.EventHandler(this.btn_Mode_Click); + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.Silver; + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Dock = System.Windows.Forms.DockStyle.Top; + this.label3.Font = new System.Drawing.Font("援대┝", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.Location = new System.Drawing.Point(0, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(203, 22); + this.label3.TabIndex = 41; + this.label3.Text = "Energy measurement"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Mode_Reset + // + this.btn_Mode_Reset.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_Mode_Reset.Location = new System.Drawing.Point(581, 694); + this.btn_Mode_Reset.Name = "btn_Mode_Reset"; + this.btn_Mode_Reset.Size = new System.Drawing.Size(139, 57); + this.btn_Mode_Reset.TabIndex = 59; + this.btn_Mode_Reset.Text = "RESET"; + this.btn_Mode_Reset.UseVisualStyleBackColor = true; + this.btn_Mode_Reset.Click += new System.EventHandler(this.btn_Mode_Reset_Click); + // + // btn_Mode_Save + // + this.btn_Mode_Save.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_Mode_Save.Location = new System.Drawing.Point(726, 694); + this.btn_Mode_Save.Name = "btn_Mode_Save"; + this.btn_Mode_Save.Size = new System.Drawing.Size(139, 57); + this.btn_Mode_Save.TabIndex = 58; + this.btn_Mode_Save.Text = "SAVE"; + this.btn_Mode_Save.UseVisualStyleBackColor = true; + this.btn_Mode_Save.Click += new System.EventHandler(this.btn_Mode_Save_Click); + // + // lb_Select_Mode + // + this.lb_Select_Mode.BackColor = System.Drawing.Color.Silver; + this.lb_Select_Mode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Select_Mode.Dock = System.Windows.Forms.DockStyle.Top; + this.lb_Select_Mode.Font = new System.Drawing.Font("援대┝", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lb_Select_Mode.Location = new System.Drawing.Point(0, 0); + this.lb_Select_Mode.Name = "lb_Select_Mode"; + this.lb_Select_Mode.Size = new System.Drawing.Size(868, 37); + this.lb_Select_Mode.TabIndex = 41; + this.lb_Select_Mode.Text = "SELECT MODE"; + this.lb_Select_Mode.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel14 + // + this.panel14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel14.Controls.Add(this.label4); + this.panel14.Controls.Add(this.btn_EnergyDropCheckNotUse); + this.panel14.Controls.Add(this.btn_EnergyDropCheckUse); + this.panel14.Location = new System.Drawing.Point(3, 40); + this.panel14.Name = "panel14"; + this.panel14.Size = new System.Drawing.Size(205, 51); + this.panel14.TabIndex = 33; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.Silver; + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label4.Dock = System.Windows.Forms.DockStyle.Top; + this.label4.Font = new System.Drawing.Font("援대┝", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label4.Location = new System.Drawing.Point(0, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(203, 22); + this.label4.TabIndex = 64; + this.label4.Text = "Energy drop check"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_EnergyDropCheckNotUse + // + this.btn_EnergyDropCheckNotUse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_EnergyDropCheckNotUse.Location = new System.Drawing.Point(104, 25); + this.btn_EnergyDropCheckNotUse.Name = "btn_EnergyDropCheckNotUse"; + this.btn_EnergyDropCheckNotUse.Size = new System.Drawing.Size(95, 21); + this.btn_EnergyDropCheckNotUse.TabIndex = 43; + this.btn_EnergyDropCheckNotUse.Text = "NOT USE"; + this.btn_EnergyDropCheckNotUse.UseVisualStyleBackColor = true; + this.btn_EnergyDropCheckNotUse.Click += new System.EventHandler(this.btn_Mode_Click); + // + // btn_EnergyDropCheckUse + // + this.btn_EnergyDropCheckUse.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_EnergyDropCheckUse.Location = new System.Drawing.Point(3, 25); + this.btn_EnergyDropCheckUse.Name = "btn_EnergyDropCheckUse"; + this.btn_EnergyDropCheckUse.Size = new System.Drawing.Size(95, 21); + this.btn_EnergyDropCheckUse.TabIndex = 42; + this.btn_EnergyDropCheckUse.Text = "USE"; + this.btn_EnergyDropCheckUse.UseVisualStyleBackColor = true; + this.btn_EnergyDropCheckUse.Click += new System.EventHandler(this.btn_Mode_Click); + // + // lb_Mode + // + this.lb_Mode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Mode.Dock = System.Windows.Forms.DockStyle.Top; + this.lb_Mode.Font = new System.Drawing.Font("援대┝", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lb_Mode.Location = new System.Drawing.Point(0, 0); + this.lb_Mode.Name = "lb_Mode"; + this.lb_Mode.Size = new System.Drawing.Size(878, 40); + this.lb_Mode.TabIndex = 32; + this.lb_Mode.Text = "�뼚 Mode"; + this.lb_Mode.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Dock = System.Windows.Forms.DockStyle.Top; + this.label2.Font = new System.Drawing.Font("援대┝", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.Location = new System.Drawing.Point(0, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(878, 40); + this.label2.TabIndex = 32; + this.label2.Text = "�뼚 Setting"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Setting_Save + // + this.btn_Setting_Save.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_Setting_Save.Location = new System.Drawing.Point(736, 741); + this.btn_Setting_Save.Name = "btn_Setting_Save"; + this.btn_Setting_Save.Size = new System.Drawing.Size(139, 57); + this.btn_Setting_Save.TabIndex = 54; + this.btn_Setting_Save.Text = "SAVE"; + this.btn_Setting_Save.UseVisualStyleBackColor = true; + this.btn_Setting_Save.Click += new System.EventHandler(this.btn_Setting_Save_Click); + // + // btn_Setting_Reset + // + this.btn_Setting_Reset.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_Setting_Reset.Location = new System.Drawing.Point(591, 741); + this.btn_Setting_Reset.Name = "btn_Setting_Reset"; + this.btn_Setting_Reset.Size = new System.Drawing.Size(139, 57); + this.btn_Setting_Reset.TabIndex = 55; + this.btn_Setting_Reset.Text = "RESET"; + this.btn_Setting_Reset.UseVisualStyleBackColor = true; + this.btn_Setting_Reset.Click += new System.EventHandler(this.btn_Setting_Reset_Click); + // + // pnl_Setting + // + this.pnl_Setting.BackColor = System.Drawing.Color.White; + this.pnl_Setting.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnl_Setting.Controls.Add(this.panel30); + this.pnl_Setting.Controls.Add(this.panel12); + this.pnl_Setting.Controls.Add(this.panel5); + this.pnl_Setting.Controls.Add(this.panel2); + this.pnl_Setting.Controls.Add(this.panel10); + this.pnl_Setting.Controls.Add(this.btn_Setting_Reset); + this.pnl_Setting.Controls.Add(this.btn_Setting_Save); + this.pnl_Setting.Controls.Add(this.label2); + this.pnl_Setting.Dock = System.Windows.Forms.DockStyle.Right; + this.pnl_Setting.Location = new System.Drawing.Point(884, 0); + this.pnl_Setting.Name = "pnl_Setting"; + this.pnl_Setting.Size = new System.Drawing.Size(880, 803); + this.pnl_Setting.TabIndex = 6; + // + // panel30 + // + this.panel30.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel30.Controls.Add(this.panel34); + this.panel30.Controls.Add(this.panel32); + this.panel30.Controls.Add(this.label29); + this.panel30.Location = new System.Drawing.Point(426, 43); + this.panel30.Name = "panel30"; + this.panel30.Size = new System.Drawing.Size(417, 80); + this.panel30.TabIndex = 57; + // + // panel34 + // + this.panel34.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel34.Controls.Add(this.tb_VisionHeartBeatTimeOut); + this.panel34.Controls.Add(this.label33); + this.panel34.Location = new System.Drawing.Point(3, 51); + this.panel34.Name = "panel34"; + this.panel34.Size = new System.Drawing.Size(407, 21); + this.panel34.TabIndex = 35; + // + // tb_VisionHeartBeatTimeOut + // + this.tb_VisionHeartBeatTimeOut.Location = new System.Drawing.Point(231, -1); + this.tb_VisionHeartBeatTimeOut.Name = "tb_VisionHeartBeatTimeOut"; + this.tb_VisionHeartBeatTimeOut.Size = new System.Drawing.Size(175, 21); + this.tb_VisionHeartBeatTimeOut.TabIndex = 34; + this.tb_VisionHeartBeatTimeOut.Text = "0"; + this.tb_VisionHeartBeatTimeOut.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_VisionHeartBeatTimeOut.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label33 + // + this.label33.Dock = System.Windows.Forms.DockStyle.Left; + this.label33.Location = new System.Drawing.Point(0, 0); + this.label33.Name = "label33"; + this.label33.Size = new System.Drawing.Size(227, 19); + this.label33.TabIndex = 33; + this.label33.Text = "Vision heart beat time out (s):"; + this.label33.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel32 + // + this.panel32.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel32.Controls.Add(this.tb_VisionTimeOut); + this.panel32.Controls.Add(this.label31); + this.panel32.Location = new System.Drawing.Point(3, 24); + this.panel32.Name = "panel32"; + this.panel32.Size = new System.Drawing.Size(407, 21); + this.panel32.TabIndex = 35; + // + // tb_VisionTimeOut + // + this.tb_VisionTimeOut.Location = new System.Drawing.Point(231, -1); + this.tb_VisionTimeOut.Name = "tb_VisionTimeOut"; + this.tb_VisionTimeOut.Size = new System.Drawing.Size(175, 21); + this.tb_VisionTimeOut.TabIndex = 34; + this.tb_VisionTimeOut.Text = "0"; + this.tb_VisionTimeOut.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_VisionTimeOut.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label31 + // + this.label31.Dock = System.Windows.Forms.DockStyle.Left; + this.label31.Location = new System.Drawing.Point(0, 0); + this.label31.Name = "label31"; + this.label31.Size = new System.Drawing.Size(227, 19); + this.label31.TabIndex = 33; + this.label31.Text = "Vision time out (s):"; + this.label31.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label29 + // + this.label29.BackColor = System.Drawing.Color.Silver; + this.label29.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label29.Dock = System.Windows.Forms.DockStyle.Top; + this.label29.Location = new System.Drawing.Point(0, 0); + this.label29.Name = "label29"; + this.label29.Size = new System.Drawing.Size(415, 20); + this.label29.TabIndex = 34; + this.label29.Text = "Vision parameter"; + this.label29.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel12 + // + this.panel12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel12.Controls.Add(this.label10); + this.panel12.Controls.Add(this.panel13); + this.panel12.Controls.Add(this.panel17); + this.panel12.Controls.Add(this.panel22); + this.panel12.Controls.Add(this.panel18); + this.panel12.Controls.Add(this.panel19); + this.panel12.Location = new System.Drawing.Point(3, 43); + this.panel12.Name = "panel12"; + this.panel12.Size = new System.Drawing.Size(417, 159); + this.panel12.TabIndex = 56; + // + // label10 + // + this.label10.BackColor = System.Drawing.Color.Silver; + this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label10.Dock = System.Windows.Forms.DockStyle.Top; + this.label10.Location = new System.Drawing.Point(0, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(415, 20); + this.label10.TabIndex = 34; + this.label10.Text = "Energy drop check parameter"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel13 + // + this.panel13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel13.Controls.Add(this.tb_EnergyDropCheckCycle); + this.panel13.Controls.Add(this.label11); + this.panel13.Location = new System.Drawing.Point(3, 23); + this.panel13.Name = "panel13"; + this.panel13.Size = new System.Drawing.Size(407, 21); + this.panel13.TabIndex = 35; + // + // tb_EnergyDropCheckCycle + // + this.tb_EnergyDropCheckCycle.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyDropCheckCycle.Name = "tb_EnergyDropCheckCycle"; + this.tb_EnergyDropCheckCycle.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyDropCheckCycle.TabIndex = 34; + this.tb_EnergyDropCheckCycle.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_EnergyDropCheckCycle, "n�떆媛� �씠�썑�뿉 Energy drop check 吏꾪뻾"); + this.tb_EnergyDropCheckCycle.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyDropCheckCycle.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label11 + // + this.label11.Dock = System.Windows.Forms.DockStyle.Left; + this.label11.Location = new System.Drawing.Point(0, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(227, 19); + this.label11.TabIndex = 33; + this.label11.Text = "Drop check cycle (Hour)"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel17 + // + this.panel17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel17.Controls.Add(this.tb_EnergyDropCheckMeasurementTime); + this.panel17.Controls.Add(this.label12); + this.panel17.Location = new System.Drawing.Point(3, 50); + this.panel17.Name = "panel17"; + this.panel17.Size = new System.Drawing.Size(407, 21); + this.panel17.TabIndex = 34; + // + // tb_EnergyDropCheckMeasurementTime + // + this.tb_EnergyDropCheckMeasurementTime.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyDropCheckMeasurementTime.Name = "tb_EnergyDropCheckMeasurementTime"; + this.tb_EnergyDropCheckMeasurementTime.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyDropCheckMeasurementTime.TabIndex = 34; + this.tb_EnergyDropCheckMeasurementTime.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_EnergyDropCheckMeasurementTime, "n珥� �룞�븞 Energy 痢≪젙"); + this.tb_EnergyDropCheckMeasurementTime.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyDropCheckMeasurementTime.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label12 + // + this.label12.Dock = System.Windows.Forms.DockStyle.Left; + this.label12.Location = new System.Drawing.Point(0, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(227, 19); + this.label12.TabIndex = 33; + this.label12.Text = "Measurement time (s)"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel22 + // + this.panel22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel22.Controls.Add(this.tb_EnergyDropCheckErrorOccuredRange); + this.panel22.Controls.Add(this.label17); + this.panel22.Location = new System.Drawing.Point(3, 131); + this.panel22.Name = "panel22"; + this.panel22.Size = new System.Drawing.Size(407, 21); + this.panel22.TabIndex = 36; + // + // tb_EnergyDropCheckErrorOccuredRange + // + this.tb_EnergyDropCheckErrorOccuredRange.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyDropCheckErrorOccuredRange.Name = "tb_EnergyDropCheckErrorOccuredRange"; + this.tb_EnergyDropCheckErrorOccuredRange.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyDropCheckErrorOccuredRange.TabIndex = 34; + this.tb_EnergyDropCheckErrorOccuredRange.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_EnergyDropCheckErrorOccuredRange, "Energy drop �븣�엺 諛쒖깮 踰붿쐞"); + this.tb_EnergyDropCheckErrorOccuredRange.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyDropCheckErrorOccuredRange.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label17 + // + this.label17.Dock = System.Windows.Forms.DockStyle.Left; + this.label17.Location = new System.Drawing.Point(0, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(227, 19); + this.label17.TabIndex = 33; + this.label17.Text = "Error occured range (%)"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel18 + // + this.panel18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel18.Controls.Add(this.tb_EnergyDropCheckTargetEnergy); + this.panel18.Controls.Add(this.label13); + this.panel18.Location = new System.Drawing.Point(3, 104); + this.panel18.Name = "panel18"; + this.panel18.Size = new System.Drawing.Size(407, 21); + this.panel18.TabIndex = 36; + // + // tb_EnergyDropCheckTargetEnergy + // + this.tb_EnergyDropCheckTargetEnergy.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyDropCheckTargetEnergy.Name = "tb_EnergyDropCheckTargetEnergy"; + this.tb_EnergyDropCheckTargetEnergy.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyDropCheckTargetEnergy.TabIndex = 34; + this.tb_EnergyDropCheckTargetEnergy.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_EnergyDropCheckTargetEnergy, "痢≪젙 �썑 怨꾩륫�릺�뼱�빞 �맆 energy"); + this.tb_EnergyDropCheckTargetEnergy.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyDropCheckTargetEnergy.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label13 + // + this.label13.Dock = System.Windows.Forms.DockStyle.Left; + this.label13.Location = new System.Drawing.Point(0, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(227, 19); + this.label13.TabIndex = 33; + this.label13.Text = "Target energy (J)"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel19 + // + this.panel19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel19.Controls.Add(this.tb_EnergyDropCheckTargetAngle); + this.panel19.Controls.Add(this.label14); + this.panel19.Location = new System.Drawing.Point(3, 77); + this.panel19.Name = "panel19"; + this.panel19.Size = new System.Drawing.Size(407, 21); + this.panel19.TabIndex = 36; + // + // tb_EnergyDropCheckTargetAngle + // + this.tb_EnergyDropCheckTargetAngle.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyDropCheckTargetAngle.Name = "tb_EnergyDropCheckTargetAngle"; + this.tb_EnergyDropCheckTargetAngle.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyDropCheckTargetAngle.TabIndex = 34; + this.tb_EnergyDropCheckTargetAngle.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_EnergyDropCheckTargetAngle, "��耳� Attenuator 媛곷룄"); + this.tb_EnergyDropCheckTargetAngle.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyDropCheckTargetAngle.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label14 + // + this.label14.Dock = System.Windows.Forms.DockStyle.Left; + this.label14.Location = new System.Drawing.Point(0, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(227, 19); + this.label14.TabIndex = 33; + this.label14.Text = "Target angle (쨘)"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel5 + // + this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel5.Controls.Add(this.label5); + this.panel5.Controls.Add(this.panel7); + this.panel5.Controls.Add(this.panel8); + this.panel5.Controls.Add(this.panel21); + this.panel5.Controls.Add(this.panel20); + this.panel5.Controls.Add(this.panel9); + this.panel5.Controls.Add(this.panel11); + this.panel5.Location = new System.Drawing.Point(3, 208); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(417, 186); + this.panel5.TabIndex = 56; + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.Silver; + this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label5.Dock = System.Windows.Forms.DockStyle.Top; + this.label5.Location = new System.Drawing.Point(0, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(415, 20); + this.label5.TabIndex = 34; + this.label5.Text = "Attenuator cal parameter"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel7 + // + this.panel7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel7.Controls.Add(this.tb_AttenuatorCalCycle); + this.panel7.Controls.Add(this.label6); + this.panel7.Location = new System.Drawing.Point(3, 23); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(407, 21); + this.panel7.TabIndex = 35; + // + // tb_AttenuatorCalCycle + // + this.tb_AttenuatorCalCycle.Location = new System.Drawing.Point(231, -1); + this.tb_AttenuatorCalCycle.Name = "tb_AttenuatorCalCycle"; + this.tb_AttenuatorCalCycle.Size = new System.Drawing.Size(175, 21); + this.tb_AttenuatorCalCycle.TabIndex = 34; + this.tb_AttenuatorCalCycle.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_AttenuatorCalCycle, "Attenuator cal �궗�씠�겢\r\nn�떆媛� �씠�썑 Attenuator cal 吏꾪뻾"); + this.tb_AttenuatorCalCycle.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_AttenuatorCalCycle.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label6 + // + this.label6.Dock = System.Windows.Forms.DockStyle.Left; + this.label6.Location = new System.Drawing.Point(0, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(227, 19); + this.label6.TabIndex = 33; + this.label6.Text = "Attenuator cal cycle (Hour)"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel8 + // + this.panel8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel8.Controls.Add(this.tb_AttenuatorCalMeasurementTime); + this.panel8.Controls.Add(this.label7); + this.panel8.Location = new System.Drawing.Point(3, 50); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(407, 21); + this.panel8.TabIndex = 34; + // + // tb_AttenuatorCalMeasurementTime + // + this.tb_AttenuatorCalMeasurementTime.Location = new System.Drawing.Point(231, -1); + this.tb_AttenuatorCalMeasurementTime.Name = "tb_AttenuatorCalMeasurementTime"; + this.tb_AttenuatorCalMeasurementTime.Size = new System.Drawing.Size(175, 21); + this.tb_AttenuatorCalMeasurementTime.TabIndex = 34; + this.tb_AttenuatorCalMeasurementTime.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_AttenuatorCalMeasurementTime, "n珥� �룞�븞 Energy 痢≪젙"); + this.tb_AttenuatorCalMeasurementTime.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_AttenuatorCalMeasurementTime.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label7 + // + this.label7.Dock = System.Windows.Forms.DockStyle.Left; + this.label7.Location = new System.Drawing.Point(0, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(227, 19); + this.label7.TabIndex = 33; + this.label7.Text = "Measurement time (s)"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel21 + // + this.panel21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel21.Controls.Add(this.tb_AttenuatorCalAngleStep); + this.panel21.Controls.Add(this.label16); + this.panel21.Location = new System.Drawing.Point(3, 158); + this.panel21.Name = "panel21"; + this.panel21.Size = new System.Drawing.Size(407, 21); + this.panel21.TabIndex = 36; + // + // tb_AttenuatorCalAngleStep + // + this.tb_AttenuatorCalAngleStep.Location = new System.Drawing.Point(231, -1); + this.tb_AttenuatorCalAngleStep.Name = "tb_AttenuatorCalAngleStep"; + this.tb_AttenuatorCalAngleStep.Size = new System.Drawing.Size(175, 21); + this.tb_AttenuatorCalAngleStep.TabIndex = 34; + this.tb_AttenuatorCalAngleStep.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_AttenuatorCalAngleStep, "n�룄 留뚰겮 媛곷룄 �씠�룞�븯硫댁꽌 痢≪젙"); + this.tb_AttenuatorCalAngleStep.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_AttenuatorCalAngleStep.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label16 + // + this.label16.Dock = System.Windows.Forms.DockStyle.Left; + this.label16.Location = new System.Drawing.Point(0, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(227, 19); + this.label16.TabIndex = 33; + this.label16.Text = "Angle step (쨘)"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel20 + // + this.panel20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel20.Controls.Add(this.tb_AttenuatorCalEndAngle); + this.panel20.Controls.Add(this.label15); + this.panel20.Location = new System.Drawing.Point(3, 131); + this.panel20.Name = "panel20"; + this.panel20.Size = new System.Drawing.Size(407, 21); + this.panel20.TabIndex = 36; + // + // tb_AttenuatorCalEndAngle + // + this.tb_AttenuatorCalEndAngle.Location = new System.Drawing.Point(231, -1); + this.tb_AttenuatorCalEndAngle.Name = "tb_AttenuatorCalEndAngle"; + this.tb_AttenuatorCalEndAngle.Size = new System.Drawing.Size(175, 21); + this.tb_AttenuatorCalEndAngle.TabIndex = 34; + this.tb_AttenuatorCalEndAngle.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_AttenuatorCalEndAngle, "Attenuator cal 醫낅즺 媛곷룄"); + this.tb_AttenuatorCalEndAngle.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_AttenuatorCalEndAngle.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label15 + // + this.label15.Dock = System.Windows.Forms.DockStyle.Left; + this.label15.Location = new System.Drawing.Point(0, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(227, 19); + this.label15.TabIndex = 33; + this.label15.Text = "End angle (쨘)"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel9 + // + this.panel9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel9.Controls.Add(this.tb_AttenuatorCalStartAngle); + this.panel9.Controls.Add(this.label8); + this.panel9.Location = new System.Drawing.Point(3, 104); + this.panel9.Name = "panel9"; + this.panel9.Size = new System.Drawing.Size(407, 21); + this.panel9.TabIndex = 36; + // + // tb_AttenuatorCalStartAngle + // + this.tb_AttenuatorCalStartAngle.Location = new System.Drawing.Point(231, -1); + this.tb_AttenuatorCalStartAngle.Name = "tb_AttenuatorCalStartAngle"; + this.tb_AttenuatorCalStartAngle.Size = new System.Drawing.Size(175, 21); + this.tb_AttenuatorCalStartAngle.TabIndex = 34; + this.tb_AttenuatorCalStartAngle.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_AttenuatorCalStartAngle, "Attenuator cal �떆�옉 媛곷룄"); + this.tb_AttenuatorCalStartAngle.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_AttenuatorCalStartAngle.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label8 + // + this.label8.Dock = System.Windows.Forms.DockStyle.Left; + this.label8.Location = new System.Drawing.Point(0, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(227, 19); + this.label8.TabIndex = 33; + this.label8.Text = "Start angle (쨘)"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel11 + // + this.panel11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel11.Controls.Add(this.tb_AttenuatorCalCoolingTime); + this.panel11.Controls.Add(this.label9); + this.panel11.Location = new System.Drawing.Point(3, 77); + this.panel11.Name = "panel11"; + this.panel11.Size = new System.Drawing.Size(407, 21); + this.panel11.TabIndex = 36; + // + // tb_AttenuatorCalCoolingTime + // + this.tb_AttenuatorCalCoolingTime.Location = new System.Drawing.Point(231, -1); + this.tb_AttenuatorCalCoolingTime.Name = "tb_AttenuatorCalCoolingTime"; + this.tb_AttenuatorCalCoolingTime.Size = new System.Drawing.Size(175, 21); + this.tb_AttenuatorCalCoolingTime.TabIndex = 34; + this.tb_AttenuatorCalCoolingTime.Text = "0"; + this.tt_Desctiption.SetToolTip(this.tb_AttenuatorCalCoolingTime, "n珥� �룞�븞 power meter 荑⑤쭅"); + this.tb_AttenuatorCalCoolingTime.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_AttenuatorCalCoolingTime.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label9 + // + this.label9.Dock = System.Windows.Forms.DockStyle.Left; + this.label9.Location = new System.Drawing.Point(0, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(227, 19); + this.label9.TabIndex = 33; + this.label9.Text = "Cooling time (s)"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel2 + // + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel2.Controls.Add(this.label24); + this.panel2.Controls.Add(this.panel4); + this.panel2.Controls.Add(this.panel29); + this.panel2.Controls.Add(this.panel27); + this.panel2.Location = new System.Drawing.Point(3, 601); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(417, 113); + this.panel2.TabIndex = 56; + // + // label24 + // + this.label24.BackColor = System.Drawing.Color.Silver; + this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label24.Dock = System.Windows.Forms.DockStyle.Top; + this.label24.Location = new System.Drawing.Point(0, 0); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(415, 20); + this.label24.TabIndex = 34; + this.label24.Text = "Laser parameter"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel4 + // + this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel4.Controls.Add(this.tb_BeamHeight); + this.panel4.Controls.Add(this.label25); + this.panel4.Location = new System.Drawing.Point(3, 23); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(407, 21); + this.panel4.TabIndex = 35; + // + // tb_BeamHeight + // + this.tb_BeamHeight.Location = new System.Drawing.Point(231, -1); + this.tb_BeamHeight.Name = "tb_BeamHeight"; + this.tb_BeamHeight.Size = new System.Drawing.Size(175, 21); + this.tb_BeamHeight.TabIndex = 34; + this.tb_BeamHeight.Text = "0"; + this.tb_BeamHeight.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_BeamHeight.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label25 + // + this.label25.Dock = System.Windows.Forms.DockStyle.Left; + this.label25.Location = new System.Drawing.Point(0, 0); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(227, 19); + this.label25.TabIndex = 33; + this.label25.Text = "Beam height (mm)"; + this.label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel29 + // + this.panel29.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel29.Controls.Add(this.tb_EnergyMeterHeatingTime); + this.panel29.Controls.Add(this.label28); + this.panel29.Location = new System.Drawing.Point(3, 77); + this.panel29.Name = "panel29"; + this.panel29.Size = new System.Drawing.Size(407, 21); + this.panel29.TabIndex = 34; + // + // tb_EnergyMeterHeatingTime + // + this.tb_EnergyMeterHeatingTime.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyMeterHeatingTime.Name = "tb_EnergyMeterHeatingTime"; + this.tb_EnergyMeterHeatingTime.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyMeterHeatingTime.TabIndex = 34; + this.tb_EnergyMeterHeatingTime.Text = "0"; + this.tb_EnergyMeterHeatingTime.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyMeterHeatingTime.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label28 + // + this.label28.Dock = System.Windows.Forms.DockStyle.Left; + this.label28.Location = new System.Drawing.Point(0, 0); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(227, 19); + this.label28.TabIndex = 33; + this.label28.Text = "Energy meter heating time (s)"; + this.label28.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel27 + // + this.panel27.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel27.Controls.Add(this.tb_BeamWidth); + this.panel27.Controls.Add(this.label26); + this.panel27.Location = new System.Drawing.Point(3, 50); + this.panel27.Name = "panel27"; + this.panel27.Size = new System.Drawing.Size(407, 21); + this.panel27.TabIndex = 34; + // + // tb_BeamWidth + // + this.tb_BeamWidth.Location = new System.Drawing.Point(231, -1); + this.tb_BeamWidth.Name = "tb_BeamWidth"; + this.tb_BeamWidth.Size = new System.Drawing.Size(175, 21); + this.tb_BeamWidth.TabIndex = 34; + this.tb_BeamWidth.Text = "0"; + this.tb_BeamWidth.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_BeamWidth.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label26 + // + this.label26.Dock = System.Windows.Forms.DockStyle.Left; + this.label26.Location = new System.Drawing.Point(0, 0); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(227, 19); + this.label26.TabIndex = 33; + this.label26.Text = "beam width (mm)"; + this.label26.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel10 + // + this.panel10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel10.Controls.Add(this.panel3); + this.panel10.Controls.Add(this.panel1); + this.panel10.Controls.Add(this.lb_EnergyMeasurement); + this.panel10.Controls.Add(this.panel26); + this.panel10.Controls.Add(this.panel25); + this.panel10.Controls.Add(this.panel23); + this.panel10.Controls.Add(this.panel24); + this.panel10.Location = new System.Drawing.Point(3, 400); + this.panel10.Name = "panel10"; + this.panel10.Size = new System.Drawing.Size(417, 195); + this.panel10.TabIndex = 56; + // + // panel3 + // + this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel3.Controls.Add(this.tb_EnergyMeasurementRetryCount); + this.panel3.Controls.Add(this.label23); + this.panel3.Location = new System.Drawing.Point(3, 158); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(407, 21); + this.panel3.TabIndex = 37; + // + // tb_EnergyMeasurementRetryCount + // + this.tb_EnergyMeasurementRetryCount.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyMeasurementRetryCount.Name = "tb_EnergyMeasurementRetryCount"; + this.tb_EnergyMeasurementRetryCount.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyMeasurementRetryCount.TabIndex = 34; + this.tb_EnergyMeasurementRetryCount.Text = "0"; + this.tb_EnergyMeasurementRetryCount.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyMeasurementRetryCount.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label23 + // + this.label23.Dock = System.Windows.Forms.DockStyle.Left; + this.label23.Location = new System.Drawing.Point(0, 0); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(227, 19); + this.label23.TabIndex = 33; + this.label23.Text = "Retry count"; + this.label23.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel1 + // + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Controls.Add(this.tb_EnergyMeasurementStep); + this.panel1.Controls.Add(this.label22); + this.panel1.Location = new System.Drawing.Point(3, 131); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(407, 21); + this.panel1.TabIndex = 37; + // + // tb_EnergyMeasurementStep + // + this.tb_EnergyMeasurementStep.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyMeasurementStep.Name = "tb_EnergyMeasurementStep"; + this.tb_EnergyMeasurementStep.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyMeasurementStep.TabIndex = 34; + this.tb_EnergyMeasurementStep.Text = "0"; + this.tb_EnergyMeasurementStep.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyMeasurementStep.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label22 + // + this.label22.Dock = System.Windows.Forms.DockStyle.Left; + this.label22.Location = new System.Drawing.Point(0, 0); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(227, 19); + this.label22.TabIndex = 33; + this.label22.Text = "Measurement step angle (쨘)"; + this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_EnergyMeasurement + // + this.lb_EnergyMeasurement.BackColor = System.Drawing.Color.Silver; + this.lb_EnergyMeasurement.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_EnergyMeasurement.Dock = System.Windows.Forms.DockStyle.Top; + this.lb_EnergyMeasurement.Location = new System.Drawing.Point(0, 0); + this.lb_EnergyMeasurement.Name = "lb_EnergyMeasurement"; + this.lb_EnergyMeasurement.Size = new System.Drawing.Size(415, 20); + this.lb_EnergyMeasurement.TabIndex = 34; + this.lb_EnergyMeasurement.Text = "Energy measurement parameter"; + this.lb_EnergyMeasurement.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel26 + // + this.panel26.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel26.Controls.Add(this.tb_EnergyMeasurementCycle); + this.panel26.Controls.Add(this.label21); + this.panel26.Location = new System.Drawing.Point(3, 23); + this.panel26.Name = "panel26"; + this.panel26.Size = new System.Drawing.Size(407, 21); + this.panel26.TabIndex = 35; + // + // tb_EnergyMeasurementCycle + // + this.tb_EnergyMeasurementCycle.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyMeasurementCycle.Name = "tb_EnergyMeasurementCycle"; + this.tb_EnergyMeasurementCycle.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyMeasurementCycle.TabIndex = 34; + this.tb_EnergyMeasurementCycle.Text = "0"; + this.tb_EnergyMeasurementCycle.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyMeasurementCycle.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label21 + // + this.label21.Dock = System.Windows.Forms.DockStyle.Left; + this.label21.Location = new System.Drawing.Point(0, 0); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(227, 19); + this.label21.TabIndex = 33; + this.label21.Text = "Measurement cycle time (s):"; + this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel25 + // + this.panel25.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel25.Controls.Add(this.tb_EnergyMeasurementWaferCountCycle); + this.panel25.Controls.Add(this.label20); + this.panel25.Location = new System.Drawing.Point(3, 50); + this.panel25.Name = "panel25"; + this.panel25.Size = new System.Drawing.Size(407, 21); + this.panel25.TabIndex = 34; + // + // tb_EnergyMeasurementWaferCountCycle + // + this.tb_EnergyMeasurementWaferCountCycle.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyMeasurementWaferCountCycle.Name = "tb_EnergyMeasurementWaferCountCycle"; + this.tb_EnergyMeasurementWaferCountCycle.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyMeasurementWaferCountCycle.TabIndex = 34; + this.tb_EnergyMeasurementWaferCountCycle.Text = "0"; + this.tb_EnergyMeasurementWaferCountCycle.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyMeasurementWaferCountCycle.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label20 + // + this.label20.Dock = System.Windows.Forms.DockStyle.Left; + this.label20.Location = new System.Drawing.Point(0, 0); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(227, 19); + this.label20.TabIndex = 33; + this.label20.Text = "Measurement wafer counter cycle:"; + this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel23 + // + this.panel23.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel23.Controls.Add(this.tb_EnergyMeasurementErrorOccuredRange); + this.panel23.Controls.Add(this.label18); + this.panel23.Location = new System.Drawing.Point(3, 77); + this.panel23.Name = "panel23"; + this.panel23.Size = new System.Drawing.Size(407, 21); + this.panel23.TabIndex = 36; + // + // tb_EnergyMeasurementErrorOccuredRange + // + this.tb_EnergyMeasurementErrorOccuredRange.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyMeasurementErrorOccuredRange.Name = "tb_EnergyMeasurementErrorOccuredRange"; + this.tb_EnergyMeasurementErrorOccuredRange.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyMeasurementErrorOccuredRange.TabIndex = 34; + this.tb_EnergyMeasurementErrorOccuredRange.Text = "0"; + this.tb_EnergyMeasurementErrorOccuredRange.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyMeasurementErrorOccuredRange.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label18 + // + this.label18.Dock = System.Windows.Forms.DockStyle.Left; + this.label18.Location = new System.Drawing.Point(0, 0); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(227, 19); + this.label18.TabIndex = 33; + this.label18.Text = "Error occured range (%)"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel24 + // + this.panel24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel24.Controls.Add(this.tb_EnergyMeasurementTime); + this.panel24.Controls.Add(this.label19); + this.panel24.Location = new System.Drawing.Point(3, 104); + this.panel24.Name = "panel24"; + this.panel24.Size = new System.Drawing.Size(407, 21); + this.panel24.TabIndex = 36; + // + // tb_EnergyMeasurementTime + // + this.tb_EnergyMeasurementTime.Location = new System.Drawing.Point(231, -1); + this.tb_EnergyMeasurementTime.Name = "tb_EnergyMeasurementTime"; + this.tb_EnergyMeasurementTime.Size = new System.Drawing.Size(175, 21); + this.tb_EnergyMeasurementTime.TabIndex = 34; + this.tb_EnergyMeasurementTime.Text = "0"; + this.tb_EnergyMeasurementTime.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SettingData_KeyDown); + this.tb_EnergyMeasurementTime.Leave += new System.EventHandler(this.tb_SettingData_Leave); + // + // label19 + // + this.label19.Dock = System.Windows.Forms.DockStyle.Left; + this.label19.Location = new System.Drawing.Point(0, 0); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(227, 19); + this.label19.TabIndex = 33; + this.label19.Text = "Energy measurement time (s):"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ScreenParameter + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.pnl_Setting); + this.Controls.Add(this.pnl_Mode); + this.Name = "ScreenParameter"; + this.Size = new System.Drawing.Size(1764, 803); + this.pnl_Mode.ResumeLayout(false); + this.panel16.ResumeLayout(false); + this.panel35.ResumeLayout(false); + this.panel28.ResumeLayout(false); + this.panel15.ResumeLayout(false); + this.panel6.ResumeLayout(false); + this.panel14.ResumeLayout(false); + this.pnl_Setting.ResumeLayout(false); + this.panel30.ResumeLayout(false); + this.panel34.ResumeLayout(false); + this.panel34.PerformLayout(); + this.panel32.ResumeLayout(false); + this.panel32.PerformLayout(); + this.panel12.ResumeLayout(false); + this.panel13.ResumeLayout(false); + this.panel13.PerformLayout(); + this.panel17.ResumeLayout(false); + this.panel17.PerformLayout(); + this.panel22.ResumeLayout(false); + this.panel22.PerformLayout(); + this.panel18.ResumeLayout(false); + this.panel18.PerformLayout(); + this.panel19.ResumeLayout(false); + this.panel19.PerformLayout(); + this.panel5.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.panel7.PerformLayout(); + this.panel8.ResumeLayout(false); + this.panel8.PerformLayout(); + this.panel21.ResumeLayout(false); + this.panel21.PerformLayout(); + this.panel20.ResumeLayout(false); + this.panel20.PerformLayout(); + this.panel9.ResumeLayout(false); + this.panel9.PerformLayout(); + this.panel11.ResumeLayout(false); + this.panel11.PerformLayout(); + this.panel2.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel4.PerformLayout(); + this.panel29.ResumeLayout(false); + this.panel29.PerformLayout(); + this.panel27.ResumeLayout(false); + this.panel27.PerformLayout(); + this.panel10.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panel26.ResumeLayout(false); + this.panel26.PerformLayout(); + this.panel25.ResumeLayout(false); + this.panel25.PerformLayout(); + this.panel23.ResumeLayout(false); + this.panel23.PerformLayout(); + this.panel24.ResumeLayout(false); + this.panel24.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel pnl_Mode; + private System.Windows.Forms.Panel panel16; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Button btn_EnergyMeasurementNotUse; + private System.Windows.Forms.Button btn_EnergyMeasurementUse; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Button btn_Mode_Reset; + private System.Windows.Forms.Button btn_Mode_Save; + private System.Windows.Forms.Label lb_Select_Mode; + private System.Windows.Forms.Panel panel14; + private System.Windows.Forms.Button btn_EnergyDropCheckNotUse; + private System.Windows.Forms.Button btn_EnergyDropCheckUse; + private System.Windows.Forms.Label lb_Mode; + private System.Windows.Forms.Panel panel15; + private System.Windows.Forms.Button btn_AttenuatorCalNotUse; + private System.Windows.Forms.Button btn_AttenuatorCalUse; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button btn_Setting_Save; + private System.Windows.Forms.Button btn_Setting_Reset; + private System.Windows.Forms.Panel pnl_Setting; + private System.Windows.Forms.Panel panel10; + private System.Windows.Forms.Label lb_EnergyMeasurement; + private System.Windows.Forms.ToolTip tt_Desctiption; + private System.Windows.Forms.Panel panel12; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Panel panel13; + private System.Windows.Forms.TextBox tb_EnergyDropCheckCycle; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Panel panel17; + private System.Windows.Forms.TextBox tb_EnergyDropCheckMeasurementTime; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Panel panel18; + private System.Windows.Forms.TextBox tb_EnergyDropCheckTargetEnergy; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Panel panel19; + private System.Windows.Forms.TextBox tb_EnergyDropCheckTargetAngle; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Panel panel7; + private System.Windows.Forms.TextBox tb_AttenuatorCalCycle; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Panel panel8; + private System.Windows.Forms.TextBox tb_AttenuatorCalMeasurementTime; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Panel panel9; + private System.Windows.Forms.TextBox tb_AttenuatorCalStartAngle; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Panel panel11; + private System.Windows.Forms.TextBox tb_AttenuatorCalCoolingTime; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Panel panel22; + private System.Windows.Forms.TextBox tb_EnergyDropCheckErrorOccuredRange; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Panel panel21; + private System.Windows.Forms.TextBox tb_AttenuatorCalAngleStep; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Panel panel20; + private System.Windows.Forms.TextBox tb_AttenuatorCalEndAngle; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Panel panel26; + private System.Windows.Forms.TextBox tb_EnergyMeasurementCycle; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.Panel panel25; + private System.Windows.Forms.TextBox tb_EnergyMeasurementWaferCountCycle; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Panel panel23; + private System.Windows.Forms.TextBox tb_EnergyMeasurementErrorOccuredRange; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Panel panel24; + private System.Windows.Forms.TextBox tb_EnergyMeasurementTime; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.TextBox tb_EnergyMeasurementStep; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.TextBox tb_BeamHeight; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.Panel panel27; + private System.Windows.Forms.TextBox tb_BeamWidth; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.TextBox tb_EnergyMeasurementRetryCount; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.Panel panel28; + private System.Windows.Forms.Button btn_ShutterAlwaysOnNotUse; + private System.Windows.Forms.Button btn_ShutterAlwaysOnUse; + private System.Windows.Forms.Label label27; + private System.Windows.Forms.Panel panel29; + private System.Windows.Forms.TextBox tb_EnergyMeterHeatingTime; + private System.Windows.Forms.Label label28; + private System.Windows.Forms.Panel panel30; + private System.Windows.Forms.Label label29; + private System.Windows.Forms.Panel panel34; + private System.Windows.Forms.TextBox tb_VisionHeartBeatTimeOut; + private System.Windows.Forms.Label label33; + private System.Windows.Forms.Panel panel32; + private System.Windows.Forms.TextBox tb_VisionTimeOut; + private System.Windows.Forms.Label label31; + private System.Windows.Forms.Panel panel35; + private System.Windows.Forms.Button btn_AlignNotUse; + private System.Windows.Forms.Button btn_AlignUse; + private System.Windows.Forms.Label label34; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.cs new file mode 100644 index 0000000..8b9c991 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.cs @@ -0,0 +1,550 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using SA_LTT.Parameter; + +namespace SA_LTT_UI.Screen +{ + public partial class ScreenParameter : UserControl + { + private MainFrame _mainFrame; + + private SettingParameter settingParameter; + private ModeParameter modeParameter; + + public ScreenParameter(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + + settingParameter = _mainFrame.equipment.settingParameterManager.SettingParameter; + modeParameter = _mainFrame.equipment.modeParameterManager.ModeParameter; + + UpdateModeParameterUI(); + UpdateSettingParameterUI(); + } + + private void btn_Mode_Click(object sender, EventArgs e) + { + Button btn = (Button)sender; + + if(btn == btn_EnergyDropCheckUse) + { + modeParameter.EnergyDropCheckUse = true; + } + else if(btn == btn_EnergyDropCheckNotUse) + { + modeParameter.EnergyDropCheckUse = false; + } + + if (btn == btn_AttenuatorCalUse) + { + modeParameter.AttenuatorCalUse = true; + } + else if (btn == btn_AttenuatorCalNotUse) + { + modeParameter.AttenuatorCalUse = false; + } + + if (btn == btn_EnergyMeasurementUse) + { + modeParameter.EnergyMeasurementUse = true; + } + else if (btn == btn_EnergyMeasurementNotUse) + { + modeParameter.EnergyMeasurementUse = false; + } + + if(btn == btn_ShutterAlwaysOnUse) + { + modeParameter.ShutterAlwaysUse = true; + } + else if(btn == btn_ShutterAlwaysOnNotUse) + { + modeParameter.ShutterAlwaysUse = false; + } + + if(btn == btn_AlignUse) + { + modeParameter.AlignUse = true; + } + else if (btn == btn_AlignNotUse) + { + modeParameter.AlignUse = false; + } + + UpdateModeParameterUI(); + } + + private void SetSettingData(object sender) + { + TextBox tb = (TextBox)sender; + + double doubleData; + float floatData; + int intData; + + if (tb == tb_EnergyDropCheckCycle) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.EnergyDropCheckCycle = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_EnergyDropCheckMeasurementTime) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.EnergyDropCheckMeasurementTime = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_EnergyDropCheckTargetAngle) + { + float.TryParse(tb.Text, out floatData); + + floatData = float.Parse(floatData.ToString("F3")); + + if (floatData < 0) + { + floatData = 0; + } + + settingParameter.EnergyDropCheckTargetAngle = floatData; + tb.Text = $"{floatData}"; + } + else if (tb == tb_EnergyDropCheckTargetEnergy) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F4")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.EnergyDropCheckTargetEnergy = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_EnergyDropCheckErrorOccuredRange) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.EnergyDropCheckErrorOccuredRange = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_AttenuatorCalCycle) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.AttenuatorCalCycle = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_AttenuatorCalMeasurementTime) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.AttenuatorCalMeasurementTime = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_AttenuatorCalCoolingTime) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.AttenuatorCalCoolingTime = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_AttenuatorCalStartAngle) + { + float.TryParse(tb.Text, out floatData); + + floatData = float.Parse(floatData.ToString("F3")); + + if (floatData < 0) + { + floatData = 0; + } + + settingParameter.AttenuatorCalStartAngle = floatData; + tb.Text = $"{floatData}"; + } + else if (tb == tb_AttenuatorCalEndAngle) + { + float.TryParse(tb.Text, out floatData); + + floatData = float.Parse(floatData.ToString("F3")); + + if (floatData < settingParameter.AttenuatorCalStartAngle) + { + floatData = settingParameter.AttenuatorCalStartAngle; + } + + settingParameter.AttenuatorCalEndAngle = floatData; + tb.Text = $"{floatData}"; + } + else if (tb == tb_AttenuatorCalAngleStep) + { + float.TryParse(tb.Text, out floatData); + + floatData = float.Parse(floatData.ToString("F3")); + + if (floatData <= 0) + { + floatData = 0.01f; + } + + settingParameter.AttenuatorCalAngleStep = floatData; + tb.Text = $"{floatData}"; + } + else if (tb == tb_EnergyMeasurementCycle) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.EnergyMeasurementCycle = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_EnergyMeasurementWaferCountCycle) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.EnergyMeasurementWaferCountCycle = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_EnergyMeasurementErrorOccuredRange) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.EnergyMeasurementErrorOccuredRange = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_EnergyMeasurementTime) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.EnergyMeasurementTime = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_EnergyMeasurementStep) + { + float.TryParse(tb.Text, out floatData); + + floatData = float.Parse(floatData.ToString("F3")); + + if (floatData <= 0) + { + floatData = 0.1f; + } + + settingParameter.EnergyMeasurmentStepAngle = floatData; + tb.Text = $"{floatData}"; + } + else if (tb == tb_EnergyMeasurementTime) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.EnergyMeasurementTime = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_BeamHeight) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData <= 0) + { + doubleData = 0.1; + } + + settingParameter.BeamHeight = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_BeamWidth) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData <= 0) + { + doubleData = 0.1; + } + + settingParameter.BeamWidth = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_EnergyMeterHeatingTime) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 0) + { + doubleData = 0; + } + + settingParameter.EnergyMeterHeatingTime = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_EnergyMeasurementRetryCount) + { + int.TryParse(tb.Text, out intData); + + if (intData < 0) + { + intData = 0; + } + + settingParameter.EnergyMeasurementRetryCount = intData; + tb.Text = $"{intData}"; + } + else if (tb == tb_VisionTimeOut) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 1) + { + doubleData = 1; + } + + settingParameter.VisionTimeOut = doubleData; + tb.Text = $"{doubleData}"; + } + else if (tb == tb_VisionHeartBeatTimeOut) + { + double.TryParse(tb.Text, out doubleData); + + doubleData = double.Parse(doubleData.ToString("F3")); + + if (doubleData < 1) + { + doubleData = 1; + } + + settingParameter.VisionHeartBeatTimeOut = doubleData; + tb.Text = $"{doubleData}"; + } + + + UpdateSettingParameterUI(); + } + + private void UpdateModeParameterUI() + { + ModeParameter modeParameter = _mainFrame.equipment.modeParameterManager.ModeParameter; + + btn_EnergyDropCheckUse.BackColor = this.modeParameter.EnergyDropCheckUse ? this.modeParameter.EnergyDropCheckUse != modeParameter.EnergyDropCheckUse ? Color.Red : Color.DodgerBlue : Color.White; + btn_EnergyDropCheckNotUse.BackColor = !this.modeParameter.EnergyDropCheckUse ? this.modeParameter.EnergyDropCheckUse != modeParameter.EnergyDropCheckUse ? Color.Red : Color.DodgerBlue : Color.White; + + btn_AttenuatorCalUse.BackColor = this.modeParameter.AttenuatorCalUse ? this.modeParameter.AttenuatorCalUse != modeParameter.AttenuatorCalUse ? Color.Red : Color.DodgerBlue : Color.White; + btn_AttenuatorCalNotUse.BackColor = !this.modeParameter.AttenuatorCalUse ? this.modeParameter.AttenuatorCalUse != modeParameter.AttenuatorCalUse ? Color.Red : Color.DodgerBlue : Color.White; + + btn_EnergyMeasurementUse.BackColor = this.modeParameter.EnergyMeasurementUse ? this.modeParameter.EnergyMeasurementUse != modeParameter.EnergyMeasurementUse ? Color.Red : Color.DodgerBlue : Color.White; + btn_EnergyMeasurementNotUse.BackColor = !this.modeParameter.EnergyMeasurementUse ? this.modeParameter.EnergyMeasurementUse != modeParameter.EnergyMeasurementUse ? Color.Red : Color.DodgerBlue : Color.White; + + btn_ShutterAlwaysOnUse.BackColor = this.modeParameter.ShutterAlwaysUse ? this.modeParameter.ShutterAlwaysUse != modeParameter.ShutterAlwaysUse ? Color.Red : Color.DodgerBlue : Color.White; + btn_ShutterAlwaysOnNotUse.BackColor = !this.modeParameter.ShutterAlwaysUse ? this.modeParameter.ShutterAlwaysUse != modeParameter.ShutterAlwaysUse ? Color.Red : Color.DodgerBlue : Color.White; + + btn_AlignUse.BackColor = this.modeParameter.AlignUse ? this.modeParameter.AlignUse != modeParameter.AlignUse ? Color.Red : Color.DodgerBlue : Color.White; + btn_AlignNotUse.BackColor = !this.modeParameter.AlignUse ? this.modeParameter.AlignUse != modeParameter.AlignUse ? Color.Red : Color.DodgerBlue : Color.White; + } + + private void UpdateSettingParameterUI() + { + SettingParameter settingParameter = _mainFrame.equipment.settingParameterManager.SettingParameter; + + tb_EnergyDropCheckCycle.BackColor = this.settingParameter.EnergyDropCheckCycle != settingParameter.EnergyDropCheckCycle ? Color.Red : Color.White; + tb_EnergyDropCheckMeasurementTime.BackColor = this.settingParameter.EnergyDropCheckMeasurementTime != settingParameter.EnergyDropCheckMeasurementTime ? Color.Red : Color.White; + tb_EnergyDropCheckTargetAngle.BackColor = this.settingParameter.EnergyDropCheckTargetAngle != settingParameter.EnergyDropCheckTargetAngle ? Color.Red : Color.White; + tb_EnergyDropCheckTargetEnergy.BackColor = this.settingParameter.EnergyDropCheckTargetEnergy != settingParameter.EnergyDropCheckTargetEnergy ? Color.Red : Color.White; + tb_EnergyDropCheckErrorOccuredRange.BackColor = this.settingParameter.EnergyDropCheckErrorOccuredRange != settingParameter.EnergyDropCheckErrorOccuredRange ? Color.Red : Color.White; + + tb_AttenuatorCalCycle.BackColor = this.settingParameter.AttenuatorCalCycle != settingParameter.AttenuatorCalCycle ? Color.Red : Color.White; + tb_AttenuatorCalMeasurementTime.BackColor = this.settingParameter.AttenuatorCalMeasurementTime != settingParameter.AttenuatorCalMeasurementTime ? Color.Red : Color.White; + tb_AttenuatorCalCoolingTime.BackColor = this.settingParameter.AttenuatorCalCoolingTime != settingParameter.AttenuatorCalCoolingTime ? Color.Red : Color.White; + tb_AttenuatorCalStartAngle.BackColor = this.settingParameter.AttenuatorCalStartAngle != settingParameter.AttenuatorCalStartAngle ? Color.Red : Color.White; + tb_AttenuatorCalEndAngle.BackColor = this.settingParameter.AttenuatorCalEndAngle != settingParameter.AttenuatorCalEndAngle ? Color.Red : Color.White; + tb_AttenuatorCalAngleStep.BackColor = this.settingParameter.AttenuatorCalAngleStep != settingParameter.AttenuatorCalAngleStep ? Color.Red : Color.White; + + tb_EnergyMeasurementCycle.BackColor = this.settingParameter.EnergyMeasurementCycle != settingParameter.EnergyMeasurementCycle ? Color.Red : Color.White; + tb_EnergyMeasurementWaferCountCycle.BackColor = this.settingParameter.EnergyMeasurementWaferCountCycle != settingParameter.EnergyMeasurementWaferCountCycle ? Color.Red : Color.White; + tb_EnergyMeasurementErrorOccuredRange.BackColor = this.settingParameter.EnergyMeasurementErrorOccuredRange != settingParameter.EnergyMeasurementErrorOccuredRange ? Color.Red : Color.White; + tb_EnergyMeasurementTime.BackColor = this.settingParameter.EnergyMeasurementTime != settingParameter.EnergyMeasurementTime ? Color.Red : Color.White; + tb_EnergyMeasurementStep.BackColor = this.settingParameter.EnergyMeasurmentStepAngle != settingParameter.EnergyMeasurmentStepAngle ? Color.Red : Color.White; + tb_EnergyMeasurementRetryCount.BackColor = this.settingParameter.EnergyMeasurementRetryCount != settingParameter.EnergyMeasurementRetryCount ? Color.Red : Color.White; + + tb_BeamHeight.BackColor = this.settingParameter.BeamHeight != settingParameter.BeamHeight ? Color.Red : Color.White; + tb_BeamWidth.BackColor = this.settingParameter.BeamWidth != settingParameter.BeamWidth ? Color.Red : Color.White; + tb_EnergyMeterHeatingTime.BackColor = this.settingParameter.EnergyMeterHeatingTime != settingParameter.EnergyMeterHeatingTime ? Color.Red : Color.White; + + tb_VisionTimeOut.BackColor = this.settingParameter.VisionTimeOut != settingParameter.VisionTimeOut ? Color.Red : Color.White; + tb_VisionHeartBeatTimeOut.BackColor = this.settingParameter.VisionHeartBeatTimeOut != settingParameter.VisionHeartBeatTimeOut ? Color.Red : Color.White; + //=== + tb_EnergyDropCheckCycle.Text = this.settingParameter.EnergyDropCheckCycle.ToString(); + tb_EnergyDropCheckMeasurementTime.Text = this.settingParameter.EnergyDropCheckMeasurementTime.ToString(); + tb_EnergyDropCheckTargetAngle.Text = this.settingParameter.EnergyDropCheckTargetAngle.ToString(); + tb_EnergyDropCheckTargetEnergy.Text = this.settingParameter.EnergyDropCheckTargetEnergy.ToString(); + tb_EnergyDropCheckErrorOccuredRange.Text = this.settingParameter.EnergyDropCheckErrorOccuredRange.ToString(); + + tb_AttenuatorCalCycle.Text = this.settingParameter.AttenuatorCalCycle.ToString(); + tb_AttenuatorCalMeasurementTime.Text = this.settingParameter.AttenuatorCalMeasurementTime.ToString(); + tb_AttenuatorCalCoolingTime.Text = this.settingParameter.AttenuatorCalCoolingTime.ToString(); + tb_AttenuatorCalStartAngle.Text = this.settingParameter.AttenuatorCalStartAngle.ToString(); + tb_AttenuatorCalEndAngle.Text = this.settingParameter.AttenuatorCalEndAngle.ToString(); + tb_AttenuatorCalAngleStep.Text = this.settingParameter.AttenuatorCalAngleStep.ToString(); + + tb_EnergyMeasurementCycle.Text = this.settingParameter.EnergyMeasurementCycle.ToString(); + tb_EnergyMeasurementWaferCountCycle.Text = this.settingParameter.EnergyMeasurementWaferCountCycle.ToString(); + tb_EnergyMeasurementErrorOccuredRange.Text = this.settingParameter.EnergyMeasurementErrorOccuredRange.ToString(); + tb_EnergyMeasurementTime.Text = this.settingParameter.EnergyMeasurementTime.ToString(); + tb_EnergyMeasurementStep.Text = this.settingParameter.EnergyMeasurmentStepAngle.ToString(); + tb_EnergyMeasurementRetryCount.Text = this.settingParameter.EnergyMeasurementRetryCount.ToString(); + + tb_BeamHeight.Text = this.settingParameter.BeamHeight.ToString(); + tb_BeamWidth.Text = this.settingParameter.BeamWidth.ToString(); + tb_EnergyMeterHeatingTime.Text = this.settingParameter.EnergyMeterHeatingTime.ToString(); + + tb_VisionTimeOut.Text = this.settingParameter.VisionTimeOut.ToString(); + tb_VisionHeartBeatTimeOut.Text = this.settingParameter.VisionHeartBeatTimeOut.ToString(); + } + + private void btn_Mode_Save_Click(object sender, EventArgs e) + { + string strMsg = $"Mode Parameter瑜� ���옣 �븯�떆寃좎뒿�땲源� ?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + _mainFrame.equipment.modeParameterManager.Save(modeParameter); + UpdateModeParameterUI(); + } + } + + private void btn_Mode_Reset_Click(object sender, EventArgs e) + { + string strMsg = $"Mode Parameter瑜� Reset �븯�떆寃좎뒿�땲源� ?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + modeParameter = _mainFrame.equipment.modeParameterManager.ModeParameter; + UpdateModeParameterUI(); + } + } + + private void tb_SettingData_Leave(object sender, EventArgs e) + { + SetSettingData(sender); + } + + private void tb_SettingData_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyData == Keys.Enter) + { + SetSettingData(sender); + } + } + + private void btn_Setting_Save_Click(object sender, EventArgs e) + { + string strMsg = $"Setting Parameter瑜� ���옣 �븯�떆寃좎뒿�땲源� ?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + _mainFrame.equipment.settingParameterManager.Save(settingParameter); + UpdateSettingParameterUI(); + } + } + + private void btn_Setting_Reset_Click(object sender, EventArgs e) + { + string strMsg = $"Setting Parameter瑜� Reset �븯�떆寃좎뒿�땲源� ?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + settingParameter = _mainFrame.equipment.settingParameterManager.SettingParameter; + UpdateSettingParameterUI(); + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.resx b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.resx new file mode 100644 index 0000000..cdbabd0 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.resx @@ -0,0 +1,126 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="tt_Desctiption.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> + <metadata name="tt_Desctiption.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.Designer.cs new file mode 100644 index 0000000..8a4744f --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.Designer.cs @@ -0,0 +1,1361 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class ScreenRecipe + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.tb_RecipeDescription = new System.Windows.Forms.TextBox(); + this.lv_RecipeList = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel8 = new System.Windows.Forms.Panel(); + this.label37 = new System.Windows.Forms.Label(); + this.label23 = new System.Windows.Forms.Label(); + this.label24 = new System.Windows.Forms.Label(); + this.label36 = new System.Windows.Forms.Label(); + this.label38 = new System.Windows.Forms.Label(); + this.tb_BeamWidth = new System.Windows.Forms.TextBox(); + this.tb_BeamHeight = new System.Windows.Forms.TextBox(); + this.panel6 = new System.Windows.Forms.Panel(); + this.label34 = new System.Windows.Forms.Label(); + this.label35 = new System.Windows.Forms.Label(); + this.tb_EdgeRound = new System.Windows.Forms.TextBox(); + this.label21 = new System.Windows.Forms.Label(); + this.tb_Name = new System.Windows.Forms.TextBox(); + this.lb_Hatch = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_Radius = new System.Windows.Forms.TextBox(); + this.label152 = new System.Windows.Forms.Label(); + this.tb_DistancePrimaryFlat = new System.Windows.Forms.TextBox(); + this.lb_Panel_Data = new System.Windows.Forms.Label(); + this.label28 = new System.Windows.Forms.Label(); + this.label29 = new System.Windows.Forms.Label(); + this.tb_FullShotScanRange = new System.Windows.Forms.TextBox(); + this.label17 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.label22 = new System.Windows.Forms.Label(); + this.tb_FullShotAttenuator = new System.Windows.Forms.TextBox(); + this.label25 = new System.Windows.Forms.Label(); + this.label26 = new System.Windows.Forms.Label(); + this.label27 = new System.Windows.Forms.Label(); + this.tb_FullShotBeamHeightOverlap = new System.Windows.Forms.TextBox(); + this.tb_FullShotBeamWidthOverlap = new System.Windows.Forms.TextBox(); + this.btn_FullShot = new System.Windows.Forms.Button(); + this.panel3 = new System.Windows.Forms.Panel(); + this.panel5 = new System.Windows.Forms.Panel(); + this.label31 = new System.Windows.Forms.Label(); + this.el_CurrentWaferProcess = new System.Windows.Forms.Integration.ElementHost(); + this.btn_AddFoupRecipe = new System.Windows.Forms.Button(); + this.btn_ProcessDataDelete = new System.Windows.Forms.Button(); + this.panel4 = new System.Windows.Forms.Panel(); + this.label32 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label33 = new System.Windows.Forms.Label(); + this.tb_AttenuaotrStep = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.tb_HeightOverlap = new System.Windows.Forms.TextBox(); + this.tb_WidthOverlap = new System.Windows.Forms.TextBox(); + this.btn_AddProcessInfo = new System.Windows.Forms.Button(); + this.btn_ProcessDataClear = new System.Windows.Forms.Button(); + this.lv_ProcessList = new System.Windows.Forms.ListView(); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader6 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader7 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader8 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.label6 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label16 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.tb_StartX = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.tb_Height = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tb_Width = new System.Windows.Forms.TextBox(); + this.tb_StartY = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.btn_Create = new System.Windows.Forms.Button(); + this.btn_Delete = new System.Windows.Forms.Button(); + this.btn_Save = new System.Windows.Forms.Button(); + this.btn_Copy = new System.Windows.Forms.Button(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.btn_Refresh = new System.Windows.Forms.Button(); + this.lv_FoupRecipe = new System.Windows.Forms.ListView(); + this.columnHeader9 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.button1 = new System.Windows.Forms.Button(); + this.lv_Recipes = new System.Windows.Forms.ListView(); + this.columnHeader10 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader11 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.btn_SaveFoupRecipe = new System.Windows.Forms.Button(); + this.btn_CancelFoupRecipe = new System.Windows.Forms.Button(); + this.btn_CreateFoupRecipe = new System.Windows.Forms.Button(); + this.btn_DeleteFoupRecipe = new System.Windows.Forms.Button(); + this.btn_ProcessFullShot = new System.Windows.Forms.Panel(); + this.btn_FoupRecipeClear = new System.Windows.Forms.Button(); + this.label30 = new System.Windows.Forms.Label(); + this.label39 = new System.Windows.Forms.Label(); + this.tb_FullShotOverlapOffset = new System.Windows.Forms.TextBox(); + this.panel2.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel6.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel5.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // tb_RecipeDescription + // + this.tb_RecipeDescription.BackColor = System.Drawing.Color.White; + this.tb_RecipeDescription.Font = new System.Drawing.Font("Gulim", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tb_RecipeDescription.Location = new System.Drawing.Point(1251, 630); + this.tb_RecipeDescription.Multiline = true; + this.tb_RecipeDescription.Name = "tb_RecipeDescription"; + this.tb_RecipeDescription.ReadOnly = true; + this.tb_RecipeDescription.Size = new System.Drawing.Size(662, 177); + this.tb_RecipeDescription.TabIndex = 2; + this.tb_RecipeDescription.Text = "T : Wafer Center�� \'Primary Flat\' 源뚯��쓽 嫄곕━ 媛�\r\n\r\nR : Wafer�쓽 諛섏�由� 媛�\r\n\r\nStart x, y : 媛�怨� " + + "�떆�옉 醫뚰몴 (Limit : 짹 R媛�)\r\n\r\nWidth : 媛�怨� 嫄곕━\r\n\r\nHeight : 媛�怨� �룺 (�� Scanner FOV 踰붿쐞 �븞�쑝濡� �꽕�젙)" + + ""; + // + // lv_RecipeList + // + this.lv_RecipeList.AutoArrange = false; + this.lv_RecipeList.BackColor = System.Drawing.Color.White; + this.lv_RecipeList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1}); + this.lv_RecipeList.FullRowSelect = true; + this.lv_RecipeList.GridLines = true; + this.lv_RecipeList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lv_RecipeList.Location = new System.Drawing.Point(3, 294); + this.lv_RecipeList.MultiSelect = false; + this.lv_RecipeList.Name = "lv_RecipeList"; + this.lv_RecipeList.Size = new System.Drawing.Size(291, 418); + this.lv_RecipeList.TabIndex = 3; + this.lv_RecipeList.UseCompatibleStateImageBehavior = false; + this.lv_RecipeList.View = System.Windows.Forms.View.Details; + this.lv_RecipeList.Click += new System.EventHandler(this.lv_RecipeList_Click); + // + // columnHeader1 + // + this.columnHeader1.Text = "Recipe List"; + this.columnHeader1.Width = 274; + // + // panel2 + // + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel2.Controls.Add(this.panel8); + this.panel2.Controls.Add(this.panel6); + this.panel2.Controls.Add(this.lb_Panel_Data); + this.panel2.Location = new System.Drawing.Point(3, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(291, 255); + this.panel2.TabIndex = 103; + // + // panel8 + // + this.panel8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel8.Controls.Add(this.label37); + this.panel8.Controls.Add(this.label23); + this.panel8.Controls.Add(this.label24); + this.panel8.Controls.Add(this.label36); + this.panel8.Controls.Add(this.label38); + this.panel8.Controls.Add(this.tb_BeamWidth); + this.panel8.Controls.Add(this.tb_BeamHeight); + this.panel8.Location = new System.Drawing.Point(2, 165); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(280, 81); + this.panel8.TabIndex = 108; + // + // label37 + // + this.label37.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label37.Location = new System.Drawing.Point(4, 26); + this.label37.Name = "label37"; + this.label37.Size = new System.Drawing.Size(101, 21); + this.label37.TabIndex = 111; + this.label37.Text = "Beam Height"; + this.label37.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label23 + // + this.label23.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label23.Location = new System.Drawing.Point(4, 53); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(101, 21); + this.label23.TabIndex = 107; + this.label23.Text = "Beam Width"; + this.label23.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label24 + // + this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label24.Location = new System.Drawing.Point(234, 53); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(37, 21); + this.label24.TabIndex = 109; + this.label24.Text = "mm"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label36 + // + this.label36.BackColor = System.Drawing.Color.Silver; + this.label36.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label36.Dock = System.Windows.Forms.DockStyle.Top; + this.label36.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label36.Location = new System.Drawing.Point(0, 0); + this.label36.Name = "label36"; + this.label36.Size = new System.Drawing.Size(278, 23); + this.label36.TabIndex = 0; + this.label36.Text = "Beam Info"; + this.label36.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label38 + // + this.label38.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label38.Location = new System.Drawing.Point(234, 26); + this.label38.Name = "label38"; + this.label38.Size = new System.Drawing.Size(37, 21); + this.label38.TabIndex = 112; + this.label38.Text = "mm"; + this.label38.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_BeamWidth + // + this.tb_BeamWidth.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_BeamWidth.Location = new System.Drawing.Point(111, 53); + this.tb_BeamWidth.Name = "tb_BeamWidth"; + this.tb_BeamWidth.Size = new System.Drawing.Size(117, 21); + this.tb_BeamWidth.TabIndex = 106; + this.tb_BeamWidth.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Recipe_KeyPress); + this.tb_BeamWidth.Leave += new System.EventHandler(this.Recipe_Leaves); + // + // tb_BeamHeight + // + this.tb_BeamHeight.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_BeamHeight.Location = new System.Drawing.Point(111, 26); + this.tb_BeamHeight.Name = "tb_BeamHeight"; + this.tb_BeamHeight.Size = new System.Drawing.Size(117, 21); + this.tb_BeamHeight.TabIndex = 110; + this.tb_BeamHeight.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Recipe_KeyPress); + this.tb_BeamHeight.Leave += new System.EventHandler(this.Recipe_Leaves); + // + // panel6 + // + this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel6.Controls.Add(this.label34); + this.panel6.Controls.Add(this.label35); + this.panel6.Controls.Add(this.tb_EdgeRound); + this.panel6.Controls.Add(this.label21); + this.panel6.Controls.Add(this.tb_Name); + this.panel6.Controls.Add(this.lb_Hatch); + this.panel6.Controls.Add(this.label20); + this.panel6.Controls.Add(this.label19); + this.panel6.Controls.Add(this.label3); + this.panel6.Controls.Add(this.tb_Radius); + this.panel6.Controls.Add(this.label152); + this.panel6.Controls.Add(this.tb_DistancePrimaryFlat); + this.panel6.Location = new System.Drawing.Point(3, 26); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(280, 133); + this.panel6.TabIndex = 107; + // + // label34 + // + this.label34.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label34.Location = new System.Drawing.Point(3, 107); + this.label34.Name = "label34"; + this.label34.Size = new System.Drawing.Size(101, 21); + this.label34.TabIndex = 103; + this.label34.Text = "Edge Round"; + this.label34.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label35 + // + this.label35.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label35.Location = new System.Drawing.Point(233, 107); + this.label35.Name = "label35"; + this.label35.Size = new System.Drawing.Size(37, 21); + this.label35.TabIndex = 105; + this.label35.Text = "mm"; + this.label35.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_EdgeRound + // + this.tb_EdgeRound.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_EdgeRound.Location = new System.Drawing.Point(110, 107); + this.tb_EdgeRound.Name = "tb_EdgeRound"; + this.tb_EdgeRound.ReadOnly = true; + this.tb_EdgeRound.Size = new System.Drawing.Size(117, 21); + this.tb_EdgeRound.TabIndex = 104; + // + // label21 + // + this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label21.Location = new System.Drawing.Point(3, 26); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(101, 21); + this.label21.TabIndex = 101; + this.label21.Text = "Name"; + this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Name + // + this.tb_Name.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Name.Location = new System.Drawing.Point(110, 26); + this.tb_Name.Name = "tb_Name"; + this.tb_Name.ReadOnly = true; + this.tb_Name.Size = new System.Drawing.Size(160, 21); + this.tb_Name.TabIndex = 102; + // + // lb_Hatch + // + this.lb_Hatch.BackColor = System.Drawing.Color.Silver; + this.lb_Hatch.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Hatch.Dock = System.Windows.Forms.DockStyle.Top; + this.lb_Hatch.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lb_Hatch.Location = new System.Drawing.Point(0, 0); + this.lb_Hatch.Name = "lb_Hatch"; + this.lb_Hatch.Size = new System.Drawing.Size(278, 23); + this.lb_Hatch.TabIndex = 0; + this.lb_Hatch.Text = "Wafer Info"; + this.lb_Hatch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label20 + // + this.label20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label20.Location = new System.Drawing.Point(3, 53); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(101, 21); + this.label20.TabIndex = 81; + this.label20.Text = "R"; + this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label19 + // + this.label19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label19.Location = new System.Drawing.Point(3, 80); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(101, 21); + this.label19.TabIndex = 81; + this.label19.Text = "T"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Location = new System.Drawing.Point(233, 80); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(37, 21); + this.label3.TabIndex = 100; + this.label3.Text = "mm"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Radius + // + this.tb_Radius.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Radius.Location = new System.Drawing.Point(110, 53); + this.tb_Radius.Name = "tb_Radius"; + this.tb_Radius.ReadOnly = true; + this.tb_Radius.Size = new System.Drawing.Size(117, 21); + this.tb_Radius.TabIndex = 82; + // + // label152 + // + this.label152.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label152.Location = new System.Drawing.Point(233, 53); + this.label152.Name = "label152"; + this.label152.Size = new System.Drawing.Size(37, 21); + this.label152.TabIndex = 83; + this.label152.Text = "mm"; + this.label152.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_DistancePrimaryFlat + // + this.tb_DistancePrimaryFlat.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_DistancePrimaryFlat.Location = new System.Drawing.Point(110, 80); + this.tb_DistancePrimaryFlat.Name = "tb_DistancePrimaryFlat"; + this.tb_DistancePrimaryFlat.ReadOnly = true; + this.tb_DistancePrimaryFlat.Size = new System.Drawing.Size(117, 21); + this.tb_DistancePrimaryFlat.TabIndex = 99; + // + // lb_Panel_Data + // + this.lb_Panel_Data.BackColor = System.Drawing.Color.Silver; + this.lb_Panel_Data.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Panel_Data.Dock = System.Windows.Forms.DockStyle.Top; + this.lb_Panel_Data.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lb_Panel_Data.Location = new System.Drawing.Point(0, 0); + this.lb_Panel_Data.Name = "lb_Panel_Data"; + this.lb_Panel_Data.Size = new System.Drawing.Size(289, 23); + this.lb_Panel_Data.TabIndex = 0; + this.lb_Panel_Data.Text = "Recipe Data"; + this.lb_Panel_Data.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label28 + // + this.label28.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label28.Location = new System.Drawing.Point(87, 195); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(37, 21); + this.label28.TabIndex = 122; + this.label28.Text = "mm"; + this.label28.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label29 + // + this.label29.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label29.Font = new System.Drawing.Font("Gulim", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label29.Location = new System.Drawing.Point(3, 171); + this.label29.Name = "label29"; + this.label29.Size = new System.Drawing.Size(121, 21); + this.label29.TabIndex = 121; + this.label29.Text = "Scan Range"; + this.label29.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_FullShotScanRange + // + this.tb_FullShotScanRange.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_FullShotScanRange.Location = new System.Drawing.Point(3, 195); + this.tb_FullShotScanRange.Name = "tb_FullShotScanRange"; + this.tb_FullShotScanRange.Size = new System.Drawing.Size(78, 21); + this.tb_FullShotScanRange.TabIndex = 123; + this.tb_FullShotScanRange.Text = "1"; + // + // label17 + // + this.label17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label17.Font = new System.Drawing.Font("Gulim", 8F); + this.label17.Location = new System.Drawing.Point(87, 147); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(37, 21); + this.label17.TabIndex = 119; + this.label17.Text = "J/cm짼"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label18 + // + this.label18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label18.Font = new System.Drawing.Font("Gulim", 7.5F); + this.label18.Location = new System.Drawing.Point(3, 27); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(121, 21); + this.label18.TabIndex = 112; + this.label18.Text = "Beam Height Overlap"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label22 + // + this.label22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label22.Font = new System.Drawing.Font("Gulim", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label22.Location = new System.Drawing.Point(3, 123); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(121, 21); + this.label22.TabIndex = 118; + this.label22.Text = "Energy"; + this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_FullShotAttenuator + // + this.tb_FullShotAttenuator.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_FullShotAttenuator.Location = new System.Drawing.Point(3, 147); + this.tb_FullShotAttenuator.Name = "tb_FullShotAttenuator"; + this.tb_FullShotAttenuator.Size = new System.Drawing.Size(78, 21); + this.tb_FullShotAttenuator.TabIndex = 120; + // + // label25 + // + this.label25.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label25.Location = new System.Drawing.Point(87, 51); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(37, 21); + this.label25.TabIndex = 114; + this.label25.Text = "mm"; + this.label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label26 + // + this.label26.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label26.Location = new System.Drawing.Point(87, 99); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(37, 21); + this.label26.TabIndex = 115; + this.label26.Text = "mm"; + this.label26.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label27 + // + this.label27.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label27.Font = new System.Drawing.Font("Gulim", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label27.Location = new System.Drawing.Point(3, 75); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(121, 21); + this.label27.TabIndex = 113; + this.label27.Text = "Beam Width Overlap"; + this.label27.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_FullShotBeamHeightOverlap + // + this.tb_FullShotBeamHeightOverlap.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_FullShotBeamHeightOverlap.Location = new System.Drawing.Point(3, 51); + this.tb_FullShotBeamHeightOverlap.Name = "tb_FullShotBeamHeightOverlap"; + this.tb_FullShotBeamHeightOverlap.Size = new System.Drawing.Size(78, 21); + this.tb_FullShotBeamHeightOverlap.TabIndex = 116; + // + // tb_FullShotBeamWidthOverlap + // + this.tb_FullShotBeamWidthOverlap.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_FullShotBeamWidthOverlap.Location = new System.Drawing.Point(3, 99); + this.tb_FullShotBeamWidthOverlap.Name = "tb_FullShotBeamWidthOverlap"; + this.tb_FullShotBeamWidthOverlap.Size = new System.Drawing.Size(78, 21); + this.tb_FullShotBeamWidthOverlap.TabIndex = 117; + // + // btn_FullShot + // + this.btn_FullShot.Location = new System.Drawing.Point(2, 266); + this.btn_FullShot.Name = "btn_FullShot"; + this.btn_FullShot.Size = new System.Drawing.Size(121, 31); + this.btn_FullShot.TabIndex = 109; + this.btn_FullShot.Text = "Full Shot"; + this.btn_FullShot.UseVisualStyleBackColor = true; + this.btn_FullShot.Click += new System.EventHandler(this.btn_FullShot_Click); + // + // panel3 + // + this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel3.Controls.Add(this.panel5); + this.panel3.Controls.Add(this.el_CurrentWaferProcess); + this.panel3.Controls.Add(this.btn_AddFoupRecipe); + this.panel3.Controls.Add(this.btn_ProcessDataDelete); + this.panel3.Controls.Add(this.panel4); + this.panel3.Controls.Add(this.btn_AddProcessInfo); + this.panel3.Controls.Add(this.btn_ProcessDataClear); + this.panel3.Controls.Add(this.lv_ProcessList); + this.panel3.Controls.Add(this.label6); + this.panel3.Controls.Add(this.panel1); + this.panel3.Location = new System.Drawing.Point(298, 3); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(548, 803); + this.panel3.TabIndex = 104; + // + // panel5 + // + this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel5.Controls.Add(this.label30); + this.panel5.Controls.Add(this.label39); + this.panel5.Controls.Add(this.tb_FullShotOverlapOffset); + this.panel5.Controls.Add(this.label17); + this.panel5.Controls.Add(this.label28); + this.panel5.Controls.Add(this.tb_FullShotAttenuator); + this.panel5.Controls.Add(this.label22); + this.panel5.Controls.Add(this.label18); + this.panel5.Controls.Add(this.label31); + this.panel5.Controls.Add(this.label26); + this.panel5.Controls.Add(this.label25); + this.panel5.Controls.Add(this.tb_FullShotBeamWidthOverlap); + this.panel5.Controls.Add(this.label27); + this.panel5.Controls.Add(this.btn_FullShot); + this.panel5.Controls.Add(this.label29); + this.panel5.Controls.Add(this.tb_FullShotScanRange); + this.panel5.Controls.Add(this.tb_FullShotBeamHeightOverlap); + this.panel5.Location = new System.Drawing.Point(409, 181); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(129, 302); + this.panel5.TabIndex = 124; + // + // label31 + // + this.label31.BackColor = System.Drawing.Color.Silver; + this.label31.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label31.Dock = System.Windows.Forms.DockStyle.Top; + this.label31.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label31.Location = new System.Drawing.Point(0, 0); + this.label31.Name = "label31"; + this.label31.Size = new System.Drawing.Size(127, 23); + this.label31.TabIndex = 0; + this.label31.Text = "Full Shot"; + this.label31.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // el_CurrentWaferProcess + // + this.el_CurrentWaferProcess.Location = new System.Drawing.Point(6, 181); + this.el_CurrentWaferProcess.Name = "el_CurrentWaferProcess"; + this.el_CurrentWaferProcess.Size = new System.Drawing.Size(400, 400); + this.el_CurrentWaferProcess.TabIndex = 469; + this.el_CurrentWaferProcess.Text = "elementHost3"; + this.el_CurrentWaferProcess.Child = null; + // + // btn_AddFoupRecipe + // + this.btn_AddFoupRecipe.Location = new System.Drawing.Point(409, 485); + this.btn_AddFoupRecipe.Name = "btn_AddFoupRecipe"; + this.btn_AddFoupRecipe.Size = new System.Drawing.Size(129, 31); + this.btn_AddFoupRecipe.TabIndex = 112; + this.btn_AddFoupRecipe.Text = "Add ->"; + this.btn_AddFoupRecipe.UseVisualStyleBackColor = true; + this.btn_AddFoupRecipe.Click += new System.EventHandler(this.btn_AddFoupRecipe_Click); + // + // btn_ProcessDataDelete + // + this.btn_ProcessDataDelete.Location = new System.Drawing.Point(409, 517); + this.btn_ProcessDataDelete.Name = "btn_ProcessDataDelete"; + this.btn_ProcessDataDelete.Size = new System.Drawing.Size(129, 31); + this.btn_ProcessDataDelete.TabIndex = 112; + this.btn_ProcessDataDelete.Text = "Delete"; + this.btn_ProcessDataDelete.UseVisualStyleBackColor = true; + this.btn_ProcessDataDelete.Click += new System.EventHandler(this.btn_ProcessDataDelete_Click); + // + // panel4 + // + this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel4.Controls.Add(this.label32); + this.panel4.Controls.Add(this.label15); + this.panel4.Controls.Add(this.label11); + this.panel4.Controls.Add(this.label33); + this.panel4.Controls.Add(this.tb_AttenuaotrStep); + this.panel4.Controls.Add(this.label12); + this.panel4.Controls.Add(this.label14); + this.panel4.Controls.Add(this.label13); + this.panel4.Controls.Add(this.tb_HeightOverlap); + this.panel4.Controls.Add(this.tb_WidthOverlap); + this.panel4.Location = new System.Drawing.Point(275, 27); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(263, 107); + this.panel4.TabIndex = 111; + // + // label32 + // + this.label32.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label32.Font = new System.Drawing.Font("Gulim", 8F); + this.label32.Location = new System.Drawing.Point(218, 78); + this.label32.Name = "label32"; + this.label32.Size = new System.Drawing.Size(37, 21); + this.label32.TabIndex = 110; + this.label32.Text = "J/cm짼"; + this.label32.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label15 + // + this.label15.BackColor = System.Drawing.Color.Silver; + this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label15.Dock = System.Windows.Forms.DockStyle.Top; + this.label15.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label15.Location = new System.Drawing.Point(0, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(261, 23); + this.label15.TabIndex = 0; + this.label15.Text = "Overlap"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label11 + // + this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label11.Location = new System.Drawing.Point(3, 26); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(111, 21); + this.label11.TabIndex = 104; + this.label11.Text = "Beam Height"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label33 + // + this.label33.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label33.Location = new System.Drawing.Point(3, 78); + this.label33.Name = "label33"; + this.label33.Size = new System.Drawing.Size(111, 21); + this.label33.TabIndex = 109; + this.label33.Text = "Energy"; + this.label33.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_AttenuaotrStep + // + this.tb_AttenuaotrStep.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_AttenuaotrStep.Location = new System.Drawing.Point(120, 78); + this.tb_AttenuaotrStep.Name = "tb_AttenuaotrStep"; + this.tb_AttenuaotrStep.Size = new System.Drawing.Size(91, 21); + this.tb_AttenuaotrStep.TabIndex = 111; + // + // label12 + // + this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label12.Location = new System.Drawing.Point(218, 26); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(37, 21); + this.label12.TabIndex = 106; + this.label12.Text = "mm"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label14 + // + this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label14.Location = new System.Drawing.Point(218, 53); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(37, 21); + this.label14.TabIndex = 106; + this.label14.Text = "mm"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label13 + // + this.label13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label13.Location = new System.Drawing.Point(3, 53); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(111, 21); + this.label13.TabIndex = 104; + this.label13.Text = "Beam Width"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_HeightOverlap + // + this.tb_HeightOverlap.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_HeightOverlap.Location = new System.Drawing.Point(120, 26); + this.tb_HeightOverlap.Name = "tb_HeightOverlap"; + this.tb_HeightOverlap.Size = new System.Drawing.Size(91, 21); + this.tb_HeightOverlap.TabIndex = 107; + // + // tb_WidthOverlap + // + this.tb_WidthOverlap.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_WidthOverlap.Location = new System.Drawing.Point(120, 53); + this.tb_WidthOverlap.Name = "tb_WidthOverlap"; + this.tb_WidthOverlap.Size = new System.Drawing.Size(91, 21); + this.tb_WidthOverlap.TabIndex = 108; + // + // btn_AddProcessInfo + // + this.btn_AddProcessInfo.Location = new System.Drawing.Point(439, 138); + this.btn_AddProcessInfo.Name = "btn_AddProcessInfo"; + this.btn_AddProcessInfo.Size = new System.Drawing.Size(99, 37); + this.btn_AddProcessInfo.TabIndex = 109; + this.btn_AddProcessInfo.Text = "Add"; + this.btn_AddProcessInfo.UseVisualStyleBackColor = true; + this.btn_AddProcessInfo.Click += new System.EventHandler(this.btn_AddProcessInfo_Click); + // + // btn_ProcessDataClear + // + this.btn_ProcessDataClear.Location = new System.Drawing.Point(409, 550); + this.btn_ProcessDataClear.Name = "btn_ProcessDataClear"; + this.btn_ProcessDataClear.Size = new System.Drawing.Size(129, 31); + this.btn_ProcessDataClear.TabIndex = 109; + this.btn_ProcessDataClear.Text = "Clear"; + this.btn_ProcessDataClear.UseVisualStyleBackColor = true; + this.btn_ProcessDataClear.Click += new System.EventHandler(this.btn_ProcessDataClear_Click); + // + // lv_ProcessList + // + this.lv_ProcessList.AutoArrange = false; + this.lv_ProcessList.BackColor = System.Drawing.Color.White; + this.lv_ProcessList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader2, + this.columnHeader3, + this.columnHeader4, + this.columnHeader5, + this.columnHeader6, + this.columnHeader7, + this.columnHeader8}); + this.lv_ProcessList.FullRowSelect = true; + this.lv_ProcessList.GridLines = true; + this.lv_ProcessList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lv_ProcessList.Location = new System.Drawing.Point(6, 587); + this.lv_ProcessList.Name = "lv_ProcessList"; + this.lv_ProcessList.Size = new System.Drawing.Size(532, 211); + this.lv_ProcessList.TabIndex = 107; + this.lv_ProcessList.UseCompatibleStateImageBehavior = false; + this.lv_ProcessList.View = System.Windows.Forms.View.Details; + this.lv_ProcessList.Click += new System.EventHandler(this.lv_ProcessList_Click); + // + // columnHeader2 + // + this.columnHeader2.Text = "Start X"; + // + // columnHeader3 + // + this.columnHeader3.Text = "Start Y"; + // + // columnHeader4 + // + this.columnHeader4.Text = "Width"; + // + // columnHeader5 + // + this.columnHeader5.Text = "Height"; + // + // columnHeader6 + // + this.columnHeader6.Text = "Height Overlap"; + this.columnHeader6.Width = 95; + // + // columnHeader7 + // + this.columnHeader7.Text = "Width Overlap"; + this.columnHeader7.Width = 92; + // + // columnHeader8 + // + this.columnHeader8.Text = "Energy"; + this.columnHeader8.Width = 73; + // + // label6 + // + this.label6.BackColor = System.Drawing.Color.Silver; + this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label6.Dock = System.Windows.Forms.DockStyle.Top; + this.label6.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label6.Location = new System.Drawing.Point(0, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(546, 23); + this.label6.TabIndex = 0; + this.label6.Text = "Process Data"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel1 + // + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Controls.Add(this.label16); + this.panel1.Controls.Add(this.label5); + this.panel1.Controls.Add(this.label8); + this.panel1.Controls.Add(this.tb_StartX); + this.panel1.Controls.Add(this.label4); + this.panel1.Controls.Add(this.label7); + this.panel1.Controls.Add(this.label9); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.tb_Height); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.tb_Width); + this.panel1.Controls.Add(this.tb_StartY); + this.panel1.Controls.Add(this.label10); + this.panel1.Location = new System.Drawing.Point(6, 27); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(263, 148); + this.panel1.TabIndex = 110; + // + // label16 + // + this.label16.BackColor = System.Drawing.Color.Silver; + this.label16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label16.Dock = System.Windows.Forms.DockStyle.Top; + this.label16.Font = new System.Drawing.Font("Gulim", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label16.Location = new System.Drawing.Point(0, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(261, 23); + this.label16.TabIndex = 0; + this.label16.Text = "Process Data Info"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label5 + // + this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label5.Location = new System.Drawing.Point(3, 28); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(101, 21); + this.label5.TabIndex = 81; + this.label5.Text = "Start X"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label8.Location = new System.Drawing.Point(3, 121); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(101, 21); + this.label8.TabIndex = 104; + this.label8.Text = "Height"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_StartX + // + this.tb_StartX.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_StartX.Location = new System.Drawing.Point(110, 28); + this.tb_StartX.Name = "tb_StartX"; + this.tb_StartX.Size = new System.Drawing.Size(101, 21); + this.tb_StartX.TabIndex = 82; + this.tb_StartX.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_ProcessData_KeyDown); + this.tb_StartX.Leave += new System.EventHandler(this.tb_ProcessData_Leave); + // + // label4 + // + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label4.Location = new System.Drawing.Point(217, 28); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(37, 21); + this.label4.TabIndex = 83; + this.label4.Text = "mm"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label7.Location = new System.Drawing.Point(217, 121); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(37, 21); + this.label7.TabIndex = 106; + this.label7.Text = "mm"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label9.Location = new System.Drawing.Point(217, 90); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(37, 21); + this.label9.TabIndex = 103; + this.label9.Text = "mm"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Location = new System.Drawing.Point(3, 59); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(101, 21); + this.label2.TabIndex = 98; + this.label2.Text = "Start Y"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Height + // + this.tb_Height.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Height.Location = new System.Drawing.Point(110, 121); + this.tb_Height.Name = "tb_Height"; + this.tb_Height.Size = new System.Drawing.Size(101, 21); + this.tb_Height.TabIndex = 105; + this.tb_Height.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_ProcessData_KeyDown); + this.tb_Height.Leave += new System.EventHandler(this.tb_ProcessData_Leave); + // + // label1 + // + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Location = new System.Drawing.Point(217, 59); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(37, 21); + this.label1.TabIndex = 100; + this.label1.Text = "mm"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Width + // + this.tb_Width.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Width.Location = new System.Drawing.Point(110, 90); + this.tb_Width.Name = "tb_Width"; + this.tb_Width.Size = new System.Drawing.Size(101, 21); + this.tb_Width.TabIndex = 102; + this.tb_Width.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_ProcessData_KeyDown); + this.tb_Width.Leave += new System.EventHandler(this.tb_ProcessData_Leave); + // + // tb_StartY + // + this.tb_StartY.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_StartY.Location = new System.Drawing.Point(110, 59); + this.tb_StartY.Name = "tb_StartY"; + this.tb_StartY.Size = new System.Drawing.Size(101, 21); + this.tb_StartY.TabIndex = 99; + this.tb_StartY.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_ProcessData_KeyDown); + this.tb_StartY.Leave += new System.EventHandler(this.tb_ProcessData_Leave); + // + // label10 + // + this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label10.Location = new System.Drawing.Point(3, 90); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(101, 21); + this.label10.TabIndex = 101; + this.label10.Text = "Width"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Create + // + this.btn_Create.Location = new System.Drawing.Point(3, 718); + this.btn_Create.Name = "btn_Create"; + this.btn_Create.Size = new System.Drawing.Size(91, 41); + this.btn_Create.TabIndex = 108; + this.btn_Create.Text = "Create"; + this.btn_Create.UseVisualStyleBackColor = true; + this.btn_Create.Click += new System.EventHandler(this.btn_Create_Click); + // + // btn_Delete + // + this.btn_Delete.Location = new System.Drawing.Point(102, 718); + this.btn_Delete.Name = "btn_Delete"; + this.btn_Delete.Size = new System.Drawing.Size(91, 41); + this.btn_Delete.TabIndex = 108; + this.btn_Delete.Text = "Delete"; + this.btn_Delete.UseVisualStyleBackColor = true; + this.btn_Delete.Click += new System.EventHandler(this.btn_Delete_Click); + // + // btn_Save + // + this.btn_Save.BackColor = System.Drawing.Color.Gainsboro; + this.btn_Save.Location = new System.Drawing.Point(201, 718); + this.btn_Save.Name = "btn_Save"; + this.btn_Save.Size = new System.Drawing.Size(91, 41); + this.btn_Save.TabIndex = 108; + this.btn_Save.Text = "Save"; + this.btn_Save.UseVisualStyleBackColor = false; + this.btn_Save.Click += new System.EventHandler(this.btn_Save_Click); + // + // btn_Copy + // + this.btn_Copy.Location = new System.Drawing.Point(102, 765); + this.btn_Copy.Name = "btn_Copy"; + this.btn_Copy.Size = new System.Drawing.Size(91, 41); + this.btn_Copy.TabIndex = 108; + this.btn_Copy.Text = "Copy"; + this.btn_Copy.UseVisualStyleBackColor = true; + this.btn_Copy.Click += new System.EventHandler(this.btn_Copy_Click); + // + // btn_Cancel + // + this.btn_Cancel.Location = new System.Drawing.Point(3, 765); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(91, 41); + this.btn_Cancel.TabIndex = 108; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); + // + // btn_Refresh + // + this.btn_Refresh.Location = new System.Drawing.Point(3, 264); + this.btn_Refresh.Name = "btn_Refresh"; + this.btn_Refresh.Size = new System.Drawing.Size(291, 24); + this.btn_Refresh.TabIndex = 116; + this.btn_Refresh.Text = "Refresh"; + this.btn_Refresh.UseVisualStyleBackColor = true; + this.btn_Refresh.Click += new System.EventHandler(this.btn_Refresh_Click); + // + // lv_FoupRecipe + // + this.lv_FoupRecipe.AutoArrange = false; + this.lv_FoupRecipe.BackColor = System.Drawing.Color.White; + this.lv_FoupRecipe.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader9}); + this.lv_FoupRecipe.FullRowSelect = true; + this.lv_FoupRecipe.GridLines = true; + this.lv_FoupRecipe.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lv_FoupRecipe.Location = new System.Drawing.Point(852, 29); + this.lv_FoupRecipe.MultiSelect = false; + this.lv_FoupRecipe.Name = "lv_FoupRecipe"; + this.lv_FoupRecipe.Size = new System.Drawing.Size(393, 289); + this.lv_FoupRecipe.TabIndex = 3; + this.lv_FoupRecipe.UseCompatibleStateImageBehavior = false; + this.lv_FoupRecipe.View = System.Windows.Forms.View.Details; + this.lv_FoupRecipe.Click += new System.EventHandler(this.lv_FoupRecipe_Click); + // + // columnHeader9 + // + this.columnHeader9.Text = "Foup Recipe List"; + this.columnHeader9.Width = 377; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(851, 3); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(394, 24); + this.button1.TabIndex = 116; + this.button1.Text = "Refresh"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.btn_Refresh_Click); + // + // lv_Recipes + // + this.lv_Recipes.AutoArrange = false; + this.lv_Recipes.BackColor = System.Drawing.Color.White; + this.lv_Recipes.CheckBoxes = true; + this.lv_Recipes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader10, + this.columnHeader11}); + this.lv_Recipes.FullRowSelect = true; + this.lv_Recipes.GridLines = true; + this.lv_Recipes.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lv_Recipes.Location = new System.Drawing.Point(852, 324); + this.lv_Recipes.Name = "lv_Recipes"; + this.lv_Recipes.Size = new System.Drawing.Size(393, 435); + this.lv_Recipes.TabIndex = 3; + this.lv_Recipes.UseCompatibleStateImageBehavior = false; + this.lv_Recipes.View = System.Windows.Forms.View.Details; + this.lv_Recipes.DoubleClick += new System.EventHandler(this.lv_Recipes_DoubleClick); + // + // columnHeader10 + // + this.columnHeader10.Text = "No."; + this.columnHeader10.Width = 62; + // + // columnHeader11 + // + this.columnHeader11.Text = "Recipe Name"; + this.columnHeader11.Width = 311; + // + // btn_SaveFoupRecipe + // + this.btn_SaveFoupRecipe.BackColor = System.Drawing.Color.Gainsboro; + this.btn_SaveFoupRecipe.Location = new System.Drawing.Point(1162, 766); + this.btn_SaveFoupRecipe.Name = "btn_SaveFoupRecipe"; + this.btn_SaveFoupRecipe.Size = new System.Drawing.Size(82, 41); + this.btn_SaveFoupRecipe.TabIndex = 117; + this.btn_SaveFoupRecipe.Text = "Save"; + this.btn_SaveFoupRecipe.UseVisualStyleBackColor = false; + this.btn_SaveFoupRecipe.Click += new System.EventHandler(this.btn_SaveFoupRecipe_Click); + // + // btn_CancelFoupRecipe + // + this.btn_CancelFoupRecipe.Location = new System.Drawing.Point(1080, 766); + this.btn_CancelFoupRecipe.Name = "btn_CancelFoupRecipe"; + this.btn_CancelFoupRecipe.Size = new System.Drawing.Size(82, 41); + this.btn_CancelFoupRecipe.TabIndex = 118; + this.btn_CancelFoupRecipe.Text = "Cancel"; + this.btn_CancelFoupRecipe.UseVisualStyleBackColor = true; + this.btn_CancelFoupRecipe.Click += new System.EventHandler(this.btn_CancelFoupRecipe_Click); + // + // btn_CreateFoupRecipe + // + this.btn_CreateFoupRecipe.Location = new System.Drawing.Point(916, 766); + this.btn_CreateFoupRecipe.Name = "btn_CreateFoupRecipe"; + this.btn_CreateFoupRecipe.Size = new System.Drawing.Size(82, 41); + this.btn_CreateFoupRecipe.TabIndex = 119; + this.btn_CreateFoupRecipe.Text = "Create"; + this.btn_CreateFoupRecipe.UseVisualStyleBackColor = true; + this.btn_CreateFoupRecipe.Click += new System.EventHandler(this.btn_CreateFoupRecipe_Click); + // + // btn_DeleteFoupRecipe + // + this.btn_DeleteFoupRecipe.Location = new System.Drawing.Point(998, 766); + this.btn_DeleteFoupRecipe.Name = "btn_DeleteFoupRecipe"; + this.btn_DeleteFoupRecipe.Size = new System.Drawing.Size(82, 41); + this.btn_DeleteFoupRecipe.TabIndex = 121; + this.btn_DeleteFoupRecipe.Text = "Delete"; + this.btn_DeleteFoupRecipe.UseVisualStyleBackColor = true; + this.btn_DeleteFoupRecipe.Click += new System.EventHandler(this.btn_DeleteFoupRecipe_Click); + // + // btn_ProcessFullShot + // + this.btn_ProcessFullShot.BackgroundImage = global::SA_LTT_UI.Properties.Resources.RecipeImage; + this.btn_ProcessFullShot.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btn_ProcessFullShot.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.btn_ProcessFullShot.Location = new System.Drawing.Point(1251, 3); + this.btn_ProcessFullShot.Name = "btn_ProcessFullShot"; + this.btn_ProcessFullShot.Size = new System.Drawing.Size(662, 621); + this.btn_ProcessFullShot.TabIndex = 1; + // + // btn_FoupRecipeClear + // + this.btn_FoupRecipeClear.Location = new System.Drawing.Point(852, 766); + this.btn_FoupRecipeClear.Name = "btn_FoupRecipeClear"; + this.btn_FoupRecipeClear.Size = new System.Drawing.Size(58, 41); + this.btn_FoupRecipeClear.TabIndex = 119; + this.btn_FoupRecipeClear.Text = "Clear"; + this.btn_FoupRecipeClear.UseVisualStyleBackColor = true; + this.btn_FoupRecipeClear.Click += new System.EventHandler(this.btn_FoupRecipeClear_Click); + // + // label30 + // + this.label30.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label30.Location = new System.Drawing.Point(86, 243); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(37, 21); + this.label30.TabIndex = 125; + this.label30.Text = "mm"; + this.label30.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label39 + // + this.label39.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label39.Font = new System.Drawing.Font("Gulim", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label39.Location = new System.Drawing.Point(2, 219); + this.label39.Name = "label39"; + this.label39.Size = new System.Drawing.Size(121, 21); + this.label39.TabIndex = 124; + this.label39.Text = "Overlap offset"; + this.label39.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_FullShotOverlapOffset + // + this.tb_FullShotOverlapOffset.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_FullShotOverlapOffset.Location = new System.Drawing.Point(2, 243); + this.tb_FullShotOverlapOffset.Name = "tb_FullShotOverlapOffset"; + this.tb_FullShotOverlapOffset.Size = new System.Drawing.Size(78, 21); + this.tb_FullShotOverlapOffset.TabIndex = 126; + this.tb_FullShotOverlapOffset.Text = "1"; + // + // ScreenRecipe + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.btn_SaveFoupRecipe); + this.Controls.Add(this.btn_CancelFoupRecipe); + this.Controls.Add(this.btn_FoupRecipeClear); + this.Controls.Add(this.btn_CreateFoupRecipe); + this.Controls.Add(this.btn_DeleteFoupRecipe); + this.Controls.Add(this.button1); + this.Controls.Add(this.btn_Refresh); + this.Controls.Add(this.btn_Save); + this.Controls.Add(this.panel3); + this.Controls.Add(this.lv_Recipes); + this.Controls.Add(this.lv_FoupRecipe); + this.Controls.Add(this.lv_RecipeList); + this.Controls.Add(this.panel2); + this.Controls.Add(this.btn_Cancel); + this.Controls.Add(this.tb_RecipeDescription); + this.Controls.Add(this.btn_Create); + this.Controls.Add(this.btn_ProcessFullShot); + this.Controls.Add(this.btn_Copy); + this.Controls.Add(this.btn_Delete); + this.Name = "ScreenRecipe"; + this.Size = new System.Drawing.Size(1916, 810); + this.panel2.ResumeLayout(false); + this.panel8.ResumeLayout(false); + this.panel8.PerformLayout(); + this.panel6.ResumeLayout(false); + this.panel6.PerformLayout(); + this.panel3.ResumeLayout(false); + this.panel5.ResumeLayout(false); + this.panel5.PerformLayout(); + this.panel4.ResumeLayout(false); + this.panel4.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Panel btn_ProcessFullShot; + private System.Windows.Forms.TextBox tb_RecipeDescription; + private System.Windows.Forms.ListView lv_RecipeList; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tb_DistancePrimaryFlat; + private System.Windows.Forms.Label label152; + private System.Windows.Forms.TextBox tb_Radius; + private System.Windows.Forms.Label lb_Panel_Data; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox tb_Height; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox tb_Width; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox tb_StartY; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_StartX; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Button btn_FullShot; + private System.Windows.Forms.Button btn_ProcessDataClear; + private System.Windows.Forms.ListView lv_ProcessList; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.ColumnHeader columnHeader4; + private System.Windows.Forms.ColumnHeader columnHeader5; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.TextBox tb_WidthOverlap; + private System.Windows.Forms.TextBox tb_HeightOverlap; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Label lb_Hatch; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.TextBox tb_BeamWidth; + private System.Windows.Forms.Button btn_Create; + private System.Windows.Forms.Button btn_Delete; + private System.Windows.Forms.Button btn_Save; + private System.Windows.Forms.Button btn_Copy; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Button btn_Refresh; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.TextBox tb_Name; + private System.Windows.Forms.Button btn_AddProcessInfo; + private System.Windows.Forms.ColumnHeader columnHeader6; + private System.Windows.Forms.ColumnHeader columnHeader7; + private System.Windows.Forms.ColumnHeader columnHeader8; + private System.Windows.Forms.Button btn_ProcessDataDelete; + private System.Windows.Forms.Panel panel8; + private System.Windows.Forms.Label label36; + private System.Windows.Forms.Label label32; + private System.Windows.Forms.Label label33; + private System.Windows.Forms.TextBox tb_AttenuaotrStep; + private System.Windows.Forms.Label label34; + private System.Windows.Forms.Label label35; + private System.Windows.Forms.TextBox tb_EdgeRound; + private System.Windows.Forms.Label label37; + private System.Windows.Forms.Label label38; + private System.Windows.Forms.TextBox tb_BeamHeight; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.TextBox tb_FullShotAttenuator; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Label label27; + private System.Windows.Forms.TextBox tb_FullShotBeamHeightOverlap; + private System.Windows.Forms.TextBox tb_FullShotBeamWidthOverlap; + private System.Windows.Forms.Label label28; + private System.Windows.Forms.Label label29; + private System.Windows.Forms.TextBox tb_FullShotScanRange; + private System.Windows.Forms.Integration.ElementHost el_CurrentWaferProcess; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.Label label31; + private System.Windows.Forms.ListView lv_FoupRecipe; + private System.Windows.Forms.ColumnHeader columnHeader9; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.ListView lv_Recipes; + private System.Windows.Forms.ColumnHeader columnHeader10; + private System.Windows.Forms.ColumnHeader columnHeader11; + private System.Windows.Forms.Button btn_SaveFoupRecipe; + private System.Windows.Forms.Button btn_CancelFoupRecipe; + private System.Windows.Forms.Button btn_CreateFoupRecipe; + private System.Windows.Forms.Button btn_DeleteFoupRecipe; + private System.Windows.Forms.Button btn_AddFoupRecipe; + private System.Windows.Forms.Button btn_FoupRecipeClear; + private System.Windows.Forms.Label label30; + private System.Windows.Forms.Label label39; + private System.Windows.Forms.TextBox tb_FullShotOverlapOffset; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.cs new file mode 100644 index 0000000..2b7c1c3 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.cs @@ -0,0 +1,908 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using SA_LTT.Info.RecipeInfo; +using SA_LTT_UI.Viewer; +using SA_LTT; + +namespace SA_LTT_UI.Screen +{ + public partial class ScreenRecipe : UserControl + { + private MainFrame _mainFrame; + + private Recipe currentRecipe; + private FoupRecipe currentFoupRecipe; + + private WaferProcessPointView _waferProcessPointView; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public ScreenRecipe(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + _waferProcessPointView = new WaferProcessPointView(); + el_CurrentWaferProcess.Child = _waferProcessPointView; + + _waferProcessPointView.PointClicked += _waferProcessPointView_PointClicked; ; + RefreshRecipes(); + RefreshFoupRecipes(); + } + + private void _waferProcessPointView_PointClicked(System.Windows.Point clickedPoint, double width, double height) + { + if (InvokeRequired) + { + BeginInvoke(new WaferProcessPointView.PointClickedEvent(_waferProcessPointView_PointClicked), clickedPoint); + } + else + { + tb_StartX.Text = $"{clickedPoint.X}"; + tb_StartY.Text = $"{clickedPoint.Y}"; + tb_Width.Text = $"{width}"; + tb_Height.Text = $"{height}"; + } + } + + private void Recipe_Leaves(object sender, EventArgs e) + { + SetSettingData(sender); + } + + private void Recipe_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + SetSettingData(sender); + } + } + + public void SetSettingData(object sender) + { + if (currentRecipe == null) + { + RefreshRecipeData(); + return; + } + + Control control = (Control)sender; + float floatValue; + + switch (control.Name) + { + case "tb_BeamWidth": + { + float.TryParse(control.Text, out floatValue); + + if(floatValue < 0.1) + { + floatValue = 0.1f; + } + + if (currentRecipe.BeamWidth != floatValue) + { + currentRecipe.ProcessInfoList.Clear(); + } + + currentRecipe.BeamWidth = floatValue; + control.Text = $"{floatValue}"; + break; + } + case "tb_BeamHeight": + { + float.TryParse(control.Text, out floatValue); + + if (floatValue < 0.1) + { + floatValue = 0.1f; + } + + if(currentRecipe.BeamHeight != floatValue) + { + currentRecipe.ProcessInfoList.Clear(); + } + + currentRecipe.BeamHeight = floatValue; + control.Text = $"{floatValue}"; + break; + } + } + + RefreshRecipeData(); + } + + public void RefreshRecipeData() + { + if (currentRecipe == null) + { + tb_Name.Text = ""; + tb_Radius.Text = ""; + tb_DistancePrimaryFlat.Text = ""; + tb_EdgeRound.Text = ""; + + tb_BeamWidth.Text = ""; + tb_BeamHeight.Text = ""; + + lv_ProcessList.Items.Clear(); + + tb_StartX.Text = ""; + tb_StartY.Text = ""; + tb_Width.Text = ""; + tb_Height.Text = ""; + + tb_HeightOverlap.Text = ""; + tb_WidthOverlap.Text = ""; + tb_AttenuaotrStep.Text = ""; + + _waferProcessPointView.ClearProcessArea(); + _waferProcessPointView.Radius = 75; + _waferProcessPointView.PrimaryFlat = 70; + + btn_Save.BackColor = Color.Gainsboro; + } + else + { + tb_Name.Text = currentRecipe.Name; + tb_Radius.Text = $"{currentRecipe.Radius}"; + tb_DistancePrimaryFlat.Text = $"{currentRecipe.DistanceFromCenterToPrimaryFlat}"; + tb_EdgeRound.Text = $"{currentRecipe.EdgeRound}"; + + tb_BeamWidth.Text = $"{currentRecipe.BeamWidth}"; + tb_BeamHeight.Text = $"{currentRecipe.BeamHeight}"; + + lv_ProcessList.Items.Clear(); + + tb_StartX.Text = ""; + tb_StartY.Text = ""; + tb_Width.Text = ""; + tb_Height.Text = ""; + + tb_HeightOverlap.Text = ""; + tb_WidthOverlap.Text = ""; + tb_AttenuaotrStep.Text = ""; + + _waferProcessPointView.ClearProcessArea(); + _waferProcessPointView.Radius = currentRecipe.Radius; + _waferProcessPointView.PrimaryFlat = currentRecipe.DistanceFromCenterToPrimaryFlat; + + foreach (ProcessInfo processInfo in currentRecipe.ProcessInfoList) + { + ListViewItem lvi = new ListViewItem($"{processInfo.StartX}"); + lvi.SubItems.Add($"{processInfo.StartY}"); + lvi.SubItems.Add($"{processInfo.Width}"); + lvi.SubItems.Add($"{processInfo.Height}"); + + lvi.SubItems.Add($"{processInfo.BeamHeightOverlap}"); + lvi.SubItems.Add($"{processInfo.BeamWidthOverlap}"); + lvi.SubItems.Add($"{processInfo.Energy}"); + + processInfo.SetProcessData(); + _waferProcessPointView.AddProcessArea(processInfo.ProcessStartY, processInfo.ProcessEndY, processInfo.ProcessList.ToArray()); + lv_ProcessList.Items.Add(lvi); + } + + Recipe originalRecipe = _mainFrame.equipment.recipeManager.GetRecipe(currentRecipe.Name); + + if (Recipe.IsEquals(currentRecipe, originalRecipe)) + { + tb_BeamWidth.BackColor = Color.White; + tb_BeamHeight.BackColor = Color.White; + + btn_Save.BackColor = Color.Gainsboro; + } + else + { + tb_BeamWidth.BackColor = currentRecipe.BeamWidth != originalRecipe.BeamWidth ? Color.Red : Color.White; + tb_BeamHeight.BackColor = currentRecipe.BeamHeight != originalRecipe.BeamHeight ? Color.Red : Color.White; + + btn_Save.BackColor = Color.Red; + } + } + } + + public void RefreshRecipes() + { + _mainFrame.equipment.recipeManager.RefreshRecipes(); + + lv_RecipeList.Items.Clear(); + + Recipe[] recipes = _mainFrame.equipment.recipeManager.GetRecipeList(); + + foreach(Recipe recipe in recipes) + { + lv_RecipeList.Items.Add(recipe.Name); + } + + currentRecipe = null; + RefreshRecipeData(); + } + + public void RefreshFoupRecipes() + { + _mainFrame.equipment.foupRecipeManager.RefreshRecipes(); + + lv_FoupRecipe.Items.Clear(); + + FoupRecipe[] recipes = _mainFrame.equipment.foupRecipeManager.GetRecipeList(); + + foreach (FoupRecipe recipe in recipes) + { + lv_FoupRecipe.Items.Add(recipe.Name); + } + } + + public void RefreshFoupRecipeData() + { + lv_Recipes.Items.Clear(); + + if(currentFoupRecipe != null) + { + FoupRecipe originalRecipe = _mainFrame.equipment.foupRecipeManager.GetRecipe(currentFoupRecipe.Name); + + for (int i = 24; i >= 0; i--) + { + ListViewItem lvi = new ListViewItem($"{i + 1}"); + + if(currentFoupRecipe.RecipeNames[i] != originalRecipe.RecipeNames[i]) + { + lvi.BackColor = Color.Red; + } + + if (currentFoupRecipe.RecipeNames[i] == null) + { + lvi.SubItems.Add("Empty"); + } + else + { + lvi.SubItems.Add(currentFoupRecipe.RecipeNames[i]); + } + + lv_Recipes.Items.Add(lvi); + } + } + } + + private void btn_Refresh_Click(object sender, EventArgs e) + { + RefreshRecipes(); + } + + private void btn_Create_Click(object sender, EventArgs e) + { + RecipeCreateViewer recipeCreateViewer = new RecipeCreateViewer(); + + if(recipeCreateViewer.ShowDialog() == DialogResult.OK) + { + Recipe recipe = new Recipe(); + recipe.Name = recipeCreateViewer.RecipeName; + recipe.Radius = recipeCreateViewer.Radius; + recipe.DistanceFromCenterToPrimaryFlat = recipeCreateViewer.DistancePrimaryFlat; + recipe.EdgeRound = recipeCreateViewer.EdgeRound; + + if (_mainFrame.equipment.recipeManager.ExistsRecipe(recipe.Name) == false) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Create Recipe {recipe.Name}"); + _mainFrame.equipment.recipeManager.SaveOrCreate(recipe); + RefreshRecipes(); + } + else + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("媛숈� �씠由꾩쓽 Recipe媛� �엳�뒿�땲�떎."); + mbPad.Show(); + } + } + } + + private void btn_Delete_Click(object sender, EventArgs e) + { + if(currentRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + string strMsg = $"\"{currentRecipe.Name}\" �젅�떆�뵾瑜� �젣嫄� �븯�떆寃좎뒿�땲源�?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Delete Recipe {currentRecipe.Name}"); + _mainFrame.equipment.recipeManager.Delete(currentRecipe.Name); + currentRecipe = null; + RefreshRecipes(); + } + } + + private void btn_Save_Click(object sender, EventArgs e) + { + if (currentRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + string strMsg = $"\"{currentRecipe.Name}\" �젅�떆�뵾瑜� ���옣 �븯�떆寃좎뒿�땲源� ?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Save Recipe {currentRecipe.Name}"); + _mainFrame.equipment.recipeManager.SaveOrCreate(currentRecipe); + RefreshRecipeData(); + } + } + + private void btn_Cancel_Click(object sender, EventArgs e) + { + if (currentRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + string strMsg = $"痍⑥냼 �븯�떆寃좎뒿�땲源� ?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Cancel Recipe {currentRecipe.Name}"); + currentRecipe = _mainFrame.equipment.recipeManager.GetRecipe(currentRecipe.Name); + RefreshRecipeData(); + } + } + + private void btn_Copy_Click(object sender, EventArgs e) + { + if (currentRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + RecipeCreateViewer recipeCreateViewer = new RecipeCreateViewer(); + recipeCreateViewer.SetCopyVersion(currentRecipe.Radius, currentRecipe.DistanceFromCenterToPrimaryFlat, currentRecipe.EdgeRound); + + if (recipeCreateViewer.ShowDialog() == DialogResult.OK) + { + Recipe recipe = _mainFrame.equipment.recipeManager.GetRecipe(currentRecipe.Name); + recipe.EdgeRound = recipeCreateViewer.EdgeRound; + recipe.Name = recipeCreateViewer.RecipeName; + + if (_mainFrame.equipment.recipeManager.ExistsRecipe(recipe.Name) == false) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Copy Recipe {currentRecipe} -> {recipe.Name}"); + _mainFrame.equipment.recipeManager.SaveOrCreate(recipe); + RefreshRecipes(); + } + else + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("媛숈� �씠由꾩쓽 Recipe媛� �엳�뒿�땲�떎."); + mbPad.Show(); + } + } + } + + private void lv_RecipeList_Click(object sender, EventArgs e) + { + if (lv_RecipeList.SelectedItems.Count == 0) + return; + + string recipeName = lv_RecipeList.SelectedItems[0].Text; + + currentRecipe = _mainFrame.equipment.recipeManager.GetRecipe(recipeName); + + //�젅�떆�뵾 �젙蹂� Refresh 媛�. + RefreshRecipeData(); + } + + private void lv_ProcessList_Click(object sender, EventArgs e) + { + if (lv_ProcessList.SelectedItems.Count == 0) + return; + + int selectedIndex = lv_ProcessList.SelectedItems[0].Index; + + ProcessInfo processInfo = currentRecipe.ProcessInfoList[selectedIndex]; + + tb_StartX.Text = $"{processInfo.StartX}"; + tb_StartY.Text = $"{processInfo.StartY}"; + tb_Width.Text = $"{processInfo.Width}"; + tb_Height.Text = $"{processInfo.Height}"; + + tb_HeightOverlap.Text = $"{processInfo.BeamHeightOverlap}"; + tb_WidthOverlap.Text = $"{processInfo.BeamWidthOverlap}"; + tb_AttenuaotrStep.Text = $"{processInfo.Energy}"; + + _waferProcessPointView.SetClickedLocationPosition(processInfo.StartX, processInfo.StartY, processInfo.Width, processInfo.Height); + _waferProcessPointView.HighlightClear(); + + for (int i = 0; i < lv_ProcessList.SelectedItems.Count; i++) + { + _waferProcessPointView.HighlightProcessAreas(lv_ProcessList.SelectedItems[i].Index); + } + + //_waferProcessPointView.HighlightProcessAreas(selectedIndex); + } + + private void btn_ProcessDataClear_Click(object sender, EventArgs e) + { + if (currentRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + string strMsg = $"Process Data瑜� �젣嫄� �븯�떆寃좎뒿�땲源�?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Process Data Clear"); + currentRecipe.ProcessInfoList.Clear(); + _waferProcessPointView.ClearProcessArea(); + RefreshRecipeData(); + } + + private void btn_FullShot_Click(object sender, EventArgs e) + { + if(currentRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + float scanRange = 0; + float beamWidthOverlap = 0; + float beamHeightOverlap = 0; + float overlapOffset = 0; + double energy = 0; + + double doubleValue; + float floatValue; + + float.TryParse(tb_FullShotBeamHeightOverlap.Text, out floatValue); + beamHeightOverlap = floatValue; + + float.TryParse(tb_FullShotBeamWidthOverlap.Text, out floatValue); + beamWidthOverlap = floatValue; + + double.TryParse(tb_FullShotAttenuator.Text, out doubleValue); + energy = doubleValue; + + float.TryParse(tb_FullShotScanRange.Text, out floatValue); + scanRange = floatValue; + + float.TryParse(tb_FullShotOverlapOffset.Text, out floatValue); + overlapOffset = floatValue; + + //�씤�꽣�씫. + if (currentRecipe.BeamWidth - beamWidthOverlap <= 0) + { + MessageBox.Show("BeamWidth - BeamWidthOverlap�� 0蹂대떎 而ㅼ빞 �빀�땲�떎.", "�솗�씤", MessageBoxButtons.OK); + return; + } + + if (currentRecipe.BeamHeight - beamHeightOverlap <= 0) + { + MessageBox.Show("BeamHeight - BeamHeightOverlap�� 0蹂대떎 而ㅼ빞 �빀�땲�떎.", "�솗�씤", MessageBoxButtons.OK); + return; + } + + if (scanRange <= 0) + { + MessageBox.Show("Scan Range�뒗 1 蹂대떎 而ㅼ빞 �빀�땲�떎.", "�솗�씤", MessageBoxButtons.OK); + return; + } + + float beamheightdistance = currentRecipe.BeamHeight - beamHeightOverlap; + + float remainderBeamHeight = scanRange % beamheightdistance; //�굹癒몄� 援ы븯湲� + + if (remainderBeamHeight != 0) + { + int beamCount = (int)(scanRange / beamheightdistance); + + if (remainderBeamHeight > beamheightdistance / 2) // BeamHeight�쓽 諛섎낫�떎 �옉嫄곕굹 媛숈쑝硫� �삱由�. + { + scanRange = (beamCount + 1) * beamheightdistance; + } + else + { + scanRange = beamCount * beamheightdistance; + } + } + + scanRange = float.Parse($"{scanRange:F4}"); + currentRecipe.ProcessInfoList.Clear(); + + for (double i = currentRecipe.Radius; i > -currentRecipe.Radius; i -= (scanRange - overlapOffset - beamHeightOverlap)) + { + ProcessInfo processInfo = new ProcessInfo(); + processInfo.SetRecipeData(currentRecipe.Clone()); + + processInfo.StartX = -currentRecipe.Radius; + processInfo.StartY = float.Parse($"{i:F4}"); + processInfo.Width = currentRecipe.Radius * 2; + processInfo.Height = scanRange; + + processInfo.BeamHeightOverlap = beamHeightOverlap; + processInfo.BeamWidthOverlap = beamWidthOverlap; + processInfo.Energy = energy; + + processInfo.SetProcessData(); + if (processInfo.IsProcessEnable) + { + currentRecipe.AddProcessInfo(processInfo.Clone()); + } + } + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Full shot"); + RefreshRecipeData(); + } + + private void btn_AddProcessInfo_Click(object sender, EventArgs e) + { + if (currentRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + ProcessInfo processInfo = new ProcessInfo(); + int intValue; + float floatValue; + double doubleValue; + + processInfo.SetRecipeData(currentRecipe.Clone()); + + float.TryParse(tb_StartX.Text, out floatValue); + processInfo.StartX = floatValue; + + float.TryParse(tb_StartY.Text, out floatValue); + processInfo.StartY = floatValue; + + float.TryParse(tb_Width.Text, out floatValue); + processInfo.Width = floatValue; + + float.TryParse(tb_Height.Text, out floatValue); + processInfo.Height = floatValue; + + float.TryParse(tb_HeightOverlap.Text, out floatValue); + processInfo.BeamHeightOverlap = floatValue; + + float.TryParse(tb_WidthOverlap.Text, out floatValue); + processInfo.BeamWidthOverlap = floatValue; + + double.TryParse(tb_AttenuaotrStep.Text, out doubleValue); + processInfo.Energy = doubleValue; + + //==================== Beam �겕湲곗뿉 �뵲瑜� 媛�怨� �넂�씠 �꽕�젙. ====================== + //double remainderBeamHeight = processInfo.Height % currentRecipe.BeamHeight; + + //if (remainderBeamHeight != 0) + //{ + // if (remainderBeamHeight <= currentRecipe.BeamHeight - processInfo.BeamHeightOverlap / 2) // BeamHeight�쓽 諛섎낫�떎 �옉嫄곕굹 媛숈쑝硫� �삱由�. + // { + // processInfo.Height = currentRecipe.BeamHeight * Math.Ceiling(processInfo.Height / currentRecipe.BeamHeight); + // } + // else + // { + // processInfo.Height = currentRecipe.BeamHeight * Math.Floor(processInfo.Height / currentRecipe.BeamHeight); + // } + //} + //============================================================================= + + //�씤�꽣�씫. + if (processInfo.Width <= 0 || processInfo.Height <= 0) + { + MessageBox.Show("Width, Height媛믪쓣 �솗�씤�빐 二쇱꽭�슂.", "�솗�씤", MessageBoxButtons.OK); + return; + } + + if (processInfo.Energy < 0) + { + MessageBox.Show("Energy 媛믪쓣 �솗�씤�빐 二쇱꽭�슂.", "�솗�씤", MessageBoxButtons.OK); + return; + } + + if (processInfo.BeamWidth - processInfo.BeamWidthOverlap <= 0) + { + MessageBox.Show("BeamWidth - BeamWidthOverlap�� 0蹂대떎 而ㅼ빞 �빀�땲�떎..", "�솗�씤", MessageBoxButtons.OK); + return; + } + + if (processInfo.BeamHeight - processInfo.BeamHeightOverlap <= 0) + { + MessageBox.Show("BeamHeight - BeamHeightOverlap�� 0蹂대떎 而ㅼ빞 �빀�땲�떎..", "�솗�씤", MessageBoxButtons.OK); + return; + } + + + processInfo.SetProcessData(); + + if (processInfo.IsProcessEnable == false) + { + MessageBox.Show("媛�怨� 遺덇��뒫�븳 Process �엯�땲�떎.", "�솗�씤", MessageBoxButtons.OK); + return; + } + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Add process data {currentRecipe}"); + currentRecipe.AddProcessInfo(processInfo.Clone()); + RefreshRecipeData(); + } + + private void btn_ProcessDataDelete_Click(object sender, EventArgs e) + { + if (currentRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + if (lv_ProcessList.SelectedItems.Count == 0) + { + return; + } + + string strMsg = $"Process Data瑜� �젣嫄� �븯�떆寃좎뒿�땲源�?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + List<ProcessInfo> deleteList = new List<ProcessInfo>(); + List<System.Windows.Shapes.Polygon> deleteProcessList = new List<System.Windows.Shapes.Polygon>(); + + for(int i = 0; i < lv_ProcessList.SelectedItems.Count; i++) + { + deleteList.Add(currentRecipe.ProcessInfoList[lv_ProcessList.SelectedItems[i].Index]); + deleteProcessList.Add(_waferProcessPointView.ProcessAreas[i]); + } + + for(int i = 0; i < deleteList.Count; i++) + { + _waferProcessPointView.DeleteProcessArea(deleteProcessList[i]); + currentRecipe.ProcessInfoList.Remove(deleteList[i]); + } + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Process Data Delete"); + RefreshRecipeData(); + } + + private void btn_CreateFoupRecipe_Click(object sender, EventArgs e) + { + FoupRecipeCreateViewer recipeCreateViewer = new FoupRecipeCreateViewer(); + + if (recipeCreateViewer.ShowDialog() == DialogResult.OK) + { + FoupRecipe recipe = new FoupRecipe(); + recipe.Name = recipeCreateViewer.RecipeName; + + if (_mainFrame.equipment.foupRecipeManager.ExistsRecipe(recipe.Name) == false) + { + _mainFrame.equipment.foupRecipeManager.SaveOrCreate(recipe); + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Foup Recipe Create Foup Recipe {recipe.Name}"); + RefreshFoupRecipes(); + } + else + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("媛숈� �씠由꾩쓽 FoupRecipe媛� �엳�뒿�땲�떎."); + mbPad.Show(); + } + } + } + + private void btn_CancelFoupRecipe_Click(object sender, EventArgs e) + { + if (currentFoupRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + string strMsg = $"痍⑥냼 �븯�떆寃좎뒿�땲源� ?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Foup Recipe Cancel Foup Recipe {currentFoupRecipe.Name}"); + currentFoupRecipe = _mainFrame.equipment.foupRecipeManager.GetRecipe(currentFoupRecipe.Name); + RefreshFoupRecipeData(); + } + } + + private void btn_DeleteFoupRecipe_Click(object sender, EventArgs e) + { + if (currentFoupRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + string strMsg = $"\"{currentFoupRecipe.Name}\" �젅�떆�뵾瑜� �젣嫄� �븯�떆寃좎뒿�땲源�?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Foup Recipe Delete Foup Recipe {currentFoupRecipe.Name}"); + _mainFrame.equipment.foupRecipeManager.Delete(currentFoupRecipe.Name); + currentFoupRecipe = null; + RefreshFoupRecipes(); + } + } + + private void btn_SaveFoupRecipe_Click(object sender, EventArgs e) + { + if (currentFoupRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + string strMsg = $"\"{currentFoupRecipe.Name}\" �젅�떆�뵾瑜� ���옣 �븯�떆寃좎뒿�땲源� ?"; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Foup Recipe Save Foup Recipe {currentFoupRecipe.Name}"); + _mainFrame.equipment.foupRecipeManager.SaveOrCreate(currentFoupRecipe); + RefreshFoupRecipeData(); + } + } + + private void lv_FoupRecipe_Click(object sender, EventArgs e) + { + if (lv_FoupRecipe.SelectedItems.Count == 0) + return; + + string recipeName = lv_FoupRecipe.SelectedItems[0].Text; + + currentFoupRecipe = _mainFrame.equipment.foupRecipeManager.GetRecipe(recipeName); + + //�젅�떆�뵾 �젙蹂� Refresh 媛�. + RefreshFoupRecipeData(); + } + + private void lv_Recipes_DoubleClick(object sender, EventArgs e) + { + if (currentFoupRecipe == null) + { + string strMsg = $"�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."; + if (MessageBox.Show(strMsg, "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + } + return; + } + + if(lv_Recipes.SelectedItems.Count != 0) + { + currentFoupRecipe.RecipeNames[currentFoupRecipe.RecipeNames.Length - lv_Recipes.SelectedItems[0].Index - 1] = null; + } + + RefreshFoupRecipeData(); + } + + private void btn_AddFoupRecipe_Click(object sender, EventArgs e) + { + if (currentRecipe == null || currentFoupRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + if(lv_Recipes.CheckedItems.Count != 0) + { + for (int i = 0; i < lv_Recipes.CheckedItems.Count; i++) + { + currentFoupRecipe.RecipeNames[24 - lv_Recipes.CheckedItems[i].Index] = currentRecipe.Name; + } + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Foup Recipe Add Foup Recipe {currentFoupRecipe.Name}, Recipe {currentRecipe.Name}"); + RefreshFoupRecipeData(); + } + } + + private void btn_FoupRecipeClear_Click(object sender, EventArgs e) + { + if (currentFoupRecipe == null) + { + Viewer.MessageBoxPad mbPad = new Viewer.MessageBoxPad("�꽑�깮�맂 Recipe媛� �뾾�뒿�땲�떎."); + mbPad.Show(); + return; + } + + for (int i = 0; i < 25; i++) + { + currentFoupRecipe.RecipeNames[i] = null; + } + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenRecipe : Foup Recipe Clear Foup Recipe {currentFoupRecipe.Name}"); + RefreshFoupRecipeData(); + } + + private void SetProcessLocationPosition() + { + double startX; + double startY; + double width; + double height; + + if (double.TryParse(tb_StartX.Text, out startX)) + { + startX = double.Parse($"{startX:F3}"); + } + + tb_StartX.Text = $"{startX}"; + + if (double.TryParse(tb_StartY.Text, out startY)) + { + startY = double.Parse($"{startY:F3}"); + } + + tb_StartY.Text = $"{startY}"; + + if (double.TryParse(tb_Width.Text, out width)) + { + width = double.Parse($"{width:F3}"); + } + if(width < 0) + { + width = 0; + } + tb_Width.Text = $"{width}"; + + if (double.TryParse(tb_Height.Text, out height)) + { + height = double.Parse($"{height:F3}"); + } + if (height < 0) + { + height = 0; + } + tb_Height.Text = $"{height}"; + + if (width < 1) + { + width = 1; + } + + if (height < 1) + { + height = 1; + } + _waferProcessPointView.SetClickedLocationPosition(startX, startY, width, height); + } + + private void tb_ProcessData_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyData == Keys.Enter) + { + SetProcessLocationPosition(); + } + } + + private void tb_ProcessData_Leave(object sender, EventArgs e) + { + SetProcessLocationPosition(); + } + + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.resx b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.Designer.cs new file mode 100644 index 0000000..5d86b15 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.Designer.cs @@ -0,0 +1,157 @@ +癤퓆amespace SA_LTT_UI.Screen +{ + partial class ScreenSetting + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.lb_UserList = new System.Windows.Forms.Label(); + this.btn_Delete = new System.Windows.Forms.Button(); + this.lv_UserList = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.btn_Modify = new System.Windows.Forms.Button(); + this.btn_Create = new System.Windows.Forms.Button(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.lb_UserList); + this.panel1.Controls.Add(this.btn_Delete); + this.panel1.Controls.Add(this.lv_UserList); + this.panel1.Controls.Add(this.btn_Modify); + this.panel1.Controls.Add(this.btn_Create); + this.panel1.Dock = System.Windows.Forms.DockStyle.Left; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(480, 803); + this.panel1.TabIndex = 5; + // + // lb_UserList + // + this.lb_UserList.BackColor = System.Drawing.Color.White; + this.lb_UserList.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_UserList.Font = new System.Drawing.Font("Gulim", 20F); + this.lb_UserList.Location = new System.Drawing.Point(3, 7); + this.lb_UserList.Name = "lb_UserList"; + this.lb_UserList.Size = new System.Drawing.Size(468, 37); + this.lb_UserList.TabIndex = 1; + this.lb_UserList.Text = "User List"; + this.lb_UserList.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Delete + // + this.btn_Delete.Location = new System.Drawing.Point(321, 753); + this.btn_Delete.Name = "btn_Delete"; + this.btn_Delete.Size = new System.Drawing.Size(150, 47); + this.btn_Delete.TabIndex = 3; + this.btn_Delete.Text = "Delete"; + this.btn_Delete.UseVisualStyleBackColor = true; + this.btn_Delete.Click += new System.EventHandler(this.btn_Delete_Click); + // + // lv_UserList + // + this.lv_UserList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3}); + this.lv_UserList.FullRowSelect = true; + this.lv_UserList.GridLines = true; + this.lv_UserList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lv_UserList.Location = new System.Drawing.Point(3, 47); + this.lv_UserList.MultiSelect = false; + this.lv_UserList.Name = "lv_UserList"; + this.lv_UserList.Size = new System.Drawing.Size(468, 700); + this.lv_UserList.TabIndex = 0; + this.lv_UserList.TabStop = false; + this.lv_UserList.UseCompatibleStateImageBehavior = false; + this.lv_UserList.View = System.Windows.Forms.View.Details; + this.lv_UserList.Click += new System.EventHandler(this.lb_UserList_Click); + this.lv_UserList.DoubleClick += new System.EventHandler(this.lv_UserList_DoubleClick); + // + // columnHeader1 + // + this.columnHeader1.Text = "No."; + this.columnHeader1.Width = 64; + // + // columnHeader2 + // + this.columnHeader2.Text = "Name"; + this.columnHeader2.Width = 234; + // + // columnHeader3 + // + this.columnHeader3.Text = "Level"; + this.columnHeader3.Width = 153; + // + // btn_Modify + // + this.btn_Modify.Location = new System.Drawing.Point(162, 753); + this.btn_Modify.Name = "btn_Modify"; + this.btn_Modify.Size = new System.Drawing.Size(150, 47); + this.btn_Modify.TabIndex = 2; + this.btn_Modify.Text = "Modify"; + this.btn_Modify.UseVisualStyleBackColor = true; + this.btn_Modify.Click += new System.EventHandler(this.btn_Modify_Click); + // + // btn_Create + // + this.btn_Create.Location = new System.Drawing.Point(3, 753); + this.btn_Create.Name = "btn_Create"; + this.btn_Create.Size = new System.Drawing.Size(150, 47); + this.btn_Create.TabIndex = 2; + this.btn_Create.Text = "Create"; + this.btn_Create.UseVisualStyleBackColor = true; + this.btn_Create.Click += new System.EventHandler(this.btn_Create_Click); + // + // ScreenSetting + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.panel1); + this.Name = "ScreenSetting"; + this.Size = new System.Drawing.Size(1764, 803); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label lb_UserList; + private System.Windows.Forms.Button btn_Delete; + private System.Windows.Forms.ListView lv_UserList; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.Button btn_Modify; + private System.Windows.Forms.Button btn_Create; + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.cs b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.cs new file mode 100644 index 0000000..483051e --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.cs @@ -0,0 +1,145 @@ +癤퓎sing System; +using System.Windows.Forms; +using SA_LTT.UserInfo; +using SA_LTT_UI.Viewer; +using SA_LTT; + +namespace SA_LTT_UI.Screen +{ + public partial class ScreenSetting : UserControl + { + MainFrame _mainFrame; + + public ScreenSetting(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + + _mainFrame.equipment.userManager.Changed += UserManager_Changed; + RefreshUserList(); + } + + private void UserManager_Changed() + { + RefreshUserList(); + } + + private void RefreshUserList() + { + _mainFrame.equipment.userManager.RefreshUsers(); + + lv_UserList.Items.Clear(); + + int i = 1; + foreach (User user in _mainFrame.equipment.userManager.GetUserList()) + { + ListViewItem listViewItem = new ListViewItem($"{i}"); + listViewItem.SubItems.Add(user.Name); + listViewItem.SubItems.Add(user.Level.ToString()); + + lv_UserList.Items.Add(listViewItem); + i++; + } + } + + private void ModifyUser() + { + if (lv_UserList.SelectedItems.Count != 0) + { + string userName = lv_UserList.SelectedItems[0].SubItems[1].Text; + + User user = _mainFrame.equipment.userManager.GetUser(userName); + + if (user != null) + { + if (user.Level > _mainFrame.equipment.User.Level) + { + if (_mainFrame.equipment.User.Name != user.Name) + { + MessageBox.Show("�쁽�옱 �쑀���쓽 �젅踰⑤낫�떎 �꽑�깮�븳 �쑀���쓽 �젅踰⑥씠 �넂�쑝硫� �닔�젙�븷 �닔 �뾾�뒿�땲�떎."); + return; + } + } + + ModifyUserViewer modifyUserViewer = new ModifyUserViewer(_mainFrame, user); + + if (modifyUserViewer.ShowDialog() == DialogResult.OK) + { + _mainFrame.equipment.userManager.SaveOrCreate(modifyUserViewer.user); + + if (_mainFrame.equipment.User.Name == userName) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenSetting : Modify User {userName}"); + _mainFrame.equipment.ChangeUser(userName); + } + } + } + } + } + + private void DeleteUser() + { + if (lv_UserList.SelectedItems.Count != 0) + { + string userName = lv_UserList.SelectedItems[0].SubItems[1].Text; + + User user = _mainFrame.equipment.userManager.GetUser(userName); + + if (user != null) + { + if (user.Level > _mainFrame.equipment.User.Level) + { + MessageBox.Show("�쁽�옱 �쑀���쓽 �젅踰⑤낫�떎 �꽑�깮�븳 �쑀���쓽 �젅踰⑥씠 �넂�쑝硫� �궘�젣 �븷 �닔 �뾾�뒿�땲�떎."); + return; + } + + if (userName == "DIT" || userName == "Operator") + { + MessageBox.Show("DIT, Operaotr �뒗 �궘�젣�븷 �닔 �뾾�뒿�땲�떎."); + return; + } + + if(user.Equals(_mainFrame.equipment.User)) + { + MessageBox.Show("�쁽�옱 濡쒓렇�씤 �릺�뼱 �엳�뒗 怨꾩젙�엯�땲�떎."); + return; + } + + EquipmentLogManager.Instance.WriteButtonLog($"ScreenSetting : Delete User {userName}"); + _mainFrame.equipment.userManager.Delete(userName); + } + } + } + + private void lb_UserList_Click(object sender, EventArgs e) + { + //RefreshUserList(); + } + + private void btn_Create_Click(object sender, EventArgs e) + { + CreateUserViewer createUserViewer = new CreateUserViewer(_mainFrame); + + if (createUserViewer.ShowDialog() == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ScreenSetting : Create User {createUserViewer.user}"); + _mainFrame.equipment.userManager.SaveOrCreate(createUserViewer.user); + } + } + + private void btn_Delete_Click(object sender, EventArgs e) + { + DeleteUser(); + } + + private void btn_Modify_Click(object sender, EventArgs e) + { + ModifyUser(); + } + + private void lv_UserList_DoubleClick(object sender, EventArgs e) + { + ModifyUser(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.resx b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml b/SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml new file mode 100644 index 0000000..ba8f91a --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml @@ -0,0 +1,14 @@ +癤�<UserControl x:Class="SA_LTT_UI.Screen.WaferProcessPointView" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:local="clr-namespace:SA_LTT_UI.Screen" + mc:Ignorable="d" + d:DesignHeight="400" d:DesignWidth="400" Background="LightSteelBlue" MouseDown="UserControl_MouseDown" MouseMove="UserControl_MouseMove"> + <Canvas Name="MainScreen"> + <Ellipse Fill="White" Height="400" Stroke="Black" Width="400"/> + <Ellipse Fill="Red" Height="4" Canvas.Left="198" Canvas.Top="198" Width="4"/> + <Rectangle Name="RectPrimaryFlat" Fill="LightSteelBlue" Height="1" Canvas.Top="400" Width="400"/> + </Canvas> +</UserControl> diff --git a/SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml.cs b/SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml.cs new file mode 100644 index 0000000..4ae806d --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml.cs @@ -0,0 +1,242 @@ +癤퓎sing SA_LTT.Info.RecipeInfo; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace SA_LTT_UI.Screen +{ + /// <summary> + /// Interaction logic for WaferProcessPointView.xaml + /// </summary> + public partial class WaferProcessPointView : UserControl + { + public delegate void PointClickedEvent(Point clickedPoint, double width, double height); + + public List<Polygon> ProcessAreas= new List<Polygon>(); + Point Center = new Point(200, 200); + + private double _radius; + private double _primaryFlat; + public event PointClickedEvent PointClicked; + + private Rectangle _clickedLocation = new Rectangle(); + public double PrimaryFlat + { + get + { + return _primaryFlat; + } + + set + { + _primaryFlat = value; + RectPrimaryFlat.Height = (Radius - _primaryFlat) * _sizeRatio; + RectPrimaryFlat.Margin = new Thickness(0, -RectPrimaryFlat.Height, 0, 0); + } + } + + public double Radius + { + get + { + return _radius; + } + + set + { + _sizeRatio = 200 / value; + _radius = value; + } + } + + private double _sizeRatio; + + public WaferProcessPointView(double radius = 75, double primaryFlat = 70) + { + InitializeComponent(); + Radius = radius; + PrimaryFlat = primaryFlat; + + _clickedLocation.Fill = new SolidColorBrush(Colors.Lime); + _clickedLocation.Opacity = 0.7; + _clickedLocation.Height = 1; + _clickedLocation.Width = 1; + } + + public void AddProcessArea(double processStartY, double processEndY, Coord[] processPoint) + { + Polygon polygon = new Polygon(); + polygon.Fill = new SolidColorBrush(Colors.Red); + polygon.Opacity = 0.3; + + processStartY = double.Parse($"{processStartY:F4}"); + processEndY = double.Parse($"{processEndY:F4}"); + List<Point> topPoint = new List<Point>(); + List<Point> bottomPoint = new List<Point>(); + Point point; + double middlePoint = (processStartY + processEndY) / 2; + middlePoint = double.Parse($"{middlePoint:F4}"); + foreach (Coord coord in processPoint) + { + double pointX = double.Parse($"{Center.X + coord.X * _sizeRatio:F4}"); + double pointY = double.Parse($"{Center.Y - coord.Y * _sizeRatio:F4}"); + point = new Point(pointX, pointY); + + if(processStartY >= 0 && processEndY >= 0) //媛�怨듭쐞移섍� y異� 以묒떖 蹂대떎 �쐞�뿉 �엳�쓣 �븣 + { + if (coord.Y > processEndY) + { + topPoint.Add(point); + } + else + { + bottomPoint.Add(point); + } + } + else if(processStartY < 0 && processEndY < 0) //媛�怨듭쐞移섍� y異� 以묒떖 蹂대떎 諛묒뿉 �엳�쓣 �븣 + { + if (coord.Y < processStartY) + { + bottomPoint.Add(point); + } + else + { + topPoint.Add(point); + } + } + else //媛�怨듭쐞移섍� y異� 以묒떖�쓣 吏��굹媛� �븣 + { + if (coord.Y >= middlePoint) + { + topPoint.Add(point); + } + else + { + bottomPoint.Add(point); + } + } + } + + bottomPoint.Reverse(); + + foreach(Point coord in topPoint) + { + polygon.Points.Add(coord); + } + + foreach (Point coord in bottomPoint) + { + polygon.Points.Add(coord); + } + ProcessAreas.Add(polygon); + MainScreen.Children.Add(polygon); + } + + public void HighlightClear() + { + foreach (Polygon poly in ProcessAreas) + { + poly.Fill = new SolidColorBrush(Colors.Red); + } + } + + public void HighlightProcessAreas(int index) + { + if (ProcessAreas.Count < index + 1) return; + + ProcessAreas[index].Fill = new SolidColorBrush(Colors.Blue); + } + + public void DeleteProcessArea(Polygon processArea) + { + MainScreen.Children.Remove(processArea); + + ProcessAreas.Remove(processArea); + } + + public void ClearProcessArea() + { + foreach(Polygon processArea in ProcessAreas) + { + MainScreen.Children.Remove(processArea); + } + MainScreen.Children.Remove(_clickedLocation); + + ProcessAreas.Clear(); + } + + private void UserControl_MouseDown(object sender, MouseButtonEventArgs e) + { + Point clickPoint = e.GetPosition((IInputElement)sender); + + double startX = (clickPoint.X - Center.X) / _sizeRatio; + double startY = (Center.Y - clickPoint.Y) / _sizeRatio; + + startX = double.Parse($"{startX:F4}"); + startY = double.Parse($"{startY:F4}"); + + SetClickedLocationPosition(startX, startY, _clickedLocation.Width / _sizeRatio, _clickedLocation.Height / _sizeRatio); + + Point point = new Point(startX, startY); + + PointClicked?.Invoke(point , 0, 0); + } + + public void SetClickedLocationPosition(double startX, double startY, double width = 3, double height = 3) + { + double pointX = double.Parse($"{Center.X + startX * _sizeRatio:F4}"); + double pointY = double.Parse($"{Center.Y - startY * _sizeRatio:F4}"); + + _clickedLocation.Width = width * _sizeRatio; + _clickedLocation.Height = height * _sizeRatio; + + _clickedLocation.Margin = new Thickness(pointX, pointY, 0, 0); + + if (MainScreen.Children.Contains(_clickedLocation) == false) + { + MainScreen.Children.Add(_clickedLocation); + } + } + + private void UserControl_MouseMove(object sender, MouseEventArgs e) + { + if(e.LeftButton == MouseButtonState.Pressed) + { + Point clickPoint = e.GetPosition((IInputElement)sender); + + double startX = (_clickedLocation.Margin.Left - Center.X) / _sizeRatio; + double startY = (Center.Y - _clickedLocation.Margin.Top) / _sizeRatio; + + double endX = (clickPoint.X - Center.X) / _sizeRatio; + double endY = (Center.Y - clickPoint.Y) / _sizeRatio; + + double width = endX - startX; + double height = startY - endY; + + if (width < 0) + { + width = 0; + } + + if (height < 0) + { + height = 0; + } + + PointClicked?.Invoke(new Point(startX, startY), width, height); + SetClickedLocationPosition(startX, startY, width, height); + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.Designer.cs new file mode 100644 index 0000000..a588026 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.Designer.cs @@ -0,0 +1,177 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class AlarmViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + this.btn_BuzzerStop = new System.Windows.Forms.Button(); + this.btn_AlarmClear = new System.Windows.Forms.Button(); + this.lb_Description = new System.Windows.Forms.Label(); + this.dgv_OccurredAlarms = new System.Windows.Forms.DataGridView(); + this.TIME = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.NAME = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Description = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.HEAVY = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dgv_OccurredAlarms)).BeginInit(); + this.SuspendLayout(); + // + // btn_BuzzerStop + // + this.btn_BuzzerStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_BuzzerStop.Location = new System.Drawing.Point(643, 118); + this.btn_BuzzerStop.Name = "btn_BuzzerStop"; + this.btn_BuzzerStop.Size = new System.Drawing.Size(120, 28); + this.btn_BuzzerStop.TabIndex = 17; + this.btn_BuzzerStop.Text = "Buzzer Stop"; + this.btn_BuzzerStop.UseVisualStyleBackColor = true; + this.btn_BuzzerStop.Click += new System.EventHandler(this.btn_BuzzerStop_Click); + // + // btn_AlarmClear + // + this.btn_AlarmClear.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_AlarmClear.Location = new System.Drawing.Point(517, 118); + this.btn_AlarmClear.Name = "btn_AlarmClear"; + this.btn_AlarmClear.Size = new System.Drawing.Size(120, 28); + this.btn_AlarmClear.TabIndex = 16; + this.btn_AlarmClear.Text = "Alarm Clear"; + this.btn_AlarmClear.UseVisualStyleBackColor = true; + this.btn_AlarmClear.Click += new System.EventHandler(this.btn_AlarmClear_Click); + // + // lb_Description + // + this.lb_Description.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Description.Location = new System.Drawing.Point(11, 18); + this.lb_Description.Name = "lb_Description"; + this.lb_Description.Size = new System.Drawing.Size(752, 96); + this.lb_Description.TabIndex = 15; + this.lb_Description.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // dgv_OccurredAlarms + // + this.dgv_OccurredAlarms.AllowUserToAddRows = false; + this.dgv_OccurredAlarms.AllowUserToDeleteRows = false; + this.dgv_OccurredAlarms.AllowUserToResizeColumns = false; + this.dgv_OccurredAlarms.AllowUserToResizeRows = false; + this.dgv_OccurredAlarms.BackgroundColor = System.Drawing.Color.White; + this.dgv_OccurredAlarms.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dgv_OccurredAlarms.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dgv_OccurredAlarms.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.TIME, + this.NAME, + this.Description, + this.HEAVY}); + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Gulim", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle1.ForeColor = System.Drawing.Color.White; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.Color.SteelBlue; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.Color.White; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgv_OccurredAlarms.DefaultCellStyle = dataGridViewCellStyle1; + this.dgv_OccurredAlarms.EnableHeadersVisualStyles = false; + this.dgv_OccurredAlarms.GridColor = System.Drawing.Color.SteelBlue; + this.dgv_OccurredAlarms.Location = new System.Drawing.Point(11, 151); + this.dgv_OccurredAlarms.MultiSelect = false; + this.dgv_OccurredAlarms.Name = "dgv_OccurredAlarms"; + this.dgv_OccurredAlarms.ReadOnly = true; + this.dgv_OccurredAlarms.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dgv_OccurredAlarms.RowHeadersVisible = false; + this.dgv_OccurredAlarms.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; + dataGridViewCellStyle2.ForeColor = System.Drawing.Color.Black; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.Color.CornflowerBlue; + this.dgv_OccurredAlarms.RowsDefaultCellStyle = dataGridViewCellStyle2; + this.dgv_OccurredAlarms.RowTemplate.Height = 23; + this.dgv_OccurredAlarms.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.dgv_OccurredAlarms.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgv_OccurredAlarms.Size = new System.Drawing.Size(751, 400); + this.dgv_OccurredAlarms.TabIndex = 14; + this.dgv_OccurredAlarms.SelectionChanged += new System.EventHandler(this.dgv_OccurredAlarms_SelectionChanged); + // + // TIME + // + this.TIME.HeaderText = "TIME"; + this.TIME.Name = "TIME"; + this.TIME.ReadOnly = true; + this.TIME.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; + this.TIME.Width = 160; + // + // NAME + // + this.NAME.HeaderText = "NAME"; + this.NAME.Name = "NAME"; + this.NAME.ReadOnly = true; + this.NAME.Resizable = System.Windows.Forms.DataGridViewTriState.False; + this.NAME.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; + this.NAME.Width = 300; + // + // Description + // + this.Description.HeaderText = "DESCRIPTION"; + this.Description.Name = "Description"; + this.Description.ReadOnly = true; + this.Description.Resizable = System.Windows.Forms.DataGridViewTriState.False; + this.Description.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; + this.Description.Width = 200; + // + // HEAVY + // + this.HEAVY.HeaderText = "HEAVY"; + this.HEAVY.Name = "HEAVY"; + this.HEAVY.ReadOnly = true; + this.HEAVY.Resizable = System.Windows.Forms.DataGridViewTriState.False; + // + // AlarmViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(775, 569); + this.Controls.Add(this.btn_BuzzerStop); + this.Controls.Add(this.btn_AlarmClear); + this.Controls.Add(this.lb_Description); + this.Controls.Add(this.dgv_OccurredAlarms); + this.Name = "AlarmViewer"; + this.Text = "AlarmViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.AlarmViewer_FormClosing); + ((System.ComponentModel.ISupportInitialize)(this.dgv_OccurredAlarms)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button btn_BuzzerStop; + private System.Windows.Forms.Button btn_AlarmClear; + private System.Windows.Forms.Label lb_Description; + private System.Windows.Forms.DataGridView dgv_OccurredAlarms; + private System.Windows.Forms.DataGridViewTextBoxColumn TIME; + private System.Windows.Forms.DataGridViewTextBoxColumn NAME; + private System.Windows.Forms.DataGridViewTextBoxColumn Description; + private System.Windows.Forms.DataGridViewCheckBoxColumn HEAVY; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.cs new file mode 100644 index 0000000..f823418 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.cs @@ -0,0 +1,135 @@ +癤퓎sing SA_LTT; +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class AlarmViewer : Form + { + private MainFrame _mainFrame; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public AlarmViewer(MainFrame mainFrame) + { + InitializeComponent(); + InitDataGridView(); + + _mainFrame = mainFrame; + CheckOccurredAlarmList(); + _mainFrame.equipment.alarmManager.Occurred += AlarmManager_Occurred; + _mainFrame.equipment.alarmManager.Cleared += AlarmManager_Cleared; + CreateHandle(); + } + + private void CheckOccurredAlarmList() + { + foreach (SA_LTT.Alarm.Alarm alarm in _mainFrame.equipment.alarmManager.OccurredAlarms) + { + dgv_OccurredAlarms.Rows.Add(alarm.OccurredTime, alarm.Code, alarm.Description, alarm.Level); + } + } + + private void InitDataGridView() + { + //Datagridview Double Buffer �궗�슜. + Type dgvType = dgv_OccurredAlarms.GetType(); + PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", + BindingFlags.Instance | BindingFlags.NonPublic); + pi.SetValue(dgv_OccurredAlarms, true, null); + //================================ + + int i = 0; + foreach (DataGridViewColumn dgvc in dgv_OccurredAlarms.Columns) + { + if (i == 0) + { + dgvc.Width = 160; + dgvc.DefaultCellStyle.Format = "yyyy/MM/dd HH:mm:ss.fff"; + } + else if (i == 1) + dgvc.Width = 300; + else if (i == 2) + dgvc.Width = 200; + else if (i == 3) + dgvc.Width = 100; + + i++; + } + + foreach (DataGridViewColumn column in dgv_OccurredAlarms.Columns) + { + column.SortMode = DataGridViewColumnSortMode.NotSortable; + } + } + + private void AlarmManager_Cleared() + { + if (InvokeRequired) + { + BeginInvoke(new AlarmCleared(AlarmManager_Cleared)); + return; + } + else + { + dgv_OccurredAlarms.Rows.Clear(); + lb_Description.Text = string.Empty; + } + } + + private void AlarmManager_Occurred(SA_LTT.Alarm.Alarm occurredAlarm) + { + if (InvokeRequired) + { + BeginInvoke(new AlarmOccurred(AlarmManager_Occurred), occurredAlarm); + return; + } + else + { + dgv_OccurredAlarms.Rows.Add(occurredAlarm.OccurredTime, occurredAlarm.Code, occurredAlarm.Description, occurredAlarm.Level); + } + } + + private void btn_AlarmClear_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.alarmManager.Clear(); + } + + private void btn_BuzzerStop_Click(object sender, EventArgs e) + { + //Buzer stop. + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.BuzzerStop(); + } + + private void AlarmViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void dgv_OccurredAlarms_SelectionChanged(object sender, EventArgs e) + { + if (dgv_OccurredAlarms.CurrentRow != null && dgv_OccurredAlarms.CurrentRow.Selected) + { + lb_Description.Text = (string)dgv_OccurredAlarms.CurrentRow.Cells[2].Value; + } + else + { + lb_Description.Text = string.Empty; + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.resx new file mode 100644 index 0000000..d2eb904 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.resx @@ -0,0 +1,132 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="TIME.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <metadata name="NAME.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <metadata name="Description.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <metadata name="HEAVY.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.Designer.cs new file mode 100644 index 0000000..fb737c8 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.Designer.cs @@ -0,0 +1,838 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class AttenuatorCalViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.label56 = new System.Windows.Forms.Label(); + this.label62 = new System.Windows.Forms.Label(); + this.lb_PowerMeterPositionMove = new System.Windows.Forms.Label(); + this.label61 = new System.Windows.Forms.Label(); + this.lb_PowerMeterInitialize = new System.Windows.Forms.Label(); + this.label69 = new System.Windows.Forms.Label(); + this.lb_Complete = new System.Windows.Forms.Label(); + this.label70 = new System.Windows.Forms.Label(); + this.lb_CenterPositionMove = new System.Windows.Forms.Label(); + this.lb_AttenuatorSet = new System.Windows.Forms.Label(); + this.label78 = new System.Windows.Forms.Label(); + this.lb_PowerMeasure = new System.Windows.Forms.Label(); + this.lb_LaserOn = new System.Windows.Forms.Label(); + this.label81 = new System.Windows.Forms.Label(); + this.lb_LaserOff = new System.Windows.Forms.Label(); + this.label83 = new System.Windows.Forms.Label(); + this.label63 = new System.Windows.Forms.Label(); + this.label85 = new System.Windows.Forms.Label(); + this.label86 = new System.Windows.Forms.Label(); + this.label87 = new System.Windows.Forms.Label(); + this.label88 = new System.Windows.Forms.Label(); + this.label89 = new System.Windows.Forms.Label(); + this.label90 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.tb_Energy = new System.Windows.Forms.TextBox(); + this.btn_Close = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.lb_CoolingWait = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.lb_DataSet = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.btn_Stop = new System.Windows.Forms.Button(); + this.btn_Start = new System.Windows.Forms.Button(); + this.label7 = new System.Windows.Forms.Label(); + this.tb_CurrentAngle = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.tb_StartAngle = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_EndAngle = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.tb_AngleStep = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.lv_AttenuatorCalData = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.label13 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.tb_LastCalTime = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); + this.tb_CalDTime = new System.Windows.Forms.TextBox(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.tb_OriginalEnergy = new System.Windows.Forms.TextBox(); + this.label18 = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label56 + // + this.label56.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label56.Location = new System.Drawing.Point(59, 122); + this.label56.Name = "label56"; + this.label56.Size = new System.Drawing.Size(186, 40); + this.label56.TabIndex = 83; + this.label56.Text = "Power meter position move"; + this.label56.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label62 + // + this.label62.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label62.Location = new System.Drawing.Point(59, 177); + this.label62.Name = "label62"; + this.label62.Size = new System.Drawing.Size(186, 40); + this.label62.TabIndex = 71; + this.label62.Text = "Attenuator set"; + this.label62.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PowerMeterPositionMove + // + this.lb_PowerMeterPositionMove.BackColor = System.Drawing.Color.Green; + this.lb_PowerMeterPositionMove.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerMeterPositionMove.Location = new System.Drawing.Point(13, 122); + this.lb_PowerMeterPositionMove.Name = "lb_PowerMeterPositionMove"; + this.lb_PowerMeterPositionMove.Size = new System.Drawing.Size(40, 40); + this.lb_PowerMeterPositionMove.TabIndex = 81; + this.lb_PowerMeterPositionMove.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label61 + // + this.label61.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label61.Location = new System.Drawing.Point(59, 507); + this.label61.Name = "label61"; + this.label61.Size = new System.Drawing.Size(186, 40); + this.label61.TabIndex = 79; + this.label61.Text = "Attenuator cal complete"; + this.label61.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PowerMeterInitialize + // + this.lb_PowerMeterInitialize.BackColor = System.Drawing.Color.Green; + this.lb_PowerMeterInitialize.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerMeterInitialize.Location = new System.Drawing.Point(13, 12); + this.lb_PowerMeterInitialize.Name = "lb_PowerMeterInitialize"; + this.lb_PowerMeterInitialize.Size = new System.Drawing.Size(40, 40); + this.lb_PowerMeterInitialize.TabIndex = 68; + this.lb_PowerMeterInitialize.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label69 + // + this.label69.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label69.Location = new System.Drawing.Point(59, 67); + this.label69.Name = "label69"; + this.label69.Size = new System.Drawing.Size(186, 40); + this.label69.TabIndex = 82; + this.label69.Text = "Center position move"; + this.label69.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Complete + // + this.lb_Complete.BackColor = System.Drawing.Color.Green; + this.lb_Complete.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Complete.Location = new System.Drawing.Point(13, 507); + this.lb_Complete.Name = "lb_Complete"; + this.lb_Complete.Size = new System.Drawing.Size(40, 40); + this.lb_Complete.TabIndex = 78; + this.lb_Complete.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label70 + // + this.label70.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label70.Location = new System.Drawing.Point(59, 12); + this.label70.Name = "label70"; + this.label70.Size = new System.Drawing.Size(186, 40); + this.label70.TabIndex = 69; + this.label70.Text = "Power meter initialize"; + this.label70.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CenterPositionMove + // + this.lb_CenterPositionMove.BackColor = System.Drawing.Color.Green; + this.lb_CenterPositionMove.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CenterPositionMove.Location = new System.Drawing.Point(13, 67); + this.lb_CenterPositionMove.Name = "lb_CenterPositionMove"; + this.lb_CenterPositionMove.Size = new System.Drawing.Size(40, 40); + this.lb_CenterPositionMove.TabIndex = 80; + this.lb_CenterPositionMove.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_AttenuatorSet + // + this.lb_AttenuatorSet.BackColor = System.Drawing.Color.Green; + this.lb_AttenuatorSet.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_AttenuatorSet.Location = new System.Drawing.Point(13, 177); + this.lb_AttenuatorSet.Name = "lb_AttenuatorSet"; + this.lb_AttenuatorSet.Size = new System.Drawing.Size(40, 40); + this.lb_AttenuatorSet.TabIndex = 70; + this.lb_AttenuatorSet.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label78 + // + this.label78.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label78.Location = new System.Drawing.Point(59, 287); + this.label78.Name = "label78"; + this.label78.Size = new System.Drawing.Size(186, 40); + this.label78.TabIndex = 77; + this.label78.Text = "Laser on"; + this.label78.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PowerMeasure + // + this.lb_PowerMeasure.BackColor = System.Drawing.Color.Green; + this.lb_PowerMeasure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerMeasure.Location = new System.Drawing.Point(13, 342); + this.lb_PowerMeasure.Name = "lb_PowerMeasure"; + this.lb_PowerMeasure.Size = new System.Drawing.Size(40, 40); + this.lb_PowerMeasure.TabIndex = 72; + this.lb_PowerMeasure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LaserOn + // + this.lb_LaserOn.BackColor = System.Drawing.Color.Green; + this.lb_LaserOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LaserOn.Location = new System.Drawing.Point(13, 287); + this.lb_LaserOn.Name = "lb_LaserOn"; + this.lb_LaserOn.Size = new System.Drawing.Size(40, 40); + this.lb_LaserOn.TabIndex = 76; + this.lb_LaserOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label81 + // + this.label81.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label81.Location = new System.Drawing.Point(59, 342); + this.label81.Name = "label81"; + this.label81.Size = new System.Drawing.Size(186, 40); + this.label81.TabIndex = 73; + this.label81.Text = "Power measure"; + this.label81.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LaserOff + // + this.lb_LaserOff.BackColor = System.Drawing.Color.Green; + this.lb_LaserOff.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LaserOff.Location = new System.Drawing.Point(13, 397); + this.lb_LaserOff.Name = "lb_LaserOff"; + this.lb_LaserOff.Size = new System.Drawing.Size(40, 40); + this.lb_LaserOff.TabIndex = 74; + this.lb_LaserOff.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label83 + // + this.label83.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label83.Location = new System.Drawing.Point(59, 397); + this.label83.Name = "label83"; + this.label83.Size = new System.Drawing.Size(186, 40); + this.label83.TabIndex = 75; + this.label83.Text = "Laser off"; + this.label83.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label63 + // + this.label63.AutoSize = true; + this.label63.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label63.Location = new System.Drawing.Point(143, 492); + this.label63.Name = "label63"; + this.label63.Size = new System.Drawing.Size(18, 15); + this.label63.TabIndex = 66; + this.label63.Text = "�넃"; + this.label63.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label85 + // + this.label85.AutoSize = true; + this.label85.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label85.Location = new System.Drawing.Point(143, 382); + this.label85.Name = "label85"; + this.label85.Size = new System.Drawing.Size(18, 15); + this.label85.TabIndex = 65; + this.label85.Text = "�넃"; + this.label85.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label86 + // + this.label86.AutoSize = true; + this.label86.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label86.Location = new System.Drawing.Point(143, 327); + this.label86.Name = "label86"; + this.label86.Size = new System.Drawing.Size(18, 15); + this.label86.TabIndex = 64; + this.label86.Text = "�넃"; + this.label86.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label87 + // + this.label87.AutoSize = true; + this.label87.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label87.Location = new System.Drawing.Point(143, 272); + this.label87.Name = "label87"; + this.label87.Size = new System.Drawing.Size(18, 15); + this.label87.TabIndex = 63; + this.label87.Text = "�넃"; + this.label87.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label88 + // + this.label88.AutoSize = true; + this.label88.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label88.Location = new System.Drawing.Point(143, 162); + this.label88.Name = "label88"; + this.label88.Size = new System.Drawing.Size(18, 15); + this.label88.TabIndex = 62; + this.label88.Text = "�넃"; + this.label88.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label89 + // + this.label89.AutoSize = true; + this.label89.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label89.Location = new System.Drawing.Point(143, 107); + this.label89.Name = "label89"; + this.label89.Size = new System.Drawing.Size(18, 15); + this.label89.TabIndex = 67; + this.label89.Text = "�넃"; + this.label89.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label90 + // + this.label90.AutoSize = true; + this.label90.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label90.Location = new System.Drawing.Point(143, 52); + this.label90.Name = "label90"; + this.label90.Size = new System.Drawing.Size(18, 15); + this.label90.TabIndex = 61; + this.label90.Text = "�넃"; + this.label90.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label16 + // + this.label16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label16.Font = new System.Drawing.Font("Gulim", 14F); + this.label16.Location = new System.Drawing.Point(532, 369); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(61, 40); + this.label16.TabIndex = 87; + this.label16.Text = "J/cm짼"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label17 + // + this.label17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label17.Location = new System.Drawing.Point(251, 369); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(138, 40); + this.label17.TabIndex = 85; + this.label17.Text = "Current Energy"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Energy + // + this.tb_Energy.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Energy.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Energy.Location = new System.Drawing.Point(395, 369); + this.tb_Energy.Name = "tb_Energy"; + this.tb_Energy.ReadOnly = true; + this.tb_Energy.Size = new System.Drawing.Size(130, 40); + this.tb_Energy.TabIndex = 86; + this.tb_Energy.Text = "0"; + // + // btn_Close + // + this.btn_Close.Location = new System.Drawing.Point(490, 485); + this.btn_Close.Name = "btn_Close"; + this.btn_Close.Size = new System.Drawing.Size(103, 62); + this.btn_Close.TabIndex = 88; + this.btn_Close.Text = "Close"; + this.btn_Close.UseVisualStyleBackColor = true; + this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label1.Location = new System.Drawing.Point(143, 217); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(18, 15); + this.label1.TabIndex = 65; + this.label1.Text = "�넃"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Location = new System.Drawing.Point(59, 232); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(186, 40); + this.label2.TabIndex = 75; + this.label2.Text = "Cooling Wait"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CoolingWait + // + this.lb_CoolingWait.BackColor = System.Drawing.Color.Green; + this.lb_CoolingWait.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CoolingWait.Location = new System.Drawing.Point(13, 232); + this.lb_CoolingWait.Name = "lb_CoolingWait"; + this.lb_CoolingWait.Size = new System.Drawing.Size(40, 40); + this.lb_CoolingWait.TabIndex = 74; + this.lb_CoolingWait.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label4.Location = new System.Drawing.Point(143, 437); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(18, 15); + this.label4.TabIndex = 66; + this.label4.Text = "�넃"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_DataSet + // + this.lb_DataSet.BackColor = System.Drawing.Color.Green; + this.lb_DataSet.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_DataSet.Location = new System.Drawing.Point(13, 452); + this.lb_DataSet.Name = "lb_DataSet"; + this.lb_DataSet.Size = new System.Drawing.Size(40, 40); + this.lb_DataSet.TabIndex = 78; + this.lb_DataSet.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label6.Location = new System.Drawing.Point(59, 452); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(186, 40); + this.label6.TabIndex = 79; + this.label6.Text = "Data Set"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Stop + // + this.btn_Stop.Font = new System.Drawing.Font("Gulim", 13F); + this.btn_Stop.Location = new System.Drawing.Point(346, 485); + this.btn_Stop.Name = "btn_Stop"; + this.btn_Stop.Size = new System.Drawing.Size(89, 63); + this.btn_Stop.TabIndex = 100; + this.btn_Stop.Text = "Stop"; + this.btn_Stop.UseVisualStyleBackColor = true; + this.btn_Stop.Click += new System.EventHandler(this.btn_Stop_Click); + // + // btn_Start + // + this.btn_Start.Font = new System.Drawing.Font("Gulim", 13F); + this.btn_Start.Location = new System.Drawing.Point(251, 484); + this.btn_Start.Name = "btn_Start"; + this.btn_Start.Size = new System.Drawing.Size(89, 63); + this.btn_Start.TabIndex = 101; + this.btn_Start.Text = "Start"; + this.btn_Start.UseVisualStyleBackColor = true; + this.btn_Start.Click += new System.EventHandler(this.btn_Start_Click); + // + // label7 + // + this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label7.Font = new System.Drawing.Font("Gulim", 18F); + this.label7.Location = new System.Drawing.Point(532, 415); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(61, 40); + this.label7.TabIndex = 104; + this.label7.Text = "쨘"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_CurrentAngle + // + this.tb_CurrentAngle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_CurrentAngle.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_CurrentAngle.Location = new System.Drawing.Point(395, 415); + this.tb_CurrentAngle.Name = "tb_CurrentAngle"; + this.tb_CurrentAngle.ReadOnly = true; + this.tb_CurrentAngle.Size = new System.Drawing.Size(130, 40); + this.tb_CurrentAngle.TabIndex = 103; + this.tb_CurrentAngle.Text = "0"; + // + // label8 + // + this.label8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label8.Location = new System.Drawing.Point(251, 415); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(138, 40); + this.label8.TabIndex = 102; + this.label8.Text = "Current Angle"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label9.Location = new System.Drawing.Point(251, 137); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(138, 40); + this.label9.TabIndex = 102; + this.label9.Text = "Start Angle"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_StartAngle + // + this.tb_StartAngle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_StartAngle.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_StartAngle.Location = new System.Drawing.Point(395, 137); + this.tb_StartAngle.Name = "tb_StartAngle"; + this.tb_StartAngle.ReadOnly = true; + this.tb_StartAngle.Size = new System.Drawing.Size(130, 40); + this.tb_StartAngle.TabIndex = 103; + this.tb_StartAngle.Text = "0"; + // + // label10 + // + this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label10.Font = new System.Drawing.Font("Gulim", 18F); + this.label10.Location = new System.Drawing.Point(532, 137); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(61, 40); + this.label10.TabIndex = 104; + this.label10.Text = "쨘"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Location = new System.Drawing.Point(251, 183); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(138, 40); + this.label3.TabIndex = 102; + this.label3.Text = "End Angle"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_EndAngle + // + this.tb_EndAngle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_EndAngle.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_EndAngle.Location = new System.Drawing.Point(395, 183); + this.tb_EndAngle.Name = "tb_EndAngle"; + this.tb_EndAngle.ReadOnly = true; + this.tb_EndAngle.Size = new System.Drawing.Size(130, 40); + this.tb_EndAngle.TabIndex = 103; + this.tb_EndAngle.Text = "0"; + // + // label5 + // + this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label5.Font = new System.Drawing.Font("Gulim", 18F); + this.label5.Location = new System.Drawing.Point(532, 183); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(61, 40); + this.label5.TabIndex = 104; + this.label5.Text = "쨘"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label11 + // + this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label11.Location = new System.Drawing.Point(251, 232); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(138, 40); + this.label11.TabIndex = 102; + this.label11.Text = "Angle Step"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_AngleStep + // + this.tb_AngleStep.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_AngleStep.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_AngleStep.Location = new System.Drawing.Point(395, 232); + this.tb_AngleStep.Name = "tb_AngleStep"; + this.tb_AngleStep.ReadOnly = true; + this.tb_AngleStep.Size = new System.Drawing.Size(130, 40); + this.tb_AngleStep.TabIndex = 103; + this.tb_AngleStep.Text = "0"; + // + // label12 + // + this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label12.Font = new System.Drawing.Font("Gulim", 18F); + this.label12.Location = new System.Drawing.Point(532, 232); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(61, 40); + this.label12.TabIndex = 104; + this.label12.Text = "쨘"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lv_AttenuatorCalData + // + this.lv_AttenuatorCalData.AutoArrange = false; + this.lv_AttenuatorCalData.BackColor = System.Drawing.Color.White; + this.lv_AttenuatorCalData.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3}); + this.lv_AttenuatorCalData.FullRowSelect = true; + this.lv_AttenuatorCalData.GridLines = true; + this.lv_AttenuatorCalData.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lv_AttenuatorCalData.Location = new System.Drawing.Point(608, 35); + this.lv_AttenuatorCalData.Name = "lv_AttenuatorCalData"; + this.lv_AttenuatorCalData.Size = new System.Drawing.Size(319, 512); + this.lv_AttenuatorCalData.TabIndex = 105; + this.lv_AttenuatorCalData.UseCompatibleStateImageBehavior = false; + this.lv_AttenuatorCalData.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "Attenuator angle"; + this.columnHeader1.Width = 117; + // + // columnHeader2 + // + this.columnHeader2.Text = "Energy"; + this.columnHeader2.Width = 85; + // + // columnHeader3 + // + this.columnHeader3.Text = "Energy per Unit"; + this.columnHeader3.Width = 106; + // + // label13 + // + this.label13.BackColor = System.Drawing.Color.Silver; + this.label13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label13.Location = new System.Drawing.Point(608, 12); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(319, 20); + this.label13.TabIndex = 106; + this.label13.Text = "Current cal data"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label14 + // + this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label14.Location = new System.Drawing.Point(251, 12); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(138, 29); + this.label14.TabIndex = 102; + this.label14.Text = "Last cal time"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_LastCalTime + // + this.tb_LastCalTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_LastCalTime.Font = new System.Drawing.Font("Gulim", 14F); + this.tb_LastCalTime.Location = new System.Drawing.Point(395, 12); + this.tb_LastCalTime.Name = "tb_LastCalTime"; + this.tb_LastCalTime.ReadOnly = true; + this.tb_LastCalTime.Size = new System.Drawing.Size(198, 29); + this.tb_LastCalTime.TabIndex = 103; + this.tb_LastCalTime.Text = "2022-12-01 15:55:56"; + // + // label15 + // + this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label15.Location = new System.Drawing.Point(251, 58); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(138, 29); + this.label15.TabIndex = 102; + this.label15.Text = "Cal D-Time"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_CalDTime + // + this.tb_CalDTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_CalDTime.Font = new System.Drawing.Font("Gulim", 14F); + this.tb_CalDTime.Location = new System.Drawing.Point(395, 58); + this.tb_CalDTime.Name = "tb_CalDTime"; + this.tb_CalDTime.ReadOnly = true; + this.tb_CalDTime.Size = new System.Drawing.Size(198, 29); + this.tb_CalDTime.TabIndex = 103; + this.tb_CalDTime.Text = "13 15:55:56"; + this.toolTip1.SetToolTip(this.tb_CalDTime, "Days hours:minutes:seconds"); + // + // tb_OriginalEnergy + // + this.tb_OriginalEnergy.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_OriginalEnergy.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_OriginalEnergy.Location = new System.Drawing.Point(395, 323); + this.tb_OriginalEnergy.Name = "tb_OriginalEnergy"; + this.tb_OriginalEnergy.ReadOnly = true; + this.tb_OriginalEnergy.Size = new System.Drawing.Size(130, 40); + this.tb_OriginalEnergy.TabIndex = 86; + this.tb_OriginalEnergy.Text = "0"; + // + // label18 + // + this.label18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label18.Location = new System.Drawing.Point(251, 323); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(138, 40); + this.label18.TabIndex = 85; + this.label18.Text = "Original Energy"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label19 + // + this.label19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label19.Font = new System.Drawing.Font("Gulim", 14F); + this.label19.Location = new System.Drawing.Point(532, 323); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(61, 40); + this.label19.TabIndex = 87; + this.label19.Text = "J/cm짼"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // AttenuatorCalViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(936, 557); + this.Controls.Add(this.label13); + this.Controls.Add(this.lv_AttenuatorCalData); + this.Controls.Add(this.label12); + this.Controls.Add(this.label5); + this.Controls.Add(this.label10); + this.Controls.Add(this.label7); + this.Controls.Add(this.tb_AngleStep); + this.Controls.Add(this.tb_EndAngle); + this.Controls.Add(this.label11); + this.Controls.Add(this.tb_CalDTime); + this.Controls.Add(this.tb_LastCalTime); + this.Controls.Add(this.tb_StartAngle); + this.Controls.Add(this.label3); + this.Controls.Add(this.tb_CurrentAngle); + this.Controls.Add(this.label15); + this.Controls.Add(this.label14); + this.Controls.Add(this.label9); + this.Controls.Add(this.label8); + this.Controls.Add(this.btn_Stop); + this.Controls.Add(this.btn_Start); + this.Controls.Add(this.btn_Close); + this.Controls.Add(this.label19); + this.Controls.Add(this.label16); + this.Controls.Add(this.label18); + this.Controls.Add(this.label17); + this.Controls.Add(this.tb_OriginalEnergy); + this.Controls.Add(this.tb_Energy); + this.Controls.Add(this.label56); + this.Controls.Add(this.label62); + this.Controls.Add(this.lb_PowerMeterPositionMove); + this.Controls.Add(this.label6); + this.Controls.Add(this.label61); + this.Controls.Add(this.lb_PowerMeterInitialize); + this.Controls.Add(this.lb_DataSet); + this.Controls.Add(this.label69); + this.Controls.Add(this.lb_Complete); + this.Controls.Add(this.label70); + this.Controls.Add(this.lb_CenterPositionMove); + this.Controls.Add(this.lb_AttenuatorSet); + this.Controls.Add(this.label78); + this.Controls.Add(this.lb_PowerMeasure); + this.Controls.Add(this.lb_LaserOn); + this.Controls.Add(this.label81); + this.Controls.Add(this.lb_CoolingWait); + this.Controls.Add(this.lb_LaserOff); + this.Controls.Add(this.label2); + this.Controls.Add(this.label83); + this.Controls.Add(this.label4); + this.Controls.Add(this.label1); + this.Controls.Add(this.label63); + this.Controls.Add(this.label85); + this.Controls.Add(this.label86); + this.Controls.Add(this.label87); + this.Controls.Add(this.label88); + this.Controls.Add(this.label89); + this.Controls.Add(this.label90); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "AttenuatorCalViewer"; + this.Text = "AttenuatorCalViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.AttenuatorCalViewer_FormClosing); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label56; + private System.Windows.Forms.Label label62; + private System.Windows.Forms.Label lb_PowerMeterPositionMove; + private System.Windows.Forms.Label label61; + private System.Windows.Forms.Label lb_PowerMeterInitialize; + private System.Windows.Forms.Label label69; + private System.Windows.Forms.Label lb_Complete; + private System.Windows.Forms.Label label70; + private System.Windows.Forms.Label lb_CenterPositionMove; + private System.Windows.Forms.Label lb_AttenuatorSet; + private System.Windows.Forms.Label label78; + private System.Windows.Forms.Label lb_PowerMeasure; + private System.Windows.Forms.Label lb_LaserOn; + private System.Windows.Forms.Label label81; + private System.Windows.Forms.Label lb_LaserOff; + private System.Windows.Forms.Label label83; + private System.Windows.Forms.Label label63; + private System.Windows.Forms.Label label85; + private System.Windows.Forms.Label label86; + private System.Windows.Forms.Label label87; + private System.Windows.Forms.Label label88; + private System.Windows.Forms.Label label89; + private System.Windows.Forms.Label label90; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.TextBox tb_Energy; + private System.Windows.Forms.Button btn_Close; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label lb_CoolingWait; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label lb_DataSet; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Button btn_Stop; + private System.Windows.Forms.Button btn_Start; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox tb_CurrentAngle; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox tb_StartAngle; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tb_EndAngle; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TextBox tb_AngleStep; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.ListView lv_AttenuatorCalData; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.TextBox tb_LastCalTime; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.TextBox tb_CalDTime; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.TextBox tb_OriginalEnergy; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label19; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.cs new file mode 100644 index 0000000..592bbed --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.cs @@ -0,0 +1,370 @@ +癤퓎sing SA_LTT; +using SA_LTT.Info.AttenuatorCalInfo; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class AttenuatorCalViewer : Form + { + MainFrame _mainFrame; + Thread t_UIUpdate; + + bool updateCheck; + AttenuatorCalData[] currentAttenuatorCalData; + + double _beamHeight; + double _beamWidth; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public AttenuatorCalViewer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + + _beamHeight = _mainFrame.equipment.settingParameterManager.SettingParameter.BeamHeight; + _beamWidth = _mainFrame.equipment.settingParameterManager.SettingParameter.BeamWidth; + + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + tb_LastCalTime.Text = _mainFrame.equipment.equipmentInfo.AttenuatorCalDate.ToString("yyyy-MM-dd HH:mm:ss"); + + DateTime attenuaCalDateTime = _mainFrame.equipment.equipmentInfo.AttenuatorCalDate.AddHours(_mainFrame.equipment.settingParameterManager.SettingParameter.AttenuatorCalCycle); + TimeSpan calDTime = (attenuaCalDateTime - DateTime.Now); + + if(calDTime.TotalHours < 0) + { + tb_CalDTime.Text = $"-{-calDTime.Days} {-calDTime.Hours}:{-calDTime.Minutes}:{-calDTime.Seconds}"; + } + else + { + tb_CalDTime.Text = $"{calDTime.Days} {calDTime.Hours}:{calDTime.Minutes}:{calDTime.Seconds}"; + } + + tb_StartAngle.Text = $"{_mainFrame.equipment.settingParameterManager.SettingParameter.AttenuatorCalStartAngle}"; + tb_EndAngle.Text = $"{_mainFrame.equipment.settingParameterManager.SettingParameter.AttenuatorCalEndAngle}"; + tb_AngleStep.Text = $"{_mainFrame.equipment.settingParameterManager.SettingParameter.AttenuatorCalAngleStep}"; + + tb_OriginalEnergy.Text = $"{_mainFrame.equipment.powerMeter.Energy:F4}"; + tb_Energy.Text = $"{_mainFrame.equipment.powerMeter.EnergyPerUnitArea:F4}"; + tb_CurrentAngle.Text = $"{_mainFrame.equipment.attenuator.Degree:F3}"; + + UpdateSteps(); + UpdateAttenuatorCalData(); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void UpdateSteps() + { + if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AttenuatorCalStart) + { + lb_PowerMeterInitialize.BackColor = Color.Green; + lb_CenterPositionMove.BackColor = Color.Green; + lb_PowerMeterPositionMove.BackColor = Color.Green; + lb_AttenuatorSet.BackColor = Color.Green; + lb_CoolingWait.BackColor = Color.Green; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_DataSet.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcPowerMeterInitialize) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Green; + lb_PowerMeterPositionMove.BackColor = Color.Green; + lb_AttenuatorSet.BackColor = Color.Green; + lb_CoolingWait.BackColor = Color.Green; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_DataSet.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcMovePowerMeterPosition) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Green; + lb_AttenuatorSet.BackColor = Color.Green; + lb_CoolingWait.BackColor = Color.Green; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_DataSet.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcAttenuatorSet) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_CoolingWait.BackColor = Color.Green; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_DataSet.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcCoolingTimeWait) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_CoolingWait.BackColor = Color.Lime; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_DataSet.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcLaserOn) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_CoolingWait.BackColor = Color.Lime; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_DataSet.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcMeasurementEnd) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_CoolingWait.BackColor = Color.Lime; + lb_LaserOn.BackColor = Color.Lime; + lb_PowerMeasure.BackColor = Color.Lime; + lb_LaserOff.BackColor = Color.Green; + lb_DataSet.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcLaserOff) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_CoolingWait.BackColor = Color.Lime; + lb_LaserOn.BackColor = Color.Lime; + lb_PowerMeasure.BackColor = Color.Lime; + lb_LaserOff.BackColor = Color.Lime; + lb_DataSet.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AcMeasurementDataCheck) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_CoolingWait.BackColor = Color.Lime; + lb_LaserOn.BackColor = Color.Lime; + lb_PowerMeasure.BackColor = Color.Lime; + lb_LaserOff.BackColor = Color.Lime; + lb_DataSet.BackColor = Color.Lime; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AttenuatorCalEnd) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_LaserOn.BackColor = Color.Lime; + lb_PowerMeasure.BackColor = Color.Lime; + lb_LaserOff.BackColor = Color.Lime; + lb_Complete.BackColor = Color.Lime; + } + } + + private void UpdateAttenuatorCalData() + { + if (currentAttenuatorCalData == null) + { + currentAttenuatorCalData = _mainFrame.equipment.attenuatorCalInfo.GetAttenuatorCalData(); + + lv_AttenuatorCalData.Items.Clear(); + + foreach (AttenuatorCalData data in currentAttenuatorCalData) + { + ListViewItem lvi = new ListViewItem($"{data.AttenuatorAngle}"); + lvi.SubItems.Add($"{data.Energy}"); + lvi.SubItems.Add($"{(data.Energy / (_beamHeight * _beamWidth)) * 100:F3}"); + + lv_AttenuatorCalData.Items.Add(lvi); + } + } + else + { + AttenuatorCalData[] datas = _mainFrame.equipment.attenuatorCalInfo.GetAttenuatorCalData(); + + bool equalCheck = true; + + if(currentAttenuatorCalData.Length == datas.Length) + { + for (int i = 0; i < datas.Length; i++) + { + if(currentAttenuatorCalData[i].IsEqual(datas[i]) == false) + { + equalCheck = false; + break; + } + } + } + else + { + equalCheck = false; + } + + if(equalCheck == false || _beamHeight != _mainFrame.equipment.settingParameterManager.SettingParameter.BeamHeight || _beamWidth != _mainFrame.equipment.settingParameterManager.SettingParameter.BeamWidth) + { + _beamHeight = _mainFrame.equipment.settingParameterManager.SettingParameter.BeamHeight; + _beamWidth = _mainFrame.equipment.settingParameterManager.SettingParameter.BeamWidth; + currentAttenuatorCalData = _mainFrame.equipment.attenuatorCalInfo.GetAttenuatorCalData(); + lv_AttenuatorCalData.Items.Clear(); + + foreach (AttenuatorCalData data in currentAttenuatorCalData) + { + ListViewItem lvi = new ListViewItem($"{data.AttenuatorAngle}"); + lvi.SubItems.Add($"{data.Energy}"); + lvi.SubItems.Add($"{(data.Energy / (_beamHeight * _beamWidth)) * 100:F3}"); + + lv_AttenuatorCalData.Items.Add(lvi); + } + } + } + } + private void btn_Close_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + this.Hide(); + } + + private void btn_Start_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.ProcessStatus == SA_LTT.ProcessStatus.Idle) + { + if (_mainFrame.equipment.alarmManager.OccurredAlarms.Exists(x => x.Level == AlarmLevel.Heavy)) + { + MessageBox.Show("Alarm�씠 諛쒖깮以묒엯�땲�떎.", "�솗�씤", MessageBoxButtons.OK); + return; + } + + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd == false || _mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter == false || _mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent != _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent) + { + string message = string.Empty; + + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd == false) + { + message += "LDD媛� �떕���엳�뒿�땲�떎. \r\n"; + } + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter == false) + { + message += "Shutter媛� �떕���엳�뒿�땲�떎. \r\n"; + } + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent != _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent) + { + message += $"Set current媛� {_mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent}�씠 �븘�떃�땲�떎. \r\n \r\n"; + } + + if (MessageBox.Show(message + "吏꾪뻾 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + } + + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.equipment.ManualAttenuatorCalStart(); + } + else + { + MessageBox.Show("Sequence ��湲� 以묒씠 �븘�떃�땲�떎."); + } + } + + private void btn_Stop_Click(object sender, EventArgs e) + { + if (SA_LTT.Sequence.PmcSteps.AttenuatorCalStart <= _mainFrame.equipment.PmcStep && _mainFrame.equipment.PmcStep <= SA_LTT.Sequence.PmcSteps.AttenuatorCalEnd) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.equipment.AttenuatorCalStop(); + } + else + { + MessageBox.Show("Attenuator Cal 以묒씠 �븘�떃�땲�떎."); + } + } + + private void AttenuatorCalViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.resx new file mode 100644 index 0000000..df8339b --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.resx @@ -0,0 +1,123 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.Designer.cs new file mode 100644 index 0000000..1e60647 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.Designer.cs @@ -0,0 +1,496 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class AttenuatorViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.cbb_Resolution = new System.Windows.Forms.ComboBox(); + this.btn_MinusJog = new System.Windows.Forms.Button(); + this.btn_PlusJog = new System.Windows.Forms.Button(); + this.btn_MoveMinus1000 = new System.Windows.Forms.Button(); + this.btn_MovePlus1000 = new System.Windows.Forms.Button(); + this.btn_MoveMinus100 = new System.Windows.Forms.Button(); + this.btn_MovePlus100 = new System.Windows.Forms.Button(); + this.btn_MoveMinus10 = new System.Windows.Forms.Button(); + this.btn_MovePlus10 = new System.Windows.Forms.Button(); + this.btn_MoveMinus1 = new System.Windows.Forms.Button(); + this.btn_MovePlus1 = new System.Windows.Forms.Button(); + this.lb_RotatorPosition = new System.Windows.Forms.Label(); + this.btn_Stop = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_Speed = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.lb_PortName = new System.Windows.Forms.Label(); + this.btn_Home = new System.Windows.Forms.Button(); + this.gb_Control = new System.Windows.Forms.GroupBox(); + this.gb_Setting = new System.Windows.Forms.GroupBox(); + this.gb_Status = new System.Windows.Forms.GroupBox(); + this.lb_DecelerationValue = new System.Windows.Forms.Label(); + this.lb_MotorEnable = new System.Windows.Forms.Label(); + this.lb_AccelerationValue = new System.Windows.Forms.Label(); + this.lb_MotorResolution = new System.Windows.Forms.Label(); + this.lb_MotorSpeed = new System.Windows.Forms.Label(); + this.lb_MotorState = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.btn_AngleSet = new System.Windows.Forms.Button(); + this.tb_AngleValue = new System.Windows.Forms.TextBox(); + this.gb_Control.SuspendLayout(); + this.gb_Setting.SuspendLayout(); + this.gb_Status.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 53); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(64, 12); + this.label1.TabIndex = 2; + this.label1.Text = "Resolution"; + // + // cbb_Resolution + // + this.cbb_Resolution.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_Resolution.FormattingEnabled = true; + this.cbb_Resolution.Items.AddRange(new object[] { + "1/1 - Full Steps (0.0231 deg/Step)", + "1/2 - Half Steps (0.0115 deg/Step)", + "1/4 - Quarter Steps (0.0058 deg/Step)", + "1/8 - Eighth Steps (0.0026 deg/Step)", + "1/16 - Sixteenth Steps (0.0014 deg/Step)"}); + this.cbb_Resolution.Location = new System.Drawing.Point(75, 48); + this.cbb_Resolution.Name = "cbb_Resolution"; + this.cbb_Resolution.Size = new System.Drawing.Size(255, 20); + this.cbb_Resolution.TabIndex = 4; + this.cbb_Resolution.SelectedIndexChanged += new System.EventHandler(this.cbb_Resolution_SelectedIndexChanged); + // + // btn_MinusJog + // + this.btn_MinusJog.Location = new System.Drawing.Point(7, 67); + this.btn_MinusJog.Name = "btn_MinusJog"; + this.btn_MinusJog.Size = new System.Drawing.Size(54, 23); + this.btn_MinusJog.TabIndex = 5; + this.btn_MinusJog.Text = "<<"; + this.btn_MinusJog.UseVisualStyleBackColor = true; + this.btn_MinusJog.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btn_MinusJog_MouseDown); + this.btn_MinusJog.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btn_MinusJog_MouseUp); + // + // btn_PlusJog + // + this.btn_PlusJog.Location = new System.Drawing.Point(566, 67); + this.btn_PlusJog.Name = "btn_PlusJog"; + this.btn_PlusJog.Size = new System.Drawing.Size(54, 23); + this.btn_PlusJog.TabIndex = 5; + this.btn_PlusJog.Text = ">>"; + this.btn_PlusJog.UseVisualStyleBackColor = true; + this.btn_PlusJog.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btn_PlusJog_MouseDown); + this.btn_PlusJog.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btn_PlusJog_MouseUp); + // + // btn_MoveMinus1000 + // + this.btn_MoveMinus1000.Location = new System.Drawing.Point(67, 67); + this.btn_MoveMinus1000.Name = "btn_MoveMinus1000"; + this.btn_MoveMinus1000.Size = new System.Drawing.Size(71, 23); + this.btn_MoveMinus1000.TabIndex = 5; + this.btn_MoveMinus1000.Text = "-1000"; + this.btn_MoveMinus1000.UseVisualStyleBackColor = true; + this.btn_MoveMinus1000.Click += new System.EventHandler(this.btn_MoveMinus1000_Click); + // + // btn_MovePlus1000 + // + this.btn_MovePlus1000.Location = new System.Drawing.Point(489, 67); + this.btn_MovePlus1000.Name = "btn_MovePlus1000"; + this.btn_MovePlus1000.Size = new System.Drawing.Size(71, 23); + this.btn_MovePlus1000.TabIndex = 5; + this.btn_MovePlus1000.Text = "1000"; + this.btn_MovePlus1000.UseVisualStyleBackColor = true; + this.btn_MovePlus1000.Click += new System.EventHandler(this.btn_MovePlus1000_Click); + // + // btn_MoveMinus100 + // + this.btn_MoveMinus100.Location = new System.Drawing.Point(144, 67); + this.btn_MoveMinus100.Name = "btn_MoveMinus100"; + this.btn_MoveMinus100.Size = new System.Drawing.Size(61, 23); + this.btn_MoveMinus100.TabIndex = 5; + this.btn_MoveMinus100.Text = "-100"; + this.btn_MoveMinus100.UseVisualStyleBackColor = true; + this.btn_MoveMinus100.Click += new System.EventHandler(this.btn_MoveMinus100_Click); + // + // btn_MovePlus100 + // + this.btn_MovePlus100.Location = new System.Drawing.Point(422, 67); + this.btn_MovePlus100.Name = "btn_MovePlus100"; + this.btn_MovePlus100.Size = new System.Drawing.Size(61, 23); + this.btn_MovePlus100.TabIndex = 5; + this.btn_MovePlus100.Text = "100"; + this.btn_MovePlus100.UseVisualStyleBackColor = true; + this.btn_MovePlus100.Click += new System.EventHandler(this.btn_MovePlus100_Click); + // + // btn_MoveMinus10 + // + this.btn_MoveMinus10.Location = new System.Drawing.Point(211, 67); + this.btn_MoveMinus10.Name = "btn_MoveMinus10"; + this.btn_MoveMinus10.Size = new System.Drawing.Size(47, 23); + this.btn_MoveMinus10.TabIndex = 5; + this.btn_MoveMinus10.Text = "-10"; + this.btn_MoveMinus10.UseVisualStyleBackColor = true; + this.btn_MoveMinus10.Click += new System.EventHandler(this.btn_MoveMinus10_Click); + // + // btn_MovePlus10 + // + this.btn_MovePlus10.Location = new System.Drawing.Point(369, 67); + this.btn_MovePlus10.Name = "btn_MovePlus10"; + this.btn_MovePlus10.Size = new System.Drawing.Size(47, 23); + this.btn_MovePlus10.TabIndex = 5; + this.btn_MovePlus10.Text = "10"; + this.btn_MovePlus10.UseVisualStyleBackColor = true; + this.btn_MovePlus10.Click += new System.EventHandler(this.btn_MovePlus10_Click); + // + // btn_MoveMinus1 + // + this.btn_MoveMinus1.Location = new System.Drawing.Point(264, 67); + this.btn_MoveMinus1.Name = "btn_MoveMinus1"; + this.btn_MoveMinus1.Size = new System.Drawing.Size(36, 23); + this.btn_MoveMinus1.TabIndex = 5; + this.btn_MoveMinus1.Text = "-1"; + this.btn_MoveMinus1.UseVisualStyleBackColor = true; + this.btn_MoveMinus1.Click += new System.EventHandler(this.btn_MoveMinus1_Click); + // + // btn_MovePlus1 + // + this.btn_MovePlus1.Location = new System.Drawing.Point(327, 67); + this.btn_MovePlus1.Name = "btn_MovePlus1"; + this.btn_MovePlus1.Size = new System.Drawing.Size(36, 23); + this.btn_MovePlus1.TabIndex = 5; + this.btn_MovePlus1.Text = "1"; + this.btn_MovePlus1.UseVisualStyleBackColor = true; + this.btn_MovePlus1.Click += new System.EventHandler(this.btn_MovePlus1_Click); + // + // lb_RotatorPosition + // + this.lb_RotatorPosition.AutoSize = true; + this.lb_RotatorPosition.Location = new System.Drawing.Point(262, 107); + this.lb_RotatorPosition.Name = "lb_RotatorPosition"; + this.lb_RotatorPosition.Size = new System.Drawing.Size(314, 12); + this.lb_RotatorPosition.TabIndex = 6; + this.lb_RotatorPosition.Text = "Current waveplate rotator position is 0 steps, 0.000 deg"; + // + // btn_Stop + // + this.btn_Stop.Location = new System.Drawing.Point(549, 20); + this.btn_Stop.Name = "btn_Stop"; + this.btn_Stop.Size = new System.Drawing.Size(71, 23); + this.btn_Stop.TabIndex = 5; + this.btn_Stop.Text = "Stop"; + this.btn_Stop.UseVisualStyleBackColor = true; + this.btn_Stop.Click += new System.EventHandler(this.btn_Stop_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(349, 53); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(41, 12); + this.label3.TabIndex = 7; + this.label3.Text = "Speed"; + // + // tb_Speed + // + this.tb_Speed.Location = new System.Drawing.Point(396, 48); + this.tb_Speed.Name = "tb_Speed"; + this.tb_Speed.Size = new System.Drawing.Size(67, 21); + this.tb_Speed.TabIndex = 8; + this.tb_Speed.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_Speed_KeyDown); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(469, 53); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(71, 12); + this.label5.TabIndex = 7; + this.label5.Text = "degree/sec"; + // + // lb_PortName + // + this.lb_PortName.AutoSize = true; + this.lb_PortName.Location = new System.Drawing.Point(6, 24); + this.lb_PortName.Name = "lb_PortName"; + this.lb_PortName.Size = new System.Drawing.Size(27, 12); + this.lb_PortName.TabIndex = 2; + this.lb_PortName.Text = "Port"; + // + // btn_Home + // + this.btn_Home.Location = new System.Drawing.Point(8, 20); + this.btn_Home.Name = "btn_Home"; + this.btn_Home.Size = new System.Drawing.Size(71, 23); + this.btn_Home.TabIndex = 5; + this.btn_Home.Text = "Home"; + this.btn_Home.UseVisualStyleBackColor = true; + this.btn_Home.Click += new System.EventHandler(this.btn_Home_Click); + // + // gb_Control + // + this.gb_Control.Controls.Add(this.tb_AngleValue); + this.gb_Control.Controls.Add(this.btn_AngleSet); + this.gb_Control.Controls.Add(this.btn_Home); + this.gb_Control.Controls.Add(this.btn_MoveMinus1); + this.gb_Control.Controls.Add(this.btn_MinusJog); + this.gb_Control.Controls.Add(this.btn_MoveMinus1000); + this.gb_Control.Controls.Add(this.btn_MoveMinus100); + this.gb_Control.Controls.Add(this.btn_MoveMinus10); + this.gb_Control.Controls.Add(this.btn_MovePlus1); + this.gb_Control.Controls.Add(this.lb_RotatorPosition); + this.gb_Control.Controls.Add(this.btn_MovePlus10); + this.gb_Control.Controls.Add(this.btn_PlusJog); + this.gb_Control.Controls.Add(this.btn_MovePlus100); + this.gb_Control.Controls.Add(this.btn_Stop); + this.gb_Control.Controls.Add(this.btn_MovePlus1000); + this.gb_Control.Location = new System.Drawing.Point(12, 191); + this.gb_Control.Name = "gb_Control"; + this.gb_Control.Size = new System.Drawing.Size(626, 138); + this.gb_Control.TabIndex = 9; + this.gb_Control.TabStop = false; + this.gb_Control.Text = "Control"; + // + // gb_Setting + // + this.gb_Setting.Controls.Add(this.lb_PortName); + this.gb_Setting.Controls.Add(this.tb_Speed); + this.gb_Setting.Controls.Add(this.label1); + this.gb_Setting.Controls.Add(this.cbb_Resolution); + this.gb_Setting.Controls.Add(this.label5); + this.gb_Setting.Controls.Add(this.label3); + this.gb_Setting.Location = new System.Drawing.Point(12, 12); + this.gb_Setting.Name = "gb_Setting"; + this.gb_Setting.Size = new System.Drawing.Size(626, 84); + this.gb_Setting.TabIndex = 10; + this.gb_Setting.TabStop = false; + this.gb_Setting.Text = "Setting"; + // + // gb_Status + // + this.gb_Status.Controls.Add(this.lb_DecelerationValue); + this.gb_Status.Controls.Add(this.lb_MotorEnable); + this.gb_Status.Controls.Add(this.lb_AccelerationValue); + this.gb_Status.Controls.Add(this.lb_MotorResolution); + this.gb_Status.Controls.Add(this.lb_MotorSpeed); + this.gb_Status.Controls.Add(this.lb_MotorState); + this.gb_Status.Controls.Add(this.label11); + this.gb_Status.Controls.Add(this.label10); + this.gb_Status.Controls.Add(this.label8); + this.gb_Status.Controls.Add(this.label14); + this.gb_Status.Controls.Add(this.label7); + this.gb_Status.Location = new System.Drawing.Point(12, 102); + this.gb_Status.Name = "gb_Status"; + this.gb_Status.Size = new System.Drawing.Size(626, 83); + this.gb_Status.TabIndex = 11; + this.gb_Status.TabStop = false; + this.gb_Status.Text = "Status"; + // + // lb_DecelerationValue + // + this.lb_DecelerationValue.AutoSize = true; + this.lb_DecelerationValue.Location = new System.Drawing.Point(336, 39); + this.lb_DecelerationValue.Name = "lb_DecelerationValue"; + this.lb_DecelerationValue.Size = new System.Drawing.Size(11, 12); + this.lb_DecelerationValue.TabIndex = 1; + this.lb_DecelerationValue.Text = "0"; + // + // lb_MotorEnable + // + this.lb_MotorEnable.AutoSize = true; + this.lb_MotorEnable.Location = new System.Drawing.Point(367, 17); + this.lb_MotorEnable.Name = "lb_MotorEnable"; + this.lb_MotorEnable.Size = new System.Drawing.Size(80, 12); + this.lb_MotorEnable.TabIndex = 1; + this.lb_MotorEnable.Text = "Motor Enable"; + // + // lb_AccelerationValue + // + this.lb_AccelerationValue.AutoSize = true; + this.lb_AccelerationValue.Location = new System.Drawing.Point(336, 17); + this.lb_AccelerationValue.Name = "lb_AccelerationValue"; + this.lb_AccelerationValue.Size = new System.Drawing.Size(11, 12); + this.lb_AccelerationValue.TabIndex = 1; + this.lb_AccelerationValue.Text = "0"; + // + // lb_MotorResolution + // + this.lb_MotorResolution.AutoSize = true; + this.lb_MotorResolution.Location = new System.Drawing.Point(124, 62); + this.lb_MotorResolution.Name = "lb_MotorResolution"; + this.lb_MotorResolution.Size = new System.Drawing.Size(235, 12); + this.lb_MotorResolution.TabIndex = 1; + this.lb_MotorResolution.Text = "1/16 - Sixteenth Steps (0.0014 deg/Step)"; + // + // lb_MotorSpeed + // + this.lb_MotorSpeed.AutoSize = true; + this.lb_MotorSpeed.Location = new System.Drawing.Point(96, 39); + this.lb_MotorSpeed.Name = "lb_MotorSpeed"; + this.lb_MotorSpeed.Size = new System.Drawing.Size(81, 12); + this.lb_MotorSpeed.TabIndex = 1; + this.lb_MotorSpeed.Text = "0 degree/sec"; + // + // lb_MotorState + // + this.lb_MotorState.AutoSize = true; + this.lb_MotorState.Location = new System.Drawing.Point(92, 17); + this.lb_MotorState.Name = "lb_MotorState"; + this.lb_MotorState.Size = new System.Drawing.Size(51, 12); + this.lb_MotorState.TabIndex = 1; + this.lb_MotorState.Text = "Stopped"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(209, 39); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(121, 12); + this.label11.TabIndex = 0; + this.label11.Text = "Deceleration value : "; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(209, 17); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(121, 12); + this.label10.TabIndex = 0; + this.label10.Text = "Acceleration value : "; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(6, 39); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(84, 12); + this.label8.TabIndex = 0; + this.label8.Text = "Motor speed :"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(6, 62); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(112, 12); + this.label14.TabIndex = 0; + this.label14.Text = "Motor Resolution : "; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(6, 17); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(80, 12); + this.label7.TabIndex = 0; + this.label7.Text = "Motor state : "; + // + // btn_AngleSet + // + this.btn_AngleSet.Location = new System.Drawing.Point(327, 22); + this.btn_AngleSet.Name = "btn_AngleSet"; + this.btn_AngleSet.Size = new System.Drawing.Size(75, 23); + this.btn_AngleSet.TabIndex = 2; + this.btn_AngleSet.Text = "Angle Set"; + this.btn_AngleSet.UseVisualStyleBackColor = true; + this.btn_AngleSet.Click += new System.EventHandler(this.btn_AngleSet_Click); + // + // tb_AngleValue + // + this.tb_AngleValue.Location = new System.Drawing.Point(221, 23); + this.tb_AngleValue.Name = "tb_AngleValue"; + this.tb_AngleValue.Size = new System.Drawing.Size(100, 21); + this.tb_AngleValue.TabIndex = 7; + this.tb_AngleValue.Text = "0.000"; + // + // AttenuatorViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(650, 344); + this.Controls.Add(this.gb_Status); + this.Controls.Add(this.gb_Setting); + this.Controls.Add(this.gb_Control); + this.Name = "AttenuatorViewer"; + this.Text = "AttenuatorViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.AttenuatorViewer_FormClosing); + this.gb_Control.ResumeLayout(false); + this.gb_Control.PerformLayout(); + this.gb_Setting.ResumeLayout(false); + this.gb_Setting.PerformLayout(); + this.gb_Status.ResumeLayout(false); + this.gb_Status.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox cbb_Resolution; + private System.Windows.Forms.Button btn_MinusJog; + private System.Windows.Forms.Button btn_PlusJog; + private System.Windows.Forms.Button btn_MoveMinus1000; + private System.Windows.Forms.Button btn_MovePlus1000; + private System.Windows.Forms.Button btn_MoveMinus100; + private System.Windows.Forms.Button btn_MovePlus100; + private System.Windows.Forms.Button btn_MoveMinus10; + private System.Windows.Forms.Button btn_MovePlus10; + private System.Windows.Forms.Button btn_MoveMinus1; + private System.Windows.Forms.Button btn_MovePlus1; + private System.Windows.Forms.Label lb_RotatorPosition; + private System.Windows.Forms.Button btn_Stop; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tb_Speed; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label lb_PortName; + private System.Windows.Forms.Button btn_Home; + private System.Windows.Forms.GroupBox gb_Control; + private System.Windows.Forms.GroupBox gb_Setting; + private System.Windows.Forms.GroupBox gb_Status; + private System.Windows.Forms.Label lb_MotorState; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label lb_MotorSpeed; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label lb_DecelerationValue; + private System.Windows.Forms.Label lb_AccelerationValue; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label lb_MotorResolution; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label lb_MotorEnable; + private System.Windows.Forms.Button btn_AngleSet; + private System.Windows.Forms.TextBox tb_AngleValue; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.cs new file mode 100644 index 0000000..a6e63c1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.cs @@ -0,0 +1,211 @@ +癤퓎sing SA_LTT; +using SA_LTT.Module; +using System; +using System.Threading; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class AttenuatorViewer : Form + { + MainFrame _mainFrame; + Thread t_UIUpdate; + + bool updateCheck; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public AttenuatorViewer(MainFrame mainFrame) + { + InitializeComponent(); + cbb_Resolution.SelectedIndex = 1; + + _mainFrame = mainFrame; + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + lb_RotatorPosition.Text = $"Current waveplate rotator position is {_mainFrame.equipment.attenuator.Position} steps, {_mainFrame.equipment.attenuator.Degree} deg"; + lb_MotorState.Text = _mainFrame.equipment.attenuator.MotorState.ToString(); + lb_MotorSpeed.Text = _mainFrame.equipment.attenuator.DegreePerSecondFromSpeed.ToString() + "degree/sec"; + lb_MotorResolution.Text = _mainFrame.equipment.attenuator.SteppingResolution.ToString(); + lb_AccelerationValue.Text = _mainFrame.equipment.attenuator.AccelerationValue.ToString(); + lb_DecelerationValue.Text = _mainFrame.equipment.attenuator.DecelerationValue.ToString(); + lb_MotorEnable.BackColor = _mainFrame.equipment.attenuator.MotorEnable ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_PortName.Text = _mainFrame.equipment.attenuator.PortName; + lb_PortName.BackColor = _mainFrame.equipment.attenuator.IsOpen ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + if (_mainFrame.equipment.attenuator.IsOpen) + { + if (gb_Control.Enabled == false) + { + gb_Control.Enabled = true; + } + } + else + { + if (gb_Control.Enabled) + { + gb_Control.Enabled = false; + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void AttenuatorViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void btn_MinusJog_MouseDown(object sender, MouseEventArgs e) + { + _mainFrame.equipment.attenuator.JogNegative(); + } + + private void btn_MinusJog_MouseUp(object sender, MouseEventArgs e) + { + _mainFrame.equipment.attenuator.Stop(); + } + + private void btn_PlusJog_MouseDown(object sender, MouseEventArgs e) + { + _mainFrame.equipment.attenuator.JogPositive(); + } + + private void btn_PlusJog_MouseUp(object sender, MouseEventArgs e) + { + _mainFrame.equipment.attenuator.Stop(); + } + + private void btn_MoveMinus1000_Click(object sender, EventArgs e) + { + _mainFrame.equipment.attenuator.MoveRelative(-1000); + } + + private void btn_MoveMinus100_Click(object sender, EventArgs e) + { + _mainFrame.equipment.attenuator.MoveRelative(-100); + } + + private void btn_MoveMinus10_Click(object sender, EventArgs e) + { + _mainFrame.equipment.attenuator.MoveRelative(-10); + } + + private void btn_MoveMinus1_Click(object sender, EventArgs e) + { + _mainFrame.equipment.attenuator.MoveRelative(-1); + } + + private void btn_MovePlus1_Click(object sender, EventArgs e) + { + _mainFrame.equipment.attenuator.MoveRelative(1); + } + + private void btn_MovePlus10_Click(object sender, EventArgs e) + { + _mainFrame.equipment.attenuator.MoveRelative(10); + } + + private void btn_MovePlus100_Click(object sender, EventArgs e) + { + _mainFrame.equipment.attenuator.MoveRelative(100); + } + + private void btn_MovePlus1000_Click(object sender, EventArgs e) + { + _mainFrame.equipment.attenuator.MoveRelative(1000); + } + + private void btn_Home_Click(object sender, EventArgs e) + { + _mainFrame.equipment.attenuator.Home(); + } + + private void btn_Stop_Click(object sender, EventArgs e) + { + _mainFrame.equipment.attenuator.Stop(); + } + + private void tb_Speed_KeyDown(object sender, KeyEventArgs e) + { + if(e.KeyCode == Keys.Enter) + { + double speed; + if(double.TryParse(tb_Speed.Text, out speed)) + { + int speedValue = _mainFrame.equipment.attenuator.GetSpeedFromDegreePerSecond(speed); + _mainFrame.equipment.attenuator.SetSpeed(speedValue); + } + } + } + + private void cbb_Resolution_SelectedIndexChanged(object sender, EventArgs e) + { + if (_mainFrame != null) + { + Attenuator.MicroSteppingResolution[] data = (Attenuator.MicroSteppingResolution[])Enum.GetValues(typeof(Attenuator.MicroSteppingResolution)); + _mainFrame.equipment.attenuator.SetMicroSteppingResolution(data[cbb_Resolution.SelectedIndex]); + } + } + + private void btn_AngleSet_Click(object sender, EventArgs e) + { + float angle; + + if(float.TryParse(tb_AngleValue.Text, out angle)) + { + _mainFrame.equipment.attenuator.MoveAbsolute(angle); + } + else + { + MessageBoxPad mbp = new MessageBoxPad("�닽�옄媛� �쓣 �엯�젰�빐 二쇱꽭�슂."); + mbp.Show(); + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.Designer.cs new file mode 100644 index 0000000..d02cb98 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.Designer.cs @@ -0,0 +1,1278 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class ChamberViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.elementHost1 = new System.Windows.Forms.Integration.ElementHost(); + this.gb_ChamberInfo = new System.Windows.Forms.GroupBox(); + this.label8 = new System.Windows.Forms.Label(); + this.tb_Status = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.tb_RecipeName = new System.Windows.Forms.TextBox(); + this.tb_IsFlip = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.tb_SourceNum = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.tb_LotID = new System.Windows.Forms.TextBox(); + this.tb_CarrierID = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.lb_ChamberWaferExist = new System.Windows.Forms.Label(); + this.lb_VacuumOn = new System.Windows.Forms.Label(); + this.btn_GateOpen = new System.Windows.Forms.Button(); + this.btn_GateClose = new System.Windows.Forms.Button(); + this.btn_LiftPinUp = new System.Windows.Forms.Button(); + this.btn_LiftPinDown = new System.Windows.Forms.Button(); + this.btn_VacuumOn = new System.Windows.Forms.Button(); + this.btn_VacuumOff = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.btn_AirBlowClose = new System.Windows.Forms.Button(); + this.btn_AirBlowOpen = new System.Windows.Forms.Button(); + this.btn_ByPassValveClose = new System.Windows.Forms.Button(); + this.btn_ByPassValveOpen = new System.Windows.Forms.Button(); + this.btn_N2MFCValveClose = new System.Windows.Forms.Button(); + this.btn_N2ChamberValveClose = new System.Windows.Forms.Button(); + this.btn_N2MFCValveOpen = new System.Windows.Forms.Button(); + this.btn_N2ChamberValveOpen = new System.Windows.Forms.Button(); + this.tb_MFCSetPoint = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.btn_ManualRun = new System.Windows.Forms.Button(); + this.tb_MFCFlow = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_ChamberVacuumPressure = new System.Windows.Forms.TextBox(); + this.label22 = new System.Windows.Forms.Label(); + this.tb_MainCDAFlow = new System.Windows.Forms.TextBox(); + this.tb_N2PTPPressure = new System.Windows.Forms.TextBox(); + this.label21 = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.lb_GateOpen = new System.Windows.Forms.Label(); + this.lb_LiftPinUp = new System.Windows.Forms.Label(); + this.timer = new System.Windows.Forms.Timer(this.components); + this.tb_Description = new System.Windows.Forms.TextBox(); + this.btn_LoadPosition = new System.Windows.Forms.Button(); + this.btn_CenterPosition = new System.Windows.Forms.Button(); + this.btn_PowerMeterPosition = new System.Windows.Forms.Button(); + this.btn_BeamProfilePosition = new System.Windows.Forms.Button(); + this.btn_JogXPlus = new System.Windows.Forms.Button(); + this.btn_JogXMinus = new System.Windows.Forms.Button(); + this.btn_JogYMinus = new System.Windows.Forms.Button(); + this.btn_JogYPlus = new System.Windows.Forms.Button(); + this.lblVel3 = new System.Windows.Forms.Label(); + this.lblPos3 = new System.Windows.Forms.Label(); + this.label51 = new System.Windows.Forms.Label(); + this.label52 = new System.Windows.Forms.Label(); + this.lblVel2 = new System.Windows.Forms.Label(); + this.lblPos2 = new System.Windows.Forms.Label(); + this.label39 = new System.Windows.Forms.Label(); + this.label40 = new System.Windows.Forms.Label(); + this.lblVel1 = new System.Windows.Forms.Label(); + this.lblPos1 = new System.Windows.Forms.Label(); + this.label30 = new System.Windows.Forms.Label(); + this.label27 = new System.Windows.Forms.Label(); + this.lblInPos3 = new System.Windows.Forms.Label(); + this.lblServo3 = new System.Windows.Forms.Label(); + this.lblInPos2 = new System.Windows.Forms.Label(); + this.lblServo2 = new System.Windows.Forms.Label(); + this.lblInPos1 = new System.Windows.Forms.Label(); + this.lblServo1 = new System.Windows.Forms.Label(); + this.lblPLimit3 = new System.Windows.Forms.Label(); + this.lblNLimit3 = new System.Windows.Forms.Label(); + this.lblPLimit2 = new System.Windows.Forms.Label(); + this.lblNLimit2 = new System.Windows.Forms.Label(); + this.lblPLimit1 = new System.Windows.Forms.Label(); + this.lblNLimit1 = new System.Windows.Forms.Label(); + this.label25 = new System.Windows.Forms.Label(); + this.label24 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.nud_JogSpeed = new System.Windows.Forms.NumericUpDown(); + this.label1 = new System.Windows.Forms.Label(); + this.btn_AlignPosition = new System.Windows.Forms.Button(); + this.gb_ChamberInfo.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nud_JogSpeed)).BeginInit(); + this.SuspendLayout(); + // + // elementHost1 + // + this.elementHost1.Location = new System.Drawing.Point(12, 12); + this.elementHost1.Name = "elementHost1"; + this.elementHost1.Size = new System.Drawing.Size(400, 400); + this.elementHost1.TabIndex = 0; + this.elementHost1.Text = "elementHost1"; + this.elementHost1.Child = null; + // + // gb_ChamberInfo + // + this.gb_ChamberInfo.Controls.Add(this.label8); + this.gb_ChamberInfo.Controls.Add(this.tb_Status); + this.gb_ChamberInfo.Controls.Add(this.label6); + this.gb_ChamberInfo.Controls.Add(this.tb_RecipeName); + this.gb_ChamberInfo.Controls.Add(this.tb_IsFlip); + this.gb_ChamberInfo.Controls.Add(this.label2); + this.gb_ChamberInfo.Controls.Add(this.tb_SourceNum); + this.gb_ChamberInfo.Controls.Add(this.label10); + this.gb_ChamberInfo.Controls.Add(this.tb_LotID); + this.gb_ChamberInfo.Controls.Add(this.tb_CarrierID); + this.gb_ChamberInfo.Controls.Add(this.label11); + this.gb_ChamberInfo.Controls.Add(this.label7); + this.gb_ChamberInfo.Controls.Add(this.lb_ChamberWaferExist); + this.gb_ChamberInfo.Location = new System.Drawing.Point(418, 12); + this.gb_ChamberInfo.Name = "gb_ChamberInfo"; + this.gb_ChamberInfo.Size = new System.Drawing.Size(275, 201); + this.gb_ChamberInfo.TabIndex = 8; + this.gb_ChamberInfo.TabStop = false; + this.gb_ChamberInfo.Text = "Wafer Info"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(6, 45); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(40, 12); + this.label8.TabIndex = 15; + this.label8.Text = "Status"; + // + // tb_Status + // + this.tb_Status.Location = new System.Drawing.Point(88, 42); + this.tb_Status.Name = "tb_Status"; + this.tb_Status.ReadOnly = true; + this.tb_Status.Size = new System.Drawing.Size(175, 21); + this.tb_Status.TabIndex = 10; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(6, 72); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(54, 12); + this.label6.TabIndex = 16; + this.label6.Text = "CarrierID"; + // + // tb_RecipeName + // + this.tb_RecipeName.Location = new System.Drawing.Point(88, 175); + this.tb_RecipeName.Name = "tb_RecipeName"; + this.tb_RecipeName.ReadOnly = true; + this.tb_RecipeName.Size = new System.Drawing.Size(175, 21); + this.tb_RecipeName.TabIndex = 11; + // + // tb_IsFlip + // + this.tb_IsFlip.Location = new System.Drawing.Point(88, 149); + this.tb_IsFlip.Name = "tb_IsFlip"; + this.tb_IsFlip.ReadOnly = true; + this.tb_IsFlip.Size = new System.Drawing.Size(175, 21); + this.tb_IsFlip.TabIndex = 11; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 178); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(82, 12); + this.label2.TabIndex = 17; + this.label2.Text = "Recipe Name"; + // + // tb_SourceNum + // + this.tb_SourceNum.Location = new System.Drawing.Point(88, 123); + this.tb_SourceNum.Name = "tb_SourceNum"; + this.tb_SourceNum.ReadOnly = true; + this.tb_SourceNum.Size = new System.Drawing.Size(175, 21); + this.tb_SourceNum.TabIndex = 12; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(6, 152); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(39, 12); + this.label10.TabIndex = 17; + this.label10.Text = "Is Flip"; + // + // tb_LotID + // + this.tb_LotID.Location = new System.Drawing.Point(88, 96); + this.tb_LotID.Name = "tb_LotID"; + this.tb_LotID.ReadOnly = true; + this.tb_LotID.Size = new System.Drawing.Size(175, 21); + this.tb_LotID.TabIndex = 13; + // + // tb_CarrierID + // + this.tb_CarrierID.Location = new System.Drawing.Point(88, 69); + this.tb_CarrierID.Name = "tb_CarrierID"; + this.tb_CarrierID.ReadOnly = true; + this.tb_CarrierID.Size = new System.Drawing.Size(175, 21); + this.tb_CarrierID.TabIndex = 14; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(6, 126); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(76, 12); + this.label11.TabIndex = 18; + this.label11.Text = "Source Num"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(6, 99); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(37, 12); + this.label7.TabIndex = 19; + this.label7.Text = "Lot ID"; + // + // lb_ChamberWaferExist + // + this.lb_ChamberWaferExist.BackColor = System.Drawing.Color.Lime; + this.lb_ChamberWaferExist.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ChamberWaferExist.Location = new System.Drawing.Point(6, 17); + this.lb_ChamberWaferExist.Name = "lb_ChamberWaferExist"; + this.lb_ChamberWaferExist.Size = new System.Drawing.Size(90, 21); + this.lb_ChamberWaferExist.TabIndex = 9; + this.lb_ChamberWaferExist.Text = "Wafer Exist"; + this.lb_ChamberWaferExist.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_VacuumOn + // + this.lb_VacuumOn.BackColor = System.Drawing.Color.Lime; + this.lb_VacuumOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_VacuumOn.Location = new System.Drawing.Point(120, 101); + this.lb_VacuumOn.Name = "lb_VacuumOn"; + this.lb_VacuumOn.Size = new System.Drawing.Size(99, 21); + this.lb_VacuumOn.TabIndex = 10; + this.lb_VacuumOn.Text = "Vacuum On"; + this.lb_VacuumOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_GateOpen + // + this.btn_GateOpen.Location = new System.Drawing.Point(6, 118); + this.btn_GateOpen.Name = "btn_GateOpen"; + this.btn_GateOpen.Size = new System.Drawing.Size(131, 43); + this.btn_GateOpen.TabIndex = 11; + this.btn_GateOpen.Text = "Gate Open"; + this.btn_GateOpen.UseVisualStyleBackColor = true; + this.btn_GateOpen.Click += new System.EventHandler(this.btn_GateOpen_Click); + // + // btn_GateClose + // + this.btn_GateClose.Location = new System.Drawing.Point(150, 118); + this.btn_GateClose.Name = "btn_GateClose"; + this.btn_GateClose.Size = new System.Drawing.Size(131, 43); + this.btn_GateClose.TabIndex = 11; + this.btn_GateClose.Text = "Gate Close"; + this.btn_GateClose.UseVisualStyleBackColor = true; + this.btn_GateClose.Click += new System.EventHandler(this.btn_GateClose_Click); + // + // btn_LiftPinUp + // + this.btn_LiftPinUp.Location = new System.Drawing.Point(6, 69); + this.btn_LiftPinUp.Name = "btn_LiftPinUp"; + this.btn_LiftPinUp.Size = new System.Drawing.Size(131, 43); + this.btn_LiftPinUp.TabIndex = 11; + this.btn_LiftPinUp.Text = "Lift Pin Up"; + this.btn_LiftPinUp.UseVisualStyleBackColor = true; + this.btn_LiftPinUp.Click += new System.EventHandler(this.btn_LiftPinUp_Click); + // + // btn_LiftPinDown + // + this.btn_LiftPinDown.Location = new System.Drawing.Point(150, 70); + this.btn_LiftPinDown.Name = "btn_LiftPinDown"; + this.btn_LiftPinDown.Size = new System.Drawing.Size(131, 43); + this.btn_LiftPinDown.TabIndex = 11; + this.btn_LiftPinDown.Text = "Lift Pin Down"; + this.btn_LiftPinDown.UseVisualStyleBackColor = true; + this.btn_LiftPinDown.Click += new System.EventHandler(this.btn_LiftPinDown_Click); + // + // btn_VacuumOn + // + this.btn_VacuumOn.BackColor = System.Drawing.SystemColors.Control; + this.btn_VacuumOn.Location = new System.Drawing.Point(6, 20); + this.btn_VacuumOn.Name = "btn_VacuumOn"; + this.btn_VacuumOn.Size = new System.Drawing.Size(131, 43); + this.btn_VacuumOn.TabIndex = 11; + this.btn_VacuumOn.Text = "Vacuum On"; + this.btn_VacuumOn.UseVisualStyleBackColor = true; + this.btn_VacuumOn.Click += new System.EventHandler(this.btn_VacuumOn_Click); + // + // btn_VacuumOff + // + this.btn_VacuumOff.Location = new System.Drawing.Point(150, 21); + this.btn_VacuumOff.Name = "btn_VacuumOff"; + this.btn_VacuumOff.Size = new System.Drawing.Size(131, 43); + this.btn_VacuumOff.TabIndex = 11; + this.btn_VacuumOff.Text = "Vacuum Off"; + this.btn_VacuumOff.UseVisualStyleBackColor = true; + this.btn_VacuumOff.Click += new System.EventHandler(this.btn_VacuumOff_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.btn_AirBlowClose); + this.groupBox1.Controls.Add(this.btn_AirBlowOpen); + this.groupBox1.Controls.Add(this.btn_ByPassValveClose); + this.groupBox1.Controls.Add(this.btn_ByPassValveOpen); + this.groupBox1.Controls.Add(this.btn_N2MFCValveClose); + this.groupBox1.Controls.Add(this.btn_N2ChamberValveClose); + this.groupBox1.Controls.Add(this.btn_N2MFCValveOpen); + this.groupBox1.Controls.Add(this.btn_N2ChamberValveOpen); + this.groupBox1.Controls.Add(this.tb_MFCSetPoint); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.btn_VacuumOn); + this.groupBox1.Controls.Add(this.btn_GateClose); + this.groupBox1.Controls.Add(this.btn_VacuumOff); + this.groupBox1.Controls.Add(this.btn_GateOpen); + this.groupBox1.Controls.Add(this.btn_LiftPinDown); + this.groupBox1.Controls.Add(this.btn_LiftPinUp); + this.groupBox1.Location = new System.Drawing.Point(699, 12); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(316, 400); + this.groupBox1.TabIndex = 12; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Control"; + // + // btn_AirBlowClose + // + this.btn_AirBlowClose.Location = new System.Drawing.Point(150, 314); + this.btn_AirBlowClose.Name = "btn_AirBlowClose"; + this.btn_AirBlowClose.Size = new System.Drawing.Size(131, 43); + this.btn_AirBlowClose.TabIndex = 161; + this.btn_AirBlowClose.Text = "Air Blow Close"; + this.btn_AirBlowClose.UseVisualStyleBackColor = true; + this.btn_AirBlowClose.Click += new System.EventHandler(this.btn_AirBlowClose_Click); + // + // btn_AirBlowOpen + // + this.btn_AirBlowOpen.Location = new System.Drawing.Point(6, 314); + this.btn_AirBlowOpen.Name = "btn_AirBlowOpen"; + this.btn_AirBlowOpen.Size = new System.Drawing.Size(131, 43); + this.btn_AirBlowOpen.TabIndex = 162; + this.btn_AirBlowOpen.Text = "Air Blow Open"; + this.btn_AirBlowOpen.UseVisualStyleBackColor = true; + this.btn_AirBlowOpen.Click += new System.EventHandler(this.btn_AirBlowOpen_Click); + // + // btn_ByPassValveClose + // + this.btn_ByPassValveClose.Location = new System.Drawing.Point(150, 265); + this.btn_ByPassValveClose.Name = "btn_ByPassValveClose"; + this.btn_ByPassValveClose.Size = new System.Drawing.Size(131, 43); + this.btn_ByPassValveClose.TabIndex = 159; + this.btn_ByPassValveClose.Text = "By Pass Valve Close"; + this.btn_ByPassValveClose.UseVisualStyleBackColor = true; + this.btn_ByPassValveClose.Click += new System.EventHandler(this.btn_ByPassValveClose_Click); + // + // btn_ByPassValveOpen + // + this.btn_ByPassValveOpen.Location = new System.Drawing.Point(6, 265); + this.btn_ByPassValveOpen.Name = "btn_ByPassValveOpen"; + this.btn_ByPassValveOpen.Size = new System.Drawing.Size(131, 43); + this.btn_ByPassValveOpen.TabIndex = 160; + this.btn_ByPassValveOpen.Text = "By Pass Valve Open"; + this.btn_ByPassValveOpen.UseVisualStyleBackColor = true; + this.btn_ByPassValveOpen.Click += new System.EventHandler(this.btn_ByPassValveOpen_Click); + // + // btn_N2MFCValveClose + // + this.btn_N2MFCValveClose.Location = new System.Drawing.Point(150, 216); + this.btn_N2MFCValveClose.Name = "btn_N2MFCValveClose"; + this.btn_N2MFCValveClose.Size = new System.Drawing.Size(131, 43); + this.btn_N2MFCValveClose.TabIndex = 158; + this.btn_N2MFCValveClose.Text = "N2 MFC Valve Close"; + this.btn_N2MFCValveClose.UseVisualStyleBackColor = true; + this.btn_N2MFCValveClose.Click += new System.EventHandler(this.btn_N2MFCValveClose_Click); + // + // btn_N2ChamberValveClose + // + this.btn_N2ChamberValveClose.Location = new System.Drawing.Point(150, 167); + this.btn_N2ChamberValveClose.Name = "btn_N2ChamberValveClose"; + this.btn_N2ChamberValveClose.Size = new System.Drawing.Size(131, 43); + this.btn_N2ChamberValveClose.TabIndex = 158; + this.btn_N2ChamberValveClose.Text = "N2 Chamber Valve Close"; + this.btn_N2ChamberValveClose.UseVisualStyleBackColor = true; + this.btn_N2ChamberValveClose.Click += new System.EventHandler(this.btn_N2ChamberValveClose_Click); + // + // btn_N2MFCValveOpen + // + this.btn_N2MFCValveOpen.Location = new System.Drawing.Point(6, 216); + this.btn_N2MFCValveOpen.Name = "btn_N2MFCValveOpen"; + this.btn_N2MFCValveOpen.Size = new System.Drawing.Size(131, 43); + this.btn_N2MFCValveOpen.TabIndex = 158; + this.btn_N2MFCValveOpen.Text = "N2 MFC Valve On"; + this.btn_N2MFCValveOpen.UseVisualStyleBackColor = true; + this.btn_N2MFCValveOpen.Click += new System.EventHandler(this.btn_N2MFCValveOpen_Click); + // + // btn_N2ChamberValveOpen + // + this.btn_N2ChamberValveOpen.Location = new System.Drawing.Point(6, 167); + this.btn_N2ChamberValveOpen.Name = "btn_N2ChamberValveOpen"; + this.btn_N2ChamberValveOpen.Size = new System.Drawing.Size(131, 43); + this.btn_N2ChamberValveOpen.TabIndex = 158; + this.btn_N2ChamberValveOpen.Text = "N2 Chamber Valve Open"; + this.btn_N2ChamberValveOpen.UseVisualStyleBackColor = true; + this.btn_N2ChamberValveOpen.Click += new System.EventHandler(this.btn_N2ChamberValveOpen_Click); + // + // tb_MFCSetPoint + // + this.tb_MFCSetPoint.BackColor = System.Drawing.SystemColors.Info; + this.tb_MFCSetPoint.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MFCSetPoint.Location = new System.Drawing.Point(6, 377); + this.tb_MFCSetPoint.Name = "tb_MFCSetPoint"; + this.tb_MFCSetPoint.ReadOnly = true; + this.tb_MFCSetPoint.Size = new System.Drawing.Size(106, 21); + this.tb_MFCSetPoint.TabIndex = 155; + this.tb_MFCSetPoint.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tb_MFCSetPoint.Click += new System.EventHandler(this.tb_MFCSetPoint_Click); + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.Gainsboro; + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label4.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.Location = new System.Drawing.Point(6, 360); + this.label4.Margin = new System.Windows.Forms.Padding(0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(106, 38); + this.label4.TabIndex = 156; + this.label4.Text = "MFC Set Point"; + this.label4.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.btn_ManualRun); + this.groupBox2.Controls.Add(this.tb_MFCFlow); + this.groupBox2.Controls.Add(this.label3); + this.groupBox2.Controls.Add(this.tb_ChamberVacuumPressure); + this.groupBox2.Controls.Add(this.label22); + this.groupBox2.Controls.Add(this.tb_MainCDAFlow); + this.groupBox2.Controls.Add(this.tb_N2PTPPressure); + this.groupBox2.Controls.Add(this.label21); + this.groupBox2.Controls.Add(this.label20); + this.groupBox2.Controls.Add(this.lb_GateOpen); + this.groupBox2.Controls.Add(this.lb_LiftPinUp); + this.groupBox2.Controls.Add(this.lb_VacuumOn); + this.groupBox2.Location = new System.Drawing.Point(418, 219); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(275, 193); + this.groupBox2.TabIndex = 13; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Status"; + // + // btn_ManualRun + // + this.btn_ManualRun.Location = new System.Drawing.Point(154, 135); + this.btn_ManualRun.Name = "btn_ManualRun"; + this.btn_ManualRun.Size = new System.Drawing.Size(109, 52); + this.btn_ManualRun.TabIndex = 155; + this.btn_ManualRun.Text = "Manual Run"; + this.btn_ManualRun.UseVisualStyleBackColor = true; + this.btn_ManualRun.Click += new System.EventHandler(this.btn_ManualRun_Click); + // + // tb_MFCFlow + // + this.tb_MFCFlow.BackColor = System.Drawing.SystemColors.Info; + this.tb_MFCFlow.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MFCFlow.Location = new System.Drawing.Point(174, 34); + this.tb_MFCFlow.Name = "tb_MFCFlow"; + this.tb_MFCFlow.ReadOnly = true; + this.tb_MFCFlow.Size = new System.Drawing.Size(89, 21); + this.tb_MFCFlow.TabIndex = 153; + this.tb_MFCFlow.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.Gainsboro; + this.label3.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(174, 17); + this.label3.Margin = new System.Windows.Forms.Padding(0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(89, 38); + this.label3.TabIndex = 154; + this.label3.Text = "MFC Flow"; + this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // tb_ChamberVacuumPressure + // + this.tb_ChamberVacuumPressure.BackColor = System.Drawing.SystemColors.Info; + this.tb_ChamberVacuumPressure.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_ChamberVacuumPressure.Location = new System.Drawing.Point(6, 36); + this.tb_ChamberVacuumPressure.Name = "tb_ChamberVacuumPressure"; + this.tb_ChamberVacuumPressure.ReadOnly = true; + this.tb_ChamberVacuumPressure.Size = new System.Drawing.Size(165, 21); + this.tb_ChamberVacuumPressure.TabIndex = 151; + this.tb_ChamberVacuumPressure.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label22 + // + this.label22.BackColor = System.Drawing.Color.Gainsboro; + this.label22.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label22.Location = new System.Drawing.Point(6, 17); + this.label22.Margin = new System.Windows.Forms.Padding(0); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(165, 40); + this.label22.TabIndex = 152; + this.label22.Text = "Chamber Vacuum Pressure"; + this.label22.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // tb_MainCDAFlow + // + this.tb_MainCDAFlow.BackColor = System.Drawing.SystemColors.Info; + this.tb_MainCDAFlow.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MainCDAFlow.Location = new System.Drawing.Point(120, 77); + this.tb_MainCDAFlow.Name = "tb_MainCDAFlow"; + this.tb_MainCDAFlow.ReadOnly = true; + this.tb_MainCDAFlow.Size = new System.Drawing.Size(106, 21); + this.tb_MainCDAFlow.TabIndex = 147; + this.tb_MainCDAFlow.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // tb_N2PTPPressure + // + this.tb_N2PTPPressure.BackColor = System.Drawing.SystemColors.Info; + this.tb_N2PTPPressure.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_N2PTPPressure.Location = new System.Drawing.Point(6, 77); + this.tb_N2PTPPressure.Name = "tb_N2PTPPressure"; + this.tb_N2PTPPressure.ReadOnly = true; + this.tb_N2PTPPressure.Size = new System.Drawing.Size(106, 21); + this.tb_N2PTPPressure.TabIndex = 148; + this.tb_N2PTPPressure.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label21 + // + this.label21.BackColor = System.Drawing.Color.Gainsboro; + this.label21.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label21.Location = new System.Drawing.Point(120, 60); + this.label21.Margin = new System.Windows.Forms.Padding(0); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(106, 38); + this.label21.TabIndex = 149; + this.label21.Text = "Main CDA Flow"; + this.label21.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label20 + // + this.label20.BackColor = System.Drawing.Color.Gainsboro; + this.label20.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label20.Location = new System.Drawing.Point(6, 60); + this.label20.Margin = new System.Windows.Forms.Padding(0); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(106, 38); + this.label20.TabIndex = 150; + this.label20.Text = "N2 PTP Pressure"; + this.label20.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // lb_GateOpen + // + this.lb_GateOpen.BackColor = System.Drawing.Color.Lime; + this.lb_GateOpen.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_GateOpen.Location = new System.Drawing.Point(6, 129); + this.lb_GateOpen.Name = "lb_GateOpen"; + this.lb_GateOpen.Size = new System.Drawing.Size(99, 21); + this.lb_GateOpen.TabIndex = 10; + this.lb_GateOpen.Text = "Gate Open"; + this.lb_GateOpen.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LiftPinUp + // + this.lb_LiftPinUp.BackColor = System.Drawing.Color.Lime; + this.lb_LiftPinUp.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LiftPinUp.Location = new System.Drawing.Point(6, 101); + this.lb_LiftPinUp.Name = "lb_LiftPinUp"; + this.lb_LiftPinUp.Size = new System.Drawing.Size(99, 21); + this.lb_LiftPinUp.TabIndex = 10; + this.lb_LiftPinUp.Text = "Lift Pin Up"; + this.lb_LiftPinUp.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // timer + // + this.timer.Tick += new System.EventHandler(this.timer_Tick); + // + // tb_Description + // + this.tb_Description.Location = new System.Drawing.Point(280, 355); + this.tb_Description.Multiline = true; + this.tb_Description.Name = "tb_Description"; + this.tb_Description.ReadOnly = true; + this.tb_Description.Size = new System.Drawing.Size(109, 31); + this.tb_Description.TabIndex = 157; + this.tb_Description.Text = "Door Close : Lime\r\nDoor Open : Red"; + // + // btn_LoadPosition + // + this.btn_LoadPosition.Location = new System.Drawing.Point(807, 420); + this.btn_LoadPosition.Name = "btn_LoadPosition"; + this.btn_LoadPosition.Size = new System.Drawing.Size(101, 48); + this.btn_LoadPosition.TabIndex = 158; + this.btn_LoadPosition.Text = "Load Position"; + this.btn_LoadPosition.UseVisualStyleBackColor = true; + this.btn_LoadPosition.Click += new System.EventHandler(this.btn_LoadPosition_Click); + // + // btn_CenterPosition + // + this.btn_CenterPosition.Location = new System.Drawing.Point(914, 420); + this.btn_CenterPosition.Name = "btn_CenterPosition"; + this.btn_CenterPosition.Size = new System.Drawing.Size(101, 48); + this.btn_CenterPosition.TabIndex = 158; + this.btn_CenterPosition.Text = "Center Position"; + this.btn_CenterPosition.UseVisualStyleBackColor = true; + this.btn_CenterPosition.Click += new System.EventHandler(this.btn_CenterPosition_Click); + // + // btn_PowerMeterPosition + // + this.btn_PowerMeterPosition.Location = new System.Drawing.Point(807, 482); + this.btn_PowerMeterPosition.Name = "btn_PowerMeterPosition"; + this.btn_PowerMeterPosition.Size = new System.Drawing.Size(101, 48); + this.btn_PowerMeterPosition.TabIndex = 158; + this.btn_PowerMeterPosition.Text = "Power Meter Position"; + this.btn_PowerMeterPosition.UseVisualStyleBackColor = true; + this.btn_PowerMeterPosition.Click += new System.EventHandler(this.btn_PowerMeterPosition_Click); + // + // btn_BeamProfilePosition + // + this.btn_BeamProfilePosition.Location = new System.Drawing.Point(914, 482); + this.btn_BeamProfilePosition.Name = "btn_BeamProfilePosition"; + this.btn_BeamProfilePosition.Size = new System.Drawing.Size(101, 48); + this.btn_BeamProfilePosition.TabIndex = 158; + this.btn_BeamProfilePosition.Text = "Beam Profile Position"; + this.btn_BeamProfilePosition.UseVisualStyleBackColor = true; + this.btn_BeamProfilePosition.Click += new System.EventHandler(this.btn_BeamProfilePosition_Click); + // + // btn_JogXPlus + // + this.btn_JogXPlus.Location = new System.Drawing.Point(617, 420); + this.btn_JogXPlus.Name = "btn_JogXPlus"; + this.btn_JogXPlus.Size = new System.Drawing.Size(87, 65); + this.btn_JogXPlus.TabIndex = 158; + this.btn_JogXPlus.Text = "�넁\r\nX"; + this.btn_JogXPlus.UseVisualStyleBackColor = true; + this.btn_JogXPlus.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btn_JogXPlus_MouseDown); + this.btn_JogXPlus.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btn_JogXPlus_MouseUp); + // + // btn_JogXMinus + // + this.btn_JogXMinus.Location = new System.Drawing.Point(617, 533); + this.btn_JogXMinus.Name = "btn_JogXMinus"; + this.btn_JogXMinus.Size = new System.Drawing.Size(87, 65); + this.btn_JogXMinus.TabIndex = 158; + this.btn_JogXMinus.Text = "X\r\n�넃"; + this.btn_JogXMinus.UseVisualStyleBackColor = true; + this.btn_JogXMinus.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btn_JogXMinus_MouseDown); + this.btn_JogXMinus.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btn_JogXMinus_MouseUp); + // + // btn_JogYMinus + // + this.btn_JogYMinus.Location = new System.Drawing.Point(713, 476); + this.btn_JogYMinus.Name = "btn_JogYMinus"; + this.btn_JogYMinus.Size = new System.Drawing.Size(87, 65); + this.btn_JogYMinus.TabIndex = 158; + this.btn_JogYMinus.Text = "Y�넂"; + this.btn_JogYMinus.UseVisualStyleBackColor = true; + this.btn_JogYMinus.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btn_JogYMinus_MouseDown); + this.btn_JogYMinus.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btn_JogYMinus_MouseUp); + // + // btn_JogYPlus + // + this.btn_JogYPlus.Location = new System.Drawing.Point(521, 476); + this.btn_JogYPlus.Name = "btn_JogYPlus"; + this.btn_JogYPlus.Size = new System.Drawing.Size(87, 65); + this.btn_JogYPlus.TabIndex = 158; + this.btn_JogYPlus.Text = "�넀Y"; + this.btn_JogYPlus.UseVisualStyleBackColor = true; + this.btn_JogYPlus.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btn_JogYPlus_MouseDown); + this.btn_JogYPlus.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btn_JogYPlus_MouseUp); + // + // lblVel3 + // + this.lblVel3.BackColor = System.Drawing.Color.White; + this.lblVel3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblVel3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblVel3.ForeColor = System.Drawing.Color.Black; + this.lblVel3.Location = new System.Drawing.Point(385, 476); + this.lblVel3.Margin = new System.Windows.Forms.Padding(0); + this.lblVel3.Name = "lblVel3"; + this.lblVel3.Size = new System.Drawing.Size(128, 24); + this.lblVel3.TabIndex = 191; + this.lblVel3.Text = "0.0000"; + this.lblVel3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPos3 + // + this.lblPos3.BackColor = System.Drawing.Color.White; + this.lblPos3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPos3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblPos3.ForeColor = System.Drawing.Color.Black; + this.lblPos3.Location = new System.Drawing.Point(385, 450); + this.lblPos3.Margin = new System.Windows.Forms.Padding(0); + this.lblPos3.Name = "lblPos3"; + this.lblPos3.Size = new System.Drawing.Size(128, 24); + this.lblPos3.TabIndex = 190; + this.lblPos3.Text = "0.0000"; + this.lblPos3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label51 + // + this.label51.BackColor = System.Drawing.Color.White; + this.label51.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label51.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label51.ForeColor = System.Drawing.Color.Black; + this.label51.Location = new System.Drawing.Point(350, 476); + this.label51.Margin = new System.Windows.Forms.Padding(0); + this.label51.Name = "label51"; + this.label51.Size = new System.Drawing.Size(35, 24); + this.label51.TabIndex = 189; + this.label51.Text = "V"; + this.label51.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label52 + // + this.label52.BackColor = System.Drawing.Color.White; + this.label52.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label52.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label52.ForeColor = System.Drawing.Color.Black; + this.label52.Location = new System.Drawing.Point(350, 450); + this.label52.Margin = new System.Windows.Forms.Padding(0); + this.label52.Name = "label52"; + this.label52.Size = new System.Drawing.Size(35, 24); + this.label52.TabIndex = 188; + this.label52.Text = "P"; + this.label52.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblVel2 + // + this.lblVel2.BackColor = System.Drawing.Color.White; + this.lblVel2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblVel2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblVel2.ForeColor = System.Drawing.Color.Black; + this.lblVel2.Location = new System.Drawing.Point(216, 476); + this.lblVel2.Margin = new System.Windows.Forms.Padding(0); + this.lblVel2.Name = "lblVel2"; + this.lblVel2.Size = new System.Drawing.Size(128, 24); + this.lblVel2.TabIndex = 187; + this.lblVel2.Text = "0.0000"; + this.lblVel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPos2 + // + this.lblPos2.BackColor = System.Drawing.Color.White; + this.lblPos2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPos2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblPos2.ForeColor = System.Drawing.Color.Black; + this.lblPos2.Location = new System.Drawing.Point(216, 450); + this.lblPos2.Margin = new System.Windows.Forms.Padding(0); + this.lblPos2.Name = "lblPos2"; + this.lblPos2.Size = new System.Drawing.Size(128, 24); + this.lblPos2.TabIndex = 186; + this.lblPos2.Text = "0.0000"; + this.lblPos2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label39 + // + this.label39.BackColor = System.Drawing.Color.White; + this.label39.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label39.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label39.ForeColor = System.Drawing.Color.Black; + this.label39.Location = new System.Drawing.Point(181, 476); + this.label39.Margin = new System.Windows.Forms.Padding(0); + this.label39.Name = "label39"; + this.label39.Size = new System.Drawing.Size(35, 24); + this.label39.TabIndex = 185; + this.label39.Text = "V"; + this.label39.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label40 + // + this.label40.BackColor = System.Drawing.Color.White; + this.label40.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label40.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label40.ForeColor = System.Drawing.Color.Black; + this.label40.Location = new System.Drawing.Point(181, 450); + this.label40.Margin = new System.Windows.Forms.Padding(0); + this.label40.Name = "label40"; + this.label40.Size = new System.Drawing.Size(35, 24); + this.label40.TabIndex = 184; + this.label40.Text = "P"; + this.label40.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblVel1 + // + this.lblVel1.BackColor = System.Drawing.Color.White; + this.lblVel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblVel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblVel1.ForeColor = System.Drawing.Color.Black; + this.lblVel1.Location = new System.Drawing.Point(47, 476); + this.lblVel1.Margin = new System.Windows.Forms.Padding(0); + this.lblVel1.Name = "lblVel1"; + this.lblVel1.Size = new System.Drawing.Size(128, 24); + this.lblVel1.TabIndex = 183; + this.lblVel1.Text = "0.0000"; + this.lblVel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPos1 + // + this.lblPos1.BackColor = System.Drawing.Color.White; + this.lblPos1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPos1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblPos1.ForeColor = System.Drawing.Color.Black; + this.lblPos1.Location = new System.Drawing.Point(47, 450); + this.lblPos1.Margin = new System.Windows.Forms.Padding(0); + this.lblPos1.Name = "lblPos1"; + this.lblPos1.Size = new System.Drawing.Size(128, 24); + this.lblPos1.TabIndex = 182; + this.lblPos1.Text = "0.0000"; + this.lblPos1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label30 + // + this.label30.BackColor = System.Drawing.Color.White; + this.label30.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label30.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label30.ForeColor = System.Drawing.Color.Black; + this.label30.Location = new System.Drawing.Point(12, 476); + this.label30.Margin = new System.Windows.Forms.Padding(0); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(35, 24); + this.label30.TabIndex = 181; + this.label30.Text = "V"; + this.label30.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label27 + // + this.label27.BackColor = System.Drawing.Color.White; + this.label27.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label27.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label27.ForeColor = System.Drawing.Color.Black; + this.label27.Location = new System.Drawing.Point(12, 450); + this.label27.Margin = new System.Windows.Forms.Padding(0); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(35, 24); + this.label27.TabIndex = 180; + this.label27.Text = "P"; + this.label27.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblInPos3 + // + this.lblInPos3.BackColor = System.Drawing.Color.White; + this.lblInPos3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblInPos3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblInPos3.ForeColor = System.Drawing.Color.Black; + this.lblInPos3.Location = new System.Drawing.Point(350, 575); + this.lblInPos3.Margin = new System.Windows.Forms.Padding(0); + this.lblInPos3.Name = "lblInPos3"; + this.lblInPos3.Size = new System.Drawing.Size(163, 24); + this.lblInPos3.TabIndex = 197; + this.lblInPos3.Text = "IN POS"; + this.lblInPos3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblServo3 + // + this.lblServo3.BackColor = System.Drawing.Color.White; + this.lblServo3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblServo3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblServo3.ForeColor = System.Drawing.Color.Black; + this.lblServo3.Location = new System.Drawing.Point(350, 501); + this.lblServo3.Margin = new System.Windows.Forms.Padding(0); + this.lblServo3.Name = "lblServo3"; + this.lblServo3.Size = new System.Drawing.Size(163, 24); + this.lblServo3.TabIndex = 196; + this.lblServo3.Text = "SERVO"; + this.lblServo3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblInPos2 + // + this.lblInPos2.BackColor = System.Drawing.Color.White; + this.lblInPos2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblInPos2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblInPos2.ForeColor = System.Drawing.Color.Black; + this.lblInPos2.Location = new System.Drawing.Point(181, 575); + this.lblInPos2.Margin = new System.Windows.Forms.Padding(0); + this.lblInPos2.Name = "lblInPos2"; + this.lblInPos2.Size = new System.Drawing.Size(163, 24); + this.lblInPos2.TabIndex = 195; + this.lblInPos2.Text = "IN POS"; + this.lblInPos2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblServo2 + // + this.lblServo2.BackColor = System.Drawing.Color.White; + this.lblServo2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblServo2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblServo2.ForeColor = System.Drawing.Color.Black; + this.lblServo2.Location = new System.Drawing.Point(181, 501); + this.lblServo2.Margin = new System.Windows.Forms.Padding(0); + this.lblServo2.Name = "lblServo2"; + this.lblServo2.Size = new System.Drawing.Size(163, 24); + this.lblServo2.TabIndex = 194; + this.lblServo2.Text = "SERVO"; + this.lblServo2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblInPos1 + // + this.lblInPos1.BackColor = System.Drawing.Color.White; + this.lblInPos1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblInPos1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblInPos1.ForeColor = System.Drawing.Color.Black; + this.lblInPos1.Location = new System.Drawing.Point(12, 575); + this.lblInPos1.Margin = new System.Windows.Forms.Padding(0); + this.lblInPos1.Name = "lblInPos1"; + this.lblInPos1.Size = new System.Drawing.Size(163, 24); + this.lblInPos1.TabIndex = 193; + this.lblInPos1.Text = "IN POS"; + this.lblInPos1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblServo1 + // + this.lblServo1.BackColor = System.Drawing.Color.White; + this.lblServo1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblServo1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblServo1.ForeColor = System.Drawing.Color.Black; + this.lblServo1.Location = new System.Drawing.Point(12, 501); + this.lblServo1.Margin = new System.Windows.Forms.Padding(0); + this.lblServo1.Name = "lblServo1"; + this.lblServo1.Size = new System.Drawing.Size(163, 24); + this.lblServo1.TabIndex = 192; + this.lblServo1.Text = "SERVO"; + this.lblServo1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPLimit3 + // + this.lblPLimit3.BackColor = System.Drawing.Color.White; + this.lblPLimit3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPLimit3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold); + this.lblPLimit3.ForeColor = System.Drawing.Color.Black; + this.lblPLimit3.Location = new System.Drawing.Point(350, 525); + this.lblPLimit3.Margin = new System.Windows.Forms.Padding(0); + this.lblPLimit3.Name = "lblPLimit3"; + this.lblPLimit3.Size = new System.Drawing.Size(163, 24); + this.lblPLimit3.TabIndex = 202; + this.lblPLimit3.Text = "P LIMIT"; + this.lblPLimit3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblNLimit3 + // + this.lblNLimit3.BackColor = System.Drawing.Color.White; + this.lblNLimit3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblNLimit3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblNLimit3.ForeColor = System.Drawing.Color.Black; + this.lblNLimit3.Location = new System.Drawing.Point(350, 551); + this.lblNLimit3.Margin = new System.Windows.Forms.Padding(0); + this.lblNLimit3.Name = "lblNLimit3"; + this.lblNLimit3.Size = new System.Drawing.Size(163, 24); + this.lblNLimit3.TabIndex = 203; + this.lblNLimit3.Text = "N LIMIT"; + this.lblNLimit3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPLimit2 + // + this.lblPLimit2.BackColor = System.Drawing.Color.White; + this.lblPLimit2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPLimit2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold); + this.lblPLimit2.ForeColor = System.Drawing.Color.Black; + this.lblPLimit2.Location = new System.Drawing.Point(181, 525); + this.lblPLimit2.Margin = new System.Windows.Forms.Padding(0); + this.lblPLimit2.Name = "lblPLimit2"; + this.lblPLimit2.Size = new System.Drawing.Size(163, 24); + this.lblPLimit2.TabIndex = 200; + this.lblPLimit2.Text = "P LIMIT"; + this.lblPLimit2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblNLimit2 + // + this.lblNLimit2.BackColor = System.Drawing.Color.White; + this.lblNLimit2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblNLimit2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblNLimit2.ForeColor = System.Drawing.Color.Black; + this.lblNLimit2.Location = new System.Drawing.Point(181, 551); + this.lblNLimit2.Margin = new System.Windows.Forms.Padding(0); + this.lblNLimit2.Name = "lblNLimit2"; + this.lblNLimit2.Size = new System.Drawing.Size(163, 24); + this.lblNLimit2.TabIndex = 201; + this.lblNLimit2.Text = "N LIMIT"; + this.lblNLimit2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblPLimit1 + // + this.lblPLimit1.BackColor = System.Drawing.Color.White; + this.lblPLimit1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblPLimit1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold); + this.lblPLimit1.ForeColor = System.Drawing.Color.Black; + this.lblPLimit1.Location = new System.Drawing.Point(12, 525); + this.lblPLimit1.Margin = new System.Windows.Forms.Padding(0); + this.lblPLimit1.Name = "lblPLimit1"; + this.lblPLimit1.Size = new System.Drawing.Size(163, 24); + this.lblPLimit1.TabIndex = 198; + this.lblPLimit1.Text = "P LIMIT"; + this.lblPLimit1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblNLimit1 + // + this.lblNLimit1.BackColor = System.Drawing.Color.White; + this.lblNLimit1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lblNLimit1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lblNLimit1.ForeColor = System.Drawing.Color.Black; + this.lblNLimit1.Location = new System.Drawing.Point(12, 551); + this.lblNLimit1.Margin = new System.Windows.Forms.Padding(0); + this.lblNLimit1.Name = "lblNLimit1"; + this.lblNLimit1.Size = new System.Drawing.Size(163, 24); + this.lblNLimit1.TabIndex = 199; + this.lblNLimit1.Text = "N LIMIT"; + this.lblNLimit1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label25 + // + this.label25.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label25.BackColor = System.Drawing.Color.YellowGreen; + this.label25.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label25.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label25.Location = new System.Drawing.Point(350, 420); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(163, 24); + this.label25.TabIndex = 206; + this.label25.Text = "T AXIS"; + this.label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label24 + // + this.label24.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label24.BackColor = System.Drawing.Color.YellowGreen; + this.label24.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label24.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label24.Location = new System.Drawing.Point(181, 420); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(163, 24); + this.label24.TabIndex = 205; + this.label24.Text = "X AXIS"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label13 + // + this.label13.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label13.BackColor = System.Drawing.Color.YellowGreen; + this.label13.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label13.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label13.Location = new System.Drawing.Point(12, 420); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(163, 24); + this.label13.TabIndex = 204; + this.label13.Text = "Y AXIS"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // nud_JogSpeed + // + this.nud_JogSpeed.Location = new System.Drawing.Point(617, 509); + this.nud_JogSpeed.Minimum = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.nud_JogSpeed.Name = "nud_JogSpeed"; + this.nud_JogSpeed.Size = new System.Drawing.Size(87, 21); + this.nud_JogSpeed.TabIndex = 207; + this.nud_JogSpeed.Value = new decimal(new int[] { + 10, + 0, + 0, + 0}); + // + // label1 + // + this.label1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label1.BackColor = System.Drawing.Color.Gainsboro; + this.label1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(617, 489); + this.label1.Margin = new System.Windows.Forms.Padding(0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(87, 38); + this.label1.TabIndex = 155; + this.label1.Text = "Jog Speed"; + this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // btn_AlignPosition + // + this.btn_AlignPosition.Location = new System.Drawing.Point(807, 541); + this.btn_AlignPosition.Name = "btn_AlignPosition"; + this.btn_AlignPosition.Size = new System.Drawing.Size(101, 48); + this.btn_AlignPosition.TabIndex = 158; + this.btn_AlignPosition.Text = "Align Position"; + this.btn_AlignPosition.UseVisualStyleBackColor = true; + this.btn_AlignPosition.Click += new System.EventHandler(this.btn_AlignPosition_Click); + // + // ChamberViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1027, 604); + this.Controls.Add(this.nud_JogSpeed); + this.Controls.Add(this.label25); + this.Controls.Add(this.label24); + this.Controls.Add(this.label13); + this.Controls.Add(this.lblPLimit3); + this.Controls.Add(this.lblNLimit3); + this.Controls.Add(this.lblPLimit2); + this.Controls.Add(this.lblNLimit2); + this.Controls.Add(this.lblPLimit1); + this.Controls.Add(this.lblNLimit1); + this.Controls.Add(this.lblServo3); + this.Controls.Add(this.lblVel3); + this.Controls.Add(this.lblInPos3); + this.Controls.Add(this.lblPos3); + this.Controls.Add(this.lblServo2); + this.Controls.Add(this.label51); + this.Controls.Add(this.lblServo1); + this.Controls.Add(this.label52); + this.Controls.Add(this.lblVel2); + this.Controls.Add(this.lblPos2); + this.Controls.Add(this.lblInPos2); + this.Controls.Add(this.label39); + this.Controls.Add(this.lblInPos1); + this.Controls.Add(this.label40); + this.Controls.Add(this.lblVel1); + this.Controls.Add(this.lblPos1); + this.Controls.Add(this.label30); + this.Controls.Add(this.label27); + this.Controls.Add(this.btn_BeamProfilePosition); + this.Controls.Add(this.btn_AlignPosition); + this.Controls.Add(this.btn_PowerMeterPosition); + this.Controls.Add(this.btn_CenterPosition); + this.Controls.Add(this.btn_JogXMinus); + this.Controls.Add(this.btn_JogYPlus); + this.Controls.Add(this.btn_JogYMinus); + this.Controls.Add(this.btn_JogXPlus); + this.Controls.Add(this.btn_LoadPosition); + this.Controls.Add(this.tb_Description); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.gb_ChamberInfo); + this.Controls.Add(this.elementHost1); + this.Controls.Add(this.label1); + this.Name = "ChamberViewer"; + this.Text = "ChamberViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ChamberViewer_FormClosing); + this.gb_ChamberInfo.ResumeLayout(false); + this.gb_ChamberInfo.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nud_JogSpeed)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Integration.ElementHost elementHost1; + private System.Windows.Forms.GroupBox gb_ChamberInfo; + private System.Windows.Forms.Label lb_ChamberWaferExist; + private System.Windows.Forms.Label lb_VacuumOn; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TextBox tb_Status; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox tb_IsFlip; + private System.Windows.Forms.TextBox tb_SourceNum; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox tb_LotID; + private System.Windows.Forms.TextBox tb_CarrierID; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Button btn_GateOpen; + private System.Windows.Forms.Button btn_GateClose; + private System.Windows.Forms.Button btn_LiftPinUp; + private System.Windows.Forms.Button btn_LiftPinDown; + private System.Windows.Forms.Button btn_VacuumOn; + private System.Windows.Forms.Button btn_VacuumOff; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TextBox tb_MainCDAFlow; + private System.Windows.Forms.TextBox tb_N2PTPPressure; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.TextBox tb_ChamberVacuumPressure; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Label lb_GateOpen; + private System.Windows.Forms.Label lb_LiftPinUp; + private System.Windows.Forms.Timer timer; + private System.Windows.Forms.TextBox tb_MFCFlow; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tb_MFCSetPoint; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_Description; + private System.Windows.Forms.Button btn_N2ChamberValveOpen; + private System.Windows.Forms.Button btn_N2ChamberValveClose; + private System.Windows.Forms.Button btn_N2MFCValveClose; + private System.Windows.Forms.Button btn_N2MFCValveOpen; + private System.Windows.Forms.Button btn_AirBlowClose; + private System.Windows.Forms.Button btn_AirBlowOpen; + private System.Windows.Forms.Button btn_ByPassValveClose; + private System.Windows.Forms.Button btn_ByPassValveOpen; + private System.Windows.Forms.Button btn_LoadPosition; + private System.Windows.Forms.Button btn_CenterPosition; + private System.Windows.Forms.Button btn_PowerMeterPosition; + private System.Windows.Forms.Button btn_BeamProfilePosition; + private System.Windows.Forms.Button btn_JogXPlus; + private System.Windows.Forms.Button btn_JogXMinus; + private System.Windows.Forms.Button btn_JogYMinus; + private System.Windows.Forms.Button btn_JogYPlus; + private System.Windows.Forms.Label lblVel3; + private System.Windows.Forms.Label lblPos3; + private System.Windows.Forms.Label label51; + private System.Windows.Forms.Label label52; + private System.Windows.Forms.Label lblVel2; + private System.Windows.Forms.Label lblPos2; + private System.Windows.Forms.Label label39; + private System.Windows.Forms.Label label40; + private System.Windows.Forms.Label lblVel1; + private System.Windows.Forms.Label lblPos1; + private System.Windows.Forms.Label label30; + private System.Windows.Forms.Label label27; + private System.Windows.Forms.Label lblInPos3; + private System.Windows.Forms.Label lblServo3; + private System.Windows.Forms.Label lblInPos2; + private System.Windows.Forms.Label lblServo2; + private System.Windows.Forms.Label lblInPos1; + private System.Windows.Forms.Label lblServo1; + private System.Windows.Forms.Label lblPLimit3; + private System.Windows.Forms.Label lblNLimit3; + private System.Windows.Forms.Label lblPLimit2; + private System.Windows.Forms.Label lblNLimit2; + private System.Windows.Forms.Label lblPLimit1; + private System.Windows.Forms.Label lblNLimit1; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.NumericUpDown nud_JogSpeed; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox tb_RecipeName; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button btn_ManualRun; + private System.Windows.Forms.Button btn_AlignPosition; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.cs new file mode 100644 index 0000000..04381c8 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.cs @@ -0,0 +1,542 @@ +癤퓎sing padDLL; +using SA_LTT; +using SA_LTT.Info.WaferInfo; +using SA_LTT.Module; +using SA_LTT_UI.Screen; +using System; +using System.Drawing; +using System.Windows.Forms; +using static SA_LTT.Info.WaferInfo.WaferInfoManager; + +namespace SA_LTT_UI.Viewer +{ + public partial class ChamberViewer : Form + { + MainFrame _mainFrame; + ChamberStatus _chamberStatus = new ChamberStatus(); + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public ChamberViewer(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + + elementHost1.Child = _chamberStatus; + + timer.Start(); + } + + private void timer_Tick(object sender, System.EventArgs e) + { + _chamberStatus.SetChamberGate(_mainFrame.equipment.chamber.IsGateOpen); + _chamberStatus.SetChamberWaferExist(_mainFrame.equipment.chamber.WaferInfo); + _chamberStatus.SetChamberWaferNum(_mainFrame.equipment.chamber.WaferInfo.SourceNumber); + + lb_ChamberWaferExist.BackColor = _mainFrame.equipment.chamber.WaferInfo.IsStatus == WaferInfo.WaferStatus.Exist ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + tb_Status.Text = _mainFrame.equipment.chamber.WaferInfo.IsStatus.ToString(); + tb_CarrierID.Text = _mainFrame.equipment.chamber.WaferInfo.CarrierID; + tb_LotID.Text = _mainFrame.equipment.chamber.WaferInfo.LotID; + tb_SourceNum.Text = _mainFrame.equipment.chamber.WaferInfo.SourceNumber.ToString(); + tb_IsFlip.Text = _mainFrame.equipment.chamber.WaferInfo.IsFlip ? "Flip" : "NonFlip"; + tb_RecipeName.Text = _mainFrame.equipment.chamber.WaferInfo.RecipeName; + + tb_ChamberVacuumPressure.Text = _mainFrame.equipment.chamber.ChamberVacuumPressure.ToString(); + tb_N2PTPPressure.Text = _mainFrame.equipment.chamber.N2PTPressure.ToString(); + tb_MainCDAFlow.Text = _mainFrame.equipment.chamber.MainCDAFlow.ToString(); + + tb_MFCFlow.Text = _mainFrame.equipment.chamber.MFCFlow.ToString(); + + lb_LiftPinUp.BackColor = _mainFrame.equipment.chamber.IsLiftPinUp ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_VacuumOn.BackColor = _mainFrame.equipment.chamber.IsChuckVacuumSensorOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_GateOpen.BackColor = _mainFrame.equipment.chamber.IsGateOpen ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + btn_VacuumOn.BackColor = _mainFrame.equipment.chamber.IsChuckVacuumOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + btn_VacuumOff.BackColor = !_mainFrame.equipment.chamber.IsChuckVacuumOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + btn_LiftPinUp.BackColor = _mainFrame.equipment.chamber.IsLiftPinUp ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + btn_LiftPinDown.BackColor = !_mainFrame.equipment.chamber.IsLiftPinUp ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + btn_GateOpen.BackColor = _mainFrame.equipment.chamber.IsGateOpen ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + btn_GateClose.BackColor = !_mainFrame.equipment.chamber.IsGateOpen ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + btn_N2ChamberValveOpen.BackColor = _mainFrame.equipment.chamber.IsN2ChamberValveOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + btn_N2ChamberValveClose.BackColor = !_mainFrame.equipment.chamber.IsN2ChamberValveOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + btn_N2MFCValveOpen.BackColor = _mainFrame.equipment.chamber.IsN2MFCValveOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + btn_N2MFCValveClose.BackColor = !_mainFrame.equipment.chamber.IsN2MFCValveOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + btn_ByPassValveOpen.BackColor = _mainFrame.equipment.chamber.IsByPassValveOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + btn_ByPassValveClose.BackColor = !_mainFrame.equipment.chamber.IsByPassValveOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + btn_AirBlowOpen.BackColor = _mainFrame.equipment.chamber.IsAirBlowOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + btn_AirBlowClose.BackColor = !_mainFrame.equipment.chamber.IsAirBlowOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + tb_MFCSetPoint.Text = _mainFrame.equipment.chamber.MFCSetPoint.ToString(); + + MotorInfo(); + } + + private double[] m_dOldPos = new double[(int)PmacAxis.enMax]; + private double[] m_dOldSpeed = new double[(int)PmacAxis.enMax]; + private bool[,] m_bOldStatus = new bool[(int)PmacAxis.enMax, 6]; + + private void MotorInfo() + { + try + { + Label[] lblPos = { lblPos1, lblPos2, lblPos3 }; + Label[] lblVel = { lblVel1, lblVel2, lblVel3 }; + Label[] lblServo = { lblServo1, lblServo2, lblServo3 }; + Label[] lblPLimit = { lblPLimit1, lblPLimit2, lblPLimit3 }; + Label[] lblNLimit = { lblNLimit1, lblNLimit2, lblNLimit3 }; + Label[] lblInPos = { lblInPos1, lblInPos2, lblInPos3 }; + + int nCnt = 0; + + for (int i = 0; i < (int)PmacAxis.enMax; i++) + { + nCnt = 0; + //Pos + if (m_dOldPos[i] != _mainFrame.equipment.powerPmac.GetAxisActualPos((PmacAxis)i)) + { + m_dOldPos[i] = _mainFrame.equipment.powerPmac.GetAxisActualPos((PmacAxis)i); + + lblPos[i].Text = m_dOldPos[i].ToString(); + } + //Vel + if (m_dOldSpeed[i] != _mainFrame.equipment.powerPmac.GetAxisActualSpeed((PmacAxis)i)) + { + m_dOldSpeed[i] = _mainFrame.equipment.powerPmac.GetAxisActualSpeed((PmacAxis)i); + + lblVel[i].Text = m_dOldSpeed[i].ToString(); + } + //Servo + if (m_bOldStatus[i, nCnt] != _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.ServoOn)) + { + m_bOldStatus[i, nCnt] = _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.ServoOn); + + if (m_bOldStatus[i, nCnt]) + lblServo[i].BackColor = Color.Green; + else + lblServo[i].BackColor = Color.Transparent; + } + nCnt++; + //PLIMIT + if (m_bOldStatus[i, nCnt] != _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.PLimit_HW)) + { + m_bOldStatus[i, nCnt] = _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.PLimit_HW); + + if (m_bOldStatus[i, nCnt]) + lblPLimit[i].BackColor = Color.Red; + else + lblPLimit[i].BackColor = Color.Transparent; + } + nCnt++; + //NLIMIT + if (m_bOldStatus[i, nCnt] != _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.NLimit_HW)) + { + m_bOldStatus[i, nCnt] = _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.NLimit_HW); + + if (m_bOldStatus[i, nCnt]) + lblNLimit[i].BackColor = Color.Red; + else + lblNLimit[i].BackColor = Color.Transparent; + } + nCnt++; + nCnt++; + //INPOS + if (m_bOldStatus[i, nCnt] != _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.InPos)) + { + m_bOldStatus[i, nCnt] = _mainFrame.equipment.powerPmac.GetAxisStatus((PmacAxis)i, AxisStatus.InPos); + + if (m_bOldStatus[i, nCnt]) + lblInPos[i].BackColor = Color.Green; + else + lblInPos[i].BackColor = Color.Transparent; + } + } + + } + catch (Exception ex) + { + EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message); + } + } + + private void ChamberViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void btn_VacuumOn_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "Chamber vacuum on"); + ioPad.ShowDialog(); + + if (ioPad.DialogResult == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Vacuum On"); + _mainFrame.equipment.chamber.ChuckVacuumOn(); + } + } + + private void btn_VacuumOff_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "Chamber vacuum off"); + ioPad.ShowDialog(); + + if (ioPad.DialogResult == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Vacuum Off"); + _mainFrame.equipment.chamber.ChuckVacuumOff(); + } + } + + private void btn_LiftPinUp_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "Lift pin up"); + ioPad.ShowDialog(); + + if (ioPad.DialogResult == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : LiftPin Up"); + _mainFrame.equipment.chamber.LiftPinUp(); + } + } + + private void btn_LiftPinDown_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "Lift pin down"); + ioPad.ShowDialog(); + + if (ioPad.DialogResult == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : LiftPin Down"); + _mainFrame.equipment.chamber.LiftPinDown(); + } + } + + private void btn_GateOpen_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "Chamber gate open"); + ioPad.ShowDialog(); + + if (ioPad.DialogResult == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Gate Open"); + _mainFrame.equipment.chamber.GateOpen(); + } + } + + private void btn_GateClose_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "Chamber gate close"); + ioPad.ShowDialog(); + + if (ioPad.DialogResult == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Gate Close"); + _mainFrame.equipment.chamber.GateClose(); + } + } + + private void btn_N2ChamberValveOpen_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "N2 Chamber Valve Open"); + ioPad.ShowDialog(); + + if (ioPad.DialogResult == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : N2 Chamber Vale Open"); + _mainFrame.equipment.chamber.N2ChamberValveOn(); + } + } + private void btn_N2ChamberValveClose_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "N2 Chamber Valve Close"); + ioPad.ShowDialog(); + + if (ioPad.DialogResult == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : N2 Chamber Vale Close"); + _mainFrame.equipment.chamber.N2ChamberValveOff(); + } + } + + private void btn_N2MFCValveOpen_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "N2 MFC Valve Open"); + + if (ioPad.ShowDialog() == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : N2 MFC Vale Open"); + _mainFrame.equipment.chamber.N2MFCValveOn(); + } + } + + private void btn_N2MFCValveClose_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "N2 MFC Valve Close"); + + if (ioPad.ShowDialog() == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : N2 MFC Vale Close"); + _mainFrame.equipment.chamber.N2MFCValveOff(); + } + } + + private void btn_ByPassValveOpen_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "ByPass Valve Open"); + + if (ioPad.ShowDialog() == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : By pass valve Open"); + _mainFrame.equipment.chamber.ByPassValveOn(); + } + } + + private void btn_ByPassValveClose_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "ByPass Valve Close"); + + if (ioPad.ShowDialog() == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : By pass valve Close"); + _mainFrame.equipment.chamber.ByPassValveOff(); + } + } + + private void btn_AirBlowOpen_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "Air Blow Open"); + + if (ioPad.ShowDialog() == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Air Blow Open"); + _mainFrame.equipment.chamber.AirBlowOn(); + } + } + + private void btn_AirBlowClose_Click(object sender, System.EventArgs e) + { + var ioPad = new DigitalIoPad(); + ioPad.Setup(PadItem.NoYes, "Air Blow Close"); + + if (ioPad.ShowDialog() == DialogResult.OK) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Air Blow Close"); + _mainFrame.equipment.chamber.AirBlowOff(); + } + } + + private void tb_MFCSetPoint_Click(object sender, System.EventArgs e) + { + var nPad = new NumericPad(); + nPad.Setup("0", "10"); //踰붿쐞 蹂�寃쏀빐�빞 �븿 + + if (nPad.ShowDialog() == DialogResult.OK) + { + double value = 0; + if (double.TryParse(nPad.GetValue(), out value)) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : MFC set {value}"); + _mainFrame.equipment.chamber.SetMFCFlow(value); + } + } + } + + private void btn_JogXPlus_MouseDown(object sender, MouseEventArgs e) + { + double velocity = (double)nud_JogSpeed.Value; + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Positive Jog X speed {velocity}"); + _mainFrame.equipment.powerPmac.MoveJog(PmacAxis.X_Axis, velocity, MotionDirection.Plus); + } + + private void btn_JogXPlus_MouseUp(object sender, MouseEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Stop Jog X"); + _mainFrame.equipment.powerPmac.MoveStop(PmacAxis.X_Axis); + } + + private void btn_JogXMinus_MouseDown(object sender, MouseEventArgs e) + { + double velocity = (double)nud_JogSpeed.Value; + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Negative Jog X speed {velocity}"); + _mainFrame.equipment.powerPmac.MoveJog(PmacAxis.X_Axis, velocity, MotionDirection.Minus); + } + + private void btn_JogXMinus_MouseUp(object sender, MouseEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Stop Jog X"); + _mainFrame.equipment.powerPmac.MoveStop(PmacAxis.X_Axis); + } + + private void btn_JogYPlus_MouseDown(object sender, MouseEventArgs e) + { + double velocity = (double)nud_JogSpeed.Value; + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Positive Jog Y speed {velocity}"); + _mainFrame.equipment.powerPmac.MoveJog(PmacAxis.Y_Axis, velocity, MotionDirection.Plus); + } + + private void btn_JogYPlus_MouseUp(object sender, MouseEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Stop Jog Y"); + _mainFrame.equipment.powerPmac.MoveStop(PmacAxis.Y_Axis); + } + + private void btn_JogYMinus_MouseDown(object sender, MouseEventArgs e) + { + double velocity = (double)nud_JogSpeed.Value; + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Negative Jog Y speed {velocity}"); + _mainFrame.equipment.powerPmac.MoveJog(PmacAxis.Y_Axis, velocity, MotionDirection.Minus); + } + + private void btn_JogYMinus_MouseUp(object sender, MouseEventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Stop Jog Y"); + _mainFrame.equipment.powerPmac.MoveStop(PmacAxis.Y_Axis); + } + + private void MoveTeachPosition(PmacAxis axis, EnTeachData teachData) + { + double dPos = _mainFrame.equipment.powerPmac.m_AxisAllList[(int)axis].TeachList[(int)teachData].Position; + double dSpeed = _mainFrame.equipment.powerPmac.m_AxisAllList[(int)axis].TeachList[(int)teachData].Speed; + double dAcc = _mainFrame.equipment.powerPmac.m_AxisAllList[(int)axis].TeachList[(int)teachData].Accel; + + _mainFrame.equipment.powerPmac.MoveAbs(axis, dPos, dSpeed, dAcc); + } + + private void btn_LoadPosition_Click(object sender, EventArgs e) + { + if (MessageBox.Show("Load Position�쑝濡� �씠�룞 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Move Load Position"); + MoveTeachPosition(PmacAxis.Y_Axis, EnTeachData.LoadPosY); + MoveTeachPosition(PmacAxis.X_Axis, EnTeachData.LoadPosX); + MoveTeachPosition(PmacAxis.T_Axis, EnTeachData.LoadPosT); + } + } + + private void btn_PowerMeterPosition_Click(object sender, EventArgs e) + { + if (MessageBox.Show("Powermeter Position�쑝濡� �씠�룞 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + if (_mainFrame.equipment.chamber.IsCenterPosition) + { + _mainFrame.equipment.chamber.MovePowerMeterPosition(); + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Move PowerMeter Position"); + } + else + { + MessageBoxPad mbp = new MessageBoxPad("Center �쐞移섏뿉�꽌 �씠�룞 �븷 �닔 �엳�뒿�땲�떎."); + mbp.Show(); + } + } + } + + private void btn_CenterPosition_Click(object sender, EventArgs e) + { + if (MessageBox.Show("Center Position�쑝濡� �씠�룞 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Move Center Position"); + + _mainFrame.equipment.chamber.MoveCenterPosition(); + } + } + + private void btn_BeamProfilePosition_Click(object sender, EventArgs e) + { + if (MessageBox.Show("BeamProfile Position�쑝濡� �씠�룞 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + if (_mainFrame.equipment.chamber.IsCenterPosition) + { + _mainFrame.equipment.chamber.MoveBeamProfilePosition(); + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Move BeamProfile Position"); + } + else + { + MessageBoxPad mbp = new MessageBoxPad("Center �쐞移섏뿉�꽌 �씠�룞 �븷 �닔 �엳�뒿�땲�떎."); + mbp.Show(); + } + } + } + + private void btn_ManualRun_Click(object sender, EventArgs e) + { + if (MessageBox.Show("Manual 媛�怨듭쓣 吏꾪뻾 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + if (_mainFrame.equipment.EquipmentMode == EquipmentMode.Teach || _mainFrame.equipment.EquipmentStatus == EquipmentStatus.Fault || _mainFrame.equipment.ProcessStatus != ProcessStatus.Idle) + { + if (_mainFrame.equipment.EquipmentMode == EquipmentMode.Teach) + { + MessageBoxPad mbp = new MessageBoxPad("Equipment Mode媛� Teach �엯�땲�떎."); + mbp.Show(); + } + + if (_mainFrame.equipment.EquipmentStatus == EquipmentStatus.Fault) + { + MessageBoxPad mbp = new MessageBoxPad("Equipment �긽�깭媛� Fault �엯�땲�떎."); + mbp.Show(); + } + + if (_mainFrame.equipment.ProcessStatus != ProcessStatus.Idle) + { + MessageBoxPad mbp = new MessageBoxPad("Process �긽�깭媛� Idle�씠 �븘�떃�땲�떎."); + mbp.Show(); + } + + return; + } + + if (_mainFrame.equipment.ManualProcessStart()) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + } + } + } + + private void btn_AlignPosition_Click(object sender, EventArgs e) + { + if (MessageBox.Show("Align Position�쑝濡� �씠�룞 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + if (_mainFrame.equipment.chamber.IsCenterPosition) + { + _mainFrame.equipment.chamber.MoveAlignPosition(); + EquipmentLogManager.Instance.WriteButtonLog($"ChamberViewer : Move Align Position"); + } + else + { + MessageBoxPad mbp = new MessageBoxPad("Center �쐞移섏뿉�꽌 �씠�룞 �븷 �닔 �엳�뒿�땲�떎."); + mbp.Show(); + } + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.resx new file mode 100644 index 0000000..e22c5ac --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.resx @@ -0,0 +1,123 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="timer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.Designer.cs new file mode 100644 index 0000000..7a45e9b --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.Designer.cs @@ -0,0 +1,1610 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class ChillerViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.gb_General_alarms = new System.Windows.Forms.GroupBox(); + this.lb_AutomaticFluidFillingFlag = new System.Windows.Forms.Label(); + this.lb_Status1Reserve8 = new System.Windows.Forms.Label(); + this.lb_AntiFreezingFlag = new System.Windows.Forms.Label(); + this.lb_CompletionOfPreparationFlag = new System.Windows.Forms.Label(); + this.lb_RunTimerFlag = new System.Windows.Forms.Label(); + this.lb_ResetAfterPowerFailureFlag = new System.Windows.Forms.Label(); + this.lb_TemperatureUnitFlag = new System.Windows.Forms.Label(); + this.lb_StopTimerFlag = new System.Windows.Forms.Label(); + this.lb_Status1Reserve7 = new System.Windows.Forms.Label(); + this.lb_RunFlag = new System.Windows.Forms.Label(); + this.lb_Status1Reserve6 = new System.Windows.Forms.Label(); + this.lb_OperationStopAlarmFlag = new System.Windows.Forms.Label(); + this.lb_Status1Reserve3 = new System.Windows.Forms.Label(); + this.lb_RemoteStatusFlag = new System.Windows.Forms.Label(); + this.lb_OperationContinuedAlarmFlag = new System.Windows.Forms.Label(); + this.lb_PressUnitFlag = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.lb_Status2Reserve15 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve8 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve14 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve9 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve11 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve13 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve10 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve12 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve7 = new System.Windows.Forms.Label(); + this.lb_ElectricResistivityConductivitySettingFlag1 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve6 = new System.Windows.Forms.Label(); + this.lb_ElectricResistivityConductivitySettingFlag2 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve3 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve5 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve2 = new System.Windows.Forms.Label(); + this.lb_Status2Reserve4 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.lb_RefrigerantCircuitLowPressureRise = new System.Windows.Forms.Label(); + this.lb_CirculatingFluidDischargePressureDrop = new System.Windows.Forms.Label(); + this.lb_RefrigerantCircuitHighPressureDrop = new System.Windows.Forms.Label(); + this.lb_HighCompressorIntakeTemp = new System.Windows.Forms.Label(); + this.lb_LowSuperHeatTemperature = new System.Windows.Forms.Label(); + this.lb_Alarm1Reserve13 = new System.Windows.Forms.Label(); + this.lb_LowCompressorIntakeTemp = new System.Windows.Forms.Label(); + this.lb_HighCompressorDischargePressure = new System.Windows.Forms.Label(); + this.lb_CirculatingFluidDischargePressureRise = new System.Windows.Forms.Label(); + this.lb_LowLevelInTank = new System.Windows.Forms.Label(); + this.lb_AbnormalPumpOperation = new System.Windows.Forms.Label(); + this.lb_HighCirculatingFluidDischargeTemp = new System.Windows.Forms.Label(); + this.lb_CirculatingFluidDischargeTemp = new System.Windows.Forms.Label(); + this.lb_HighCirculatingFluidDischargePressure = new System.Windows.Forms.Label(); + this.lb_CirculatingFluidDischargeTempRise = new System.Windows.Forms.Label(); + this.lb_HighCirculatingFluidReturnTemp = new System.Windows.Forms.Label(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.lb_ContactInput2SignalDetectionAlarm = new System.Windows.Forms.Label(); + this.lb_CirculatingFluidDischargePressureSensorFailure = new System.Windows.Forms.Label(); + this.lb_ContactInput1SignalDetectionAlarm = new System.Windows.Forms.Label(); + this.lb_CompressorDischargePressureSensorFailure = new System.Windows.Forms.Label(); + this.lb_MaintenanceOfPump = new System.Windows.Forms.Label(); + this.lb_MaintenanceOfCompressor = new System.Windows.Forms.Label(); + this.lb_CompressorIntankPressureSensorFailure = new System.Windows.Forms.Label(); + this.lb_MaintenanceOfFanMotor = new System.Windows.Forms.Label(); + this.lb_CompressorIntankTempSensorFailure = new System.Windows.Forms.Label(); + this.lb_RefrigerantCircuitLowPressureDrop = new System.Windows.Forms.Label(); + this.lb_CirculatingFluidReturnTempSensorFailure = new System.Windows.Forms.Label(); + this.lb_CompressorOverload = new System.Windows.Forms.Label(); + this.lb_MemoryError = new System.Windows.Forms.Label(); + this.lb_CirculatingFluidDischargeTempSensorFailure = new System.Windows.Forms.Label(); + this.lb_CommunicationError = new System.Windows.Forms.Label(); + this.lb_DcLineFuseCut = new System.Windows.Forms.Label(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.lb_Alarm3Reserve15 = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve12 = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve4 = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve5 = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve6 = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve7 = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve8 = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve9 = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve10 = new System.Windows.Forms.Label(); + this.lb_WaterLeakage = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve11 = new System.Windows.Forms.Label(); + this.lb_ElectricResistivityConductivityLevelRise = new System.Windows.Forms.Label(); + this.lb_ElectricResistivityConductivitySensorError = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve13 = new System.Windows.Forms.Label(); + this.lb_Alarm3Reserve14 = new System.Windows.Forms.Label(); + this.lb_ElectricResistivityConductivityLevelDrop = new System.Windows.Forms.Label(); + this.label74 = new System.Windows.Forms.Label(); + this.lb_DischargeTemperature = new System.Windows.Forms.Label(); + this.gb_PortStatus = new System.Windows.Forms.GroupBox(); + this.label75 = new System.Windows.Forms.Label(); + this.label76 = new System.Windows.Forms.Label(); + this.lb_PortName = new System.Windows.Forms.Label(); + this.lb_PortStatus = new System.Windows.Forms.Label(); + this.lb_DischargePressure = new System.Windows.Forms.Label(); + this.label78 = new System.Windows.Forms.Label(); + this.lb_ElectricResistivity = new System.Windows.Forms.Label(); + this.label80 = new System.Windows.Forms.Label(); + this.lb_CirculatingFluidSetTemperature = new System.Windows.Forms.Label(); + this.lb_SetTemperature = new System.Windows.Forms.Label(); + this.btn_Run = new System.Windows.Forms.Button(); + this.btn_Stop = new System.Windows.Forms.Button(); + this.gb_General_alarms.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.gb_PortStatus.SuspendLayout(); + this.SuspendLayout(); + // + // gb_General_alarms + // + this.gb_General_alarms.Controls.Add(this.lb_AutomaticFluidFillingFlag); + this.gb_General_alarms.Controls.Add(this.lb_Status1Reserve8); + this.gb_General_alarms.Controls.Add(this.lb_AntiFreezingFlag); + this.gb_General_alarms.Controls.Add(this.lb_CompletionOfPreparationFlag); + this.gb_General_alarms.Controls.Add(this.lb_RunTimerFlag); + this.gb_General_alarms.Controls.Add(this.lb_ResetAfterPowerFailureFlag); + this.gb_General_alarms.Controls.Add(this.lb_TemperatureUnitFlag); + this.gb_General_alarms.Controls.Add(this.lb_StopTimerFlag); + this.gb_General_alarms.Controls.Add(this.lb_Status1Reserve7); + this.gb_General_alarms.Controls.Add(this.lb_RunFlag); + this.gb_General_alarms.Controls.Add(this.lb_Status1Reserve6); + this.gb_General_alarms.Controls.Add(this.lb_OperationStopAlarmFlag); + this.gb_General_alarms.Controls.Add(this.lb_Status1Reserve3); + this.gb_General_alarms.Controls.Add(this.lb_RemoteStatusFlag); + this.gb_General_alarms.Controls.Add(this.lb_OperationContinuedAlarmFlag); + this.gb_General_alarms.Controls.Add(this.lb_PressUnitFlag); + this.gb_General_alarms.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_General_alarms.Location = new System.Drawing.Point(12, 85); + this.gb_General_alarms.Name = "gb_General_alarms"; + this.gb_General_alarms.Size = new System.Drawing.Size(255, 557); + this.gb_General_alarms.TabIndex = 14; + this.gb_General_alarms.TabStop = false; + this.gb_General_alarms.Text = "Status 1"; + // + // lb_AutomaticFluidFillingFlag + // + this.lb_AutomaticFluidFillingFlag.BackColor = System.Drawing.Color.Red; + this.lb_AutomaticFluidFillingFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_AutomaticFluidFillingFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_AutomaticFluidFillingFlag.ForeColor = System.Drawing.Color.Black; + this.lb_AutomaticFluidFillingFlag.Location = new System.Drawing.Point(6, 515); + this.lb_AutomaticFluidFillingFlag.Name = "lb_AutomaticFluidFillingFlag"; + this.lb_AutomaticFluidFillingFlag.Size = new System.Drawing.Size(243, 32); + this.lb_AutomaticFluidFillingFlag.TabIndex = 13; + this.lb_AutomaticFluidFillingFlag.Text = "Automatic fluid filling flag"; + this.lb_AutomaticFluidFillingFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status1Reserve8 + // + this.lb_Status1Reserve8.BackColor = System.Drawing.Color.Red; + this.lb_Status1Reserve8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status1Reserve8.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status1Reserve8.ForeColor = System.Drawing.Color.Black; + this.lb_Status1Reserve8.Location = new System.Drawing.Point(6, 284); + this.lb_Status1Reserve8.Name = "lb_Status1Reserve8"; + this.lb_Status1Reserve8.Size = new System.Drawing.Size(243, 32); + this.lb_Status1Reserve8.TabIndex = 6; + this.lb_Status1Reserve8.Text = "Unused"; + this.lb_Status1Reserve8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_AntiFreezingFlag + // + this.lb_AntiFreezingFlag.BackColor = System.Drawing.Color.Red; + this.lb_AntiFreezingFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_AntiFreezingFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_AntiFreezingFlag.ForeColor = System.Drawing.Color.Black; + this.lb_AntiFreezingFlag.Location = new System.Drawing.Point(6, 482); + this.lb_AntiFreezingFlag.Name = "lb_AntiFreezingFlag"; + this.lb_AntiFreezingFlag.Size = new System.Drawing.Size(243, 32); + this.lb_AntiFreezingFlag.TabIndex = 7; + this.lb_AntiFreezingFlag.Text = "Anti-Freezing flag"; + this.lb_AntiFreezingFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CompletionOfPreparationFlag + // + this.lb_CompletionOfPreparationFlag.BackColor = System.Drawing.Color.Red; + this.lb_CompletionOfPreparationFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CompletionOfPreparationFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CompletionOfPreparationFlag.ForeColor = System.Drawing.Color.Black; + this.lb_CompletionOfPreparationFlag.Location = new System.Drawing.Point(6, 317); + this.lb_CompletionOfPreparationFlag.Name = "lb_CompletionOfPreparationFlag"; + this.lb_CompletionOfPreparationFlag.Size = new System.Drawing.Size(243, 32); + this.lb_CompletionOfPreparationFlag.TabIndex = 8; + this.lb_CompletionOfPreparationFlag.Text = "Completion of preparation flag"; + this.lb_CompletionOfPreparationFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_RunTimerFlag + // + this.lb_RunTimerFlag.BackColor = System.Drawing.Color.Red; + this.lb_RunTimerFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RunTimerFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_RunTimerFlag.ForeColor = System.Drawing.Color.Black; + this.lb_RunTimerFlag.Location = new System.Drawing.Point(6, 383); + this.lb_RunTimerFlag.Name = "lb_RunTimerFlag"; + this.lb_RunTimerFlag.Size = new System.Drawing.Size(243, 32); + this.lb_RunTimerFlag.TabIndex = 9; + this.lb_RunTimerFlag.Text = "Run timer flag"; + this.lb_RunTimerFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ResetAfterPowerFailureFlag + // + this.lb_ResetAfterPowerFailureFlag.BackColor = System.Drawing.Color.Red; + this.lb_ResetAfterPowerFailureFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ResetAfterPowerFailureFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ResetAfterPowerFailureFlag.ForeColor = System.Drawing.Color.Black; + this.lb_ResetAfterPowerFailureFlag.Location = new System.Drawing.Point(6, 449); + this.lb_ResetAfterPowerFailureFlag.Name = "lb_ResetAfterPowerFailureFlag"; + this.lb_ResetAfterPowerFailureFlag.Size = new System.Drawing.Size(243, 32); + this.lb_ResetAfterPowerFailureFlag.TabIndex = 10; + this.lb_ResetAfterPowerFailureFlag.Text = "Reset after power failure flag"; + this.lb_ResetAfterPowerFailureFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TemperatureUnitFlag + // + this.lb_TemperatureUnitFlag.BackColor = System.Drawing.Color.Red; + this.lb_TemperatureUnitFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TemperatureUnitFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_TemperatureUnitFlag.ForeColor = System.Drawing.Color.Black; + this.lb_TemperatureUnitFlag.Location = new System.Drawing.Point(6, 350); + this.lb_TemperatureUnitFlag.Name = "lb_TemperatureUnitFlag"; + this.lb_TemperatureUnitFlag.Size = new System.Drawing.Size(243, 32); + this.lb_TemperatureUnitFlag.TabIndex = 11; + this.lb_TemperatureUnitFlag.Text = "Temperature unit flag"; + this.lb_TemperatureUnitFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_StopTimerFlag + // + this.lb_StopTimerFlag.BackColor = System.Drawing.Color.Red; + this.lb_StopTimerFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_StopTimerFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_StopTimerFlag.ForeColor = System.Drawing.Color.Black; + this.lb_StopTimerFlag.Location = new System.Drawing.Point(6, 416); + this.lb_StopTimerFlag.Name = "lb_StopTimerFlag"; + this.lb_StopTimerFlag.Size = new System.Drawing.Size(243, 32); + this.lb_StopTimerFlag.TabIndex = 12; + this.lb_StopTimerFlag.Text = "Stop timer flag"; + this.lb_StopTimerFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status1Reserve7 + // + this.lb_Status1Reserve7.BackColor = System.Drawing.Color.Red; + this.lb_Status1Reserve7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status1Reserve7.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status1Reserve7.ForeColor = System.Drawing.Color.Black; + this.lb_Status1Reserve7.Location = new System.Drawing.Point(6, 251); + this.lb_Status1Reserve7.Name = "lb_Status1Reserve7"; + this.lb_Status1Reserve7.Size = new System.Drawing.Size(243, 32); + this.lb_Status1Reserve7.TabIndex = 5; + this.lb_Status1Reserve7.Text = "Unused"; + this.lb_Status1Reserve7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_RunFlag + // + this.lb_RunFlag.BackColor = System.Drawing.Color.Red; + this.lb_RunFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RunFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_RunFlag.ForeColor = System.Drawing.Color.Black; + this.lb_RunFlag.Location = new System.Drawing.Point(6, 20); + this.lb_RunFlag.Name = "lb_RunFlag"; + this.lb_RunFlag.Size = new System.Drawing.Size(243, 32); + this.lb_RunFlag.TabIndex = 4; + this.lb_RunFlag.Text = "Run flag"; + this.lb_RunFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status1Reserve6 + // + this.lb_Status1Reserve6.BackColor = System.Drawing.Color.Red; + this.lb_Status1Reserve6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status1Reserve6.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status1Reserve6.ForeColor = System.Drawing.Color.Black; + this.lb_Status1Reserve6.Location = new System.Drawing.Point(6, 218); + this.lb_Status1Reserve6.Name = "lb_Status1Reserve6"; + this.lb_Status1Reserve6.Size = new System.Drawing.Size(243, 32); + this.lb_Status1Reserve6.TabIndex = 4; + this.lb_Status1Reserve6.Text = "Unused"; + this.lb_Status1Reserve6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_OperationStopAlarmFlag + // + this.lb_OperationStopAlarmFlag.BackColor = System.Drawing.Color.Red; + this.lb_OperationStopAlarmFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_OperationStopAlarmFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_OperationStopAlarmFlag.ForeColor = System.Drawing.Color.Black; + this.lb_OperationStopAlarmFlag.Location = new System.Drawing.Point(6, 53); + this.lb_OperationStopAlarmFlag.Name = "lb_OperationStopAlarmFlag"; + this.lb_OperationStopAlarmFlag.Size = new System.Drawing.Size(243, 32); + this.lb_OperationStopAlarmFlag.TabIndex = 4; + this.lb_OperationStopAlarmFlag.Text = "Operation stop alarm flag"; + this.lb_OperationStopAlarmFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status1Reserve3 + // + this.lb_Status1Reserve3.BackColor = System.Drawing.Color.Red; + this.lb_Status1Reserve3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status1Reserve3.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status1Reserve3.ForeColor = System.Drawing.Color.Black; + this.lb_Status1Reserve3.Location = new System.Drawing.Point(6, 119); + this.lb_Status1Reserve3.Name = "lb_Status1Reserve3"; + this.lb_Status1Reserve3.Size = new System.Drawing.Size(243, 32); + this.lb_Status1Reserve3.TabIndex = 4; + this.lb_Status1Reserve3.Text = "Unused"; + this.lb_Status1Reserve3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_RemoteStatusFlag + // + this.lb_RemoteStatusFlag.BackColor = System.Drawing.Color.Red; + this.lb_RemoteStatusFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RemoteStatusFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_RemoteStatusFlag.ForeColor = System.Drawing.Color.Black; + this.lb_RemoteStatusFlag.Location = new System.Drawing.Point(6, 185); + this.lb_RemoteStatusFlag.Name = "lb_RemoteStatusFlag"; + this.lb_RemoteStatusFlag.Size = new System.Drawing.Size(243, 32); + this.lb_RemoteStatusFlag.TabIndex = 4; + this.lb_RemoteStatusFlag.Text = "Remote status flag"; + this.lb_RemoteStatusFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_OperationContinuedAlarmFlag + // + this.lb_OperationContinuedAlarmFlag.BackColor = System.Drawing.Color.Red; + this.lb_OperationContinuedAlarmFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_OperationContinuedAlarmFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_OperationContinuedAlarmFlag.ForeColor = System.Drawing.Color.Black; + this.lb_OperationContinuedAlarmFlag.Location = new System.Drawing.Point(6, 86); + this.lb_OperationContinuedAlarmFlag.Name = "lb_OperationContinuedAlarmFlag"; + this.lb_OperationContinuedAlarmFlag.Size = new System.Drawing.Size(243, 32); + this.lb_OperationContinuedAlarmFlag.TabIndex = 4; + this.lb_OperationContinuedAlarmFlag.Text = "Operation continued alarm flag"; + this.lb_OperationContinuedAlarmFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PressUnitFlag + // + this.lb_PressUnitFlag.BackColor = System.Drawing.Color.Red; + this.lb_PressUnitFlag.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PressUnitFlag.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_PressUnitFlag.ForeColor = System.Drawing.Color.Black; + this.lb_PressUnitFlag.Location = new System.Drawing.Point(6, 152); + this.lb_PressUnitFlag.Name = "lb_PressUnitFlag"; + this.lb_PressUnitFlag.Size = new System.Drawing.Size(243, 32); + this.lb_PressUnitFlag.TabIndex = 4; + this.lb_PressUnitFlag.Text = "Press Unit flag"; + this.lb_PressUnitFlag.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.lb_Status2Reserve15); + this.groupBox1.Controls.Add(this.lb_Status2Reserve8); + this.groupBox1.Controls.Add(this.lb_Status2Reserve14); + this.groupBox1.Controls.Add(this.lb_Status2Reserve9); + this.groupBox1.Controls.Add(this.lb_Status2Reserve11); + this.groupBox1.Controls.Add(this.lb_Status2Reserve13); + this.groupBox1.Controls.Add(this.lb_Status2Reserve10); + this.groupBox1.Controls.Add(this.lb_Status2Reserve12); + this.groupBox1.Controls.Add(this.lb_Status2Reserve7); + this.groupBox1.Controls.Add(this.lb_ElectricResistivityConductivitySettingFlag1); + this.groupBox1.Controls.Add(this.lb_Status2Reserve6); + this.groupBox1.Controls.Add(this.lb_ElectricResistivityConductivitySettingFlag2); + this.groupBox1.Controls.Add(this.lb_Status2Reserve3); + this.groupBox1.Controls.Add(this.lb_Status2Reserve5); + this.groupBox1.Controls.Add(this.lb_Status2Reserve2); + this.groupBox1.Controls.Add(this.lb_Status2Reserve4); + this.groupBox1.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.groupBox1.Location = new System.Drawing.Point(273, 85); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(255, 557); + this.groupBox1.TabIndex = 14; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Status 2"; + // + // lb_Status2Reserve15 + // + this.lb_Status2Reserve15.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve15.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve15.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve15.Location = new System.Drawing.Point(7, 515); + this.lb_Status2Reserve15.Name = "lb_Status2Reserve15"; + this.lb_Status2Reserve15.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve15.TabIndex = 13; + this.lb_Status2Reserve15.Text = "Unused"; + this.lb_Status2Reserve15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve8 + // + this.lb_Status2Reserve8.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve8.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve8.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve8.Location = new System.Drawing.Point(7, 284); + this.lb_Status2Reserve8.Name = "lb_Status2Reserve8"; + this.lb_Status2Reserve8.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve8.TabIndex = 6; + this.lb_Status2Reserve8.Text = "Unused"; + this.lb_Status2Reserve8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve14 + // + this.lb_Status2Reserve14.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve14.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve14.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve14.Location = new System.Drawing.Point(7, 482); + this.lb_Status2Reserve14.Name = "lb_Status2Reserve14"; + this.lb_Status2Reserve14.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve14.TabIndex = 7; + this.lb_Status2Reserve14.Text = "Unused"; + this.lb_Status2Reserve14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve9 + // + this.lb_Status2Reserve9.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve9.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve9.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve9.Location = new System.Drawing.Point(7, 317); + this.lb_Status2Reserve9.Name = "lb_Status2Reserve9"; + this.lb_Status2Reserve9.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve9.TabIndex = 8; + this.lb_Status2Reserve9.Text = "Unused"; + this.lb_Status2Reserve9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve11 + // + this.lb_Status2Reserve11.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve11.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve11.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve11.Location = new System.Drawing.Point(7, 383); + this.lb_Status2Reserve11.Name = "lb_Status2Reserve11"; + this.lb_Status2Reserve11.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve11.TabIndex = 9; + this.lb_Status2Reserve11.Text = "Unused"; + this.lb_Status2Reserve11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve13 + // + this.lb_Status2Reserve13.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve13.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve13.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve13.Location = new System.Drawing.Point(7, 449); + this.lb_Status2Reserve13.Name = "lb_Status2Reserve13"; + this.lb_Status2Reserve13.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve13.TabIndex = 10; + this.lb_Status2Reserve13.Text = "Unused"; + this.lb_Status2Reserve13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve10 + // + this.lb_Status2Reserve10.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve10.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve10.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve10.Location = new System.Drawing.Point(7, 350); + this.lb_Status2Reserve10.Name = "lb_Status2Reserve10"; + this.lb_Status2Reserve10.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve10.TabIndex = 11; + this.lb_Status2Reserve10.Text = "Unused"; + this.lb_Status2Reserve10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve12 + // + this.lb_Status2Reserve12.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve12.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve12.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve12.Location = new System.Drawing.Point(7, 416); + this.lb_Status2Reserve12.Name = "lb_Status2Reserve12"; + this.lb_Status2Reserve12.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve12.TabIndex = 12; + this.lb_Status2Reserve12.Text = "Unused"; + this.lb_Status2Reserve12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve7 + // + this.lb_Status2Reserve7.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve7.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve7.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve7.Location = new System.Drawing.Point(7, 251); + this.lb_Status2Reserve7.Name = "lb_Status2Reserve7"; + this.lb_Status2Reserve7.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve7.TabIndex = 5; + this.lb_Status2Reserve7.Text = "Unused"; + this.lb_Status2Reserve7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ElectricResistivityConductivitySettingFlag1 + // + this.lb_ElectricResistivityConductivitySettingFlag1.BackColor = System.Drawing.Color.Red; + this.lb_ElectricResistivityConductivitySettingFlag1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ElectricResistivityConductivitySettingFlag1.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ElectricResistivityConductivitySettingFlag1.ForeColor = System.Drawing.Color.Black; + this.lb_ElectricResistivityConductivitySettingFlag1.Location = new System.Drawing.Point(7, 20); + this.lb_ElectricResistivityConductivitySettingFlag1.Name = "lb_ElectricResistivityConductivitySettingFlag1"; + this.lb_ElectricResistivityConductivitySettingFlag1.Size = new System.Drawing.Size(243, 32); + this.lb_ElectricResistivityConductivitySettingFlag1.TabIndex = 4; + this.lb_ElectricResistivityConductivitySettingFlag1.Text = "Electric resistivity conductivity setting flag1"; + this.lb_ElectricResistivityConductivitySettingFlag1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve6 + // + this.lb_Status2Reserve6.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve6.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve6.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve6.Location = new System.Drawing.Point(7, 218); + this.lb_Status2Reserve6.Name = "lb_Status2Reserve6"; + this.lb_Status2Reserve6.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve6.TabIndex = 4; + this.lb_Status2Reserve6.Text = "Unused"; + this.lb_Status2Reserve6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ElectricResistivityConductivitySettingFlag2 + // + this.lb_ElectricResistivityConductivitySettingFlag2.BackColor = System.Drawing.Color.Red; + this.lb_ElectricResistivityConductivitySettingFlag2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ElectricResistivityConductivitySettingFlag2.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ElectricResistivityConductivitySettingFlag2.ForeColor = System.Drawing.Color.Black; + this.lb_ElectricResistivityConductivitySettingFlag2.Location = new System.Drawing.Point(7, 53); + this.lb_ElectricResistivityConductivitySettingFlag2.Name = "lb_ElectricResistivityConductivitySettingFlag2"; + this.lb_ElectricResistivityConductivitySettingFlag2.Size = new System.Drawing.Size(243, 32); + this.lb_ElectricResistivityConductivitySettingFlag2.TabIndex = 4; + this.lb_ElectricResistivityConductivitySettingFlag2.Text = "Electric resistivity conductivity setting flag 2"; + this.lb_ElectricResistivityConductivitySettingFlag2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve3 + // + this.lb_Status2Reserve3.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve3.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve3.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve3.Location = new System.Drawing.Point(7, 119); + this.lb_Status2Reserve3.Name = "lb_Status2Reserve3"; + this.lb_Status2Reserve3.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve3.TabIndex = 4; + this.lb_Status2Reserve3.Text = "Unused"; + this.lb_Status2Reserve3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve5 + // + this.lb_Status2Reserve5.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve5.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve5.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve5.Location = new System.Drawing.Point(7, 185); + this.lb_Status2Reserve5.Name = "lb_Status2Reserve5"; + this.lb_Status2Reserve5.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve5.TabIndex = 4; + this.lb_Status2Reserve5.Text = "Unused"; + this.lb_Status2Reserve5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve2 + // + this.lb_Status2Reserve2.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve2.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve2.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve2.Location = new System.Drawing.Point(7, 86); + this.lb_Status2Reserve2.Name = "lb_Status2Reserve2"; + this.lb_Status2Reserve2.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve2.TabIndex = 4; + this.lb_Status2Reserve2.Text = "Unused"; + this.lb_Status2Reserve2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Status2Reserve4 + // + this.lb_Status2Reserve4.BackColor = System.Drawing.Color.Red; + this.lb_Status2Reserve4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Status2Reserve4.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Status2Reserve4.ForeColor = System.Drawing.Color.Black; + this.lb_Status2Reserve4.Location = new System.Drawing.Point(7, 152); + this.lb_Status2Reserve4.Name = "lb_Status2Reserve4"; + this.lb_Status2Reserve4.Size = new System.Drawing.Size(243, 32); + this.lb_Status2Reserve4.TabIndex = 4; + this.lb_Status2Reserve4.Text = "Unused"; + this.lb_Status2Reserve4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.lb_RefrigerantCircuitLowPressureRise); + this.groupBox2.Controls.Add(this.lb_CirculatingFluidDischargePressureDrop); + this.groupBox2.Controls.Add(this.lb_RefrigerantCircuitHighPressureDrop); + this.groupBox2.Controls.Add(this.lb_HighCompressorIntakeTemp); + this.groupBox2.Controls.Add(this.lb_LowSuperHeatTemperature); + this.groupBox2.Controls.Add(this.lb_Alarm1Reserve13); + this.groupBox2.Controls.Add(this.lb_LowCompressorIntakeTemp); + this.groupBox2.Controls.Add(this.lb_HighCompressorDischargePressure); + this.groupBox2.Controls.Add(this.lb_CirculatingFluidDischargePressureRise); + this.groupBox2.Controls.Add(this.lb_LowLevelInTank); + this.groupBox2.Controls.Add(this.lb_AbnormalPumpOperation); + this.groupBox2.Controls.Add(this.lb_HighCirculatingFluidDischargeTemp); + this.groupBox2.Controls.Add(this.lb_CirculatingFluidDischargeTemp); + this.groupBox2.Controls.Add(this.lb_HighCirculatingFluidDischargePressure); + this.groupBox2.Controls.Add(this.lb_CirculatingFluidDischargeTempRise); + this.groupBox2.Controls.Add(this.lb_HighCirculatingFluidReturnTemp); + this.groupBox2.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.groupBox2.Location = new System.Drawing.Point(534, 86); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(255, 557); + this.groupBox2.TabIndex = 14; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Alarm 1"; + // + // lb_RefrigerantCircuitLowPressureRise + // + this.lb_RefrigerantCircuitLowPressureRise.BackColor = System.Drawing.Color.Red; + this.lb_RefrigerantCircuitLowPressureRise.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RefrigerantCircuitLowPressureRise.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_RefrigerantCircuitLowPressureRise.ForeColor = System.Drawing.Color.Black; + this.lb_RefrigerantCircuitLowPressureRise.Location = new System.Drawing.Point(6, 514); + this.lb_RefrigerantCircuitLowPressureRise.Name = "lb_RefrigerantCircuitLowPressureRise"; + this.lb_RefrigerantCircuitLowPressureRise.Size = new System.Drawing.Size(243, 32); + this.lb_RefrigerantCircuitLowPressureRise.TabIndex = 13; + this.lb_RefrigerantCircuitLowPressureRise.Text = "Refrigerant circuit pressure rise"; + this.lb_RefrigerantCircuitLowPressureRise.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CirculatingFluidDischargePressureDrop + // + this.lb_CirculatingFluidDischargePressureDrop.BackColor = System.Drawing.Color.Red; + this.lb_CirculatingFluidDischargePressureDrop.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CirculatingFluidDischargePressureDrop.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CirculatingFluidDischargePressureDrop.ForeColor = System.Drawing.Color.Black; + this.lb_CirculatingFluidDischargePressureDrop.Location = new System.Drawing.Point(6, 283); + this.lb_CirculatingFluidDischargePressureDrop.Name = "lb_CirculatingFluidDischargePressureDrop"; + this.lb_CirculatingFluidDischargePressureDrop.Size = new System.Drawing.Size(243, 32); + this.lb_CirculatingFluidDischargePressureDrop.TabIndex = 6; + this.lb_CirculatingFluidDischargePressureDrop.Text = "Circulating fluid discharge pressure drop"; + this.lb_CirculatingFluidDischargePressureDrop.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_RefrigerantCircuitHighPressureDrop + // + this.lb_RefrigerantCircuitHighPressureDrop.BackColor = System.Drawing.Color.Red; + this.lb_RefrigerantCircuitHighPressureDrop.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RefrigerantCircuitHighPressureDrop.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_RefrigerantCircuitHighPressureDrop.ForeColor = System.Drawing.Color.Black; + this.lb_RefrigerantCircuitHighPressureDrop.Location = new System.Drawing.Point(6, 481); + this.lb_RefrigerantCircuitHighPressureDrop.Name = "lb_RefrigerantCircuitHighPressureDrop"; + this.lb_RefrigerantCircuitHighPressureDrop.Size = new System.Drawing.Size(243, 32); + this.lb_RefrigerantCircuitHighPressureDrop.TabIndex = 7; + this.lb_RefrigerantCircuitHighPressureDrop.Text = "Refrigerant circuit pressure drop"; + this.lb_RefrigerantCircuitHighPressureDrop.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_HighCompressorIntakeTemp + // + this.lb_HighCompressorIntakeTemp.BackColor = System.Drawing.Color.Red; + this.lb_HighCompressorIntakeTemp.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_HighCompressorIntakeTemp.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_HighCompressorIntakeTemp.ForeColor = System.Drawing.Color.Black; + this.lb_HighCompressorIntakeTemp.Location = new System.Drawing.Point(6, 316); + this.lb_HighCompressorIntakeTemp.Name = "lb_HighCompressorIntakeTemp"; + this.lb_HighCompressorIntakeTemp.Size = new System.Drawing.Size(243, 32); + this.lb_HighCompressorIntakeTemp.TabIndex = 8; + this.lb_HighCompressorIntakeTemp.Text = "High compressor intake temp"; + this.lb_HighCompressorIntakeTemp.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LowSuperHeatTemperature + // + this.lb_LowSuperHeatTemperature.BackColor = System.Drawing.Color.Red; + this.lb_LowSuperHeatTemperature.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LowSuperHeatTemperature.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LowSuperHeatTemperature.ForeColor = System.Drawing.Color.Black; + this.lb_LowSuperHeatTemperature.Location = new System.Drawing.Point(6, 382); + this.lb_LowSuperHeatTemperature.Name = "lb_LowSuperHeatTemperature"; + this.lb_LowSuperHeatTemperature.Size = new System.Drawing.Size(243, 32); + this.lb_LowSuperHeatTemperature.TabIndex = 9; + this.lb_LowSuperHeatTemperature.Text = "Low super heat temperature"; + this.lb_LowSuperHeatTemperature.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm1Reserve13 + // + this.lb_Alarm1Reserve13.BackColor = System.Drawing.Color.Red; + this.lb_Alarm1Reserve13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm1Reserve13.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm1Reserve13.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm1Reserve13.Location = new System.Drawing.Point(6, 448); + this.lb_Alarm1Reserve13.Name = "lb_Alarm1Reserve13"; + this.lb_Alarm1Reserve13.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm1Reserve13.TabIndex = 10; + this.lb_Alarm1Reserve13.Text = "Unused"; + this.lb_Alarm1Reserve13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LowCompressorIntakeTemp + // + this.lb_LowCompressorIntakeTemp.BackColor = System.Drawing.Color.Red; + this.lb_LowCompressorIntakeTemp.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LowCompressorIntakeTemp.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LowCompressorIntakeTemp.ForeColor = System.Drawing.Color.Black; + this.lb_LowCompressorIntakeTemp.Location = new System.Drawing.Point(6, 349); + this.lb_LowCompressorIntakeTemp.Name = "lb_LowCompressorIntakeTemp"; + this.lb_LowCompressorIntakeTemp.Size = new System.Drawing.Size(243, 32); + this.lb_LowCompressorIntakeTemp.TabIndex = 11; + this.lb_LowCompressorIntakeTemp.Text = "Low compressor intake temp"; + this.lb_LowCompressorIntakeTemp.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_HighCompressorDischargePressure + // + this.lb_HighCompressorDischargePressure.BackColor = System.Drawing.Color.Red; + this.lb_HighCompressorDischargePressure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_HighCompressorDischargePressure.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_HighCompressorDischargePressure.ForeColor = System.Drawing.Color.Black; + this.lb_HighCompressorDischargePressure.Location = new System.Drawing.Point(6, 415); + this.lb_HighCompressorDischargePressure.Name = "lb_HighCompressorDischargePressure"; + this.lb_HighCompressorDischargePressure.Size = new System.Drawing.Size(243, 32); + this.lb_HighCompressorDischargePressure.TabIndex = 12; + this.lb_HighCompressorDischargePressure.Text = "High compressor discharge pressure"; + this.lb_HighCompressorDischargePressure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CirculatingFluidDischargePressureRise + // + this.lb_CirculatingFluidDischargePressureRise.BackColor = System.Drawing.Color.Red; + this.lb_CirculatingFluidDischargePressureRise.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CirculatingFluidDischargePressureRise.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CirculatingFluidDischargePressureRise.ForeColor = System.Drawing.Color.Black; + this.lb_CirculatingFluidDischargePressureRise.Location = new System.Drawing.Point(6, 250); + this.lb_CirculatingFluidDischargePressureRise.Name = "lb_CirculatingFluidDischargePressureRise"; + this.lb_CirculatingFluidDischargePressureRise.Size = new System.Drawing.Size(243, 32); + this.lb_CirculatingFluidDischargePressureRise.TabIndex = 5; + this.lb_CirculatingFluidDischargePressureRise.Text = "Circulating fluid discharge pressure rise"; + this.lb_CirculatingFluidDischargePressureRise.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LowLevelInTank + // + this.lb_LowLevelInTank.BackColor = System.Drawing.Color.Red; + this.lb_LowLevelInTank.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LowLevelInTank.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LowLevelInTank.ForeColor = System.Drawing.Color.Black; + this.lb_LowLevelInTank.Location = new System.Drawing.Point(6, 19); + this.lb_LowLevelInTank.Name = "lb_LowLevelInTank"; + this.lb_LowLevelInTank.Size = new System.Drawing.Size(243, 32); + this.lb_LowLevelInTank.TabIndex = 4; + this.lb_LowLevelInTank.Text = "Low level in tank"; + this.lb_LowLevelInTank.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_AbnormalPumpOperation + // + this.lb_AbnormalPumpOperation.BackColor = System.Drawing.Color.Red; + this.lb_AbnormalPumpOperation.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_AbnormalPumpOperation.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_AbnormalPumpOperation.ForeColor = System.Drawing.Color.Black; + this.lb_AbnormalPumpOperation.Location = new System.Drawing.Point(6, 217); + this.lb_AbnormalPumpOperation.Name = "lb_AbnormalPumpOperation"; + this.lb_AbnormalPumpOperation.Size = new System.Drawing.Size(243, 32); + this.lb_AbnormalPumpOperation.TabIndex = 4; + this.lb_AbnormalPumpOperation.Text = "Abnormal pump operation"; + this.lb_AbnormalPumpOperation.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_HighCirculatingFluidDischargeTemp + // + this.lb_HighCirculatingFluidDischargeTemp.BackColor = System.Drawing.Color.Red; + this.lb_HighCirculatingFluidDischargeTemp.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_HighCirculatingFluidDischargeTemp.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_HighCirculatingFluidDischargeTemp.ForeColor = System.Drawing.Color.Black; + this.lb_HighCirculatingFluidDischargeTemp.Location = new System.Drawing.Point(6, 52); + this.lb_HighCirculatingFluidDischargeTemp.Name = "lb_HighCirculatingFluidDischargeTemp"; + this.lb_HighCirculatingFluidDischargeTemp.Size = new System.Drawing.Size(243, 32); + this.lb_HighCirculatingFluidDischargeTemp.TabIndex = 4; + this.lb_HighCirculatingFluidDischargeTemp.Text = "High circulating fluid discharge temp"; + this.lb_HighCirculatingFluidDischargeTemp.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CirculatingFluidDischargeTemp + // + this.lb_CirculatingFluidDischargeTemp.BackColor = System.Drawing.Color.Red; + this.lb_CirculatingFluidDischargeTemp.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CirculatingFluidDischargeTemp.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CirculatingFluidDischargeTemp.ForeColor = System.Drawing.Color.Black; + this.lb_CirculatingFluidDischargeTemp.Location = new System.Drawing.Point(6, 118); + this.lb_CirculatingFluidDischargeTemp.Name = "lb_CirculatingFluidDischargeTemp"; + this.lb_CirculatingFluidDischargeTemp.Size = new System.Drawing.Size(243, 32); + this.lb_CirculatingFluidDischargeTemp.TabIndex = 4; + this.lb_CirculatingFluidDischargeTemp.Text = "Circulating fluid discharge temp"; + this.lb_CirculatingFluidDischargeTemp.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_HighCirculatingFluidDischargePressure + // + this.lb_HighCirculatingFluidDischargePressure.BackColor = System.Drawing.Color.Red; + this.lb_HighCirculatingFluidDischargePressure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_HighCirculatingFluidDischargePressure.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_HighCirculatingFluidDischargePressure.ForeColor = System.Drawing.Color.Black; + this.lb_HighCirculatingFluidDischargePressure.Location = new System.Drawing.Point(6, 184); + this.lb_HighCirculatingFluidDischargePressure.Name = "lb_HighCirculatingFluidDischargePressure"; + this.lb_HighCirculatingFluidDischargePressure.Size = new System.Drawing.Size(243, 32); + this.lb_HighCirculatingFluidDischargePressure.TabIndex = 4; + this.lb_HighCirculatingFluidDischargePressure.Text = "High circulating fluid discharge pressure"; + this.lb_HighCirculatingFluidDischargePressure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CirculatingFluidDischargeTempRise + // + this.lb_CirculatingFluidDischargeTempRise.BackColor = System.Drawing.Color.Red; + this.lb_CirculatingFluidDischargeTempRise.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CirculatingFluidDischargeTempRise.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CirculatingFluidDischargeTempRise.ForeColor = System.Drawing.Color.Black; + this.lb_CirculatingFluidDischargeTempRise.Location = new System.Drawing.Point(6, 85); + this.lb_CirculatingFluidDischargeTempRise.Name = "lb_CirculatingFluidDischargeTempRise"; + this.lb_CirculatingFluidDischargeTempRise.Size = new System.Drawing.Size(243, 32); + this.lb_CirculatingFluidDischargeTempRise.TabIndex = 4; + this.lb_CirculatingFluidDischargeTempRise.Text = "Circulating fluid discharge temp. rise"; + this.lb_CirculatingFluidDischargeTempRise.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_HighCirculatingFluidReturnTemp + // + this.lb_HighCirculatingFluidReturnTemp.BackColor = System.Drawing.Color.Red; + this.lb_HighCirculatingFluidReturnTemp.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_HighCirculatingFluidReturnTemp.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_HighCirculatingFluidReturnTemp.ForeColor = System.Drawing.Color.Black; + this.lb_HighCirculatingFluidReturnTemp.Location = new System.Drawing.Point(6, 151); + this.lb_HighCirculatingFluidReturnTemp.Name = "lb_HighCirculatingFluidReturnTemp"; + this.lb_HighCirculatingFluidReturnTemp.Size = new System.Drawing.Size(243, 32); + this.lb_HighCirculatingFluidReturnTemp.TabIndex = 4; + this.lb_HighCirculatingFluidReturnTemp.Text = "High circulating fluid return temp"; + this.lb_HighCirculatingFluidReturnTemp.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.lb_ContactInput2SignalDetectionAlarm); + this.groupBox3.Controls.Add(this.lb_CirculatingFluidDischargePressureSensorFailure); + this.groupBox3.Controls.Add(this.lb_ContactInput1SignalDetectionAlarm); + this.groupBox3.Controls.Add(this.lb_CompressorDischargePressureSensorFailure); + this.groupBox3.Controls.Add(this.lb_MaintenanceOfPump); + this.groupBox3.Controls.Add(this.lb_MaintenanceOfCompressor); + this.groupBox3.Controls.Add(this.lb_CompressorIntankPressureSensorFailure); + this.groupBox3.Controls.Add(this.lb_MaintenanceOfFanMotor); + this.groupBox3.Controls.Add(this.lb_CompressorIntankTempSensorFailure); + this.groupBox3.Controls.Add(this.lb_RefrigerantCircuitLowPressureDrop); + this.groupBox3.Controls.Add(this.lb_CirculatingFluidReturnTempSensorFailure); + this.groupBox3.Controls.Add(this.lb_CompressorOverload); + this.groupBox3.Controls.Add(this.lb_MemoryError); + this.groupBox3.Controls.Add(this.lb_CirculatingFluidDischargeTempSensorFailure); + this.groupBox3.Controls.Add(this.lb_CommunicationError); + this.groupBox3.Controls.Add(this.lb_DcLineFuseCut); + this.groupBox3.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.groupBox3.Location = new System.Drawing.Point(795, 86); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(255, 557); + this.groupBox3.TabIndex = 14; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Alarm 2"; + // + // lb_ContactInput2SignalDetectionAlarm + // + this.lb_ContactInput2SignalDetectionAlarm.BackColor = System.Drawing.Color.Red; + this.lb_ContactInput2SignalDetectionAlarm.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ContactInput2SignalDetectionAlarm.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ContactInput2SignalDetectionAlarm.ForeColor = System.Drawing.Color.Black; + this.lb_ContactInput2SignalDetectionAlarm.Location = new System.Drawing.Point(6, 514); + this.lb_ContactInput2SignalDetectionAlarm.Name = "lb_ContactInput2SignalDetectionAlarm"; + this.lb_ContactInput2SignalDetectionAlarm.Size = new System.Drawing.Size(243, 32); + this.lb_ContactInput2SignalDetectionAlarm.TabIndex = 13; + this.lb_ContactInput2SignalDetectionAlarm.Text = "Contact input 2 signal detection alarm"; + this.lb_ContactInput2SignalDetectionAlarm.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CirculatingFluidDischargePressureSensorFailure + // + this.lb_CirculatingFluidDischargePressureSensorFailure.BackColor = System.Drawing.Color.Red; + this.lb_CirculatingFluidDischargePressureSensorFailure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CirculatingFluidDischargePressureSensorFailure.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CirculatingFluidDischargePressureSensorFailure.ForeColor = System.Drawing.Color.Black; + this.lb_CirculatingFluidDischargePressureSensorFailure.Location = new System.Drawing.Point(6, 283); + this.lb_CirculatingFluidDischargePressureSensorFailure.Name = "lb_CirculatingFluidDischargePressureSensorFailure"; + this.lb_CirculatingFluidDischargePressureSensorFailure.Size = new System.Drawing.Size(243, 32); + this.lb_CirculatingFluidDischargePressureSensorFailure.TabIndex = 6; + this.lb_CirculatingFluidDischargePressureSensorFailure.Text = "Circulating fluid discharge pressure sensor failure"; + this.lb_CirculatingFluidDischargePressureSensorFailure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ContactInput1SignalDetectionAlarm + // + this.lb_ContactInput1SignalDetectionAlarm.BackColor = System.Drawing.Color.Red; + this.lb_ContactInput1SignalDetectionAlarm.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ContactInput1SignalDetectionAlarm.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ContactInput1SignalDetectionAlarm.ForeColor = System.Drawing.Color.Black; + this.lb_ContactInput1SignalDetectionAlarm.Location = new System.Drawing.Point(6, 481); + this.lb_ContactInput1SignalDetectionAlarm.Name = "lb_ContactInput1SignalDetectionAlarm"; + this.lb_ContactInput1SignalDetectionAlarm.Size = new System.Drawing.Size(243, 32); + this.lb_ContactInput1SignalDetectionAlarm.TabIndex = 7; + this.lb_ContactInput1SignalDetectionAlarm.Text = "Contact input 1 signal detection alarm"; + this.lb_ContactInput1SignalDetectionAlarm.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CompressorDischargePressureSensorFailure + // + this.lb_CompressorDischargePressureSensorFailure.BackColor = System.Drawing.Color.Red; + this.lb_CompressorDischargePressureSensorFailure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CompressorDischargePressureSensorFailure.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CompressorDischargePressureSensorFailure.ForeColor = System.Drawing.Color.Black; + this.lb_CompressorDischargePressureSensorFailure.Location = new System.Drawing.Point(6, 316); + this.lb_CompressorDischargePressureSensorFailure.Name = "lb_CompressorDischargePressureSensorFailure"; + this.lb_CompressorDischargePressureSensorFailure.Size = new System.Drawing.Size(243, 32); + this.lb_CompressorDischargePressureSensorFailure.TabIndex = 8; + this.lb_CompressorDischargePressureSensorFailure.Text = "Compressor discharge pressure sensor failure"; + this.lb_CompressorDischargePressureSensorFailure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_MaintenanceOfPump + // + this.lb_MaintenanceOfPump.BackColor = System.Drawing.Color.Red; + this.lb_MaintenanceOfPump.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MaintenanceOfPump.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_MaintenanceOfPump.ForeColor = System.Drawing.Color.Black; + this.lb_MaintenanceOfPump.Location = new System.Drawing.Point(6, 382); + this.lb_MaintenanceOfPump.Name = "lb_MaintenanceOfPump"; + this.lb_MaintenanceOfPump.Size = new System.Drawing.Size(243, 32); + this.lb_MaintenanceOfPump.TabIndex = 9; + this.lb_MaintenanceOfPump.Text = "Maintenance of pump"; + this.lb_MaintenanceOfPump.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_MaintenanceOfCompressor + // + this.lb_MaintenanceOfCompressor.BackColor = System.Drawing.Color.Red; + this.lb_MaintenanceOfCompressor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MaintenanceOfCompressor.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_MaintenanceOfCompressor.ForeColor = System.Drawing.Color.Black; + this.lb_MaintenanceOfCompressor.Location = new System.Drawing.Point(6, 448); + this.lb_MaintenanceOfCompressor.Name = "lb_MaintenanceOfCompressor"; + this.lb_MaintenanceOfCompressor.Size = new System.Drawing.Size(243, 32); + this.lb_MaintenanceOfCompressor.TabIndex = 10; + this.lb_MaintenanceOfCompressor.Text = "Maintenance of compressor"; + this.lb_MaintenanceOfCompressor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CompressorIntankPressureSensorFailure + // + this.lb_CompressorIntankPressureSensorFailure.BackColor = System.Drawing.Color.Red; + this.lb_CompressorIntankPressureSensorFailure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CompressorIntankPressureSensorFailure.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CompressorIntankPressureSensorFailure.ForeColor = System.Drawing.Color.Black; + this.lb_CompressorIntankPressureSensorFailure.Location = new System.Drawing.Point(6, 349); + this.lb_CompressorIntankPressureSensorFailure.Name = "lb_CompressorIntankPressureSensorFailure"; + this.lb_CompressorIntankPressureSensorFailure.Size = new System.Drawing.Size(243, 32); + this.lb_CompressorIntankPressureSensorFailure.TabIndex = 11; + this.lb_CompressorIntankPressureSensorFailure.Text = "Compressor intake pressure sensor failure"; + this.lb_CompressorIntankPressureSensorFailure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_MaintenanceOfFanMotor + // + this.lb_MaintenanceOfFanMotor.BackColor = System.Drawing.Color.Red; + this.lb_MaintenanceOfFanMotor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MaintenanceOfFanMotor.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_MaintenanceOfFanMotor.ForeColor = System.Drawing.Color.Black; + this.lb_MaintenanceOfFanMotor.Location = new System.Drawing.Point(6, 415); + this.lb_MaintenanceOfFanMotor.Name = "lb_MaintenanceOfFanMotor"; + this.lb_MaintenanceOfFanMotor.Size = new System.Drawing.Size(243, 32); + this.lb_MaintenanceOfFanMotor.TabIndex = 12; + this.lb_MaintenanceOfFanMotor.Text = "Maintenance of fan motor"; + this.lb_MaintenanceOfFanMotor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CompressorIntankTempSensorFailure + // + this.lb_CompressorIntankTempSensorFailure.BackColor = System.Drawing.Color.Red; + this.lb_CompressorIntankTempSensorFailure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CompressorIntankTempSensorFailure.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CompressorIntankTempSensorFailure.ForeColor = System.Drawing.Color.Black; + this.lb_CompressorIntankTempSensorFailure.Location = new System.Drawing.Point(6, 250); + this.lb_CompressorIntankTempSensorFailure.Name = "lb_CompressorIntankTempSensorFailure"; + this.lb_CompressorIntankTempSensorFailure.Size = new System.Drawing.Size(243, 32); + this.lb_CompressorIntankTempSensorFailure.TabIndex = 5; + this.lb_CompressorIntankTempSensorFailure.Text = "Compressor intake temp. sensor failure"; + this.lb_CompressorIntankTempSensorFailure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_RefrigerantCircuitLowPressureDrop + // + this.lb_RefrigerantCircuitLowPressureDrop.BackColor = System.Drawing.Color.Red; + this.lb_RefrigerantCircuitLowPressureDrop.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RefrigerantCircuitLowPressureDrop.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_RefrigerantCircuitLowPressureDrop.ForeColor = System.Drawing.Color.Black; + this.lb_RefrigerantCircuitLowPressureDrop.Location = new System.Drawing.Point(6, 19); + this.lb_RefrigerantCircuitLowPressureDrop.Name = "lb_RefrigerantCircuitLowPressureDrop"; + this.lb_RefrigerantCircuitLowPressureDrop.Size = new System.Drawing.Size(243, 32); + this.lb_RefrigerantCircuitLowPressureDrop.TabIndex = 4; + this.lb_RefrigerantCircuitLowPressureDrop.Text = "Refrigerant circuit pressure drop"; + this.lb_RefrigerantCircuitLowPressureDrop.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CirculatingFluidReturnTempSensorFailure + // + this.lb_CirculatingFluidReturnTempSensorFailure.BackColor = System.Drawing.Color.Red; + this.lb_CirculatingFluidReturnTempSensorFailure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CirculatingFluidReturnTempSensorFailure.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CirculatingFluidReturnTempSensorFailure.ForeColor = System.Drawing.Color.Black; + this.lb_CirculatingFluidReturnTempSensorFailure.Location = new System.Drawing.Point(6, 217); + this.lb_CirculatingFluidReturnTempSensorFailure.Name = "lb_CirculatingFluidReturnTempSensorFailure"; + this.lb_CirculatingFluidReturnTempSensorFailure.Size = new System.Drawing.Size(243, 32); + this.lb_CirculatingFluidReturnTempSensorFailure.TabIndex = 4; + this.lb_CirculatingFluidReturnTempSensorFailure.Text = "Circulating fluid return temp. sensor failure"; + this.lb_CirculatingFluidReturnTempSensorFailure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CompressorOverload + // + this.lb_CompressorOverload.BackColor = System.Drawing.Color.Red; + this.lb_CompressorOverload.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CompressorOverload.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CompressorOverload.ForeColor = System.Drawing.Color.Black; + this.lb_CompressorOverload.Location = new System.Drawing.Point(6, 52); + this.lb_CompressorOverload.Name = "lb_CompressorOverload"; + this.lb_CompressorOverload.Size = new System.Drawing.Size(243, 32); + this.lb_CompressorOverload.TabIndex = 4; + this.lb_CompressorOverload.Text = "Compressor overload"; + this.lb_CompressorOverload.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_MemoryError + // + this.lb_MemoryError.BackColor = System.Drawing.Color.Red; + this.lb_MemoryError.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MemoryError.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_MemoryError.ForeColor = System.Drawing.Color.Black; + this.lb_MemoryError.Location = new System.Drawing.Point(6, 118); + this.lb_MemoryError.Name = "lb_MemoryError"; + this.lb_MemoryError.Size = new System.Drawing.Size(243, 32); + this.lb_MemoryError.TabIndex = 4; + this.lb_MemoryError.Text = "Memory error"; + this.lb_MemoryError.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CirculatingFluidDischargeTempSensorFailure + // + this.lb_CirculatingFluidDischargeTempSensorFailure.BackColor = System.Drawing.Color.Red; + this.lb_CirculatingFluidDischargeTempSensorFailure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CirculatingFluidDischargeTempSensorFailure.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CirculatingFluidDischargeTempSensorFailure.ForeColor = System.Drawing.Color.Black; + this.lb_CirculatingFluidDischargeTempSensorFailure.Location = new System.Drawing.Point(6, 184); + this.lb_CirculatingFluidDischargeTempSensorFailure.Name = "lb_CirculatingFluidDischargeTempSensorFailure"; + this.lb_CirculatingFluidDischargeTempSensorFailure.Size = new System.Drawing.Size(243, 32); + this.lb_CirculatingFluidDischargeTempSensorFailure.TabIndex = 4; + this.lb_CirculatingFluidDischargeTempSensorFailure.Text = "Circulating fluid discharge temp. sensor failure"; + this.lb_CirculatingFluidDischargeTempSensorFailure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CommunicationError + // + this.lb_CommunicationError.BackColor = System.Drawing.Color.Red; + this.lb_CommunicationError.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CommunicationError.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CommunicationError.ForeColor = System.Drawing.Color.Black; + this.lb_CommunicationError.Location = new System.Drawing.Point(6, 85); + this.lb_CommunicationError.Name = "lb_CommunicationError"; + this.lb_CommunicationError.Size = new System.Drawing.Size(243, 32); + this.lb_CommunicationError.TabIndex = 4; + this.lb_CommunicationError.Text = "Communication error"; + this.lb_CommunicationError.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_DcLineFuseCut + // + this.lb_DcLineFuseCut.BackColor = System.Drawing.Color.Red; + this.lb_DcLineFuseCut.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_DcLineFuseCut.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_DcLineFuseCut.ForeColor = System.Drawing.Color.Black; + this.lb_DcLineFuseCut.Location = new System.Drawing.Point(6, 151); + this.lb_DcLineFuseCut.Name = "lb_DcLineFuseCut"; + this.lb_DcLineFuseCut.Size = new System.Drawing.Size(243, 32); + this.lb_DcLineFuseCut.TabIndex = 4; + this.lb_DcLineFuseCut.Text = "DC line fuse cut"; + this.lb_DcLineFuseCut.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve15); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve12); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve4); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve5); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve6); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve7); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve8); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve9); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve10); + this.groupBox4.Controls.Add(this.lb_WaterLeakage); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve11); + this.groupBox4.Controls.Add(this.lb_ElectricResistivityConductivityLevelRise); + this.groupBox4.Controls.Add(this.lb_ElectricResistivityConductivitySensorError); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve13); + this.groupBox4.Controls.Add(this.lb_Alarm3Reserve14); + this.groupBox4.Controls.Add(this.lb_ElectricResistivityConductivityLevelDrop); + this.groupBox4.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.groupBox4.Location = new System.Drawing.Point(1056, 86); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(255, 557); + this.groupBox4.TabIndex = 14; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Alarm 3"; + // + // lb_Alarm3Reserve15 + // + this.lb_Alarm3Reserve15.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve15.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve15.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve15.Location = new System.Drawing.Point(6, 514); + this.lb_Alarm3Reserve15.Name = "lb_Alarm3Reserve15"; + this.lb_Alarm3Reserve15.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve15.TabIndex = 13; + this.lb_Alarm3Reserve15.Text = "Unused"; + this.lb_Alarm3Reserve15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve12 + // + this.lb_Alarm3Reserve12.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve12.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve12.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve12.Location = new System.Drawing.Point(6, 415); + this.lb_Alarm3Reserve12.Name = "lb_Alarm3Reserve12"; + this.lb_Alarm3Reserve12.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve12.TabIndex = 6; + this.lb_Alarm3Reserve12.Text = "Unused"; + this.lb_Alarm3Reserve12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve4 + // + this.lb_Alarm3Reserve4.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve4.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve4.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve4.Location = new System.Drawing.Point(6, 151); + this.lb_Alarm3Reserve4.Name = "lb_Alarm3Reserve4"; + this.lb_Alarm3Reserve4.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve4.TabIndex = 7; + this.lb_Alarm3Reserve4.Text = "Unused"; + this.lb_Alarm3Reserve4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve5 + // + this.lb_Alarm3Reserve5.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve5.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve5.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve5.Location = new System.Drawing.Point(6, 184); + this.lb_Alarm3Reserve5.Name = "lb_Alarm3Reserve5"; + this.lb_Alarm3Reserve5.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve5.TabIndex = 8; + this.lb_Alarm3Reserve5.Text = "Unused"; + this.lb_Alarm3Reserve5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve6 + // + this.lb_Alarm3Reserve6.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve6.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve6.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve6.Location = new System.Drawing.Point(6, 217); + this.lb_Alarm3Reserve6.Name = "lb_Alarm3Reserve6"; + this.lb_Alarm3Reserve6.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve6.TabIndex = 9; + this.lb_Alarm3Reserve6.Text = "Unused"; + this.lb_Alarm3Reserve6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve7 + // + this.lb_Alarm3Reserve7.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve7.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve7.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve7.Location = new System.Drawing.Point(6, 250); + this.lb_Alarm3Reserve7.Name = "lb_Alarm3Reserve7"; + this.lb_Alarm3Reserve7.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve7.TabIndex = 10; + this.lb_Alarm3Reserve7.Text = "Unused"; + this.lb_Alarm3Reserve7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve8 + // + this.lb_Alarm3Reserve8.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve8.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve8.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve8.Location = new System.Drawing.Point(6, 283); + this.lb_Alarm3Reserve8.Name = "lb_Alarm3Reserve8"; + this.lb_Alarm3Reserve8.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve8.TabIndex = 11; + this.lb_Alarm3Reserve8.Text = "Unused"; + this.lb_Alarm3Reserve8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve9 + // + this.lb_Alarm3Reserve9.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve9.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve9.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve9.Location = new System.Drawing.Point(6, 316); + this.lb_Alarm3Reserve9.Name = "lb_Alarm3Reserve9"; + this.lb_Alarm3Reserve9.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve9.TabIndex = 12; + this.lb_Alarm3Reserve9.Text = "Unused"; + this.lb_Alarm3Reserve9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve10 + // + this.lb_Alarm3Reserve10.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve10.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve10.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve10.Location = new System.Drawing.Point(6, 349); + this.lb_Alarm3Reserve10.Name = "lb_Alarm3Reserve10"; + this.lb_Alarm3Reserve10.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve10.TabIndex = 5; + this.lb_Alarm3Reserve10.Text = "Unused"; + this.lb_Alarm3Reserve10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_WaterLeakage + // + this.lb_WaterLeakage.BackColor = System.Drawing.Color.Red; + this.lb_WaterLeakage.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_WaterLeakage.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_WaterLeakage.ForeColor = System.Drawing.Color.Black; + this.lb_WaterLeakage.Location = new System.Drawing.Point(6, 19); + this.lb_WaterLeakage.Name = "lb_WaterLeakage"; + this.lb_WaterLeakage.Size = new System.Drawing.Size(243, 32); + this.lb_WaterLeakage.TabIndex = 4; + this.lb_WaterLeakage.Text = "Water leakage"; + this.lb_WaterLeakage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve11 + // + this.lb_Alarm3Reserve11.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve11.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve11.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve11.Location = new System.Drawing.Point(6, 382); + this.lb_Alarm3Reserve11.Name = "lb_Alarm3Reserve11"; + this.lb_Alarm3Reserve11.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve11.TabIndex = 4; + this.lb_Alarm3Reserve11.Text = "Unused"; + this.lb_Alarm3Reserve11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ElectricResistivityConductivityLevelRise + // + this.lb_ElectricResistivityConductivityLevelRise.BackColor = System.Drawing.Color.Red; + this.lb_ElectricResistivityConductivityLevelRise.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ElectricResistivityConductivityLevelRise.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ElectricResistivityConductivityLevelRise.ForeColor = System.Drawing.Color.Black; + this.lb_ElectricResistivityConductivityLevelRise.Location = new System.Drawing.Point(6, 52); + this.lb_ElectricResistivityConductivityLevelRise.Name = "lb_ElectricResistivityConductivityLevelRise"; + this.lb_ElectricResistivityConductivityLevelRise.Size = new System.Drawing.Size(243, 32); + this.lb_ElectricResistivityConductivityLevelRise.TabIndex = 4; + this.lb_ElectricResistivityConductivityLevelRise.Text = "Electric resistivity/conductivity level rise"; + this.lb_ElectricResistivityConductivityLevelRise.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ElectricResistivityConductivitySensorError + // + this.lb_ElectricResistivityConductivitySensorError.BackColor = System.Drawing.Color.Red; + this.lb_ElectricResistivityConductivitySensorError.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ElectricResistivityConductivitySensorError.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ElectricResistivityConductivitySensorError.ForeColor = System.Drawing.Color.Black; + this.lb_ElectricResistivityConductivitySensorError.Location = new System.Drawing.Point(6, 118); + this.lb_ElectricResistivityConductivitySensorError.Name = "lb_ElectricResistivityConductivitySensorError"; + this.lb_ElectricResistivityConductivitySensorError.Size = new System.Drawing.Size(243, 32); + this.lb_ElectricResistivityConductivitySensorError.TabIndex = 4; + this.lb_ElectricResistivityConductivitySensorError.Text = "Electric resistivity/conductivity sensor error"; + this.lb_ElectricResistivityConductivitySensorError.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve13 + // + this.lb_Alarm3Reserve13.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve13.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve13.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve13.Location = new System.Drawing.Point(6, 448); + this.lb_Alarm3Reserve13.Name = "lb_Alarm3Reserve13"; + this.lb_Alarm3Reserve13.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve13.TabIndex = 4; + this.lb_Alarm3Reserve13.Text = "Unused"; + this.lb_Alarm3Reserve13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Alarm3Reserve14 + // + this.lb_Alarm3Reserve14.BackColor = System.Drawing.Color.Red; + this.lb_Alarm3Reserve14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Alarm3Reserve14.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Alarm3Reserve14.ForeColor = System.Drawing.Color.Black; + this.lb_Alarm3Reserve14.Location = new System.Drawing.Point(6, 481); + this.lb_Alarm3Reserve14.Name = "lb_Alarm3Reserve14"; + this.lb_Alarm3Reserve14.Size = new System.Drawing.Size(243, 32); + this.lb_Alarm3Reserve14.TabIndex = 4; + this.lb_Alarm3Reserve14.Text = "Unused"; + this.lb_Alarm3Reserve14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ElectricResistivityConductivityLevelDrop + // + this.lb_ElectricResistivityConductivityLevelDrop.BackColor = System.Drawing.Color.Red; + this.lb_ElectricResistivityConductivityLevelDrop.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ElectricResistivityConductivityLevelDrop.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ElectricResistivityConductivityLevelDrop.ForeColor = System.Drawing.Color.Black; + this.lb_ElectricResistivityConductivityLevelDrop.Location = new System.Drawing.Point(6, 85); + this.lb_ElectricResistivityConductivityLevelDrop.Name = "lb_ElectricResistivityConductivityLevelDrop"; + this.lb_ElectricResistivityConductivityLevelDrop.Size = new System.Drawing.Size(243, 32); + this.lb_ElectricResistivityConductivityLevelDrop.TabIndex = 4; + this.lb_ElectricResistivityConductivityLevelDrop.Text = "Electric resistivity/conductivity level drop"; + this.lb_ElectricResistivityConductivityLevelDrop.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label74 + // + this.label74.AutoSize = true; + this.label74.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label74.Location = new System.Drawing.Point(224, 12); + this.label74.Name = "label74"; + this.label74.Size = new System.Drawing.Size(208, 14); + this.label74.TabIndex = 15; + this.label74.Text = "Discharge temperature (�꼦)"; + // + // lb_DischargeTemperature + // + this.lb_DischargeTemperature.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_DischargeTemperature.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_DischargeTemperature.Location = new System.Drawing.Point(461, 7); + this.lb_DischargeTemperature.Name = "lb_DischargeTemperature"; + this.lb_DischargeTemperature.Size = new System.Drawing.Size(77, 23); + this.lb_DischargeTemperature.TabIndex = 16; + this.lb_DischargeTemperature.Text = "0.04"; + this.lb_DischargeTemperature.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // gb_PortStatus + // + this.gb_PortStatus.Controls.Add(this.label75); + this.gb_PortStatus.Controls.Add(this.label76); + this.gb_PortStatus.Controls.Add(this.lb_PortName); + this.gb_PortStatus.Controls.Add(this.lb_PortStatus); + this.gb_PortStatus.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_PortStatus.Location = new System.Drawing.Point(12, 12); + this.gb_PortStatus.Name = "gb_PortStatus"; + this.gb_PortStatus.Size = new System.Drawing.Size(200, 67); + this.gb_PortStatus.TabIndex = 17; + this.gb_PortStatus.TabStop = false; + this.gb_PortStatus.Text = "Port status"; + // + // label75 + // + this.label75.AutoSize = true; + this.label75.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label75.Location = new System.Drawing.Point(6, 20); + this.label75.Name = "label75"; + this.label75.Size = new System.Drawing.Size(86, 14); + this.label75.TabIndex = 11; + this.label75.Text = "Port num :"; + // + // label76 + // + this.label76.AutoSize = true; + this.label76.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label76.Location = new System.Drawing.Point(6, 44); + this.label76.Name = "label76"; + this.label76.Size = new System.Drawing.Size(93, 14); + this.label76.TabIndex = 11; + this.label76.Text = "Port state :"; + // + // lb_PortName + // + this.lb_PortName.AutoSize = true; + this.lb_PortName.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_PortName.Location = new System.Drawing.Point(102, 20); + this.lb_PortName.Name = "lb_PortName"; + this.lb_PortName.Size = new System.Drawing.Size(62, 14); + this.lb_PortName.TabIndex = 11; + this.lb_PortName.Text = "COM11"; + // + // lb_PortStatus + // + this.lb_PortStatus.AutoSize = true; + this.lb_PortStatus.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_PortStatus.Location = new System.Drawing.Point(101, 44); + this.lb_PortStatus.Name = "lb_PortStatus"; + this.lb_PortStatus.Size = new System.Drawing.Size(50, 14); + this.lb_PortStatus.TabIndex = 11; + this.lb_PortStatus.Text = "Close"; + // + // lb_DischargePressure + // + this.lb_DischargePressure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_DischargePressure.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_DischargePressure.Location = new System.Drawing.Point(461, 32); + this.lb_DischargePressure.Name = "lb_DischargePressure"; + this.lb_DischargePressure.Size = new System.Drawing.Size(77, 23); + this.lb_DischargePressure.TabIndex = 16; + this.lb_DischargePressure.Text = "0.04"; + this.lb_DischargePressure.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label78 + // + this.label78.AutoSize = true; + this.label78.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label78.Location = new System.Drawing.Point(224, 37); + this.label78.Name = "label78"; + this.label78.Size = new System.Drawing.Size(205, 14); + this.label78.TabIndex = 15; + this.label78.Text = "Discharge pressure (MPA)"; + // + // lb_ElectricResistivity + // + this.lb_ElectricResistivity.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ElectricResistivity.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ElectricResistivity.Location = new System.Drawing.Point(461, 57); + this.lb_ElectricResistivity.Name = "lb_ElectricResistivity"; + this.lb_ElectricResistivity.Size = new System.Drawing.Size(77, 23); + this.lb_ElectricResistivity.TabIndex = 16; + this.lb_ElectricResistivity.Text = "0.04"; + this.lb_ElectricResistivity.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label80 + // + this.label80.AutoSize = true; + this.label80.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label80.Location = new System.Drawing.Point(224, 62); + this.label80.Name = "label80"; + this.label80.Size = new System.Drawing.Size(175, 14); + this.label80.TabIndex = 15; + this.label80.Text = "Electric resistivity (�뢾)"; + // + // lb_CirculatingFluidSetTemperature + // + this.lb_CirculatingFluidSetTemperature.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CirculatingFluidSetTemperature.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_CirculatingFluidSetTemperature.Location = new System.Drawing.Point(719, 7); + this.lb_CirculatingFluidSetTemperature.Name = "lb_CirculatingFluidSetTemperature"; + this.lb_CirculatingFluidSetTemperature.Size = new System.Drawing.Size(77, 23); + this.lb_CirculatingFluidSetTemperature.TabIndex = 16; + this.lb_CirculatingFluidSetTemperature.Text = "0.04"; + this.lb_CirculatingFluidSetTemperature.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lb_SetTemperature + // + this.lb_SetTemperature.AutoSize = true; + this.lb_SetTemperature.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_SetTemperature.Location = new System.Drawing.Point(554, 12); + this.lb_SetTemperature.Name = "lb_SetTemperature"; + this.lb_SetTemperature.Size = new System.Drawing.Size(159, 14); + this.lb_SetTemperature.TabIndex = 15; + this.lb_SetTemperature.Text = "Set temperature (�꼦)"; + // + // btn_Run + // + this.btn_Run.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_Run.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_Run.Location = new System.Drawing.Point(1234, 1); + this.btn_Run.Name = "btn_Run"; + this.btn_Run.Size = new System.Drawing.Size(77, 34); + this.btn_Run.TabIndex = 19; + this.btn_Run.Text = "Run"; + this.btn_Run.UseVisualStyleBackColor = true; + this.btn_Run.Click += new System.EventHandler(this.btn_Run_Click); + // + // btn_Stop + // + this.btn_Stop.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_Stop.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_Stop.Location = new System.Drawing.Point(1234, 40); + this.btn_Stop.Name = "btn_Stop"; + this.btn_Stop.Size = new System.Drawing.Size(77, 34); + this.btn_Stop.TabIndex = 19; + this.btn_Stop.Text = "Stop"; + this.btn_Stop.UseVisualStyleBackColor = true; + this.btn_Stop.Click += new System.EventHandler(this.btn_Stop_Click); + // + // ChillerViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1318, 647); + this.Controls.Add(this.btn_Stop); + this.Controls.Add(this.btn_Run); + this.Controls.Add(this.gb_PortStatus); + this.Controls.Add(this.lb_SetTemperature); + this.Controls.Add(this.lb_CirculatingFluidSetTemperature); + this.Controls.Add(this.label80); + this.Controls.Add(this.lb_ElectricResistivity); + this.Controls.Add(this.label78); + this.Controls.Add(this.lb_DischargePressure); + this.Controls.Add(this.label74); + this.Controls.Add(this.lb_DischargeTemperature); + this.Controls.Add(this.groupBox4); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.gb_General_alarms); + this.Name = "ChillerViewer"; + this.Text = "ChillerViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ChillerViewer_FormClosing); + this.gb_General_alarms.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.groupBox4.ResumeLayout(false); + this.gb_PortStatus.ResumeLayout(false); + this.gb_PortStatus.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.GroupBox gb_General_alarms; + private System.Windows.Forms.Label lb_AutomaticFluidFillingFlag; + private System.Windows.Forms.Label lb_Status1Reserve8; + private System.Windows.Forms.Label lb_AntiFreezingFlag; + private System.Windows.Forms.Label lb_CompletionOfPreparationFlag; + private System.Windows.Forms.Label lb_RunTimerFlag; + private System.Windows.Forms.Label lb_ResetAfterPowerFailureFlag; + private System.Windows.Forms.Label lb_TemperatureUnitFlag; + private System.Windows.Forms.Label lb_StopTimerFlag; + private System.Windows.Forms.Label lb_Status1Reserve7; + private System.Windows.Forms.Label lb_RunFlag; + private System.Windows.Forms.Label lb_Status1Reserve6; + private System.Windows.Forms.Label lb_OperationStopAlarmFlag; + private System.Windows.Forms.Label lb_Status1Reserve3; + private System.Windows.Forms.Label lb_RemoteStatusFlag; + private System.Windows.Forms.Label lb_OperationContinuedAlarmFlag; + private System.Windows.Forms.Label lb_PressUnitFlag; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label lb_Status2Reserve15; + private System.Windows.Forms.Label lb_Status2Reserve8; + private System.Windows.Forms.Label lb_Status2Reserve14; + private System.Windows.Forms.Label lb_Status2Reserve9; + private System.Windows.Forms.Label lb_Status2Reserve11; + private System.Windows.Forms.Label lb_Status2Reserve13; + private System.Windows.Forms.Label lb_Status2Reserve10; + private System.Windows.Forms.Label lb_Status2Reserve12; + private System.Windows.Forms.Label lb_Status2Reserve7; + private System.Windows.Forms.Label lb_ElectricResistivityConductivitySettingFlag1; + private System.Windows.Forms.Label lb_Status2Reserve6; + private System.Windows.Forms.Label lb_ElectricResistivityConductivitySettingFlag2; + private System.Windows.Forms.Label lb_Status2Reserve3; + private System.Windows.Forms.Label lb_Status2Reserve5; + private System.Windows.Forms.Label lb_Status2Reserve2; + private System.Windows.Forms.Label lb_Status2Reserve4; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Label lb_RefrigerantCircuitLowPressureRise; + private System.Windows.Forms.Label lb_CirculatingFluidDischargePressureDrop; + private System.Windows.Forms.Label lb_RefrigerantCircuitHighPressureDrop; + private System.Windows.Forms.Label lb_HighCompressorIntakeTemp; + private System.Windows.Forms.Label lb_LowSuperHeatTemperature; + private System.Windows.Forms.Label lb_Alarm1Reserve13; + private System.Windows.Forms.Label lb_LowCompressorIntakeTemp; + private System.Windows.Forms.Label lb_HighCompressorDischargePressure; + private System.Windows.Forms.Label lb_CirculatingFluidDischargePressureRise; + private System.Windows.Forms.Label lb_LowLevelInTank; + private System.Windows.Forms.Label lb_AbnormalPumpOperation; + private System.Windows.Forms.Label lb_HighCirculatingFluidDischargeTemp; + private System.Windows.Forms.Label lb_CirculatingFluidDischargeTemp; + private System.Windows.Forms.Label lb_HighCirculatingFluidDischargePressure; + private System.Windows.Forms.Label lb_CirculatingFluidDischargeTempRise; + private System.Windows.Forms.Label lb_HighCirculatingFluidReturnTemp; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Label lb_ContactInput2SignalDetectionAlarm; + private System.Windows.Forms.Label lb_CirculatingFluidDischargePressureSensorFailure; + private System.Windows.Forms.Label lb_ContactInput1SignalDetectionAlarm; + private System.Windows.Forms.Label lb_CompressorDischargePressureSensorFailure; + private System.Windows.Forms.Label lb_MaintenanceOfPump; + private System.Windows.Forms.Label lb_MaintenanceOfCompressor; + private System.Windows.Forms.Label lb_CompressorIntankPressureSensorFailure; + private System.Windows.Forms.Label lb_MaintenanceOfFanMotor; + private System.Windows.Forms.Label lb_CompressorIntankTempSensorFailure; + private System.Windows.Forms.Label lb_RefrigerantCircuitLowPressureDrop; + private System.Windows.Forms.Label lb_CirculatingFluidReturnTempSensorFailure; + private System.Windows.Forms.Label lb_CompressorOverload; + private System.Windows.Forms.Label lb_MemoryError; + private System.Windows.Forms.Label lb_CirculatingFluidDischargeTempSensorFailure; + private System.Windows.Forms.Label lb_CommunicationError; + private System.Windows.Forms.Label lb_DcLineFuseCut; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.Label lb_Alarm3Reserve15; + private System.Windows.Forms.Label lb_Alarm3Reserve12; + private System.Windows.Forms.Label lb_Alarm3Reserve4; + private System.Windows.Forms.Label lb_Alarm3Reserve5; + private System.Windows.Forms.Label lb_Alarm3Reserve6; + private System.Windows.Forms.Label lb_Alarm3Reserve7; + private System.Windows.Forms.Label lb_Alarm3Reserve8; + private System.Windows.Forms.Label lb_Alarm3Reserve9; + private System.Windows.Forms.Label lb_Alarm3Reserve10; + private System.Windows.Forms.Label lb_WaterLeakage; + private System.Windows.Forms.Label lb_Alarm3Reserve11; + private System.Windows.Forms.Label lb_ElectricResistivityConductivityLevelRise; + private System.Windows.Forms.Label lb_ElectricResistivityConductivitySensorError; + private System.Windows.Forms.Label lb_Alarm3Reserve13; + private System.Windows.Forms.Label lb_ElectricResistivityConductivityLevelDrop; + private System.Windows.Forms.Label lb_Alarm3Reserve14; + private System.Windows.Forms.Label label74; + private System.Windows.Forms.Label lb_DischargeTemperature; + private System.Windows.Forms.GroupBox gb_PortStatus; + private System.Windows.Forms.Label label75; + private System.Windows.Forms.Label label76; + private System.Windows.Forms.Label lb_PortName; + private System.Windows.Forms.Label lb_PortStatus; + private System.Windows.Forms.Label lb_DischargePressure; + private System.Windows.Forms.Label label78; + private System.Windows.Forms.Label lb_ElectricResistivity; + private System.Windows.Forms.Label label80; + private System.Windows.Forms.Label lb_CirculatingFluidSetTemperature; + private System.Windows.Forms.Label lb_SetTemperature; + private System.Windows.Forms.Button btn_Run; + private System.Windows.Forms.Button btn_Stop; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.cs new file mode 100644 index 0000000..718d13e --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.cs @@ -0,0 +1,243 @@ +癤퓎sing SA_LTT; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class ChillerViewer : Form + { + MainFrame _mainFrame; + Thread t_UIUpdate; + + bool updateCheck; + + private Label[] _status1Values = new Label[16]; + private Label[] _status2Values = new Label[16]; + private Label[] _alarm1Values = new Label[16]; + private Label[] _alarm2Values = new Label[16]; + private Label[] _alarm3Values = new Label[16]; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public ChillerViewer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + InitializeLabelList(); + + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + private void InitializeLabelList() + { + _status1Values[0] = lb_RunFlag; + _status1Values[1] = lb_OperationStopAlarmFlag; + _status1Values[2] = lb_OperationContinuedAlarmFlag; + _status1Values[3] = lb_Status1Reserve3; + _status1Values[4] = lb_PressUnitFlag; + _status1Values[5] = lb_RemoteStatusFlag; + _status1Values[6] = lb_Status1Reserve6; + _status1Values[7] = lb_Status1Reserve7; + _status1Values[8] = lb_Status1Reserve8; + _status1Values[9] = lb_CompletionOfPreparationFlag; + _status1Values[10] = lb_TemperatureUnitFlag; + _status1Values[11] = lb_RunTimerFlag; + _status1Values[12] = lb_StopTimerFlag; + _status1Values[13] = lb_ResetAfterPowerFailureFlag; + _status1Values[14] = lb_AntiFreezingFlag; + _status1Values[15] = lb_AutomaticFluidFillingFlag; + + _status2Values[0] = lb_ElectricResistivityConductivitySettingFlag1; + _status2Values[1] = lb_ElectricResistivityConductivitySettingFlag2; + _status2Values[2] = lb_Status2Reserve2; + _status2Values[3] = lb_Status2Reserve3; + _status2Values[4] = lb_Status2Reserve4; + _status2Values[5] = lb_Status2Reserve5; + _status2Values[6] = lb_Status2Reserve6; + _status2Values[7] = lb_Status2Reserve7; + _status2Values[8] = lb_Status2Reserve8; + _status2Values[9] = lb_Status2Reserve9; + _status2Values[10] = lb_Status2Reserve10; + _status2Values[11] = lb_Status2Reserve11; + _status2Values[12] = lb_Status2Reserve12; + _status2Values[13] = lb_Status2Reserve13; + _status2Values[14] = lb_Status2Reserve14; + _status2Values[15] = lb_Status2Reserve15; + + _alarm1Values[0] = lb_LowLevelInTank; + _alarm1Values[1] = lb_HighCirculatingFluidDischargeTemp; + _alarm1Values[2] = lb_CirculatingFluidDischargeTempRise; + _alarm1Values[3] = lb_CirculatingFluidDischargeTemp; + _alarm1Values[4] = lb_HighCirculatingFluidReturnTemp; + _alarm1Values[5] = lb_HighCirculatingFluidDischargePressure; + _alarm1Values[6] = lb_AbnormalPumpOperation; + _alarm1Values[7] = lb_CirculatingFluidDischargePressureRise; + _alarm1Values[8] = lb_CirculatingFluidDischargePressureDrop; + _alarm1Values[9] = lb_HighCompressorIntakeTemp; + _alarm1Values[10] = lb_LowCompressorIntakeTemp; + _alarm1Values[11] = lb_LowSuperHeatTemperature; + _alarm1Values[12] = lb_HighCompressorDischargePressure; + _alarm1Values[13] = lb_Alarm1Reserve13; + _alarm1Values[14] = lb_RefrigerantCircuitHighPressureDrop; + _alarm1Values[15] = lb_RefrigerantCircuitLowPressureRise; + + _alarm2Values[0] = lb_RefrigerantCircuitLowPressureDrop; + _alarm2Values[1] = lb_CompressorOverload; + _alarm2Values[2] = lb_CommunicationError; + _alarm2Values[3] = lb_MemoryError; + _alarm2Values[4] = lb_DcLineFuseCut; + _alarm2Values[5] = lb_CirculatingFluidDischargeTempSensorFailure; + _alarm2Values[6] = lb_CirculatingFluidReturnTempSensorFailure; + _alarm2Values[7] = lb_CompressorIntankTempSensorFailure; + _alarm2Values[8] = lb_CirculatingFluidDischargePressureSensorFailure; + _alarm2Values[9] = lb_CompressorDischargePressureSensorFailure; + _alarm2Values[10] = lb_CompressorIntankPressureSensorFailure; + _alarm2Values[11] = lb_MaintenanceOfPump; + _alarm2Values[12] = lb_MaintenanceOfFanMotor; + _alarm2Values[13] = lb_MaintenanceOfCompressor; + _alarm2Values[14] = lb_ContactInput1SignalDetectionAlarm; + _alarm2Values[15] = lb_ContactInput2SignalDetectionAlarm; + + _alarm3Values[0] = lb_WaterLeakage; + _alarm3Values[1] = lb_ElectricResistivityConductivityLevelRise; + _alarm3Values[2] = lb_ElectricResistivityConductivityLevelDrop; + _alarm3Values[3] = lb_ElectricResistivityConductivitySensorError; + _alarm3Values[4] = lb_Alarm3Reserve4; + _alarm3Values[5] = lb_Alarm3Reserve5; + _alarm3Values[6] = lb_Alarm3Reserve6; + _alarm3Values[7] = lb_Alarm3Reserve7; + _alarm3Values[8] = lb_Alarm3Reserve8; + _alarm3Values[9] = lb_Alarm3Reserve9; + _alarm3Values[10] = lb_Alarm3Reserve10; + _alarm3Values[11] = lb_Alarm3Reserve11; + _alarm3Values[12] = lb_Alarm3Reserve12; + _alarm3Values[13] = lb_Alarm3Reserve13; + _alarm3Values[14] = lb_Alarm3Reserve14; + _alarm3Values[15] = lb_Alarm3Reserve15; + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + lb_PortName.Text = _mainFrame.equipment.chiller.PortName; + lb_PortStatus.Text = _mainFrame.equipment.chiller.IsOpen ? "Open" : "Close"; + + lb_DischargeTemperature.Text = _mainFrame.equipment.chiller.CirculatingFluidDischargeTemperature.ToString(); + lb_DischargePressure.Text = _mainFrame.equipment.chiller.CirculatingFluidDischargePressure.ToString(); + lb_ElectricResistivity.Text = _mainFrame.equipment.chiller.ElectricResistivity.ToString(); + lb_CirculatingFluidSetTemperature.Text = _mainFrame.equipment.chiller.CirculatingFluidSetTemperature.ToString(); + + UpdateStatus1(); + UpdateStatus2(); + UpdateAlarm1(); + UpdateAlarm2(); + UpdateAlarm3(); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void ChillerViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void UpdateStatus1() + { + for(int i = 0; i < 16; i++) + { + _status1Values[i].BackColor = _mainFrame.equipment.chiller.statusFlag1.Datas[i] ? Color.Lime : Color.Red; + } + } + + private void UpdateStatus2() + { + for (int i = 0; i < 16; i++) + { + _status2Values[i].BackColor = _mainFrame.equipment.chiller.statusFlag2.Datas[i] ? Color.Lime : Color.Red; + } + } + + private void UpdateAlarm1() + { + for (int i = 0; i < 16; i++) + { + _alarm1Values[i].BackColor = _mainFrame.equipment.chiller.alarmFlag1.Datas[i] ? Color.Lime : Color.Red; + } + } + private void UpdateAlarm2() + { + for (int i = 0; i < 16; i++) + { + _alarm2Values[i].BackColor = _mainFrame.equipment.chiller.alarmFlag2.Datas[i] ? Color.Lime : Color.Red; + } + } + private void UpdateAlarm3() + { + for (int i = 0; i < 16; i++) + { + _alarm3Values[i].BackColor = _mainFrame.equipment.chiller.alarmFlag3.Datas[i] ? Color.Lime : Color.Red; + } + } + + private void btn_Run_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.chiller.Run(); + } + + private void btn_Stop_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.chiller.Stop(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.Designer.cs new file mode 100644 index 0000000..344f43f --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.Designer.cs @@ -0,0 +1,146 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class CreateUserViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.btn_Ok = new System.Windows.Forms.Button(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.tb_Name = new System.Windows.Forms.TextBox(); + this.tb_Password = new System.Windows.Forms.TextBox(); + this.cbb_Level = new System.Windows.Forms.ComboBox(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(29, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(39, 12); + this.label1.TabIndex = 0; + this.label1.Text = "Name"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(29, 62); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(62, 12); + this.label2.TabIndex = 0; + this.label2.Text = "Password"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(29, 107); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(35, 12); + this.label3.TabIndex = 0; + this.label3.Text = "Level"; + // + // btn_Ok + // + this.btn_Ok.Location = new System.Drawing.Point(172, 148); + this.btn_Ok.Name = "btn_Ok"; + this.btn_Ok.Size = new System.Drawing.Size(79, 38); + this.btn_Ok.TabIndex = 4; + this.btn_Ok.Text = "OK"; + this.btn_Ok.UseVisualStyleBackColor = true; + this.btn_Ok.Click += new System.EventHandler(this.btn_Ok_Click); + // + // btn_Cancel + // + this.btn_Cancel.Location = new System.Drawing.Point(68, 148); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(79, 38); + this.btn_Cancel.TabIndex = 5; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); + // + // tb_Name + // + this.tb_Name.Location = new System.Drawing.Point(113, 12); + this.tb_Name.Name = "tb_Name"; + this.tb_Name.Size = new System.Drawing.Size(169, 21); + this.tb_Name.TabIndex = 1; + // + // tb_Password + // + this.tb_Password.Location = new System.Drawing.Point(113, 58); + this.tb_Password.Name = "tb_Password"; + this.tb_Password.PasswordChar = '*'; + this.tb_Password.Size = new System.Drawing.Size(169, 21); + this.tb_Password.TabIndex = 2; + this.tb_Password.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tb_Password_MouseDown); + this.tb_Password.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tb_Password_MouseUp); + // + // cbb_Level + // + this.cbb_Level.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_Level.FormattingEnabled = true; + this.cbb_Level.Location = new System.Drawing.Point(113, 104); + this.cbb_Level.Name = "cbb_Level"; + this.cbb_Level.Size = new System.Drawing.Size(169, 20); + this.cbb_Level.TabIndex = 3; + // + // CreateUserViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(322, 198); + this.Controls.Add(this.cbb_Level); + this.Controls.Add(this.tb_Password); + this.Controls.Add(this.tb_Name); + this.Controls.Add(this.btn_Cancel); + this.Controls.Add(this.btn_Ok); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Name = "CreateUserViewer"; + this.Text = "Create User"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Button btn_Ok; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.TextBox tb_Name; + private System.Windows.Forms.TextBox tb_Password; + private System.Windows.Forms.ComboBox cbb_Level; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.cs new file mode 100644 index 0000000..58982bb --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.cs @@ -0,0 +1,90 @@ +癤퓎sing SA_LTT.UserInfo; +using System; +using System.Windows.Forms; +using System.Linq; + +namespace SA_LTT_UI.Viewer +{ + public partial class CreateUserViewer : Form + { + MainFrame _mainFrame; + + public User user = new User(); + + public CreateUserViewer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + + Initialize(); + } + + private void Initialize() + { + foreach(UserLevel level in Enum.GetValues(typeof(UserLevel))) + { + if (level > _mainFrame.equipment.User.Level) + break; + + cbb_Level.Items.Add(level.ToString()); + } + + cbb_Level.SelectedIndex = 0; + } + + private void tb_Password_MouseDown(object sender, MouseEventArgs e) + { + tb_Password.PasswordChar = '\0'; + } + + private void tb_Password_MouseUp(object sender, MouseEventArgs e) + { + tb_Password.PasswordChar = '*'; + } + + private void btn_Ok_Click(object sender, EventArgs e) + { + if (tb_Name.Text == string.Empty || tb_Password.Text == string.Empty || tb_Name.Text.Contains(" ") || tb_Password.Text.Contains(" ")) + { + MessageBox.Show("怨듬갚�� �엯�젰�븷 �닔 �뾾�뒿�땲�떎."); + return; + } + + if (_mainFrame.equipment.userManager.ExistsUser(tb_Name.Text) == false) + { + UserLevel _level; + Enum.TryParse(cbb_Level.Text, out _level); + + user.Name = tb_Name.Text; + user.Password = tb_Password.Text; + user.Level = _level; + + char[] nameExceptList = new char[] { '\\', '/', ':', '*', '?', '"', '<', '>', '|' }; + + foreach (char exceptChar in nameExceptList) + { + if (user.Name.Contains(exceptChar)) + { + MessageBoxPad messageBox = new MessageBoxPad("�뙆�씪 �씠由꾩뿉�뒗 �떎�쓬 臾몄옄瑜� �궗�슜�븷 �닔 �뾾�뒿�땲�떎. \r\n \\ / : * ? \" < > | "); + messageBox.Show(); + return; + } + } + + this.DialogResult = DialogResult.OK; + this.Close(); + } + else + { + MessageBox.Show("�씠誘� 議댁옱�븯�뒗 �씠由꾩엯�땲�떎."); + } + } + + private void btn_Cancel_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + this.Close(); + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.Designer.cs new file mode 100644 index 0000000..fd1a359 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.Designer.cs @@ -0,0 +1,775 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class EnergyDropCheckViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend(); + System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series(); + this.label41 = new System.Windows.Forms.Label(); + this.label30 = new System.Windows.Forms.Label(); + this.lb_PowerMeterPositionMove = new System.Windows.Forms.Label(); + this.label38 = new System.Windows.Forms.Label(); + this.lb_PowerMeterInitialize = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.lb_Complete = new System.Windows.Forms.Label(); + this.lb_CenterPositionMove = new System.Windows.Forms.Label(); + this.lb_AttenuatorSet = new System.Windows.Forms.Label(); + this.label36 = new System.Windows.Forms.Label(); + this.lb_PowerMeasure = new System.Windows.Forms.Label(); + this.lb_LaserOn = new System.Windows.Forms.Label(); + this.label32 = new System.Windows.Forms.Label(); + this.lb_LaserOff = new System.Windows.Forms.Label(); + this.label34 = new System.Windows.Forms.Label(); + this.label59 = new System.Windows.Forms.Label(); + this.label58 = new System.Windows.Forms.Label(); + this.label57 = new System.Windows.Forms.Label(); + this.label60 = new System.Windows.Forms.Label(); + this.label55 = new System.Windows.Forms.Label(); + this.label54 = new System.Windows.Forms.Label(); + this.label53 = new System.Windows.Forms.Label(); + this.chart_EnergyMeasure = new System.Windows.Forms.DataVisualization.Charting.Chart(); + this.label26 = new System.Windows.Forms.Label(); + this.label25 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_Min = new System.Windows.Forms.TextBox(); + this.label23 = new System.Windows.Forms.Label(); + this.tb_Max = new System.Windows.Forms.TextBox(); + this.label22 = new System.Windows.Forms.Label(); + this.tb_Average = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); + this.tb_Count = new System.Windows.Forms.TextBox(); + this.label24 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.tb_Power = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tb_TargetEnergyMin = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.tb_TargetAngle = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.btn_Start = new System.Windows.Forms.Button(); + this.btn_Stop = new System.Windows.Forms.Button(); + this.btn_Close = new System.Windows.Forms.Button(); + this.tb_TargetEnergyMax = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.tb_CalDTime = new System.Windows.Forms.TextBox(); + this.tb_LastCalTime = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.chart_EnergyMeasure)).BeginInit(); + this.SuspendLayout(); + // + // label41 + // + this.label41.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label41.Location = new System.Drawing.Point(58, 139); + this.label41.Name = "label41"; + this.label41.Size = new System.Drawing.Size(186, 40); + this.label41.TabIndex = 83; + this.label41.Text = "Power meter position move"; + this.label41.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label30 + // + this.label30.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label30.Location = new System.Drawing.Point(58, 204); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(186, 40); + this.label30.TabIndex = 71; + this.label30.Text = "Attenuator set"; + this.label30.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PowerMeterPositionMove + // + this.lb_PowerMeterPositionMove.BackColor = System.Drawing.Color.Green; + this.lb_PowerMeterPositionMove.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerMeterPositionMove.Location = new System.Drawing.Point(12, 139); + this.lb_PowerMeterPositionMove.Name = "lb_PowerMeterPositionMove"; + this.lb_PowerMeterPositionMove.Size = new System.Drawing.Size(40, 40); + this.lb_PowerMeterPositionMove.TabIndex = 81; + this.lb_PowerMeterPositionMove.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label38 + // + this.label38.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label38.Location = new System.Drawing.Point(58, 464); + this.label38.Name = "label38"; + this.label38.Size = new System.Drawing.Size(186, 40); + this.label38.TabIndex = 79; + this.label38.Text = "Measure complete"; + this.label38.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PowerMeterInitialize + // + this.lb_PowerMeterInitialize.BackColor = System.Drawing.Color.Green; + this.lb_PowerMeterInitialize.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerMeterInitialize.Location = new System.Drawing.Point(12, 9); + this.lb_PowerMeterInitialize.Name = "lb_PowerMeterInitialize"; + this.lb_PowerMeterInitialize.Size = new System.Drawing.Size(40, 40); + this.lb_PowerMeterInitialize.TabIndex = 68; + this.lb_PowerMeterInitialize.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label18 + // + this.label18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label18.Location = new System.Drawing.Point(58, 74); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(186, 40); + this.label18.TabIndex = 82; + this.label18.Text = "Center position move"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label19 + // + this.label19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label19.Location = new System.Drawing.Point(58, 9); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(186, 40); + this.label19.TabIndex = 69; + this.label19.Text = "Power meter initialize"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Complete + // + this.lb_Complete.BackColor = System.Drawing.Color.Green; + this.lb_Complete.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Complete.Location = new System.Drawing.Point(12, 464); + this.lb_Complete.Name = "lb_Complete"; + this.lb_Complete.Size = new System.Drawing.Size(40, 40); + this.lb_Complete.TabIndex = 78; + this.lb_Complete.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_CenterPositionMove + // + this.lb_CenterPositionMove.BackColor = System.Drawing.Color.Green; + this.lb_CenterPositionMove.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_CenterPositionMove.Location = new System.Drawing.Point(12, 74); + this.lb_CenterPositionMove.Name = "lb_CenterPositionMove"; + this.lb_CenterPositionMove.Size = new System.Drawing.Size(40, 40); + this.lb_CenterPositionMove.TabIndex = 80; + this.lb_CenterPositionMove.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_AttenuatorSet + // + this.lb_AttenuatorSet.BackColor = System.Drawing.Color.Green; + this.lb_AttenuatorSet.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_AttenuatorSet.Location = new System.Drawing.Point(12, 204); + this.lb_AttenuatorSet.Name = "lb_AttenuatorSet"; + this.lb_AttenuatorSet.Size = new System.Drawing.Size(40, 40); + this.lb_AttenuatorSet.TabIndex = 70; + this.lb_AttenuatorSet.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label36 + // + this.label36.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label36.Location = new System.Drawing.Point(58, 269); + this.label36.Name = "label36"; + this.label36.Size = new System.Drawing.Size(186, 40); + this.label36.TabIndex = 77; + this.label36.Text = "Laser on"; + this.label36.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PowerMeasure + // + this.lb_PowerMeasure.BackColor = System.Drawing.Color.Green; + this.lb_PowerMeasure.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerMeasure.Location = new System.Drawing.Point(12, 334); + this.lb_PowerMeasure.Name = "lb_PowerMeasure"; + this.lb_PowerMeasure.Size = new System.Drawing.Size(40, 40); + this.lb_PowerMeasure.TabIndex = 72; + this.lb_PowerMeasure.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LaserOn + // + this.lb_LaserOn.BackColor = System.Drawing.Color.Green; + this.lb_LaserOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LaserOn.Location = new System.Drawing.Point(12, 269); + this.lb_LaserOn.Name = "lb_LaserOn"; + this.lb_LaserOn.Size = new System.Drawing.Size(40, 40); + this.lb_LaserOn.TabIndex = 76; + this.lb_LaserOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label32 + // + this.label32.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label32.Location = new System.Drawing.Point(58, 334); + this.label32.Name = "label32"; + this.label32.Size = new System.Drawing.Size(186, 40); + this.label32.TabIndex = 73; + this.label32.Text = "Power measure"; + this.label32.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LaserOff + // + this.lb_LaserOff.BackColor = System.Drawing.Color.Green; + this.lb_LaserOff.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LaserOff.Location = new System.Drawing.Point(12, 399); + this.lb_LaserOff.Name = "lb_LaserOff"; + this.lb_LaserOff.Size = new System.Drawing.Size(40, 40); + this.lb_LaserOff.TabIndex = 74; + this.lb_LaserOff.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label34 + // + this.label34.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label34.Location = new System.Drawing.Point(58, 399); + this.label34.Name = "label34"; + this.label34.Size = new System.Drawing.Size(186, 40); + this.label34.TabIndex = 75; + this.label34.Text = "Laser off"; + this.label34.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label59 + // + this.label59.AutoSize = true; + this.label59.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label59.Location = new System.Drawing.Point(142, 444); + this.label59.Name = "label59"; + this.label59.Size = new System.Drawing.Size(18, 15); + this.label59.TabIndex = 66; + this.label59.Text = "�넃"; + this.label59.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label58 + // + this.label58.AutoSize = true; + this.label58.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label58.Location = new System.Drawing.Point(142, 379); + this.label58.Name = "label58"; + this.label58.Size = new System.Drawing.Size(18, 15); + this.label58.TabIndex = 65; + this.label58.Text = "�넃"; + this.label58.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label57 + // + this.label57.AutoSize = true; + this.label57.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label57.Location = new System.Drawing.Point(142, 314); + this.label57.Name = "label57"; + this.label57.Size = new System.Drawing.Size(18, 15); + this.label57.TabIndex = 64; + this.label57.Text = "�넃"; + this.label57.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label60 + // + this.label60.AutoSize = true; + this.label60.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label60.Location = new System.Drawing.Point(142, 249); + this.label60.Name = "label60"; + this.label60.Size = new System.Drawing.Size(18, 15); + this.label60.TabIndex = 63; + this.label60.Text = "�넃"; + this.label60.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label55 + // + this.label55.AutoSize = true; + this.label55.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label55.Location = new System.Drawing.Point(142, 184); + this.label55.Name = "label55"; + this.label55.Size = new System.Drawing.Size(18, 15); + this.label55.TabIndex = 62; + this.label55.Text = "�넃"; + this.label55.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label54 + // + this.label54.AutoSize = true; + this.label54.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label54.Location = new System.Drawing.Point(142, 119); + this.label54.Name = "label54"; + this.label54.Size = new System.Drawing.Size(18, 15); + this.label54.TabIndex = 67; + this.label54.Text = "�넃"; + this.label54.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label53 + // + this.label53.AutoSize = true; + this.label53.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label53.Location = new System.Drawing.Point(142, 54); + this.label53.Name = "label53"; + this.label53.Size = new System.Drawing.Size(18, 15); + this.label53.TabIndex = 61; + this.label53.Text = "�넃"; + this.label53.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // chart_EnergyMeasure + // + chartArea1.Name = "ChartArea1"; + this.chart_EnergyMeasure.ChartAreas.Add(chartArea1); + legend1.Name = "Legend1"; + this.chart_EnergyMeasure.Legends.Add(legend1); + this.chart_EnergyMeasure.Location = new System.Drawing.Point(250, 9); + this.chart_EnergyMeasure.Name = "chart_EnergyMeasure"; + series1.ChartArea = "ChartArea1"; + series1.Legend = "Legend1"; + series1.Name = "Series1"; + this.chart_EnergyMeasure.Series.Add(series1); + this.chart_EnergyMeasure.Size = new System.Drawing.Size(703, 495); + this.chart_EnergyMeasure.TabIndex = 98; + // + // label26 + // + this.label26.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label26.Font = new System.Drawing.Font("Gulim", 14F); + this.label26.Location = new System.Drawing.Point(1240, 263); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(61, 40); + this.label26.TabIndex = 97; + this.label26.Text = "J/cm짼"; + this.label26.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label25 + // + this.label25.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label25.Font = new System.Drawing.Font("Gulim", 14F); + this.label25.Location = new System.Drawing.Point(1240, 217); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(61, 40); + this.label25.TabIndex = 96; + this.label25.Text = "J/cm짼"; + this.label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label16 + // + this.label16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label16.Font = new System.Drawing.Font("Gulim", 14F); + this.label16.Location = new System.Drawing.Point(1240, 125); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(61, 40); + this.label16.TabIndex = 95; + this.label16.Text = "J/cm짼"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Font = new System.Drawing.Font("Gulim", 14F); + this.label3.Location = new System.Drawing.Point(1240, 171); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(61, 40); + this.label3.TabIndex = 94; + this.label3.Text = "J/cm짼"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Min + // + this.tb_Min.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Min.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Min.Location = new System.Drawing.Point(1103, 263); + this.tb_Min.Name = "tb_Min"; + this.tb_Min.ReadOnly = true; + this.tb_Min.Size = new System.Drawing.Size(130, 40); + this.tb_Min.TabIndex = 89; + this.tb_Min.Text = "0"; + // + // label23 + // + this.label23.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label23.Location = new System.Drawing.Point(959, 263); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(138, 40); + this.label23.TabIndex = 88; + this.label23.Text = "Min"; + this.label23.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Max + // + this.tb_Max.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Max.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Max.Location = new System.Drawing.Point(1103, 217); + this.tb_Max.Name = "tb_Max"; + this.tb_Max.ReadOnly = true; + this.tb_Max.Size = new System.Drawing.Size(130, 40); + this.tb_Max.TabIndex = 87; + this.tb_Max.Text = "0"; + // + // label22 + // + this.label22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label22.Location = new System.Drawing.Point(959, 217); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(138, 40); + this.label22.TabIndex = 86; + this.label22.Text = "Max"; + this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Average + // + this.tb_Average.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Average.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Average.Location = new System.Drawing.Point(1103, 171); + this.tb_Average.Name = "tb_Average"; + this.tb_Average.ReadOnly = true; + this.tb_Average.Size = new System.Drawing.Size(130, 40); + this.tb_Average.TabIndex = 93; + this.tb_Average.Text = "0"; + // + // label15 + // + this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label15.Location = new System.Drawing.Point(959, 171); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(138, 40); + this.label15.TabIndex = 92; + this.label15.Text = "Average"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Count + // + this.tb_Count.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Count.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Count.Location = new System.Drawing.Point(1103, 79); + this.tb_Count.Name = "tb_Count"; + this.tb_Count.ReadOnly = true; + this.tb_Count.Size = new System.Drawing.Size(130, 40); + this.tb_Count.TabIndex = 91; + this.tb_Count.Text = "0"; + // + // label24 + // + this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label24.Location = new System.Drawing.Point(959, 79); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(138, 40); + this.label24.TabIndex = 90; + this.label24.Text = "Count"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label17 + // + this.label17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label17.Location = new System.Drawing.Point(959, 125); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(138, 40); + this.label17.TabIndex = 84; + this.label17.Text = "Current Energy"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Power + // + this.tb_Power.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Power.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_Power.Location = new System.Drawing.Point(1103, 125); + this.tb_Power.Name = "tb_Power"; + this.tb_Power.ReadOnly = true; + this.tb_Power.Size = new System.Drawing.Size(130, 40); + this.tb_Power.TabIndex = 85; + this.tb_Power.Text = "0"; + // + // label1 + // + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Location = new System.Drawing.Point(958, 352); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(275, 40); + this.label1.TabIndex = 88; + this.label1.Text = "Target Energy"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_TargetEnergyMin + // + this.tb_TargetEnergyMin.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_TargetEnergyMin.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_TargetEnergyMin.Location = new System.Drawing.Point(959, 395); + this.tb_TargetEnergyMin.Name = "tb_TargetEnergyMin"; + this.tb_TargetEnergyMin.ReadOnly = true; + this.tb_TargetEnergyMin.Size = new System.Drawing.Size(109, 40); + this.tb_TargetEnergyMin.TabIndex = 89; + this.tb_TargetEnergyMin.Text = "0"; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Font = new System.Drawing.Font("Gulim", 14F); + this.label2.Location = new System.Drawing.Point(1240, 396); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(61, 40); + this.label2.TabIndex = 97; + this.label2.Text = "J/cm짼"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label4.Location = new System.Drawing.Point(959, 309); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(138, 40); + this.label4.TabIndex = 88; + this.label4.Text = "Target Angle"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_TargetAngle + // + this.tb_TargetAngle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_TargetAngle.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_TargetAngle.Location = new System.Drawing.Point(1103, 309); + this.tb_TargetAngle.Name = "tb_TargetAngle"; + this.tb_TargetAngle.ReadOnly = true; + this.tb_TargetAngle.Size = new System.Drawing.Size(130, 40); + this.tb_TargetAngle.TabIndex = 89; + this.tb_TargetAngle.Text = "0"; + // + // label5 + // + this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label5.Font = new System.Drawing.Font("Gulim", 18F); + this.label5.Location = new System.Drawing.Point(1240, 309); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(61, 40); + this.label5.TabIndex = 97; + this.label5.Text = "쨘"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Start + // + this.btn_Start.Font = new System.Drawing.Font("Gulim", 13F); + this.btn_Start.Location = new System.Drawing.Point(959, 441); + this.btn_Start.Name = "btn_Start"; + this.btn_Start.Size = new System.Drawing.Size(89, 63); + this.btn_Start.TabIndex = 99; + this.btn_Start.Text = "Start"; + this.btn_Start.UseVisualStyleBackColor = true; + this.btn_Start.Click += new System.EventHandler(this.btn_Start_Click); + // + // btn_Stop + // + this.btn_Stop.Font = new System.Drawing.Font("Gulim", 13F); + this.btn_Stop.Location = new System.Drawing.Point(1054, 442); + this.btn_Stop.Name = "btn_Stop"; + this.btn_Stop.Size = new System.Drawing.Size(89, 63); + this.btn_Stop.TabIndex = 99; + this.btn_Stop.Text = "Stop"; + this.btn_Stop.UseVisualStyleBackColor = true; + this.btn_Stop.Click += new System.EventHandler(this.btn_Stop_Click); + // + // btn_Close + // + this.btn_Close.Font = new System.Drawing.Font("Gulim", 13F); + this.btn_Close.Location = new System.Drawing.Point(1212, 442); + this.btn_Close.Name = "btn_Close"; + this.btn_Close.Size = new System.Drawing.Size(89, 63); + this.btn_Close.TabIndex = 99; + this.btn_Close.Text = "Close"; + this.btn_Close.UseVisualStyleBackColor = true; + this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click); + // + // tb_TargetEnergyMax + // + this.tb_TargetEnergyMax.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_TargetEnergyMax.Font = new System.Drawing.Font("Gulim", 21F); + this.tb_TargetEnergyMax.Location = new System.Drawing.Point(1124, 396); + this.tb_TargetEnergyMax.Name = "tb_TargetEnergyMax"; + this.tb_TargetEnergyMax.ReadOnly = true; + this.tb_TargetEnergyMax.Size = new System.Drawing.Size(109, 40); + this.tb_TargetEnergyMax.TabIndex = 89; + this.tb_TargetEnergyMax.Text = "0"; + // + // label6 + // + this.label6.Location = new System.Drawing.Point(1074, 396); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(44, 40); + this.label6.TabIndex = 88; + this.label6.Text = "~"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_CalDTime + // + this.tb_CalDTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_CalDTime.Font = new System.Drawing.Font("Gulim", 14F); + this.tb_CalDTime.Location = new System.Drawing.Point(1103, 44); + this.tb_CalDTime.Name = "tb_CalDTime"; + this.tb_CalDTime.ReadOnly = true; + this.tb_CalDTime.Size = new System.Drawing.Size(198, 29); + this.tb_CalDTime.TabIndex = 106; + this.tb_CalDTime.Text = "13 15:55:56"; + // + // tb_LastCalTime + // + this.tb_LastCalTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_LastCalTime.Font = new System.Drawing.Font("Gulim", 14F); + this.tb_LastCalTime.Location = new System.Drawing.Point(1103, 9); + this.tb_LastCalTime.Name = "tb_LastCalTime"; + this.tb_LastCalTime.ReadOnly = true; + this.tb_LastCalTime.Size = new System.Drawing.Size(198, 29); + this.tb_LastCalTime.TabIndex = 107; + this.tb_LastCalTime.Text = "2022-12-01 15:55:56"; + // + // label7 + // + this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label7.Location = new System.Drawing.Point(959, 44); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(138, 29); + this.label7.TabIndex = 104; + this.label7.Text = "Check D-Time"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label14 + // + this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label14.Location = new System.Drawing.Point(959, 9); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(138, 29); + this.label14.TabIndex = 105; + this.label14.Text = "Last check time"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // EnergyDropCheckViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1320, 515); + this.Controls.Add(this.tb_CalDTime); + this.Controls.Add(this.tb_LastCalTime); + this.Controls.Add(this.label7); + this.Controls.Add(this.label14); + this.Controls.Add(this.btn_Close); + this.Controls.Add(this.btn_Stop); + this.Controls.Add(this.btn_Start); + this.Controls.Add(this.chart_EnergyMeasure); + this.Controls.Add(this.label5); + this.Controls.Add(this.label2); + this.Controls.Add(this.label26); + this.Controls.Add(this.label25); + this.Controls.Add(this.label16); + this.Controls.Add(this.label3); + this.Controls.Add(this.tb_TargetAngle); + this.Controls.Add(this.label4); + this.Controls.Add(this.tb_TargetEnergyMax); + this.Controls.Add(this.tb_TargetEnergyMin); + this.Controls.Add(this.label6); + this.Controls.Add(this.label1); + this.Controls.Add(this.tb_Min); + this.Controls.Add(this.label23); + this.Controls.Add(this.tb_Max); + this.Controls.Add(this.label22); + this.Controls.Add(this.tb_Average); + this.Controls.Add(this.label15); + this.Controls.Add(this.tb_Count); + this.Controls.Add(this.label24); + this.Controls.Add(this.label17); + this.Controls.Add(this.tb_Power); + this.Controls.Add(this.label41); + this.Controls.Add(this.label30); + this.Controls.Add(this.lb_PowerMeterPositionMove); + this.Controls.Add(this.label38); + this.Controls.Add(this.lb_PowerMeterInitialize); + this.Controls.Add(this.label18); + this.Controls.Add(this.label19); + this.Controls.Add(this.lb_Complete); + this.Controls.Add(this.lb_CenterPositionMove); + this.Controls.Add(this.lb_AttenuatorSet); + this.Controls.Add(this.label36); + this.Controls.Add(this.lb_PowerMeasure); + this.Controls.Add(this.lb_LaserOn); + this.Controls.Add(this.label32); + this.Controls.Add(this.lb_LaserOff); + this.Controls.Add(this.label34); + this.Controls.Add(this.label59); + this.Controls.Add(this.label58); + this.Controls.Add(this.label57); + this.Controls.Add(this.label60); + this.Controls.Add(this.label55); + this.Controls.Add(this.label54); + this.Controls.Add(this.label53); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "EnergyDropCheckViewer"; + this.Text = "EnergyDropCheckViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.EnergyDropCheckViewer_FormClosing); + ((System.ComponentModel.ISupportInitialize)(this.chart_EnergyMeasure)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label41; + private System.Windows.Forms.Label label30; + private System.Windows.Forms.Label lb_PowerMeterPositionMove; + private System.Windows.Forms.Label label38; + private System.Windows.Forms.Label lb_PowerMeterInitialize; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Label lb_Complete; + private System.Windows.Forms.Label lb_CenterPositionMove; + private System.Windows.Forms.Label lb_AttenuatorSet; + private System.Windows.Forms.Label label36; + private System.Windows.Forms.Label lb_PowerMeasure; + private System.Windows.Forms.Label lb_LaserOn; + private System.Windows.Forms.Label label32; + private System.Windows.Forms.Label lb_LaserOff; + private System.Windows.Forms.Label label34; + private System.Windows.Forms.Label label59; + private System.Windows.Forms.Label label58; + private System.Windows.Forms.Label label57; + private System.Windows.Forms.Label label60; + private System.Windows.Forms.Label label55; + private System.Windows.Forms.Label label54; + private System.Windows.Forms.Label label53; + private System.Windows.Forms.DataVisualization.Charting.Chart chart_EnergyMeasure; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tb_Min; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.TextBox tb_Max; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.TextBox tb_Average; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.TextBox tb_Count; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.TextBox tb_Power; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox tb_TargetEnergyMin; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_TargetAngle; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Button btn_Start; + private System.Windows.Forms.Button btn_Stop; + private System.Windows.Forms.Button btn_Close; + private System.Windows.Forms.TextBox tb_TargetEnergyMax; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox tb_CalDTime; + private System.Windows.Forms.TextBox tb_LastCalTime; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label14; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.cs new file mode 100644 index 0000000..2486dcf --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.cs @@ -0,0 +1,321 @@ +癤퓎sing SA_LTT; +using SA_LTT.Module; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.DataVisualization.Charting; + +namespace SA_LTT_UI.Viewer +{ + public partial class EnergyDropCheckViewer : Form + { + MainFrame _mainFrame; + Thread t_UIUpdate; + + bool updateCheck; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public EnergyDropCheckViewer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + InitializeChart(); + + _mainFrame.equipment.powerMeter.EnergyMeasured += PowerMeter_EnergyMeasured; + + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + + private void PowerMeter_EnergyMeasured(double energy) + { + if (_mainFrame.equipment.IsEnergyDropCheckRun == false) return; + + if (_mainFrame.equipment.PmcStep != Sequence.PmcSteps.EdcMeasurement) return; + + if (InvokeRequired) + { + BeginInvoke(new EnergyMeasuredEvent(PowerMeter_EnergyMeasured), energy); + } + else + { + Series Se_MeasurementPower = chart_EnergyMeasure.Series.FindByName("MeasurementPower"); + + int i = Se_MeasurementPower.Points.Count; + double[] points = _mainFrame.equipment.powerMeter.MeasurementsEnergyPerUnitArea.ToArray(); + + for (; i < points.Length; i++) + { + double point = points[i]; + + if (point > chart_EnergyMeasure.ChartAreas[0].AxisY.Maximum) + chart_EnergyMeasure.ChartAreas[0].AxisY.Maximum = point + (point * 0.1); + + if (point < chart_EnergyMeasure.ChartAreas[0].AxisY.Minimum) + chart_EnergyMeasure.ChartAreas[0].AxisY.Minimum = point - (point * 0.1); + + Se_MeasurementPower.Points.AddXY(i, point); + } + + tb_Count.Text = $"{Se_MeasurementPower.Points.Count}"; + tb_Power.Text = $"{energy:F4}"; + tb_Average.Text = $"{_mainFrame.equipment.powerMeter.MeasurementAverageEnergyPerUnitArea:F4}"; + tb_Max.Text = $"{_mainFrame.equipment.powerMeter.MeasurementMaxEnergyPerUnitArea:F4}"; + tb_Min.Text = $"{_mainFrame.equipment.powerMeter.MeasurementMinEnergyPerUnitArea:F4}"; + } + } + + private void InitializeChart() + { + chart_EnergyMeasure.Series.Clear(); + + chart_EnergyMeasure.ChartAreas[0].AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount; + chart_EnergyMeasure.ChartAreas[0].AxisY.MajorGrid.Enabled = false; + + chart_EnergyMeasure.ChartAreas[0].AxisY.Maximum = -1; + chart_EnergyMeasure.ChartAreas[0].AxisY.Minimum = 99; + + Series Se_LeakBeamPower = chart_EnergyMeasure.Series.Add("MeasurementPower"); + Se_LeakBeamPower.ChartType = SeriesChartType.Line; + Se_LeakBeamPower.Color = Color.LightGreen; + Se_LeakBeamPower.MarkerSize = 1; + } + + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + tb_LastCalTime.Text = _mainFrame.equipment.equipmentInfo.EnergyDropCheckDate.ToString("yyyy-MM-dd HH:mm:ss"); + + DateTime energyDropCheckDateTime = _mainFrame.equipment.equipmentInfo.EnergyDropCheckDate.AddHours(_mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckCycle); + TimeSpan energyDropCheckDTime = (energyDropCheckDateTime - DateTime.Now); + + if (energyDropCheckDTime.TotalHours < 0) + { + tb_CalDTime.Text = $"-{-energyDropCheckDTime.Days} {-energyDropCheckDTime.Hours}:{-energyDropCheckDTime.Minutes}:{-energyDropCheckDTime.Seconds}"; + } + else + { + tb_CalDTime.Text = $"{energyDropCheckDTime.Days} {energyDropCheckDTime.Hours}:{energyDropCheckDTime.Minutes}:{energyDropCheckDTime.Seconds}"; + } + + double rangeValue = _mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetEnergy * _mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckErrorOccuredRange / 100; + tb_TargetEnergyMax.Text = (_mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetEnergy + rangeValue).ToString("F4"); + tb_TargetEnergyMin.Text = (_mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetEnergy - rangeValue).ToString("F4"); + tb_TargetAngle.Text = _mainFrame.equipment.settingParameterManager.SettingParameter.EnergyDropCheckTargetAngle.ToString("F3"); + + UpdateSteps(); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void UpdateSteps() + { + if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EnergyDropCheckStart) + { + lb_PowerMeterInitialize.BackColor = Color.Green; + lb_CenterPositionMove.BackColor = Color.Green; + lb_PowerMeterPositionMove.BackColor = Color.Green; + lb_AttenuatorSet.BackColor = Color.Green; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcPowerMeterInitialize) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Green; + lb_PowerMeterPositionMove.BackColor = Color.Green; + lb_AttenuatorSet.BackColor = Color.Green; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + InitializeChart(); + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcMovePowerMeterPosition) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Green; + lb_AttenuatorSet.BackColor = Color.Green; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcAttenuatorSet) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Green; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcLaserOn) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_LaserOn.BackColor = Color.Green; + lb_PowerMeasure.BackColor = Color.Green; + lb_LaserOff.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcMeasurementStart) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_LaserOn.BackColor = Color.Lime; + lb_PowerMeasure.BackColor = Color.Lime; + lb_LaserOff.BackColor = Color.Green; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EdcLaserOff) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_LaserOn.BackColor = Color.Lime; + lb_PowerMeasure.BackColor = Color.Lime; + lb_LaserOff.BackColor = Color.Lime; + lb_Complete.BackColor = Color.Green; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.EnergyDropCheckEnd) + { + lb_PowerMeterInitialize.BackColor = Color.Lime; + lb_CenterPositionMove.BackColor = Color.Lime; + lb_PowerMeterPositionMove.BackColor = Color.Lime; + lb_AttenuatorSet.BackColor = Color.Lime; + lb_LaserOn.BackColor = Color.Lime; + lb_PowerMeasure.BackColor = Color.Lime; + lb_LaserOff.BackColor = Color.Lime; + lb_Complete.BackColor = Color.Lime; + } + } + + private void btn_Close_Click(object sender, EventArgs e) + { + this.Hide(); + } + + private void btn_Start_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.ProcessStatus == SA_LTT.ProcessStatus.Idle) + { + if (_mainFrame.equipment.alarmManager.OccurredAlarms.Exists(x => x.Level == AlarmLevel.Heavy)) + { + MessageBox.Show("Alarm�씠 諛쒖깮以묒엯�땲�떎.", "�솗�씤", MessageBoxButtons.OK); + return; + } + + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd == false || _mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter == false || _mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent != _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent) + { + string message = string.Empty; + + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd == false) + { + message += "LDD媛� �떕���엳�뒿�땲�떎. \r\n"; + } + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter == false) + { + message += "Shutter媛� �떕���엳�뒿�땲�떎. \r\n"; + } + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent != _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent) + { + message += $"Set current媛� {_mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent}�씠 �븘�떃�땲�떎. \r\n \r\n"; + } + + if (MessageBox.Show(message + "吏꾪뻾 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + } + + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.equipment.ManualEnergyDropCheckStart(); + } + else + { + MessageBox.Show("Sequence ��湲� 以묒씠 �븘�떃�땲�떎."); + } + } + + private void btn_Stop_Click(object sender, EventArgs e) + { + if (SA_LTT.Sequence.PmcSteps.EnergyDropCheckStart <= _mainFrame.equipment.PmcStep && _mainFrame.equipment.PmcStep <= SA_LTT.Sequence.PmcSteps.EnergyDropCheckEnd) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _mainFrame.equipment.EnergyDropCheckStop(); + } + else + { + MessageBox.Show("Energy drop check 以묒씠 �븘�떃�땲�떎."); + } + } + + private void EnergyDropCheckViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.Designer.cs new file mode 100644 index 0000000..aa80b26 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.Designer.cs @@ -0,0 +1,114 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class EquipmentInfoViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.btn_OK = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.lb_Version = new System.Windows.Forms.Label(); + this.lb_LastUpdateDay = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // btn_OK + // + this.btn_OK.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_OK.Location = new System.Drawing.Point(320, 69); + this.btn_OK.Name = "btn_OK"; + this.btn_OK.Size = new System.Drawing.Size(78, 54); + this.btn_OK.TabIndex = 7; + this.btn_OK.Text = "�솗�씤"; + this.btn_OK.UseVisualStyleBackColor = true; + this.btn_OK.Click += new System.EventHandler(this.btn_OK_Click); + // + // label1 + // + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.label1.Location = new System.Drawing.Point(130, 12); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(268, 54); + this.label1.TabIndex = 6; + this.label1.Text = "DIT-SIC SYSTEM\r\n\r\nCopyright (C) 2022 (二�)�뵒�븘�씠�떚"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.BackgroundImage = global::SA_LTT_UI.Properties.Resources.DIT_Logo; + this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Location = new System.Drawing.Point(12, 12); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(112, 114); + this.panel1.TabIndex = 5; + // + // lb_Version + // + this.lb_Version.AutoSize = true; + this.lb_Version.Location = new System.Drawing.Point(130, 77); + this.lb_Version.Name = "lb_Version"; + this.lb_Version.Size = new System.Drawing.Size(62, 12); + this.lb_Version.TabIndex = 9; + this.lb_Version.Text = "Version - "; + // + // lb_LastUpdateDay + // + this.lb_LastUpdateDay.AutoSize = true; + this.lb_LastUpdateDay.Location = new System.Drawing.Point(132, 104); + this.lb_LastUpdateDay.Name = "lb_LastUpdateDay"; + this.lb_LastUpdateDay.Size = new System.Drawing.Size(110, 12); + this.lb_LastUpdateDay.TabIndex = 9; + this.lb_LastUpdateDay.Text = "Last update day - "; + // + // EquipmentInfoViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(410, 137); + this.Controls.Add(this.lb_LastUpdateDay); + this.Controls.Add(this.lb_Version); + this.Controls.Add(this.btn_OK); + this.Controls.Add(this.label1); + this.Controls.Add(this.panel1); + this.Name = "EquipmentInfoViewer"; + this.Text = "EquipmentInfoViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.EquipmentInfoViewer_FormClosing); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Button btn_OK; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label lb_Version; + private System.Windows.Forms.Label lb_LastUpdateDay; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.cs new file mode 100644 index 0000000..b15b42e --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.cs @@ -0,0 +1,38 @@ +癤퓎sing SA_LTT; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class EquipmentInfoViewer : Form + { + MainFrame _mainFrame; + + public EquipmentInfoViewer(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + + lb_Version.Text = $"Version - {Equipment.Version}"; + lb_LastUpdateDay.Text = $"Last update day - {Equipment.UpdateDate}"; + } + + private void btn_OK_Click(object sender, EventArgs e) + { + this.Hide(); + } + + private void EquipmentInfoViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.Designer.cs new file mode 100644 index 0000000..d15054c --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.Designer.cs @@ -0,0 +1,103 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class FoupRecipeCreateViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.label21 = new System.Windows.Forms.Label(); + this.tb_Name = new System.Windows.Forms.TextBox(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.btn_Ok = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label21 + // + this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label21.Font = new System.Drawing.Font("Gulim", 12F); + this.label21.Location = new System.Drawing.Point(21, 12); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(95, 26); + this.label21.TabIndex = 111; + this.label21.Text = "Name"; + this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Name + // + this.tb_Name.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Name.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tb_Name.Font = new System.Drawing.Font("Gulim", 12F); + this.tb_Name.Location = new System.Drawing.Point(128, 12); + this.tb_Name.Name = "tb_Name"; + this.tb_Name.Size = new System.Drawing.Size(178, 26); + this.tb_Name.TabIndex = 110; + this.tb_Name.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_Name_KeyDown); + this.tb_Name.Leave += new System.EventHandler(this.tb_Name_Leave); + // + // btn_Cancel + // + this.btn_Cancel.Location = new System.Drawing.Point(164, 56); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(91, 41); + this.btn_Cancel.TabIndex = 112; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); + // + // btn_Ok + // + this.btn_Ok.Location = new System.Drawing.Point(67, 57); + this.btn_Ok.Name = "btn_Ok"; + this.btn_Ok.Size = new System.Drawing.Size(91, 41); + this.btn_Ok.TabIndex = 113; + this.btn_Ok.Text = "OK"; + this.btn_Ok.UseVisualStyleBackColor = true; + this.btn_Ok.Click += new System.EventHandler(this.btn_Ok_Click); + // + // FoupRecipeCreateViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(327, 110); + this.Controls.Add(this.btn_Cancel); + this.Controls.Add(this.btn_Ok); + this.Controls.Add(this.label21); + this.Controls.Add(this.tb_Name); + this.Name = "FoupRecipeCreateViewer"; + this.Text = "FoupRecipeCreateViewer"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label21; + private System.Windows.Forms.TextBox tb_Name; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.Button btn_Ok; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.cs new file mode 100644 index 0000000..85b524d --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.cs @@ -0,0 +1,83 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class FoupRecipeCreateViewer : Form + { + public string RecipeName { get; set; } + + public FoupRecipeCreateViewer() + { + InitializeComponent(); + RecipeName = string.Empty; + } + + private void btn_Ok_Click(object sender, EventArgs e) + { + if (RecipeName == string.Empty) + { + MessageBoxPad messageBox = new MessageBoxPad("�씠由꾩씠 鍮꾩뼱�엳�뒿�땲�떎."); + messageBox.Show(); + } + else + { + char[] nameExceptList = new char[] { '\\', '/', ':', '*', '?', '"', '<', '>', '|' }; + + foreach (char exceptChar in nameExceptList) + { + if (RecipeName.Contains(exceptChar)) + { + MessageBoxPad messageBox = new MessageBoxPad("�뙆�씪 �씠由꾩뿉�뒗 �떎�쓬 臾몄옄瑜� �궗�슜�븷 �닔 �뾾�뒿�땲�떎. \r\n \\ / : * ? \" < > | "); + messageBox.Show(); + return; + } + } + + DialogResult = DialogResult.OK; + this.Close(); + } + } + + private void btn_Cancel_Click(object sender, EventArgs e) + { + RecipeName = string.Empty; + DialogResult = DialogResult.Cancel; + this.Close(); + } + + private void tb_Name_Leave(object sender, EventArgs e) + { + SetSettingData(sender); + } + + private void tb_Name_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyData == Keys.Enter) + { + SetSettingData(sender); + } + } + + private void SetSettingData(object sender) + { + Control control = (Control)sender; + + switch (control.Name) + { + case "tb_Name": + { + RecipeName = control.Text; + break; + } + } + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.Designer.cs new file mode 100644 index 0000000..92d78aa --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.Designer.cs @@ -0,0 +1,136 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class FoupRecipeSelectViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.lv_Recipes = new System.Windows.Forms.ListView(); + this.columnHeader10 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader11 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.cbb_FoupRecipe = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.btn_Ok = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // lv_Recipes + // + this.lv_Recipes.AutoArrange = false; + this.lv_Recipes.BackColor = System.Drawing.Color.White; + this.lv_Recipes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader10, + this.columnHeader11}); + this.lv_Recipes.FullRowSelect = true; + this.lv_Recipes.GridLines = true; + this.lv_Recipes.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lv_Recipes.Location = new System.Drawing.Point(12, 37); + this.lv_Recipes.Name = "lv_Recipes"; + this.lv_Recipes.Size = new System.Drawing.Size(600, 435); + this.lv_Recipes.TabIndex = 5; + this.lv_Recipes.UseCompatibleStateImageBehavior = false; + this.lv_Recipes.View = System.Windows.Forms.View.Details; + // + // columnHeader10 + // + this.columnHeader10.Text = "No."; + this.columnHeader10.Width = 62; + // + // columnHeader11 + // + this.columnHeader11.Text = "Recipe Name"; + this.columnHeader11.Width = 311; + // + // cbb_FoupRecipe + // + this.cbb_FoupRecipe.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_FoupRecipe.Font = new System.Drawing.Font("Gulim", 13F); + this.cbb_FoupRecipe.FormattingEnabled = true; + this.cbb_FoupRecipe.Location = new System.Drawing.Point(181, 6); + this.cbb_FoupRecipe.Name = "cbb_FoupRecipe"; + this.cbb_FoupRecipe.Size = new System.Drawing.Size(121, 25); + this.cbb_FoupRecipe.TabIndex = 6; + this.cbb_FoupRecipe.SelectedIndexChanged += new System.EventHandler(this.cbb_FoupRecipe_SelectedIndexChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Font = new System.Drawing.Font("Gulim", 13F); + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(163, 20); + this.label1.TabIndex = 7; + this.label1.Text = "Foup Reicpe Name"; + // + // btn_Cancel + // + this.btn_Cancel.Location = new System.Drawing.Point(448, 478); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(79, 38); + this.btn_Cancel.TabIndex = 15; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); + // + // btn_Ok + // + this.btn_Ok.Location = new System.Drawing.Point(533, 478); + this.btn_Ok.Name = "btn_Ok"; + this.btn_Ok.Size = new System.Drawing.Size(79, 38); + this.btn_Ok.TabIndex = 14; + this.btn_Ok.Text = "OK"; + this.btn_Ok.UseVisualStyleBackColor = true; + this.btn_Ok.Click += new System.EventHandler(this.btn_Ok_Click); + // + // FoupRecipeSelectViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(624, 526); + this.Controls.Add(this.btn_Cancel); + this.Controls.Add(this.btn_Ok); + this.Controls.Add(this.label1); + this.Controls.Add(this.cbb_FoupRecipe); + this.Controls.Add(this.lv_Recipes); + this.Name = "FoupRecipeSelectViewer"; + this.Text = "FoupRecipeSelectViewer"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ListView lv_Recipes; + private System.Windows.Forms.ColumnHeader columnHeader10; + private System.Windows.Forms.ColumnHeader columnHeader11; + private System.Windows.Forms.ComboBox cbb_FoupRecipe; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.Button btn_Ok; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.cs new file mode 100644 index 0000000..42251bd --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.cs @@ -0,0 +1,106 @@ +癤퓎sing SA_LTT; +using SA_LTT.Info.RecipeInfo; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class FoupRecipeSelectViewer : Form + { + MainFrame _mainFrame; + + private FoupRecipe currentFoupRecipe; + + public FoupRecipe CurrentFoupRecipe + { + get + { + return currentFoupRecipe; + } + + set + { + currentFoupRecipe = value; + } + } + + public FoupRecipeSelectViewer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + RefreshFoupRecipes(); + } + + public void RefreshFoupRecipes() + { + _mainFrame.equipment.foupRecipeManager.RefreshRecipes(); + + cbb_FoupRecipe.Items.Clear(); + + FoupRecipe[] recipes = _mainFrame.equipment.foupRecipeManager.GetRecipeList(); + + foreach (FoupRecipe recipe in recipes) + { + cbb_FoupRecipe.Items.Add(recipe.Name); + } + + if(cbb_FoupRecipe.Items.Count > 0) + { + cbb_FoupRecipe.SelectedIndex = 0; + } + } + + public void RefreshFoupRecipeData() + { + lv_Recipes.Items.Clear(); + + if (CurrentFoupRecipe != null) + { + FoupRecipe originalRecipe = _mainFrame.equipment.foupRecipeManager.GetRecipe(CurrentFoupRecipe.Name); + + for (int i = 24; i >= 0; i--) + { + ListViewItem lvi = new ListViewItem($"{i + 1}"); + + if (originalRecipe.RecipeNames[i] == null) + { + lvi.SubItems.Add("Empty"); + } + else + { + lvi.SubItems.Add(originalRecipe.RecipeNames[i]); + } + + lv_Recipes.Items.Add(lvi); + } + } + } + + private void cbb_FoupRecipe_SelectedIndexChanged(object sender, EventArgs e) + { + CurrentFoupRecipe = _mainFrame.equipment.foupRecipeManager.Recipes[cbb_FoupRecipe.Text]; + RefreshFoupRecipeData(); + } + + private void btn_Ok_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.OK; + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + this.Close(); + } + + private void btn_Cancel_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + this.Close(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.Designer.cs new file mode 100644 index 0000000..e7309e0 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.Designer.cs @@ -0,0 +1,143 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class LogInViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.btn_Login = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.tb_UserName = new System.Windows.Forms.TextBox(); + this.tb_Password = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // btn_Login + // + this.btn_Login.BackColor = System.Drawing.Color.Black; + this.btn_Login.FlatAppearance.BorderColor = System.Drawing.Color.White; + this.btn_Login.FlatAppearance.BorderSize = 3; + this.btn_Login.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_Login.Font = new System.Drawing.Font("Gulim", 30F); + this.btn_Login.ForeColor = System.Drawing.Color.White; + this.btn_Login.Location = new System.Drawing.Point(833, 747); + this.btn_Login.Name = "btn_Login"; + this.btn_Login.Size = new System.Drawing.Size(255, 57); + this.btn_Login.TabIndex = 3; + this.btn_Login.Text = "LOGIN"; + this.btn_Login.UseVisualStyleBackColor = false; + this.btn_Login.Click += new System.EventHandler(this.btn_Login_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Gulim", 20F); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(753, 515); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(138, 27); + this.label1.TabIndex = 1; + this.label1.Text = "Username"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Gulim", 20F); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(753, 603); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(133, 27); + this.label2.TabIndex = 1; + this.label2.Text = "Password"; + // + // tb_UserName + // + this.tb_UserName.Font = new System.Drawing.Font("Gulim", 20F); + this.tb_UserName.Location = new System.Drawing.Point(931, 512); + this.tb_UserName.Name = "tb_UserName"; + this.tb_UserName.Size = new System.Drawing.Size(255, 38); + this.tb_UserName.TabIndex = 1; + // + // tb_Password + // + this.tb_Password.Font = new System.Drawing.Font("Gulim", 20F); + this.tb_Password.Location = new System.Drawing.Point(931, 600); + this.tb_Password.Name = "tb_Password"; + this.tb_Password.PasswordChar = '*'; + this.tb_Password.Size = new System.Drawing.Size(255, 38); + this.tb_Password.TabIndex = 2; + this.tb_Password.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_Password_KeyDown); + this.tb_Password.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tb_Password_MouseDown); + this.tb_Password.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tb_Password_MouseUp); + // + // label3 + // + this.label3.Font = new System.Drawing.Font("Gulim", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.ForeColor = System.Drawing.Color.Red; + this.label3.Location = new System.Drawing.Point(581, 262); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(747, 165); + this.label3.TabIndex = 5; + this.label3.Text = "�살<�쓽�� \r\n\r\n媛뺤젣 醫낅즺�떆 �봽濡쒓렇�옩�씠 醫낅즺 �맗�땲�떎."; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // LogInViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.ClientSize = new System.Drawing.Size(1920, 1080); + this.Controls.Add(this.label3); + this.Controls.Add(this.tb_Password); + this.Controls.Add(this.tb_UserName); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.btn_Login); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "LogInViewer"; + this.Opacity = 0.8D; + this.Text = "LogInViewer"; + this.TopMost = true; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.LogInViewer_FormClosing); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btn_Login; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tb_UserName; + private System.Windows.Forms.TextBox tb_Password; + private System.Windows.Forms.Label label3; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.cs new file mode 100644 index 0000000..69aeda5 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.cs @@ -0,0 +1,83 @@ +癤퓎sing SA_LTT; +using SA_LTT.UserInfo; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class LogInViewer : Form + { + MainFrame _mainFrame; + + public LogInViewer(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + } + + private void tb_Password_MouseDown(object sender, MouseEventArgs e) + { + tb_Password.PasswordChar = '\0'; + } + + private void tb_Password_MouseUp(object sender, MouseEventArgs e) + { + tb_Password.PasswordChar = '*'; + } + + private void btn_Login_Click(object sender, EventArgs e) + { + CheckLogin(); + } + + private void tb_Password_KeyDown(object sender, KeyEventArgs e) + { + if(e.KeyCode == Keys.Enter) + { + CheckLogin(); + } + } + + public void CheckLogin() + { + User user = _mainFrame.equipment.userManager.GetUser(tb_UserName.Text); + + if (user != null) + { + if (user.Password == tb_Password.Text) + { + _mainFrame.equipment.ChangeUser(tb_UserName.Text); + + tb_UserName.Text = ""; + tb_Password.Text = ""; + + EquipmentLogManager.Instance.WriteButtonLog($"LoginViewer : Login ID {user.Name}, Level {user.Level}"); + this.ActiveControl = tb_UserName; + this.Hide(); + } + else + { + //Password媛� �떎由낅땲�떎. + MessageBox.Show("Password媛� �떎由낅땲�떎."); + } + } + else + { + //User �젙蹂닿� �뾾�뒿�땲�떎. + MessageBox.Show("User �젙蹂닿� �뾾�뒿�땲�떎."); + } + } + + private void LogInViewer_FormClosing(object sender, FormClosingEventArgs e) + { + _mainFrame.Close(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.Designer.cs new file mode 100644 index 0000000..02d5fba --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.Designer.cs @@ -0,0 +1,84 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class MaintenanceViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.label3 = new System.Windows.Forms.Label(); + this.btn_Close = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label3 + // + this.label3.Font = new System.Drawing.Font("Gulim", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.ForeColor = System.Drawing.Color.Red; + this.label3.Location = new System.Drawing.Point(579, 438); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(747, 203); + this.label3.TabIndex = 6; + this.label3.Text = "�살<�쓽�� \r\n\r\n�쁽�옱 PM �옉�뾽 以� �엯�땲�떎. \r\n\r\n議곗옉 湲덉�!!"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Close + // + this.btn_Close.BackColor = System.Drawing.Color.Black; + this.btn_Close.FlatAppearance.BorderColor = System.Drawing.Color.White; + this.btn_Close.FlatAppearance.BorderSize = 3; + this.btn_Close.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_Close.Font = new System.Drawing.Font("Gulim", 30F); + this.btn_Close.ForeColor = System.Drawing.Color.White; + this.btn_Close.Location = new System.Drawing.Point(825, 735); + this.btn_Close.Name = "btn_Close"; + this.btn_Close.Size = new System.Drawing.Size(255, 57); + this.btn_Close.TabIndex = 7; + this.btn_Close.Text = "CLOSE"; + this.btn_Close.UseVisualStyleBackColor = false; + this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click); + // + // MaintenanceViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.ClientSize = new System.Drawing.Size(1904, 1041); + this.Controls.Add(this.btn_Close); + this.Controls.Add(this.label3); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "MaintenanceViewer"; + this.Text = "MintainanceViewer"; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MintainanceViewer_FormClosing); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Button btn_Close; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.cs new file mode 100644 index 0000000..a7c8d02 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.cs @@ -0,0 +1,32 @@ +癤퓎sing SA_LTT; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class MaintenanceViewer : Form + { + public MaintenanceViewer() + { + InitializeComponent(); + } + + private void MintainanceViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + } + + private void btn_Close_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"MainteneceViewer : Close"); + this.Hide(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.Designer.cs new file mode 100644 index 0000000..091ed3a --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.Designer.cs @@ -0,0 +1,76 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class MessageBoxPad + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.tb_Message = new System.Windows.Forms.TextBox(); + this.btn_Close = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // tb_Message + // + this.tb_Message.Font = new System.Drawing.Font("Gulim", 15F); + this.tb_Message.Location = new System.Drawing.Point(12, 12); + this.tb_Message.Multiline = true; + this.tb_Message.Name = "tb_Message"; + this.tb_Message.ReadOnly = true; + this.tb_Message.Size = new System.Drawing.Size(588, 152); + this.tb_Message.TabIndex = 0; + this.tb_Message.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // btn_Close + // + this.btn_Close.Location = new System.Drawing.Point(198, 192); + this.btn_Close.Name = "btn_Close"; + this.btn_Close.Size = new System.Drawing.Size(187, 41); + this.btn_Close.TabIndex = 1; + this.btn_Close.Text = "Close"; + this.btn_Close.UseVisualStyleBackColor = true; + this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click); + // + // MessageBoxPad + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(612, 245); + this.Controls.Add(this.btn_Close); + this.Controls.Add(this.tb_Message); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Name = "MessageBoxPad"; + this.Text = "Message"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox tb_Message; + private System.Windows.Forms.Button btn_Close; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.cs new file mode 100644 index 0000000..75b6188 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.cs @@ -0,0 +1,26 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class MessageBoxPad : Form + { + public MessageBoxPad(string message = "") + { + InitializeComponent(); + tb_Message.Text = message; + } + + private void btn_Close_Click(object sender, EventArgs e) + { + this.Hide(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.Designer.cs new file mode 100644 index 0000000..a2acb62 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.Designer.cs @@ -0,0 +1,195 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class ModifyUserViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.cbb_Level = new System.Windows.Forms.ComboBox(); + this.tb_Password = new System.Windows.Forms.TextBox(); + this.tb_Name = new System.Windows.Forms.TextBox(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.btn_Ok = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.tb_OldPassword = new System.Windows.Forms.TextBox(); + this.tb_OldLevel = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // cbb_Level + // + this.cbb_Level.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_Level.FormattingEnabled = true; + this.cbb_Level.Location = new System.Drawing.Point(114, 137); + this.cbb_Level.Name = "cbb_Level"; + this.cbb_Level.Size = new System.Drawing.Size(169, 20); + this.cbb_Level.TabIndex = 11; + // + // tb_Password + // + this.tb_Password.Location = new System.Drawing.Point(114, 75); + this.tb_Password.Name = "tb_Password"; + this.tb_Password.PasswordChar = '*'; + this.tb_Password.Size = new System.Drawing.Size(169, 21); + this.tb_Password.TabIndex = 10; + this.tb_Password.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tb_Password_MouseDown); + this.tb_Password.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tb_Password_MouseUp); + // + // tb_Name + // + this.tb_Name.Location = new System.Drawing.Point(114, 13); + this.tb_Name.Name = "tb_Name"; + this.tb_Name.ReadOnly = true; + this.tb_Name.Size = new System.Drawing.Size(169, 21); + this.tb_Name.TabIndex = 9; + // + // btn_Cancel + // + this.btn_Cancel.Location = new System.Drawing.Point(61, 179); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(79, 38); + this.btn_Cancel.TabIndex = 13; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); + // + // btn_Ok + // + this.btn_Ok.Location = new System.Drawing.Point(165, 179); + this.btn_Ok.Name = "btn_Ok"; + this.btn_Ok.Size = new System.Drawing.Size(79, 38); + this.btn_Ok.TabIndex = 12; + this.btn_Ok.Text = "OK"; + this.btn_Ok.UseVisualStyleBackColor = true; + this.btn_Ok.Click += new System.EventHandler(this.btn_Ok_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(23, 140); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(35, 12); + this.label3.TabIndex = 6; + this.label3.Text = "Level"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(23, 78); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(62, 12); + this.label2.TabIndex = 7; + this.label2.Text = "Password"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(23, 16); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(39, 12); + this.label1.TabIndex = 8; + this.label1.Text = "Name"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(23, 47); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(85, 12); + this.label4.TabIndex = 7; + this.label4.Text = "Old Password"; + // + // tb_OldPassword + // + this.tb_OldPassword.Location = new System.Drawing.Point(114, 44); + this.tb_OldPassword.Name = "tb_OldPassword"; + this.tb_OldPassword.PasswordChar = '*'; + this.tb_OldPassword.ReadOnly = true; + this.tb_OldPassword.Size = new System.Drawing.Size(169, 21); + this.tb_OldPassword.TabIndex = 10; + this.tb_OldPassword.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tb_OldPassword_MouseDown); + this.tb_OldPassword.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tb_OldPassword_MouseUp); + // + // tb_OldLevel + // + this.tb_OldLevel.Location = new System.Drawing.Point(114, 106); + this.tb_OldLevel.Name = "tb_OldLevel"; + this.tb_OldLevel.ReadOnly = true; + this.tb_OldLevel.Size = new System.Drawing.Size(169, 21); + this.tb_OldLevel.TabIndex = 10; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(23, 109); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(58, 12); + this.label5.TabIndex = 6; + this.label5.Text = "Old Level"; + // + // ModifyUserViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(319, 229); + this.Controls.Add(this.cbb_Level); + this.Controls.Add(this.tb_OldLevel); + this.Controls.Add(this.tb_OldPassword); + this.Controls.Add(this.tb_Password); + this.Controls.Add(this.tb_Name); + this.Controls.Add(this.btn_Cancel); + this.Controls.Add(this.btn_Ok); + this.Controls.Add(this.label4); + this.Controls.Add(this.label5); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "ModifyUserViewer"; + this.Text = "ModifiyUserViewer"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ComboBox cbb_Level; + private System.Windows.Forms.TextBox tb_Password; + private System.Windows.Forms.TextBox tb_Name; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.Button btn_Ok; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_OldPassword; + private System.Windows.Forms.TextBox tb_OldLevel; + private System.Windows.Forms.Label label5; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.cs new file mode 100644 index 0000000..064a959 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.cs @@ -0,0 +1,120 @@ +癤퓎sing SA_LTT.UserInfo; +using System; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class ModifyUserViewer : Form + { + MainFrame _mainFrame; + + public User user = new User(); + + User modifyUser; + public ModifyUserViewer(MainFrame mainFrame, User modifyUser) + { + InitializeComponent(); + + _mainFrame = mainFrame; + + this.modifyUser = modifyUser; + + Initialize(); + } + + private void Initialize() + { + tb_Name.Text = modifyUser.Name; + tb_OldPassword.Text = modifyUser.Password; + tb_OldLevel.Text = modifyUser.Level.ToString(); + + // �닔�젙�븯�젮�뒗 User媛� �쁽�옱 User�� �떎瑜대㈃ Password 蹂�寃� 紐삵븯�룄濡� �꽕�젙. + if (_mainFrame.equipment.User.Name != modifyUser.Name) + { + tb_Password.Text = modifyUser.Password; + tb_Password.Enabled = false; + + tb_OldPassword.Enabled = false; + } + + // �쁽�옱 User�쓽 �젅踰⑤낫�떎 �넂�� Level濡� �꽕�젙�븯吏� 紐삵븯�룄濡� �꽕�젙. + foreach (UserLevel level in Enum.GetValues(typeof(UserLevel))) + { + if (level > _mainFrame.equipment.User.Level) + break; + + cbb_Level.Items.Add(level.ToString()); + } + + cbb_Level.SelectedIndex = 0; + + // DIT, Operaotr�쓽 Level�� �닔�젙�븯吏� 紐삵븯�룄濡� �꽕�젙. + if (modifyUser.Name == "DIT" || modifyUser.Name == "Operator") + { + cbb_Level.Text = modifyUser.Level.ToString(); + cbb_Level.Enabled = false; + } + } + + private void tb_OldPassword_MouseDown(object sender, MouseEventArgs e) + { + tb_OldPassword.PasswordChar = '\0'; + } + + private void tb_OldPassword_MouseUp(object sender, MouseEventArgs e) + { + tb_OldPassword.PasswordChar = '*'; + } + + private void tb_Password_MouseDown(object sender, MouseEventArgs e) + { + tb_Password.PasswordChar = '\0'; + } + + private void tb_Password_MouseUp(object sender, MouseEventArgs e) + { + tb_Password.PasswordChar = '*'; + } + + private void btn_Ok_Click(object sender, EventArgs e) + { + if (tb_Name.Text == string.Empty || tb_Password.Text == string.Empty || tb_Name.Text.Contains(" ") || tb_Password.Text.Contains(" ")) + { + MessageBox.Show("怨듬갚�� �엯�젰�븷 �닔 �뾾�뒿�땲�떎."); + return; + } + + //�쁽�옱 �쑀�� �젅踰⑤낫�떎 �넂�쑝硫� 湲곗〈媛� �꽕�젙. + if(modifyUser.Level <= _mainFrame.equipment.User.Level) + { + UserLevel _level; + Enum.TryParse(cbb_Level.Text, out _level); + + user.Name = tb_Name.Text; + user.Password = tb_Password.Text; + user.Level = _level; + + if(user.Name == "DIT") + { + user.Level = UserLevel.Master; + } + + this.DialogResult = DialogResult.OK; + this.Close(); + } + else + { + user = modifyUser.Clone(); + + this.DialogResult = DialogResult.OK; + this.Close(); + } + } + + private void btn_Cancel_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + this.Close(); + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.Designer.cs new file mode 100644 index 0000000..b9aee8a --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.Designer.cs @@ -0,0 +1,1848 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class PiLaserViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.label28 = new System.Windows.Forms.Label(); + this.gb_SystemFault = new System.Windows.Forms.GroupBox(); + this.lb_BoardState = new System.Windows.Forms.Label(); + this.lb_BoardCommunication = new System.Windows.Forms.Label(); + this.lb_SDCard = new System.Windows.Forms.Label(); + this.lb_Memory = new System.Windows.Forms.Label(); + this.gb_SystemState = new System.Windows.Forms.GroupBox(); + this.lb_SystemInitalization = new System.Windows.Forms.Label(); + this.lb_Setup = new System.Windows.Forms.Label(); + this.lb_Standby = new System.Windows.Forms.Label(); + this.lb_HardFault = new System.Windows.Forms.Label(); + this.lb_Running = new System.Windows.Forms.Label(); + this.lb_SoftFault = new System.Windows.Forms.Label(); + this.gb_GeneralAlarms = new System.Windows.Forms.GroupBox(); + this.lb_LDD1 = new System.Windows.Forms.Label(); + this.lb_HFSync = new System.Windows.Forms.Label(); + this.lb_LDD2 = new System.Windows.Forms.Label(); + this.lb_Flow = new System.Windows.Forms.Label(); + this.lb_Humidity = new System.Windows.Forms.Label(); + this.lb_QSW = new System.Windows.Forms.Label(); + this.lb_Wet = new System.Windows.Forms.Label(); + this.gb_FaultsInTemperature = new System.Windows.Forms.GroupBox(); + this.lb_TemperatureControl0 = new System.Windows.Forms.Label(); + this.lb_TemperatureControl7 = new System.Windows.Forms.Label(); + this.lb_TemperatureControl6 = new System.Windows.Forms.Label(); + this.lb_TemperatureControl4 = new System.Windows.Forms.Label(); + this.lb_TemperatureControl1 = new System.Windows.Forms.Label(); + this.lb_TemperatureControl2 = new System.Windows.Forms.Label(); + this.lb_TemperatureControl3 = new System.Windows.Forms.Label(); + this.lb_TemperatureControl5 = new System.Windows.Forms.Label(); + this.gb_Power_control = new System.Windows.Forms.GroupBox(); + this.lb_PowerMonitorReading = new System.Windows.Forms.Label(); + this.label62 = new System.Windows.Forms.Label(); + this.tb_SetCurrent = new System.Windows.Forms.TextBox(); + this.label50 = new System.Windows.Forms.Label(); + this.label51 = new System.Windows.Forms.Label(); + this.btn_ShutterOpenClose = new System.Windows.Forms.Button(); + this.label52 = new System.Windows.Forms.Label(); + this.btn_LDDOnOff = new System.Windows.Forms.Button(); + this.label53 = new System.Windows.Forms.Label(); + this.label56 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label54 = new System.Windows.Forms.Label(); + this.label55 = new System.Windows.Forms.Label(); + this.lb_MaxCurrent = new System.Windows.Forms.Label(); + this.lb_DiodeVoltage = new System.Windows.Forms.Label(); + this.lb_ActualCurrent = new System.Windows.Forms.Label(); + this.lb_LDDHour = new System.Windows.Forms.Label(); + this.gb_Temperature_controls = new System.Windows.Forms.GroupBox(); + this.lb_ActualLDTemp = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.tb_SetLDTemp = new System.Windows.Forms.TextBox(); + this.tb_SetTHGTemp = new System.Windows.Forms.TextBox(); + this.tb_SetSHGTemp = new System.Windows.Forms.TextBox(); + this.lb_ActualTHGTemp = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.lb_ActualSHGTemp = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.gb_Monitors = new System.Windows.Forms.GroupBox(); + this.lb_FlowRate = new System.Windows.Forms.Label(); + this.label45 = new System.Windows.Forms.Label(); + this.label48 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.gb_Pulse_control = new System.Windows.Forms.GroupBox(); + this.label37 = new System.Windows.Forms.Label(); + this.label36 = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.lb_Duty_width_range = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.tb_PRF = new System.Windows.Forms.TextBox(); + this.gb_Burst_control = new System.Windows.Forms.GroupBox(); + this.label39 = new System.Windows.Forms.Label(); + this.label41 = new System.Windows.Forms.Label(); + this.label40 = new System.Windows.Forms.Label(); + this.label38 = new System.Windows.Forms.Label(); + this.label25 = new System.Windows.Forms.Label(); + this.tb_BurstCycles = new System.Windows.Forms.TextBox(); + this.tb_BurstRate = new System.Windows.Forms.TextBox(); + this.tb_BurstCount = new System.Windows.Forms.TextBox(); + this.btn_BurstFiringMode = new System.Windows.Forms.Button(); + this.btn_BurstStatus = new System.Windows.Forms.Button(); + this.btn_BurstTriggerSouce = new System.Windows.Forms.Button(); + this.tb_LPKRampRate = new System.Windows.Forms.TextBox(); + this.tb_DutyWidth = new System.Windows.Forms.TextBox(); + this.tb_FPKRampRate = new System.Windows.Forms.TextBox(); + this.tb_LPKRampTime = new System.Windows.Forms.TextBox(); + this.tb_FPKRampTime = new System.Windows.Forms.TextBox(); + this.tb_PECLevel = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); + this.label24 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.btn_LPKEnable = new System.Windows.Forms.Button(); + this.btn_FPKEnable = new System.Windows.Forms.Button(); + this.btn_PRFSource = new System.Windows.Forms.Button(); + this.label35 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label22 = new System.Windows.Forms.Label(); + this.label23 = new System.Windows.Forms.Label(); + this.label21 = new System.Windows.Forms.Label(); + this.btn_DutyMode = new System.Windows.Forms.Button(); + this.label19 = new System.Windows.Forms.Label(); + this.btn_DutyControl = new System.Windows.Forms.Button(); + this.btn_GateSource = new System.Windows.Forms.Button(); + this.btn_PECSource = new System.Windows.Forms.Button(); + this.gb_Port_status = new System.Windows.Forms.GroupBox(); + this.label26 = new System.Windows.Forms.Label(); + this.label27 = new System.Windows.Forms.Label(); + this.lb_PortName = new System.Windows.Forms.Label(); + this.lb_PortStatus = new System.Windows.Forms.Label(); + this.gb_SystemStatus = new System.Windows.Forms.GroupBox(); + this.lb_PowerOn = new System.Windows.Forms.Label(); + this.lb_LDDOn = new System.Windows.Forms.Label(); + this.lb_KeySwitch = new System.Windows.Forms.Label(); + this.lb_LDDInterlock = new System.Windows.Forms.Label(); + this.lb_QSWOn = new System.Windows.Forms.Label(); + this.lb_ShutterInterlock = new System.Windows.Forms.Label(); + this.lb_ShutterEnable = new System.Windows.Forms.Label(); + this.btn_SystemReset = new System.Windows.Forms.Button(); + this.gb_SystemFault.SuspendLayout(); + this.gb_SystemState.SuspendLayout(); + this.gb_GeneralAlarms.SuspendLayout(); + this.gb_FaultsInTemperature.SuspendLayout(); + this.gb_Power_control.SuspendLayout(); + this.gb_Temperature_controls.SuspendLayout(); + this.gb_Monitors.SuspendLayout(); + this.gb_Pulse_control.SuspendLayout(); + this.gb_Burst_control.SuspendLayout(); + this.gb_Port_status.SuspendLayout(); + this.gb_SystemStatus.SuspendLayout(); + this.SuspendLayout(); + // + // label28 + // + this.label28.AutoSize = true; + this.label28.Font = new System.Drawing.Font("Gulim", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label28.Location = new System.Drawing.Point(704, 557); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(74, 13); + this.label28.TabIndex = 17; + this.label28.Text = "LDD Hour"; + // + // gb_SystemFault + // + this.gb_SystemFault.Controls.Add(this.lb_BoardState); + this.gb_SystemFault.Controls.Add(this.lb_BoardCommunication); + this.gb_SystemFault.Controls.Add(this.lb_SDCard); + this.gb_SystemFault.Controls.Add(this.lb_Memory); + this.gb_SystemFault.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_SystemFault.Location = new System.Drawing.Point(12, 215); + this.gb_SystemFault.Name = "gb_SystemFault"; + this.gb_SystemFault.Size = new System.Drawing.Size(200, 126); + this.gb_SystemFault.TabIndex = 14; + this.gb_SystemFault.TabStop = false; + this.gb_SystemFault.Text = "System faults"; + // + // lb_BoardState + // + this.lb_BoardState.BackColor = System.Drawing.Color.Red; + this.lb_BoardState.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_BoardState.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_BoardState.ForeColor = System.Drawing.Color.Black; + this.lb_BoardState.Location = new System.Drawing.Point(6, 95); + this.lb_BoardState.Name = "lb_BoardState"; + this.lb_BoardState.Size = new System.Drawing.Size(188, 19); + this.lb_BoardState.TabIndex = 5; + this.lb_BoardState.Text = "Board state"; + this.lb_BoardState.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_BoardCommunication + // + this.lb_BoardCommunication.BackColor = System.Drawing.Color.Red; + this.lb_BoardCommunication.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_BoardCommunication.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_BoardCommunication.ForeColor = System.Drawing.Color.Black; + this.lb_BoardCommunication.Location = new System.Drawing.Point(6, 70); + this.lb_BoardCommunication.Name = "lb_BoardCommunication"; + this.lb_BoardCommunication.Size = new System.Drawing.Size(188, 19); + this.lb_BoardCommunication.TabIndex = 5; + this.lb_BoardCommunication.Text = "Board commnunication"; + this.lb_BoardCommunication.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_SDCard + // + this.lb_SDCard.BackColor = System.Drawing.Color.Red; + this.lb_SDCard.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_SDCard.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_SDCard.ForeColor = System.Drawing.Color.Black; + this.lb_SDCard.Location = new System.Drawing.Point(6, 45); + this.lb_SDCard.Name = "lb_SDCard"; + this.lb_SDCard.Size = new System.Drawing.Size(188, 19); + this.lb_SDCard.TabIndex = 5; + this.lb_SDCard.Text = "SD card"; + this.lb_SDCard.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Memory + // + this.lb_Memory.BackColor = System.Drawing.Color.Red; + this.lb_Memory.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Memory.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Memory.ForeColor = System.Drawing.Color.Black; + this.lb_Memory.Location = new System.Drawing.Point(6, 20); + this.lb_Memory.Name = "lb_Memory"; + this.lb_Memory.Size = new System.Drawing.Size(188, 19); + this.lb_Memory.TabIndex = 5; + this.lb_Memory.Text = "Memory"; + this.lb_Memory.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // gb_SystemState + // + this.gb_SystemState.Controls.Add(this.lb_SystemInitalization); + this.gb_SystemState.Controls.Add(this.lb_Setup); + this.gb_SystemState.Controls.Add(this.lb_Standby); + this.gb_SystemState.Controls.Add(this.lb_HardFault); + this.gb_SystemState.Controls.Add(this.lb_Running); + this.gb_SystemState.Controls.Add(this.lb_SoftFault); + this.gb_SystemState.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_SystemState.Location = new System.Drawing.Point(12, 552); + this.gb_SystemState.Name = "gb_SystemState"; + this.gb_SystemState.Size = new System.Drawing.Size(200, 173); + this.gb_SystemState.TabIndex = 13; + this.gb_SystemState.TabStop = false; + this.gb_SystemState.Text = "System state"; + // + // lb_SystemInitalization + // + this.lb_SystemInitalization.BackColor = System.Drawing.Color.Red; + this.lb_SystemInitalization.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_SystemInitalization.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_SystemInitalization.ForeColor = System.Drawing.Color.Black; + this.lb_SystemInitalization.Location = new System.Drawing.Point(6, 20); + this.lb_SystemInitalization.Name = "lb_SystemInitalization"; + this.lb_SystemInitalization.Size = new System.Drawing.Size(188, 19); + this.lb_SystemInitalization.TabIndex = 4; + this.lb_SystemInitalization.Text = "System initialization"; + this.lb_SystemInitalization.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Setup + // + this.lb_Setup.BackColor = System.Drawing.Color.Red; + this.lb_Setup.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Setup.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Setup.ForeColor = System.Drawing.Color.Black; + this.lb_Setup.Location = new System.Drawing.Point(6, 45); + this.lb_Setup.Name = "lb_Setup"; + this.lb_Setup.Size = new System.Drawing.Size(188, 19); + this.lb_Setup.TabIndex = 4; + this.lb_Setup.Text = "Setup"; + this.lb_Setup.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Standby + // + this.lb_Standby.BackColor = System.Drawing.Color.Red; + this.lb_Standby.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Standby.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Standby.ForeColor = System.Drawing.Color.Black; + this.lb_Standby.Location = new System.Drawing.Point(6, 95); + this.lb_Standby.Name = "lb_Standby"; + this.lb_Standby.Size = new System.Drawing.Size(188, 19); + this.lb_Standby.TabIndex = 4; + this.lb_Standby.Text = "Standby"; + this.lb_Standby.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_HardFault + // + this.lb_HardFault.BackColor = System.Drawing.Color.Red; + this.lb_HardFault.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_HardFault.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_HardFault.ForeColor = System.Drawing.Color.Black; + this.lb_HardFault.Location = new System.Drawing.Point(6, 145); + this.lb_HardFault.Name = "lb_HardFault"; + this.lb_HardFault.Size = new System.Drawing.Size(188, 19); + this.lb_HardFault.TabIndex = 4; + this.lb_HardFault.Text = "Hard fault"; + this.lb_HardFault.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Running + // + this.lb_Running.BackColor = System.Drawing.Color.Red; + this.lb_Running.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Running.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Running.ForeColor = System.Drawing.Color.Black; + this.lb_Running.Location = new System.Drawing.Point(6, 70); + this.lb_Running.Name = "lb_Running"; + this.lb_Running.Size = new System.Drawing.Size(188, 19); + this.lb_Running.TabIndex = 4; + this.lb_Running.Text = "Running"; + this.lb_Running.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_SoftFault + // + this.lb_SoftFault.BackColor = System.Drawing.Color.Red; + this.lb_SoftFault.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_SoftFault.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_SoftFault.ForeColor = System.Drawing.Color.Black; + this.lb_SoftFault.Location = new System.Drawing.Point(6, 120); + this.lb_SoftFault.Name = "lb_SoftFault"; + this.lb_SoftFault.Size = new System.Drawing.Size(188, 19); + this.lb_SoftFault.TabIndex = 4; + this.lb_SoftFault.Text = "Soft fault"; + this.lb_SoftFault.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // gb_GeneralAlarms + // + this.gb_GeneralAlarms.Controls.Add(this.lb_LDD1); + this.gb_GeneralAlarms.Controls.Add(this.lb_HFSync); + this.gb_GeneralAlarms.Controls.Add(this.lb_LDD2); + this.gb_GeneralAlarms.Controls.Add(this.lb_Flow); + this.gb_GeneralAlarms.Controls.Add(this.lb_Humidity); + this.gb_GeneralAlarms.Controls.Add(this.lb_QSW); + this.gb_GeneralAlarms.Controls.Add(this.lb_Wet); + this.gb_GeneralAlarms.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_GeneralAlarms.Location = new System.Drawing.Point(12, 347); + this.gb_GeneralAlarms.Name = "gb_GeneralAlarms"; + this.gb_GeneralAlarms.Size = new System.Drawing.Size(200, 199); + this.gb_GeneralAlarms.TabIndex = 13; + this.gb_GeneralAlarms.TabStop = false; + this.gb_GeneralAlarms.Text = "General alarms"; + // + // lb_LDD1 + // + this.lb_LDD1.BackColor = System.Drawing.Color.Red; + this.lb_LDD1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LDD1.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LDD1.ForeColor = System.Drawing.Color.Black; + this.lb_LDD1.Location = new System.Drawing.Point(6, 20); + this.lb_LDD1.Name = "lb_LDD1"; + this.lb_LDD1.Size = new System.Drawing.Size(188, 19); + this.lb_LDD1.TabIndex = 4; + this.lb_LDD1.Text = "LDD1"; + this.lb_LDD1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_HFSync + // + this.lb_HFSync.BackColor = System.Drawing.Color.Red; + this.lb_HFSync.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_HFSync.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_HFSync.ForeColor = System.Drawing.Color.Black; + this.lb_HFSync.Location = new System.Drawing.Point(6, 170); + this.lb_HFSync.Name = "lb_HFSync"; + this.lb_HFSync.Size = new System.Drawing.Size(188, 19); + this.lb_HFSync.TabIndex = 4; + this.lb_HFSync.Text = "HF sync"; + this.lb_HFSync.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LDD2 + // + this.lb_LDD2.BackColor = System.Drawing.Color.Red; + this.lb_LDD2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LDD2.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LDD2.ForeColor = System.Drawing.Color.Black; + this.lb_LDD2.Location = new System.Drawing.Point(6, 45); + this.lb_LDD2.Name = "lb_LDD2"; + this.lb_LDD2.Size = new System.Drawing.Size(188, 19); + this.lb_LDD2.TabIndex = 4; + this.lb_LDD2.Text = "LDD2"; + this.lb_LDD2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Flow + // + this.lb_Flow.BackColor = System.Drawing.Color.Red; + this.lb_Flow.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Flow.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Flow.ForeColor = System.Drawing.Color.Black; + this.lb_Flow.Location = new System.Drawing.Point(6, 95); + this.lb_Flow.Name = "lb_Flow"; + this.lb_Flow.Size = new System.Drawing.Size(188, 19); + this.lb_Flow.TabIndex = 4; + this.lb_Flow.Text = "Flow"; + this.lb_Flow.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Humidity + // + this.lb_Humidity.BackColor = System.Drawing.Color.Red; + this.lb_Humidity.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Humidity.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Humidity.ForeColor = System.Drawing.Color.Black; + this.lb_Humidity.Location = new System.Drawing.Point(6, 145); + this.lb_Humidity.Name = "lb_Humidity"; + this.lb_Humidity.Size = new System.Drawing.Size(188, 19); + this.lb_Humidity.TabIndex = 4; + this.lb_Humidity.Text = "Humidity"; + this.lb_Humidity.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_QSW + // + this.lb_QSW.BackColor = System.Drawing.Color.Red; + this.lb_QSW.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_QSW.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_QSW.ForeColor = System.Drawing.Color.Black; + this.lb_QSW.Location = new System.Drawing.Point(6, 70); + this.lb_QSW.Name = "lb_QSW"; + this.lb_QSW.Size = new System.Drawing.Size(188, 19); + this.lb_QSW.TabIndex = 4; + this.lb_QSW.Text = "QSW"; + this.lb_QSW.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Wet + // + this.lb_Wet.BackColor = System.Drawing.Color.Red; + this.lb_Wet.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Wet.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_Wet.ForeColor = System.Drawing.Color.Black; + this.lb_Wet.Location = new System.Drawing.Point(6, 120); + this.lb_Wet.Name = "lb_Wet"; + this.lb_Wet.Size = new System.Drawing.Size(188, 19); + this.lb_Wet.TabIndex = 4; + this.lb_Wet.Text = "Wet"; + this.lb_Wet.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // gb_FaultsInTemperature + // + this.gb_FaultsInTemperature.Controls.Add(this.lb_TemperatureControl0); + this.gb_FaultsInTemperature.Controls.Add(this.lb_TemperatureControl7); + this.gb_FaultsInTemperature.Controls.Add(this.lb_TemperatureControl6); + this.gb_FaultsInTemperature.Controls.Add(this.lb_TemperatureControl4); + this.gb_FaultsInTemperature.Controls.Add(this.lb_TemperatureControl1); + this.gb_FaultsInTemperature.Controls.Add(this.lb_TemperatureControl2); + this.gb_FaultsInTemperature.Controls.Add(this.lb_TemperatureControl3); + this.gb_FaultsInTemperature.Controls.Add(this.lb_TemperatureControl5); + this.gb_FaultsInTemperature.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_FaultsInTemperature.Location = new System.Drawing.Point(263, 546); + this.gb_FaultsInTemperature.Name = "gb_FaultsInTemperature"; + this.gb_FaultsInTemperature.Size = new System.Drawing.Size(200, 222); + this.gb_FaultsInTemperature.TabIndex = 13; + this.gb_FaultsInTemperature.TabStop = false; + this.gb_FaultsInTemperature.Text = "Faults in temperature"; + // + // lb_TemperatureControl0 + // + this.lb_TemperatureControl0.BackColor = System.Drawing.Color.Red; + this.lb_TemperatureControl0.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TemperatureControl0.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_TemperatureControl0.ForeColor = System.Drawing.Color.Black; + this.lb_TemperatureControl0.Location = new System.Drawing.Point(6, 20); + this.lb_TemperatureControl0.Name = "lb_TemperatureControl0"; + this.lb_TemperatureControl0.Size = new System.Drawing.Size(188, 19); + this.lb_TemperatureControl0.TabIndex = 4; + this.lb_TemperatureControl0.Text = "Temperature control 0"; + this.lb_TemperatureControl0.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TemperatureControl7 + // + this.lb_TemperatureControl7.BackColor = System.Drawing.Color.Red; + this.lb_TemperatureControl7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TemperatureControl7.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_TemperatureControl7.ForeColor = System.Drawing.Color.Black; + this.lb_TemperatureControl7.Location = new System.Drawing.Point(6, 195); + this.lb_TemperatureControl7.Name = "lb_TemperatureControl7"; + this.lb_TemperatureControl7.Size = new System.Drawing.Size(188, 19); + this.lb_TemperatureControl7.TabIndex = 4; + this.lb_TemperatureControl7.Text = "Temperature control 7"; + this.lb_TemperatureControl7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TemperatureControl6 + // + this.lb_TemperatureControl6.BackColor = System.Drawing.Color.Red; + this.lb_TemperatureControl6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TemperatureControl6.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_TemperatureControl6.ForeColor = System.Drawing.Color.Black; + this.lb_TemperatureControl6.Location = new System.Drawing.Point(6, 170); + this.lb_TemperatureControl6.Name = "lb_TemperatureControl6"; + this.lb_TemperatureControl6.Size = new System.Drawing.Size(188, 19); + this.lb_TemperatureControl6.TabIndex = 4; + this.lb_TemperatureControl6.Text = "Temperature control 6"; + this.lb_TemperatureControl6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TemperatureControl4 + // + this.lb_TemperatureControl4.BackColor = System.Drawing.Color.Red; + this.lb_TemperatureControl4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TemperatureControl4.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_TemperatureControl4.ForeColor = System.Drawing.Color.Black; + this.lb_TemperatureControl4.Location = new System.Drawing.Point(6, 120); + this.lb_TemperatureControl4.Name = "lb_TemperatureControl4"; + this.lb_TemperatureControl4.Size = new System.Drawing.Size(188, 19); + this.lb_TemperatureControl4.TabIndex = 4; + this.lb_TemperatureControl4.Text = "Temperature control 4"; + this.lb_TemperatureControl4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TemperatureControl1 + // + this.lb_TemperatureControl1.BackColor = System.Drawing.Color.Red; + this.lb_TemperatureControl1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TemperatureControl1.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_TemperatureControl1.ForeColor = System.Drawing.Color.Black; + this.lb_TemperatureControl1.Location = new System.Drawing.Point(6, 45); + this.lb_TemperatureControl1.Name = "lb_TemperatureControl1"; + this.lb_TemperatureControl1.Size = new System.Drawing.Size(188, 19); + this.lb_TemperatureControl1.TabIndex = 4; + this.lb_TemperatureControl1.Text = "Temperature control 1"; + this.lb_TemperatureControl1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TemperatureControl2 + // + this.lb_TemperatureControl2.BackColor = System.Drawing.Color.Red; + this.lb_TemperatureControl2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TemperatureControl2.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_TemperatureControl2.ForeColor = System.Drawing.Color.Black; + this.lb_TemperatureControl2.Location = new System.Drawing.Point(6, 70); + this.lb_TemperatureControl2.Name = "lb_TemperatureControl2"; + this.lb_TemperatureControl2.Size = new System.Drawing.Size(188, 19); + this.lb_TemperatureControl2.TabIndex = 4; + this.lb_TemperatureControl2.Text = "Temperature control 2"; + this.lb_TemperatureControl2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TemperatureControl3 + // + this.lb_TemperatureControl3.BackColor = System.Drawing.Color.Red; + this.lb_TemperatureControl3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TemperatureControl3.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_TemperatureControl3.ForeColor = System.Drawing.Color.Black; + this.lb_TemperatureControl3.Location = new System.Drawing.Point(6, 95); + this.lb_TemperatureControl3.Name = "lb_TemperatureControl3"; + this.lb_TemperatureControl3.Size = new System.Drawing.Size(188, 19); + this.lb_TemperatureControl3.TabIndex = 4; + this.lb_TemperatureControl3.Text = "Temperature control 3"; + this.lb_TemperatureControl3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TemperatureControl5 + // + this.lb_TemperatureControl5.BackColor = System.Drawing.Color.Red; + this.lb_TemperatureControl5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TemperatureControl5.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_TemperatureControl5.ForeColor = System.Drawing.Color.Black; + this.lb_TemperatureControl5.Location = new System.Drawing.Point(6, 145); + this.lb_TemperatureControl5.Name = "lb_TemperatureControl5"; + this.lb_TemperatureControl5.Size = new System.Drawing.Size(188, 19); + this.lb_TemperatureControl5.TabIndex = 4; + this.lb_TemperatureControl5.Text = "Temperature control 5"; + this.lb_TemperatureControl5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // gb_Power_control + // + this.gb_Power_control.Controls.Add(this.lb_PowerMonitorReading); + this.gb_Power_control.Controls.Add(this.label62); + this.gb_Power_control.Controls.Add(this.tb_SetCurrent); + this.gb_Power_control.Controls.Add(this.label50); + this.gb_Power_control.Controls.Add(this.label51); + this.gb_Power_control.Controls.Add(this.btn_ShutterOpenClose); + this.gb_Power_control.Controls.Add(this.label52); + this.gb_Power_control.Controls.Add(this.btn_LDDOnOff); + this.gb_Power_control.Controls.Add(this.label53); + this.gb_Power_control.Controls.Add(this.label56); + this.gb_Power_control.Controls.Add(this.label9); + this.gb_Power_control.Controls.Add(this.label54); + this.gb_Power_control.Controls.Add(this.label55); + this.gb_Power_control.Controls.Add(this.lb_MaxCurrent); + this.gb_Power_control.Controls.Add(this.lb_DiodeVoltage); + this.gb_Power_control.Controls.Add(this.lb_ActualCurrent); + this.gb_Power_control.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_Power_control.Location = new System.Drawing.Point(218, 12); + this.gb_Power_control.Name = "gb_Power_control"; + this.gb_Power_control.Size = new System.Drawing.Size(285, 254); + this.gb_Power_control.TabIndex = 13; + this.gb_Power_control.TabStop = false; + this.gb_Power_control.Text = "Power control"; + // + // lb_PowerMonitorReading + // + this.lb_PowerMonitorReading.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerMonitorReading.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_PowerMonitorReading.Location = new System.Drawing.Point(173, 219); + this.lb_PowerMonitorReading.Name = "lb_PowerMonitorReading"; + this.lb_PowerMonitorReading.Size = new System.Drawing.Size(77, 23); + this.lb_PowerMonitorReading.TabIndex = 1; + this.lb_PowerMonitorReading.Text = "0"; + this.lb_PowerMonitorReading.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label62 + // + this.label62.AutoSize = true; + this.label62.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label62.Location = new System.Drawing.Point(6, 224); + this.label62.Name = "label62"; + this.label62.Size = new System.Drawing.Size(53, 14); + this.label62.TabIndex = 4; + this.label62.Text = "Power"; + // + // tb_SetCurrent + // + this.tb_SetCurrent.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_SetCurrent.Location = new System.Drawing.Point(173, 36); + this.tb_SetCurrent.Name = "tb_SetCurrent"; + this.tb_SetCurrent.Size = new System.Drawing.Size(78, 23); + this.tb_SetCurrent.TabIndex = 16; + this.tb_SetCurrent.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_Set_current_KeyPress); + // + // label50 + // + this.label50.AutoSize = true; + this.label50.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label50.Location = new System.Drawing.Point(6, 39); + this.label50.Name = "label50"; + this.label50.Size = new System.Drawing.Size(121, 14); + this.label50.TabIndex = 11; + this.label50.Text = "Set Current (A)"; + // + // label51 + // + this.label51.AutoSize = true; + this.label51.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label51.Location = new System.Drawing.Point(183, 13); + this.label51.Name = "label51"; + this.label51.Size = new System.Drawing.Size(47, 14); + this.label51.TabIndex = 11; + this.label51.Text = "LDD1"; + // + // btn_ShutterOpenClose + // + this.btn_ShutterOpenClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_ShutterOpenClose.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_ShutterOpenClose.Location = new System.Drawing.Point(173, 189); + this.btn_ShutterOpenClose.Name = "btn_ShutterOpenClose"; + this.btn_ShutterOpenClose.Size = new System.Drawing.Size(77, 23); + this.btn_ShutterOpenClose.TabIndex = 15; + this.btn_ShutterOpenClose.Text = "Close"; + this.btn_ShutterOpenClose.UseVisualStyleBackColor = true; + this.btn_ShutterOpenClose.Click += new System.EventHandler(this.btn_Shutter_open_close_Click); + // + // label52 + // + this.label52.AutoSize = true; + this.label52.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label52.Location = new System.Drawing.Point(6, 70); + this.label52.Name = "label52"; + this.label52.Size = new System.Drawing.Size(142, 14); + this.label52.TabIndex = 11; + this.label52.Text = "Actual Current (A)"; + // + // btn_LDDOnOff + // + this.btn_LDDOnOff.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_LDDOnOff.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_LDDOnOff.Location = new System.Drawing.Point(173, 158); + this.btn_LDDOnOff.Name = "btn_LDDOnOff"; + this.btn_LDDOnOff.Size = new System.Drawing.Size(77, 23); + this.btn_LDDOnOff.TabIndex = 15; + this.btn_LDDOnOff.Text = "On"; + this.btn_LDDOnOff.UseVisualStyleBackColor = true; + this.btn_LDDOnOff.Click += new System.EventHandler(this.btn_LDD_on_off_Click); + // + // label53 + // + this.label53.AutoSize = true; + this.label53.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label53.Location = new System.Drawing.Point(6, 101); + this.label53.Name = "label53"; + this.label53.Size = new System.Drawing.Size(140, 14); + this.label53.TabIndex = 11; + this.label53.Text = "Diode Voltage (V)"; + // + // label56 + // + this.label56.AutoSize = true; + this.label56.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label56.Location = new System.Drawing.Point(6, 194); + this.label56.Name = "label56"; + this.label56.Size = new System.Drawing.Size(114, 14); + this.label56.TabIndex = 11; + this.label56.Text = "Shutter Status"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label9.Location = new System.Drawing.Point(256, 224); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(22, 14); + this.label9.TabIndex = 1; + this.label9.Text = "W"; + // + // label54 + // + this.label54.AutoSize = true; + this.label54.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label54.Location = new System.Drawing.Point(6, 132); + this.label54.Name = "label54"; + this.label54.Size = new System.Drawing.Size(134, 14); + this.label54.TabIndex = 11; + this.label54.Text = "Max. Current (A)"; + // + // label55 + // + this.label55.AutoSize = true; + this.label55.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label55.Location = new System.Drawing.Point(6, 163); + this.label55.Name = "label55"; + this.label55.Size = new System.Drawing.Size(92, 14); + this.label55.TabIndex = 11; + this.label55.Text = "LDD Status"; + // + // lb_MaxCurrent + // + this.lb_MaxCurrent.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MaxCurrent.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_MaxCurrent.Location = new System.Drawing.Point(173, 127); + this.lb_MaxCurrent.Name = "lb_MaxCurrent"; + this.lb_MaxCurrent.Size = new System.Drawing.Size(77, 23); + this.lb_MaxCurrent.TabIndex = 11; + this.lb_MaxCurrent.Text = "0.04"; + this.lb_MaxCurrent.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lb_DiodeVoltage + // + this.lb_DiodeVoltage.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_DiodeVoltage.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_DiodeVoltage.Location = new System.Drawing.Point(173, 96); + this.lb_DiodeVoltage.Name = "lb_DiodeVoltage"; + this.lb_DiodeVoltage.Size = new System.Drawing.Size(77, 23); + this.lb_DiodeVoltage.TabIndex = 11; + this.lb_DiodeVoltage.Text = "0.04"; + this.lb_DiodeVoltage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lb_ActualCurrent + // + this.lb_ActualCurrent.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ActualCurrent.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ActualCurrent.Location = new System.Drawing.Point(173, 65); + this.lb_ActualCurrent.Name = "lb_ActualCurrent"; + this.lb_ActualCurrent.Size = new System.Drawing.Size(77, 23); + this.lb_ActualCurrent.TabIndex = 11; + this.lb_ActualCurrent.Text = "0.04"; + this.lb_ActualCurrent.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lb_LDDHour + // + this.lb_LDDHour.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LDDHour.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LDDHour.Location = new System.Drawing.Point(784, 552); + this.lb_LDDHour.Name = "lb_LDDHour"; + this.lb_LDDHour.Size = new System.Drawing.Size(77, 23); + this.lb_LDDHour.TabIndex = 3; + this.lb_LDDHour.Text = "0"; + this.lb_LDDHour.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // gb_Temperature_controls + // + this.gb_Temperature_controls.Controls.Add(this.lb_ActualLDTemp); + this.gb_Temperature_controls.Controls.Add(this.label4); + this.gb_Temperature_controls.Controls.Add(this.tb_SetLDTemp); + this.gb_Temperature_controls.Controls.Add(this.tb_SetTHGTemp); + this.gb_Temperature_controls.Controls.Add(this.tb_SetSHGTemp); + this.gb_Temperature_controls.Controls.Add(this.lb_ActualTHGTemp); + this.gb_Temperature_controls.Controls.Add(this.label1); + this.gb_Temperature_controls.Controls.Add(this.lb_ActualSHGTemp); + this.gb_Temperature_controls.Controls.Add(this.label5); + this.gb_Temperature_controls.Controls.Add(this.label2); + this.gb_Temperature_controls.Controls.Add(this.label3); + this.gb_Temperature_controls.Controls.Add(this.label6); + this.gb_Temperature_controls.Controls.Add(this.label8); + this.gb_Temperature_controls.Controls.Add(this.label7); + this.gb_Temperature_controls.Enabled = false; + this.gb_Temperature_controls.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_Temperature_controls.Location = new System.Drawing.Point(218, 276); + this.gb_Temperature_controls.Name = "gb_Temperature_controls"; + this.gb_Temperature_controls.Size = new System.Drawing.Size(285, 168); + this.gb_Temperature_controls.TabIndex = 13; + this.gb_Temperature_controls.TabStop = false; + this.gb_Temperature_controls.Text = "Temperature controls"; + // + // lb_ActualLDTemp + // + this.lb_ActualLDTemp.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ActualLDTemp.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ActualLDTemp.Location = new System.Drawing.Point(173, 132); + this.lb_ActualLDTemp.Name = "lb_ActualLDTemp"; + this.lb_ActualLDTemp.Size = new System.Drawing.Size(77, 23); + this.lb_ActualLDTemp.TabIndex = 3; + this.lb_ActualLDTemp.Text = "00.00"; + this.lb_ActualLDTemp.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Gulim", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label4.Location = new System.Drawing.Point(68, 30); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(30, 13); + this.label4.TabIndex = 0; + this.label4.Text = "Set"; + // + // tb_SetLDTemp + // + this.tb_SetLDTemp.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_SetLDTemp.Location = new System.Drawing.Point(67, 132); + this.tb_SetLDTemp.Name = "tb_SetLDTemp"; + this.tb_SetLDTemp.Size = new System.Drawing.Size(77, 23); + this.tb_SetLDTemp.TabIndex = 16; + this.tb_SetLDTemp.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_Set_LD_Temp_KeyPress); + // + // tb_SetTHGTemp + // + this.tb_SetTHGTemp.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_SetTHGTemp.Location = new System.Drawing.Point(67, 96); + this.tb_SetTHGTemp.Name = "tb_SetTHGTemp"; + this.tb_SetTHGTemp.Size = new System.Drawing.Size(77, 23); + this.tb_SetTHGTemp.TabIndex = 16; + this.tb_SetTHGTemp.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_Set_THG_Temp_KeyPress); + // + // tb_SetSHGTemp + // + this.tb_SetSHGTemp.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_SetSHGTemp.Location = new System.Drawing.Point(67, 60); + this.tb_SetSHGTemp.Name = "tb_SetSHGTemp"; + this.tb_SetSHGTemp.Size = new System.Drawing.Size(77, 23); + this.tb_SetSHGTemp.TabIndex = 16; + this.tb_SetSHGTemp.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_Set_SHG_Temp_KeyPress); + // + // lb_ActualTHGTemp + // + this.lb_ActualTHGTemp.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ActualTHGTemp.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ActualTHGTemp.Location = new System.Drawing.Point(173, 96); + this.lb_ActualTHGTemp.Name = "lb_ActualTHGTemp"; + this.lb_ActualTHGTemp.Size = new System.Drawing.Size(77, 23); + this.lb_ActualTHGTemp.TabIndex = 3; + this.lb_ActualTHGTemp.Text = "00.00"; + this.lb_ActualTHGTemp.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Gulim", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(7, 65); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(38, 13); + this.label1.TabIndex = 0; + this.label1.Text = "SHG"; + // + // lb_ActualSHGTemp + // + this.lb_ActualSHGTemp.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ActualSHGTemp.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ActualSHGTemp.Location = new System.Drawing.Point(173, 60); + this.lb_ActualSHGTemp.Name = "lb_ActualSHGTemp"; + this.lb_ActualSHGTemp.Size = new System.Drawing.Size(77, 23); + this.lb_ActualSHGTemp.TabIndex = 3; + this.lb_ActualSHGTemp.Text = "00.00"; + this.lb_ActualSHGTemp.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("Gulim", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label5.Location = new System.Drawing.Point(172, 29); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(79, 13); + this.label5.TabIndex = 0; + this.label5.Text = "Measured"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Gulim", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.Location = new System.Drawing.Point(7, 101); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(37, 13); + this.label2.TabIndex = 0; + this.label2.Text = "THG"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Gulim", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.Location = new System.Drawing.Point(7, 137); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(33, 13); + this.label3.TabIndex = 0; + this.label3.Text = "LD1"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label6.Location = new System.Drawing.Point(256, 66); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(22, 14); + this.label6.TabIndex = 1; + this.label6.Text = "�꼦"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label8.Location = new System.Drawing.Point(256, 137); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(22, 14); + this.label8.TabIndex = 1; + this.label8.Text = "�꼦"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label7.Location = new System.Drawing.Point(256, 101); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(22, 14); + this.label7.TabIndex = 1; + this.label7.Text = "�꼦"; + // + // gb_Monitors + // + this.gb_Monitors.Controls.Add(this.lb_FlowRate); + this.gb_Monitors.Controls.Add(this.label45); + this.gb_Monitors.Controls.Add(this.label48); + this.gb_Monitors.Controls.Add(this.label10); + this.gb_Monitors.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_Monitors.Location = new System.Drawing.Point(249, 450); + this.gb_Monitors.Name = "gb_Monitors"; + this.gb_Monitors.Size = new System.Drawing.Size(219, 72); + this.gb_Monitors.TabIndex = 13; + this.gb_Monitors.TabStop = false; + this.gb_Monitors.Text = "Monitors"; + // + // lb_FlowRate + // + this.lb_FlowRate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_FlowRate.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_FlowRate.Location = new System.Drawing.Point(94, 19); + this.lb_FlowRate.Name = "lb_FlowRate"; + this.lb_FlowRate.Size = new System.Drawing.Size(77, 23); + this.lb_FlowRate.TabIndex = 6; + this.lb_FlowRate.Text = "00.00"; + this.lb_FlowRate.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label45 + // + this.label45.AutoSize = true; + this.label45.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label45.Location = new System.Drawing.Point(7, 24); + this.label45.Name = "label45"; + this.label45.Size = new System.Drawing.Size(81, 14); + this.label45.TabIndex = 6; + this.label45.Text = "Flow Rate"; + // + // label48 + // + this.label48.AutoSize = true; + this.label48.Font = new System.Drawing.Font("Gulim", 8F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label48.Location = new System.Drawing.Point(57, 51); + this.label48.Name = "label48"; + this.label48.Size = new System.Drawing.Size(95, 11); + this.label48.TabIndex = 4; + this.label48.Text = "Range : 7.5 to 10"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label10.Location = new System.Drawing.Point(177, 24); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(37, 14); + this.label10.TabIndex = 1; + this.label10.Text = "�꼻/�렂"; + // + // gb_Pulse_control + // + this.gb_Pulse_control.Controls.Add(this.label37); + this.gb_Pulse_control.Controls.Add(this.label36); + this.gb_Pulse_control.Controls.Add(this.label20); + this.gb_Pulse_control.Controls.Add(this.label13); + this.gb_Pulse_control.Controls.Add(this.label12); + this.gb_Pulse_control.Controls.Add(this.lb_Duty_width_range); + this.gb_Pulse_control.Controls.Add(this.label14); + this.gb_Pulse_control.Controls.Add(this.tb_PRF); + this.gb_Pulse_control.Controls.Add(this.gb_Burst_control); + this.gb_Pulse_control.Controls.Add(this.tb_LPKRampRate); + this.gb_Pulse_control.Controls.Add(this.tb_DutyWidth); + this.gb_Pulse_control.Controls.Add(this.tb_FPKRampRate); + this.gb_Pulse_control.Controls.Add(this.tb_LPKRampTime); + this.gb_Pulse_control.Controls.Add(this.tb_FPKRampTime); + this.gb_Pulse_control.Controls.Add(this.tb_PECLevel); + this.gb_Pulse_control.Controls.Add(this.label15); + this.gb_Pulse_control.Controls.Add(this.label24); + this.gb_Pulse_control.Controls.Add(this.label16); + this.gb_Pulse_control.Controls.Add(this.label17); + this.gb_Pulse_control.Controls.Add(this.label18); + this.gb_Pulse_control.Controls.Add(this.btn_LPKEnable); + this.gb_Pulse_control.Controls.Add(this.btn_FPKEnable); + this.gb_Pulse_control.Controls.Add(this.btn_PRFSource); + this.gb_Pulse_control.Controls.Add(this.label35); + this.gb_Pulse_control.Controls.Add(this.label11); + this.gb_Pulse_control.Controls.Add(this.label22); + this.gb_Pulse_control.Controls.Add(this.label23); + this.gb_Pulse_control.Controls.Add(this.label21); + this.gb_Pulse_control.Controls.Add(this.btn_DutyMode); + this.gb_Pulse_control.Controls.Add(this.label19); + this.gb_Pulse_control.Controls.Add(this.btn_DutyControl); + this.gb_Pulse_control.Controls.Add(this.btn_GateSource); + this.gb_Pulse_control.Controls.Add(this.btn_PECSource); + this.gb_Pulse_control.Enabled = false; + this.gb_Pulse_control.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_Pulse_control.Location = new System.Drawing.Point(514, 12); + this.gb_Pulse_control.Name = "gb_Pulse_control"; + this.gb_Pulse_control.Size = new System.Drawing.Size(355, 528); + this.gb_Pulse_control.TabIndex = 13; + this.gb_Pulse_control.TabStop = false; + this.gb_Pulse_control.Text = "Pulse control"; + // + // label37 + // + this.label37.AutoSize = true; + this.label37.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label37.Location = new System.Drawing.Point(5, 277); + this.label37.Name = "label37"; + this.label37.Size = new System.Drawing.Size(126, 14); + this.label37.TabIndex = 9; + this.label37.Text = "Ramp Rate (us)"; + // + // label36 + // + this.label36.AutoSize = true; + this.label36.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label36.Location = new System.Drawing.Point(5, 250); + this.label36.Name = "label36"; + this.label36.Size = new System.Drawing.Size(126, 14); + this.label36.TabIndex = 9; + this.label36.Text = "Ramp Time (us)"; + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label20.Location = new System.Drawing.Point(5, 221); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(76, 14); + this.label20.TabIndex = 9; + this.label20.Text = "Pulse Kill"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label13.Location = new System.Drawing.Point(146, 34); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(22, 14); + this.label13.TabIndex = 1; + this.label13.Text = "�럯"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label12.Location = new System.Drawing.Point(6, 34); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(38, 14); + this.label12.TabIndex = 4; + this.label12.Text = "PRF"; + // + // lb_Duty_width_range + // + this.lb_Duty_width_range.Font = new System.Drawing.Font("Gulim", 8F, System.Drawing.FontStyle.Italic); + this.lb_Duty_width_range.Location = new System.Drawing.Point(29, 356); + this.lb_Duty_width_range.Name = "lb_Duty_width_range"; + this.lb_Duty_width_range.Size = new System.Drawing.Size(184, 11); + this.lb_Duty_width_range.TabIndex = 4; + this.lb_Duty_width_range.Text = "Duty width range : 0 to 100000 us"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Font = new System.Drawing.Font("Gulim", 8F, System.Drawing.FontStyle.Italic); + this.label14.Location = new System.Drawing.Point(7, 60); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(149, 11); + this.label14.TabIndex = 4; + this.label14.Text = "PRF Range : 1 to 300000 �럯"; + // + // tb_PRF + // + this.tb_PRF.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_PRF.Location = new System.Drawing.Point(50, 28); + this.tb_PRF.Name = "tb_PRF"; + this.tb_PRF.Size = new System.Drawing.Size(90, 23); + this.tb_PRF.TabIndex = 16; + this.tb_PRF.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_PRF_KeyPress); + // + // gb_Burst_control + // + this.gb_Burst_control.Controls.Add(this.label39); + this.gb_Burst_control.Controls.Add(this.label41); + this.gb_Burst_control.Controls.Add(this.label40); + this.gb_Burst_control.Controls.Add(this.label38); + this.gb_Burst_control.Controls.Add(this.label25); + this.gb_Burst_control.Controls.Add(this.tb_BurstCycles); + this.gb_Burst_control.Controls.Add(this.tb_BurstRate); + this.gb_Burst_control.Controls.Add(this.tb_BurstCount); + this.gb_Burst_control.Controls.Add(this.btn_BurstFiringMode); + this.gb_Burst_control.Controls.Add(this.btn_BurstStatus); + this.gb_Burst_control.Controls.Add(this.btn_BurstTriggerSouce); + this.gb_Burst_control.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_Burst_control.Location = new System.Drawing.Point(9, 376); + this.gb_Burst_control.Name = "gb_Burst_control"; + this.gb_Burst_control.Size = new System.Drawing.Size(336, 146); + this.gb_Burst_control.TabIndex = 13; + this.gb_Burst_control.TabStop = false; + this.gb_Burst_control.Text = "Burst control"; + // + // label39 + // + this.label39.AutoSize = true; + this.label39.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label39.Location = new System.Drawing.Point(19, 85); + this.label39.Name = "label39"; + this.label39.Size = new System.Drawing.Size(58, 14); + this.label39.TabIndex = 7; + this.label39.Text = "Cycles"; + // + // label41 + // + this.label41.AutoSize = true; + this.label41.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label41.Location = new System.Drawing.Point(223, 86); + this.label41.Name = "label41"; + this.label41.Size = new System.Drawing.Size(60, 14); + this.label41.TabIndex = 7; + this.label41.Text = "Source"; + // + // label40 + // + this.label40.AutoSize = true; + this.label40.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label40.Location = new System.Drawing.Point(229, 29); + this.label40.Name = "label40"; + this.label40.Size = new System.Drawing.Size(48, 14); + this.label40.TabIndex = 7; + this.label40.Text = "Mode"; + // + // label38 + // + this.label38.AutoSize = true; + this.label38.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label38.Location = new System.Drawing.Point(19, 57); + this.label38.Name = "label38"; + this.label38.Size = new System.Drawing.Size(51, 14); + this.label38.TabIndex = 7; + this.label38.Text = "Count"; + // + // label25 + // + this.label25.AutoSize = true; + this.label25.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label25.Location = new System.Drawing.Point(19, 29); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(41, 14); + this.label25.TabIndex = 7; + this.label25.Text = "Rate"; + // + // tb_BurstCycles + // + this.tb_BurstCycles.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_BurstCycles.Location = new System.Drawing.Point(83, 81); + this.tb_BurstCycles.Name = "tb_BurstCycles"; + this.tb_BurstCycles.Size = new System.Drawing.Size(95, 23); + this.tb_BurstCycles.TabIndex = 12; + this.tb_BurstCycles.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_Burst_cycles_KeyPress); + // + // tb_BurstRate + // + this.tb_BurstRate.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_BurstRate.Location = new System.Drawing.Point(83, 26); + this.tb_BurstRate.Name = "tb_BurstRate"; + this.tb_BurstRate.Size = new System.Drawing.Size(95, 23); + this.tb_BurstRate.TabIndex = 12; + this.tb_BurstRate.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_Burst_rate_KeyPress); + // + // tb_BurstCount + // + this.tb_BurstCount.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_BurstCount.Location = new System.Drawing.Point(83, 54); + this.tb_BurstCount.Name = "tb_BurstCount"; + this.tb_BurstCount.Size = new System.Drawing.Size(95, 23); + this.tb_BurstCount.TabIndex = 12; + this.tb_BurstCount.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_Burst_count_KeyPress); + // + // btn_BurstFiringMode + // + this.btn_BurstFiringMode.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_BurstFiringMode.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_BurstFiringMode.Location = new System.Drawing.Point(187, 54); + this.btn_BurstFiringMode.Name = "btn_BurstFiringMode"; + this.btn_BurstFiringMode.Size = new System.Drawing.Size(143, 23); + this.btn_BurstFiringMode.TabIndex = 8; + this.btn_BurstFiringMode.Text = "Continuous"; + this.btn_BurstFiringMode.UseVisualStyleBackColor = true; + this.btn_BurstFiringMode.Click += new System.EventHandler(this.btn_Burst_firing_mode_Click); + // + // btn_BurstStatus + // + this.btn_BurstStatus.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_BurstStatus.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_BurstStatus.Location = new System.Drawing.Point(22, 108); + this.btn_BurstStatus.Name = "btn_BurstStatus"; + this.btn_BurstStatus.Size = new System.Drawing.Size(156, 23); + this.btn_BurstStatus.TabIndex = 8; + this.btn_BurstStatus.Text = "Fire"; + this.btn_BurstStatus.UseVisualStyleBackColor = true; + this.btn_BurstStatus.Click += new System.EventHandler(this.btn_Burst_status_Click); + // + // btn_BurstTriggerSouce + // + this.btn_BurstTriggerSouce.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_BurstTriggerSouce.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_BurstTriggerSouce.Location = new System.Drawing.Point(187, 108); + this.btn_BurstTriggerSouce.Name = "btn_BurstTriggerSouce"; + this.btn_BurstTriggerSouce.Size = new System.Drawing.Size(143, 23); + this.btn_BurstTriggerSouce.TabIndex = 8; + this.btn_BurstTriggerSouce.Text = "Command"; + this.btn_BurstTriggerSouce.UseVisualStyleBackColor = true; + this.btn_BurstTriggerSouce.Click += new System.EventHandler(this.btn_Burst_trigger_souce_Click); + // + // tb_LPKRampRate + // + this.tb_LPKRampRate.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_LPKRampRate.Location = new System.Drawing.Point(250, 272); + this.tb_LPKRampRate.Name = "tb_LPKRampRate"; + this.tb_LPKRampRate.Size = new System.Drawing.Size(95, 23); + this.tb_LPKRampRate.TabIndex = 12; + this.tb_LPKRampRate.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_LPK_ramp_rate_KeyPress); + // + // tb_DutyWidth + // + this.tb_DutyWidth.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_DutyWidth.Location = new System.Drawing.Point(113, 330); + this.tb_DutyWidth.Name = "tb_DutyWidth"; + this.tb_DutyWidth.Size = new System.Drawing.Size(119, 23); + this.tb_DutyWidth.TabIndex = 12; + this.tb_DutyWidth.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_Duty_width_KeyPress); + // + // tb_FPKRampRate + // + this.tb_FPKRampRate.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_FPKRampRate.Location = new System.Drawing.Point(137, 272); + this.tb_FPKRampRate.Name = "tb_FPKRampRate"; + this.tb_FPKRampRate.Size = new System.Drawing.Size(95, 23); + this.tb_FPKRampRate.TabIndex = 12; + this.tb_FPKRampRate.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_FPK_ramp_rate_KeyPress); + // + // tb_LPKRampTime + // + this.tb_LPKRampTime.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_LPKRampTime.Location = new System.Drawing.Point(250, 245); + this.tb_LPKRampTime.Name = "tb_LPKRampTime"; + this.tb_LPKRampTime.Size = new System.Drawing.Size(95, 23); + this.tb_LPKRampTime.TabIndex = 12; + this.tb_LPKRampTime.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_LPK_ramp_time_KeyPress); + // + // tb_FPKRampTime + // + this.tb_FPKRampTime.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_FPKRampTime.Location = new System.Drawing.Point(137, 245); + this.tb_FPKRampTime.Name = "tb_FPKRampTime"; + this.tb_FPKRampTime.Size = new System.Drawing.Size(95, 23); + this.tb_FPKRampTime.TabIndex = 12; + this.tb_FPKRampTime.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_FPK_ramp_time_KeyPress); + // + // tb_PECLevel + // + this.tb_PECLevel.Font = new System.Drawing.Font("Gulim", 10F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.tb_PECLevel.Location = new System.Drawing.Point(50, 94); + this.tb_PECLevel.Name = "tb_PECLevel"; + this.tb_PECLevel.Size = new System.Drawing.Size(81, 23); + this.tb_PECLevel.TabIndex = 12; + this.tb_PECLevel.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tb_PEC_level_KeyPress); + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label15.Location = new System.Drawing.Point(5, 99); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(39, 14); + this.label15.TabIndex = 5; + this.label15.Text = "PEC"; + // + // label24 + // + this.label24.AutoSize = true; + this.label24.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label24.Location = new System.Drawing.Point(238, 335); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(25, 14); + this.label24.TabIndex = 6; + this.label24.Text = "us"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label16.Location = new System.Drawing.Point(143, 99); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(22, 14); + this.label16.TabIndex = 6; + this.label16.Text = "竊�"; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label17.Location = new System.Drawing.Point(6, 133); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(97, 14); + this.label17.TabIndex = 7; + this.label17.Text = "PRF Source"; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label18.Location = new System.Drawing.Point(6, 163); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(101, 14); + this.label18.TabIndex = 7; + this.label18.Text = "Gate Source"; + // + // btn_LPKEnable + // + this.btn_LPKEnable.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_LPKEnable.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_LPKEnable.Location = new System.Drawing.Point(289, 214); + this.btn_LPKEnable.Name = "btn_LPKEnable"; + this.btn_LPKEnable.Size = new System.Drawing.Size(56, 23); + this.btn_LPKEnable.TabIndex = 8; + this.btn_LPKEnable.Text = "ON"; + this.btn_LPKEnable.UseVisualStyleBackColor = true; + this.btn_LPKEnable.Click += new System.EventHandler(this.btn_LPK_Enable_Click); + // + // btn_FPKEnable + // + this.btn_FPKEnable.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_FPKEnable.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_FPKEnable.Location = new System.Drawing.Point(176, 215); + this.btn_FPKEnable.Name = "btn_FPKEnable"; + this.btn_FPKEnable.Size = new System.Drawing.Size(56, 23); + this.btn_FPKEnable.TabIndex = 8; + this.btn_FPKEnable.Text = "ON"; + this.btn_FPKEnable.UseVisualStyleBackColor = true; + this.btn_FPKEnable.Click += new System.EventHandler(this.btn_FPK_Enable_Click); + // + // btn_PRFSource + // + this.btn_PRFSource.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_PRFSource.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_PRFSource.Location = new System.Drawing.Point(113, 129); + this.btn_PRFSource.Name = "btn_PRFSource"; + this.btn_PRFSource.Size = new System.Drawing.Size(77, 23); + this.btn_PRFSource.TabIndex = 8; + this.btn_PRFSource.Text = "INT"; + this.btn_PRFSource.UseVisualStyleBackColor = true; + this.btn_PRFSource.Click += new System.EventHandler(this.btn_PRF_source_Click); + // + // label35 + // + this.label35.AutoSize = true; + this.label35.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label35.Location = new System.Drawing.Point(247, 219); + this.label35.Name = "label35"; + this.label35.Size = new System.Drawing.Size(36, 14); + this.label35.TabIndex = 7; + this.label35.Text = "LPK"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label11.Location = new System.Drawing.Point(134, 219); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(36, 14); + this.label11.TabIndex = 7; + this.label11.Text = "FPK"; + // + // label22 + // + this.label22.AutoSize = true; + this.label22.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label22.Location = new System.Drawing.Point(175, 305); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(87, 14); + this.label22.TabIndex = 7; + this.label22.Text = "Duty mode"; + // + // label23 + // + this.label23.AutoSize = true; + this.label23.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label23.Location = new System.Drawing.Point(5, 335); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(85, 14); + this.label23.TabIndex = 7; + this.label23.Text = "Duty width"; + // + // label21 + // + this.label21.AutoSize = true; + this.label21.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label21.Location = new System.Drawing.Point(5, 307); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(99, 14); + this.label21.TabIndex = 7; + this.label21.Text = "Duty control"; + // + // btn_DutyMode + // + this.btn_DutyMode.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_DutyMode.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_DutyMode.Location = new System.Drawing.Point(268, 300); + this.btn_DutyMode.Name = "btn_DutyMode"; + this.btn_DutyMode.Size = new System.Drawing.Size(77, 23); + this.btn_DutyMode.TabIndex = 8; + this.btn_DutyMode.Text = "Track"; + this.btn_DutyMode.UseVisualStyleBackColor = true; + this.btn_DutyMode.Click += new System.EventHandler(this.btn_Duty_mode_Click); + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label19.Location = new System.Drawing.Point(6, 192); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(98, 14); + this.label19.TabIndex = 7; + this.label19.Text = "PEC Source"; + // + // btn_DutyControl + // + this.btn_DutyControl.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_DutyControl.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_DutyControl.Location = new System.Drawing.Point(113, 300); + this.btn_DutyControl.Name = "btn_DutyControl"; + this.btn_DutyControl.Size = new System.Drawing.Size(56, 23); + this.btn_DutyControl.TabIndex = 8; + this.btn_DutyControl.Text = "ON"; + this.btn_DutyControl.UseVisualStyleBackColor = true; + this.btn_DutyControl.Click += new System.EventHandler(this.btn_Duty_control_Click); + // + // btn_GateSource + // + this.btn_GateSource.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_GateSource.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_GateSource.Location = new System.Drawing.Point(113, 159); + this.btn_GateSource.Name = "btn_GateSource"; + this.btn_GateSource.Size = new System.Drawing.Size(77, 23); + this.btn_GateSource.TabIndex = 8; + this.btn_GateSource.Text = "INT"; + this.btn_GateSource.UseVisualStyleBackColor = true; + this.btn_GateSource.Click += new System.EventHandler(this.btn_Gate_source_Click); + // + // btn_PECSource + // + this.btn_PECSource.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_PECSource.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.btn_PECSource.Location = new System.Drawing.Point(113, 188); + this.btn_PECSource.Name = "btn_PECSource"; + this.btn_PECSource.Size = new System.Drawing.Size(77, 23); + this.btn_PECSource.TabIndex = 8; + this.btn_PECSource.Text = "INT"; + this.btn_PECSource.UseVisualStyleBackColor = true; + this.btn_PECSource.Click += new System.EventHandler(this.btn_PEC_source_Click); + // + // gb_Port_status + // + this.gb_Port_status.Controls.Add(this.label26); + this.gb_Port_status.Controls.Add(this.label27); + this.gb_Port_status.Controls.Add(this.lb_PortName); + this.gb_Port_status.Controls.Add(this.lb_PortStatus); + this.gb_Port_status.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_Port_status.Location = new System.Drawing.Point(501, 601); + this.gb_Port_status.Name = "gb_Port_status"; + this.gb_Port_status.Size = new System.Drawing.Size(200, 67); + this.gb_Port_status.TabIndex = 13; + this.gb_Port_status.TabStop = false; + this.gb_Port_status.Text = "Port status"; + // + // label26 + // + this.label26.AutoSize = true; + this.label26.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label26.Location = new System.Drawing.Point(6, 20); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(86, 14); + this.label26.TabIndex = 11; + this.label26.Text = "Port num :"; + // + // label27 + // + this.label27.AutoSize = true; + this.label27.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.label27.Location = new System.Drawing.Point(6, 44); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(93, 14); + this.label27.TabIndex = 11; + this.label27.Text = "Port state :"; + // + // lb_PortName + // + this.lb_PortName.AutoSize = true; + this.lb_PortName.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_PortName.Location = new System.Drawing.Point(102, 20); + this.lb_PortName.Name = "lb_PortName"; + this.lb_PortName.Size = new System.Drawing.Size(62, 14); + this.lb_PortName.TabIndex = 11; + this.lb_PortName.Text = "COM11"; + // + // lb_PortStatus + // + this.lb_PortStatus.AutoSize = true; + this.lb_PortStatus.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_PortStatus.Location = new System.Drawing.Point(101, 44); + this.lb_PortStatus.Name = "lb_PortStatus"; + this.lb_PortStatus.Size = new System.Drawing.Size(50, 14); + this.lb_PortStatus.TabIndex = 11; + this.lb_PortStatus.Text = "Close"; + // + // gb_SystemStatus + // + this.gb_SystemStatus.Controls.Add(this.lb_PowerOn); + this.gb_SystemStatus.Controls.Add(this.lb_LDDOn); + this.gb_SystemStatus.Controls.Add(this.lb_KeySwitch); + this.gb_SystemStatus.Controls.Add(this.lb_LDDInterlock); + this.gb_SystemStatus.Controls.Add(this.lb_QSWOn); + this.gb_SystemStatus.Controls.Add(this.lb_ShutterInterlock); + this.gb_SystemStatus.Controls.Add(this.lb_ShutterEnable); + this.gb_SystemStatus.Font = new System.Drawing.Font("Gulim", 11F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.gb_SystemStatus.Location = new System.Drawing.Point(12, 12); + this.gb_SystemStatus.Name = "gb_SystemStatus"; + this.gb_SystemStatus.Size = new System.Drawing.Size(200, 197); + this.gb_SystemStatus.TabIndex = 12; + this.gb_SystemStatus.TabStop = false; + this.gb_SystemStatus.Text = "System status"; + // + // lb_PowerOn + // + this.lb_PowerOn.BackColor = System.Drawing.Color.Red; + this.lb_PowerOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PowerOn.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_PowerOn.ForeColor = System.Drawing.Color.Black; + this.lb_PowerOn.Location = new System.Drawing.Point(6, 20); + this.lb_PowerOn.Name = "lb_PowerOn"; + this.lb_PowerOn.Size = new System.Drawing.Size(188, 19); + this.lb_PowerOn.TabIndex = 4; + this.lb_PowerOn.Text = "Power"; + this.lb_PowerOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LDDOn + // + this.lb_LDDOn.BackColor = System.Drawing.Color.Red; + this.lb_LDDOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LDDOn.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LDDOn.ForeColor = System.Drawing.Color.Black; + this.lb_LDDOn.Location = new System.Drawing.Point(6, 95); + this.lb_LDDOn.Name = "lb_LDDOn"; + this.lb_LDDOn.Size = new System.Drawing.Size(188, 19); + this.lb_LDDOn.TabIndex = 4; + this.lb_LDDOn.Text = "LDD"; + this.lb_LDDOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_KeySwitch + // + this.lb_KeySwitch.BackColor = System.Drawing.Color.Red; + this.lb_KeySwitch.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_KeySwitch.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_KeySwitch.ForeColor = System.Drawing.Color.Black; + this.lb_KeySwitch.Location = new System.Drawing.Point(6, 70); + this.lb_KeySwitch.Name = "lb_KeySwitch"; + this.lb_KeySwitch.Size = new System.Drawing.Size(188, 19); + this.lb_KeySwitch.TabIndex = 4; + this.lb_KeySwitch.Text = "Key Switch"; + this.lb_KeySwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_LDDInterlock + // + this.lb_LDDInterlock.BackColor = System.Drawing.Color.Red; + this.lb_LDDInterlock.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_LDDInterlock.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_LDDInterlock.ForeColor = System.Drawing.Color.Black; + this.lb_LDDInterlock.Location = new System.Drawing.Point(6, 170); + this.lb_LDDInterlock.Name = "lb_LDDInterlock"; + this.lb_LDDInterlock.Size = new System.Drawing.Size(188, 19); + this.lb_LDDInterlock.TabIndex = 4; + this.lb_LDDInterlock.Text = "LDD Interlock"; + this.lb_LDDInterlock.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_QSWOn + // + this.lb_QSWOn.BackColor = System.Drawing.Color.Red; + this.lb_QSWOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_QSWOn.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_QSWOn.ForeColor = System.Drawing.Color.Black; + this.lb_QSWOn.Location = new System.Drawing.Point(6, 120); + this.lb_QSWOn.Name = "lb_QSWOn"; + this.lb_QSWOn.Size = new System.Drawing.Size(188, 19); + this.lb_QSWOn.TabIndex = 4; + this.lb_QSWOn.Text = "Pulse"; + this.lb_QSWOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ShutterInterlock + // + this.lb_ShutterInterlock.BackColor = System.Drawing.Color.Red; + this.lb_ShutterInterlock.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ShutterInterlock.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ShutterInterlock.ForeColor = System.Drawing.Color.Black; + this.lb_ShutterInterlock.Location = new System.Drawing.Point(6, 145); + this.lb_ShutterInterlock.Name = "lb_ShutterInterlock"; + this.lb_ShutterInterlock.Size = new System.Drawing.Size(188, 19); + this.lb_ShutterInterlock.TabIndex = 4; + this.lb_ShutterInterlock.Text = "Shutter Interlock"; + this.lb_ShutterInterlock.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ShutterEnable + // + this.lb_ShutterEnable.BackColor = System.Drawing.Color.Red; + this.lb_ShutterEnable.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ShutterEnable.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Bold); + this.lb_ShutterEnable.ForeColor = System.Drawing.Color.Black; + this.lb_ShutterEnable.Location = new System.Drawing.Point(6, 45); + this.lb_ShutterEnable.Name = "lb_ShutterEnable"; + this.lb_ShutterEnable.Size = new System.Drawing.Size(188, 19); + this.lb_ShutterEnable.TabIndex = 4; + this.lb_ShutterEnable.Text = "Shutter"; + this.lb_ShutterEnable.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_SystemReset + // + this.btn_SystemReset.Enabled = false; + this.btn_SystemReset.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_SystemReset.Location = new System.Drawing.Point(514, 552); + this.btn_SystemReset.Name = "btn_SystemReset"; + this.btn_SystemReset.Size = new System.Drawing.Size(88, 23); + this.btn_SystemReset.TabIndex = 8; + this.btn_SystemReset.Text = "RESET"; + this.btn_SystemReset.UseVisualStyleBackColor = true; + this.btn_SystemReset.Click += new System.EventHandler(this.btn_System_reset_Click); + // + // PiLaserViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(895, 789); + this.Controls.Add(this.label28); + this.Controls.Add(this.gb_SystemFault); + this.Controls.Add(this.gb_SystemState); + this.Controls.Add(this.gb_GeneralAlarms); + this.Controls.Add(this.gb_FaultsInTemperature); + this.Controls.Add(this.gb_Power_control); + this.Controls.Add(this.lb_LDDHour); + this.Controls.Add(this.gb_Temperature_controls); + this.Controls.Add(this.gb_Monitors); + this.Controls.Add(this.gb_Pulse_control); + this.Controls.Add(this.gb_Port_status); + this.Controls.Add(this.gb_SystemStatus); + this.Controls.Add(this.btn_SystemReset); + this.DoubleBuffered = true; + this.Name = "PiLaserViewer"; + this.Text = "UVLaserViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PiLaserViewer_FormClosing); + this.gb_SystemFault.ResumeLayout(false); + this.gb_SystemState.ResumeLayout(false); + this.gb_GeneralAlarms.ResumeLayout(false); + this.gb_FaultsInTemperature.ResumeLayout(false); + this.gb_Power_control.ResumeLayout(false); + this.gb_Power_control.PerformLayout(); + this.gb_Temperature_controls.ResumeLayout(false); + this.gb_Temperature_controls.PerformLayout(); + this.gb_Monitors.ResumeLayout(false); + this.gb_Monitors.PerformLayout(); + this.gb_Pulse_control.ResumeLayout(false); + this.gb_Pulse_control.PerformLayout(); + this.gb_Burst_control.ResumeLayout(false); + this.gb_Burst_control.PerformLayout(); + this.gb_Port_status.ResumeLayout(false); + this.gb_Port_status.PerformLayout(); + this.gb_SystemStatus.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label28; + private System.Windows.Forms.GroupBox gb_SystemFault; + private System.Windows.Forms.Label lb_BoardState; + private System.Windows.Forms.Label lb_BoardCommunication; + private System.Windows.Forms.Label lb_SDCard; + private System.Windows.Forms.Label lb_Memory; + private System.Windows.Forms.GroupBox gb_SystemState; + private System.Windows.Forms.Label lb_SystemInitalization; + private System.Windows.Forms.Label lb_Setup; + private System.Windows.Forms.Label lb_Standby; + private System.Windows.Forms.Label lb_HardFault; + private System.Windows.Forms.Label lb_Running; + private System.Windows.Forms.Label lb_SoftFault; + private System.Windows.Forms.GroupBox gb_GeneralAlarms; + private System.Windows.Forms.Label lb_LDD1; + private System.Windows.Forms.Label lb_HFSync; + private System.Windows.Forms.Label lb_LDD2; + private System.Windows.Forms.Label lb_Flow; + private System.Windows.Forms.Label lb_Humidity; + private System.Windows.Forms.Label lb_QSW; + private System.Windows.Forms.Label lb_Wet; + private System.Windows.Forms.GroupBox gb_FaultsInTemperature; + private System.Windows.Forms.Label lb_TemperatureControl0; + private System.Windows.Forms.Label lb_TemperatureControl7; + private System.Windows.Forms.Label lb_TemperatureControl6; + private System.Windows.Forms.Label lb_TemperatureControl4; + private System.Windows.Forms.Label lb_TemperatureControl1; + private System.Windows.Forms.Label lb_TemperatureControl2; + private System.Windows.Forms.Label lb_TemperatureControl3; + private System.Windows.Forms.Label lb_TemperatureControl5; + private System.Windows.Forms.GroupBox gb_Power_control; + private System.Windows.Forms.Label lb_PowerMonitorReading; + private System.Windows.Forms.Label label62; + private System.Windows.Forms.TextBox tb_SetCurrent; + private System.Windows.Forms.Label label50; + private System.Windows.Forms.Label label51; + private System.Windows.Forms.Button btn_ShutterOpenClose; + private System.Windows.Forms.Label label52; + private System.Windows.Forms.Button btn_LDDOnOff; + private System.Windows.Forms.Label label53; + private System.Windows.Forms.Label label56; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label54; + private System.Windows.Forms.Label label55; + private System.Windows.Forms.Label lb_MaxCurrent; + private System.Windows.Forms.Label lb_DiodeVoltage; + private System.Windows.Forms.Label lb_ActualCurrent; + private System.Windows.Forms.Label lb_LDDHour; + private System.Windows.Forms.GroupBox gb_Temperature_controls; + private System.Windows.Forms.Label lb_ActualLDTemp; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_SetLDTemp; + private System.Windows.Forms.TextBox tb_SetTHGTemp; + private System.Windows.Forms.TextBox tb_SetSHGTemp; + private System.Windows.Forms.Label lb_ActualTHGTemp; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label lb_ActualSHGTemp; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.GroupBox gb_Monitors; + private System.Windows.Forms.Label lb_FlowRate; + private System.Windows.Forms.Label label45; + private System.Windows.Forms.Label label48; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.GroupBox gb_Pulse_control; + private System.Windows.Forms.Label label37; + private System.Windows.Forms.Label label36; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label lb_Duty_width_range; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.TextBox tb_PRF; + private System.Windows.Forms.GroupBox gb_Burst_control; + private System.Windows.Forms.Label label39; + private System.Windows.Forms.Label label41; + private System.Windows.Forms.Label label40; + private System.Windows.Forms.Label label38; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.TextBox tb_BurstCycles; + private System.Windows.Forms.TextBox tb_BurstRate; + private System.Windows.Forms.TextBox tb_BurstCount; + private System.Windows.Forms.Button btn_BurstFiringMode; + private System.Windows.Forms.Button btn_BurstStatus; + private System.Windows.Forms.Button btn_BurstTriggerSouce; + private System.Windows.Forms.TextBox tb_LPKRampRate; + private System.Windows.Forms.TextBox tb_DutyWidth; + private System.Windows.Forms.TextBox tb_FPKRampRate; + private System.Windows.Forms.TextBox tb_LPKRampTime; + private System.Windows.Forms.TextBox tb_FPKRampTime; + private System.Windows.Forms.TextBox tb_PECLevel; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Button btn_LPKEnable; + private System.Windows.Forms.Button btn_FPKEnable; + private System.Windows.Forms.Button btn_PRFSource; + private System.Windows.Forms.Label label35; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.Button btn_DutyMode; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Button btn_DutyControl; + private System.Windows.Forms.Button btn_GateSource; + private System.Windows.Forms.Button btn_PECSource; + private System.Windows.Forms.GroupBox gb_Port_status; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Label label27; + private System.Windows.Forms.Label lb_PortName; + private System.Windows.Forms.Label lb_PortStatus; + private System.Windows.Forms.GroupBox gb_SystemStatus; + private System.Windows.Forms.Label lb_PowerOn; + private System.Windows.Forms.Label lb_LDDOn; + private System.Windows.Forms.Label lb_KeySwitch; + private System.Windows.Forms.Label lb_LDDInterlock; + private System.Windows.Forms.Label lb_QSWOn; + private System.Windows.Forms.Label lb_ShutterInterlock; + private System.Windows.Forms.Label lb_ShutterEnable; + private System.Windows.Forms.Button btn_SystemReset; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.cs new file mode 100644 index 0000000..afe1b1f --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.cs @@ -0,0 +1,620 @@ +癤퓎sing SA_LTT; +using SA_LTT.Module; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class PiLaserViewer : Form + { + MainFrame _mainFrame; + Thread t_UIUpdate; + bool updateCheck; + + public PiLaserViewer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + UpdatePortStatus(); + UpdateSystemStatus(); + UpdateSystemFaults(); + UpdateGeneralAlarms(); + UpdateSystemState(); + UpdateFaultsInTemperature(); + UpdatePowerControl(); + UpdateMonitors(); + UpdateTemperatureControl(); + UpdatePulseControl(); + UpdateBurstControl(); + + lb_LDDHour.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.LddHours.ToString(); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void UpdatePortStatus() + { + lb_PortName.Text = _mainFrame.equipment.piLaser.PortName; + lb_PortStatus.Text = _mainFrame.equipment.piLaser.IsOpen ? "Open" : "Close"; + } + + private void UpdateSystemStatus() + { + lb_PowerOn.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.PowerOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_ShutterEnable.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.ShutterEnabled ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_KeySwitch.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.KeySwitch ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_LDDOn.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.LddOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_QSWOn.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.QswOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_ShutterInterlock.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.ShutterInterlock ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_LDDInterlock.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.LddInterlock ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + } + + private void UpdateSystemFaults() + { + lb_Memory.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemFaults.Memory ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_SDCard.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemFaults.SdCard ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_BoardCommunication.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemFaults.BoardCommunication ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_BoardState.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemFaults.BoardState ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + } + + private void UpdateGeneralAlarms() + { + lb_LDD1.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentGeneralAlarms.Ldd1 ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_LDD2.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentGeneralAlarms.Ldd2 ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_QSW.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentGeneralAlarms.Qsw ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_Flow.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentGeneralAlarms.Flow ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_Wet.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentGeneralAlarms.Wet ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_Humidity.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentGeneralAlarms.Humidity ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_HFSync.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentGeneralAlarms.HfSync ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + } + + private void UpdateSystemState() + { + lb_SystemInitalization.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemState.SystemInitialization ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_Setup.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemState.Setup ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_Running.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemState.Running ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_Standby.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemState.Standby ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_SoftFault.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemState.SoftFault ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_HardFault.BackColor = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemState.HardFault ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + } + + private void UpdateFaultsInTemperature() + { + lb_TemperatureControl0.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault0 ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_TemperatureControl1.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault1 ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_TemperatureControl2.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault2 ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_TemperatureControl3.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault3 ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_TemperatureControl4.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault4 ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_TemperatureControl5.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault5 ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_TemperatureControl6.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault6 ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_TemperatureControl7.BackColor = !_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentTemperatureControlFaults.TemperatureControlFault7 ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + } + + private void UpdatePowerControl() + { + if (this.ActiveControl == null || this.ActiveControl.Name != tb_SetCurrent.Name) + { + tb_SetCurrent.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent.ToString("F2"); + } + + lb_ActualCurrent.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.ActualCurrent.ToString("F2"); + lb_DiodeVoltage.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.DiodeVoltage.ToString("F2"); + lb_MaxCurrent.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.MaxCurrent.ToString("F2"); + btn_LDDOnOff.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd ? "ON" : "OFF"; + btn_ShutterOpenClose.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter ? "Open" : "Close"; + + lb_PowerMonitorReading.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.PowerMonitorReading.ToString("F2"); + } + + private void UpdateMonitors() + { + lb_FlowRate.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.FlowReading.ToString("F2"); + } + + private void UpdateTemperatureControl() + { + lb_ActualSHGTemp.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.ShgActualTemperature.ToString("F2"); + lb_ActualTHGTemp.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.ThgActualTemperature.ToString("F2"); + lb_ActualLDTemp.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.LdActualTemperature.ToString("F2"); + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_SetSHGTemp.Name) + { + tb_SetSHGTemp.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.ShgTemperatureSetPoint.ToString("F2"); + } + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_SetTHGTemp.Name) + { + tb_SetTHGTemp.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.ThgTemperatureSetPoint.ToString("F2"); + } + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_SetLDTemp.Name) + { + tb_SetLDTemp.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.LdTemperatureSetPoint.ToString("F2"); + } + } + + private void UpdatePulseControl() + { + if (this.ActiveControl == null || this.ActiveControl.Name != tb_PRF.Name) + { + tb_PRF.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.Prf.ToString("F2"); + } + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_PECLevel.Name) + { + tb_PECLevel.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.PecLevel.ToString("F2"); + } + + btn_PRFSource.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.PrfSource.ToString(); + btn_GateSource.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.GateSource.ToString(); + btn_PECSource.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.PecSource.ToString(); + + btn_FPKEnable.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.FpkEnable ? "ON" : "OFF"; + btn_LPKEnable.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.LpkEnable ? "ON" : "OFF"; + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_FPKRampTime.Name) + { + tb_FPKRampTime.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.FpkRampTime.ToString("F2"); + } + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_FPKRampRate.Name) + { + tb_FPKRampRate.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.FpkRampRate.ToString("F2"); + } + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_LPKRampTime.Name) + { + tb_LPKRampTime.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.LpkRampTime.ToString("F2"); + } + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_LPKRampRate.Name) + { + tb_LPKRampRate.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.LpkRampRate.ToString("F2"); + } + + btn_DutyControl.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.DutyControl ? "ON" : "OFF"; + btn_DutyMode.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.DutyControlMode.ToString(); + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_DutyWidth.Name) + { + tb_DutyWidth.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.DutyControlWidth.ToString("F2"); + } + + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.Prf == 0) + { + lb_Duty_width_range.Text = "Duty width range : 0"; + } + else + { + lb_Duty_width_range.Text = $"Duty width range : 0 to {1 / _mainFrame.equipment.piLaser.CurrentPiLaserStatus.Prf - 0.1} us"; + } + } + + private void UpdateBurstControl() + { + if (this.ActiveControl == null || this.ActiveControl.Name != tb_BurstRate.Name) + { + tb_BurstRate.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.BurstRate.ToString("F2"); + } + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_BurstCount.Name) + { + tb_BurstCount.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.BurstCount.ToString("F2"); + } + + if (this.ActiveControl == null || this.ActiveControl.Name != tb_BurstCycles.Name) + { + tb_BurstCycles.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.BurstCycles.ToString("F2"); + } + + btn_BurstStatus.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.BurstStatus ? "Disable" : "Enable"; + + btn_BurstFiringMode.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.BurstFiringMode.ToString(); + btn_BurstTriggerSouce.Text = _mainFrame.equipment.piLaser.CurrentPiLaserStatus.BurstTriggerSource.ToString(); + } + private void btn_LDD_on_off_Click(object sender, EventArgs e) + { + if(_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd) + { + if(_mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent > 0) + { + _mainFrame.equipment.alarmManager.Occur(AlarmCode.AL_0080_SET_CURRENT_IS_NOT_ZERO); + return; + } + } + + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} {!_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd}"); + _mainFrame.equipment.piLaser.WriteEnableLdd(!_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableLdd); + } + + private void btn_Shutter_open_close_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.SetCurrent > 0) + { + _mainFrame.equipment.alarmManager.Occur(AlarmCode.AL_0080_SET_CURRENT_IS_NOT_ZERO); + return; + } + } + + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} {!_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter}"); + _mainFrame.equipment.piLaser.WriteEnableShutter(!_mainFrame.equipment.piLaser.CurrentPiLaserStatus.EnableShutter); + } + + private void tb_Set_current_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + double current = 0; + + if (double.TryParse(tb_SetCurrent.Text, out current)) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.LddOn && _mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.ShutterEnabled) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} : {current}"); + _mainFrame.equipment.piLaser.WriteSetCurrent(current); + } + else + { + if(_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.LddOn == false) + { + _mainFrame.equipment.alarmManager.Occur(AlarmCode.AL_0078_LDD_IS_NOT_ON); + } + + if(_mainFrame.equipment.piLaser.CurrentPiLaserStatus.CurrentSystemStatus.ShutterEnabled == false) + { + _mainFrame.equipment.alarmManager.Occur(AlarmCode.AL_0079_SHUTTER_IS_NOT_OPEN); + } + } + } + + this.ActiveControl = null; + } + } + + private void tb_Set_SHG_Temp_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + double temp = 0; + + if (double.TryParse(tb_SetSHGTemp.Text, out temp)) + { + _mainFrame.equipment.piLaser.WriteTemperatureSetPoint(TemperaturePointType.SHG, temp); + } + + this.ActiveControl = null; + } + } + + private void tb_Set_THG_Temp_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + double temp = 0; + + if (double.TryParse(tb_SetTHGTemp.Text, out temp)) + { + _mainFrame.equipment.piLaser.WriteTemperatureSetPoint(TemperaturePointType.THG, temp); + } + + this.ActiveControl = null; + } + } + + private void tb_Set_LD_Temp_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + double temp = 0; + + if (double.TryParse(tb_SetLDTemp.Text, out temp)) + { + _mainFrame.equipment.piLaser.WriteTemperatureSetPoint(TemperaturePointType.LD1, temp); + } + + this.ActiveControl = null; + } + } + + private void tb_PRF_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + int PRF = 0; + + if (int.TryParse(tb_PRF.Text, out PRF)) + { + _mainFrame.equipment.piLaser.WritePrf(PRF); + } + + this.ActiveControl = null; + } + } + + private void tb_PEC_level_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + double PEC_level = 0; + + if (double.TryParse(tb_PECLevel.Text, out PEC_level)) + { + _mainFrame.equipment.piLaser.WritePecLevel(PEC_level); + } + + this.ActiveControl = null; + } + } + + private void btn_PRF_source_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.PrfSource == SourcesType.INT) + _mainFrame.equipment.piLaser.WritePrfSource(SourcesType.EXT); + else + _mainFrame.equipment.piLaser.WritePrfSource(SourcesType.INT); + } + + private void btn_Gate_source_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.GateSource == SourcesType.INT) + _mainFrame.equipment.piLaser.WriteGateSource(SourcesType.EXT); + else + _mainFrame.equipment.piLaser.WriteGateSource(SourcesType.INT); + } + + private void btn_PEC_source_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.PecSource == SourcesType.INT) + _mainFrame.equipment.piLaser.WritePecSource(SourcesType.EXT); + else + _mainFrame.equipment.piLaser.WritePecSource(SourcesType.INT); + } + + private void btn_FPK_Enable_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.FpkEnable) + _mainFrame.equipment.piLaser.WriteFpkEnable(false); + else + _mainFrame.equipment.piLaser.WriteFpkEnable(true); + } + + private void tb_FPK_ramp_time_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + int time = 0; + + if (int.TryParse(tb_FPKRampTime.Text, out time)) + { + _mainFrame.equipment.piLaser.WriteFpkRampTime(time); + } + + this.ActiveControl = null; + } + } + + private void tb_FPK_ramp_rate_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + int rate = 0; + + if (int.TryParse(tb_FPKRampRate.Text, out rate)) + { + _mainFrame.equipment.piLaser.WriteFpkRampRate(rate); + } + + this.ActiveControl = null; + } + } + + private void btn_LPK_Enable_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.LpkEnable) + _mainFrame.equipment.piLaser.WriteLpkEnable(false); + else + _mainFrame.equipment.piLaser.WriteLpkEnable(true); + } + + private void tb_LPK_ramp_time_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + double time = 0; + + if (double.TryParse(tb_LPKRampTime.Text, out time)) + { + _mainFrame.equipment.piLaser.WriteLpkRampTime(time); + } + + this.ActiveControl = null; + } + } + + private void tb_LPK_ramp_rate_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + int rate = 0; + + if (int.TryParse(tb_LPKRampRate.Text, out rate)) + { + _mainFrame.equipment.piLaser.WriteLpkRampRate(rate); + } + + this.ActiveControl = null; + } + } + + private void btn_Duty_control_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.DutyControl) + _mainFrame.equipment.piLaser.WriteDutyControl(false); + else + _mainFrame.equipment.piLaser.WriteDutyControl(true); + } + + private void btn_Duty_mode_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.DutyControlMode == DutyControlModeType.Fixed) + _mainFrame.equipment.piLaser.WriteDutyControlMode(DutyControlModeType.Track); + else + _mainFrame.equipment.piLaser.WriteDutyControlMode(DutyControlModeType.Fixed); + } + + private void tb_Duty_width_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + double width = 0; + + if (double.TryParse(tb_DutyWidth.Text, out width)) + { + _mainFrame.equipment.piLaser.WriteDutyControlWidth(width); + } + + this.ActiveControl = null; + } + } + + private void tb_Burst_rate_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + ushort rate = 0; + + if (ushort.TryParse(tb_BurstRate.Text, out rate)) + { + _mainFrame.equipment.piLaser.WriteBurstRate(rate); + } + + this.ActiveControl = null; + } + } + + private void tb_Burst_count_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + ushort count = 0; + + if (ushort.TryParse(tb_BurstCount.Text, out count)) + { + _mainFrame.equipment.piLaser.WriteBurstCount(count); + } + + this.ActiveControl = null; + } + } + + private void tb_Burst_cycles_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + ushort cycles = 0; + + if (ushort.TryParse(tb_BurstCycles.Text, out cycles)) + { + _mainFrame.equipment.piLaser.WriteBurstCycles(cycles); + } + + this.ActiveControl = null; + } + } + + private void btn_Burst_status_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.BurstStatus) + _mainFrame.equipment.piLaser.WriteBurstStatus(false); + else + _mainFrame.equipment.piLaser.WriteBurstStatus(true); + } + + private void btn_Burst_firing_mode_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.BurstFiringMode == BurstFiringModeType.Continuous) + _mainFrame.equipment.piLaser.WriteBurstFiringMode(BurstFiringModeType.SingleShot); + else + _mainFrame.equipment.piLaser.WriteBurstFiringMode(BurstFiringModeType.Continuous); + } + + private void btn_Burst_trigger_souce_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.piLaser.CurrentPiLaserStatus.BurstTriggerSource == BurstTriggerSourceType.Command) + _mainFrame.equipment.piLaser.WriteBurstTriggerSource(BurstTriggerSourceType.Gate); + else + _mainFrame.equipment.piLaser.WriteBurstTriggerSource(BurstTriggerSourceType.Command); + } + + private void btn_System_reset_Click(object sender, EventArgs e) + { + _mainFrame.equipment.piLaser.WriteSystemReset(); + } + + private void PiLaserViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.Designer.cs new file mode 100644 index 0000000..ae7b60f --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.Designer.cs @@ -0,0 +1,338 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class EnergyMeterViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.label2 = new System.Windows.Forms.Label(); + this.tb_Energy = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tb_Flag = new System.Windows.Forms.TextBox(); + this.lb_PortName = new System.Windows.Forms.Label(); + this.gb_Status = new System.Windows.Forms.GroupBox(); + this.tb_CurrentMeasurementMode = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.lb_PowerMeterMode = new System.Windows.Forms.Label(); + this.tb_Count = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.tb_Average = new System.Windows.Forms.TextBox(); + this.tb_Min = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.tb_Max = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.tb_OriginalEnergy = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.gb_Status.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 67); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(45, 12); + this.label2.TabIndex = 52; + this.label2.Text = "Energy"; + // + // tb_Energy + // + this.tb_Energy.Location = new System.Drawing.Point(63, 64); + this.tb_Energy.Name = "tb_Energy"; + this.tb_Energy.ReadOnly = true; + this.tb_Energy.Size = new System.Drawing.Size(118, 21); + this.tb_Energy.TabIndex = 51; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 70); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(29, 12); + this.label1.TabIndex = 50; + this.label1.Text = "Flag"; + // + // tb_Flag + // + this.tb_Flag.Location = new System.Drawing.Point(63, 67); + this.tb_Flag.Name = "tb_Flag"; + this.tb_Flag.ReadOnly = true; + this.tb_Flag.Size = new System.Drawing.Size(118, 21); + this.tb_Flag.TabIndex = 49; + // + // lb_PortName + // + this.lb_PortName.AutoSize = true; + this.lb_PortName.Location = new System.Drawing.Point(12, 17); + this.lb_PortName.Name = "lb_PortName"; + this.lb_PortName.Size = new System.Drawing.Size(27, 12); + this.lb_PortName.TabIndex = 3; + this.lb_PortName.Text = "Port"; + // + // gb_Status + // + this.gb_Status.Controls.Add(this.lb_PortName); + this.gb_Status.Controls.Add(this.tb_CurrentMeasurementMode); + this.gb_Status.Controls.Add(this.label5); + this.gb_Status.Controls.Add(this.label1); + this.gb_Status.Controls.Add(this.tb_Flag); + this.gb_Status.Location = new System.Drawing.Point(12, 12); + this.gb_Status.Name = "gb_Status"; + this.gb_Status.Size = new System.Drawing.Size(233, 102); + this.gb_Status.TabIndex = 61; + this.gb_Status.TabStop = false; + this.gb_Status.Text = "Status"; + // + // tb_CurrentMeasurementMode + // + this.tb_CurrentMeasurementMode.Location = new System.Drawing.Point(63, 40); + this.tb_CurrentMeasurementMode.Name = "tb_CurrentMeasurementMode"; + this.tb_CurrentMeasurementMode.ReadOnly = true; + this.tb_CurrentMeasurementMode.Size = new System.Drawing.Size(118, 21); + this.tb_CurrentMeasurementMode.TabIndex = 49; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(12, 43); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(37, 12); + this.label5.TabIndex = 50; + this.label5.Text = "Mode"; + // + // lb_PowerMeterMode + // + this.lb_PowerMeterMode.AutoSize = true; + this.lb_PowerMeterMode.Font = new System.Drawing.Font("Gulim", 10F); + this.lb_PowerMeterMode.Location = new System.Drawing.Point(187, 67); + this.lb_PowerMeterMode.Name = "lb_PowerMeterMode"; + this.lb_PowerMeterMode.Size = new System.Drawing.Size(42, 14); + this.lb_PowerMeterMode.TabIndex = 53; + this.lb_PowerMeterMode.Text = "J/cm짼"; + // + // tb_Count + // + this.tb_Count.Location = new System.Drawing.Point(63, 91); + this.tb_Count.Name = "tb_Count"; + this.tb_Count.ReadOnly = true; + this.tb_Count.Size = new System.Drawing.Size(118, 21); + this.tb_Count.TabIndex = 51; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 94); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(38, 12); + this.label3.TabIndex = 52; + this.label3.Text = "Count"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(12, 122); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(51, 12); + this.label6.TabIndex = 52; + this.label6.Text = "Average"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(12, 175); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(26, 12); + this.label7.TabIndex = 52; + this.label7.Text = "Min"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(11, 149); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(30, 12); + this.label8.TabIndex = 52; + this.label8.Text = "Max"; + // + // tb_Average + // + this.tb_Average.Location = new System.Drawing.Point(63, 118); + this.tb_Average.Name = "tb_Average"; + this.tb_Average.ReadOnly = true; + this.tb_Average.Size = new System.Drawing.Size(118, 21); + this.tb_Average.TabIndex = 51; + // + // tb_Min + // + this.tb_Min.Location = new System.Drawing.Point(63, 172); + this.tb_Min.Name = "tb_Min"; + this.tb_Min.ReadOnly = true; + this.tb_Min.Size = new System.Drawing.Size(118, 21); + this.tb_Min.TabIndex = 51; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Gulim", 10F); + this.label4.Location = new System.Drawing.Point(187, 121); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(42, 14); + this.label4.TabIndex = 53; + this.label4.Text = "J/cm짼"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("Gulim", 10F); + this.label9.Location = new System.Drawing.Point(187, 174); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(42, 14); + this.label9.TabIndex = 53; + this.label9.Text = "J/cm짼"; + // + // tb_Max + // + this.tb_Max.Location = new System.Drawing.Point(63, 145); + this.tb_Max.Name = "tb_Max"; + this.tb_Max.ReadOnly = true; + this.tb_Max.Size = new System.Drawing.Size(118, 21); + this.tb_Max.TabIndex = 51; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Font = new System.Drawing.Font("Gulim", 10F); + this.label10.Location = new System.Drawing.Point(187, 149); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(42, 14); + this.label10.TabIndex = 53; + this.label10.Text = "J/cm짼"; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label10); + this.groupBox1.Controls.Add(this.tb_OriginalEnergy); + this.groupBox1.Controls.Add(this.tb_Energy); + this.groupBox1.Controls.Add(this.tb_Average); + this.groupBox1.Controls.Add(this.label9); + this.groupBox1.Controls.Add(this.tb_Max); + this.groupBox1.Controls.Add(this.label8); + this.groupBox1.Controls.Add(this.tb_Count); + this.groupBox1.Controls.Add(this.tb_Min); + this.groupBox1.Controls.Add(this.label12); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.lb_PowerMeterMode); + this.groupBox1.Controls.Add(this.label11); + this.groupBox1.Controls.Add(this.label7); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Location = new System.Drawing.Point(12, 120); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(233, 204); + this.groupBox1.TabIndex = 62; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Measurement Info"; + // + // tb_OriginalEnergy + // + this.tb_OriginalEnergy.Location = new System.Drawing.Point(63, 20); + this.tb_OriginalEnergy.Name = "tb_OriginalEnergy"; + this.tb_OriginalEnergy.ReadOnly = true; + this.tb_OriginalEnergy.Size = new System.Drawing.Size(118, 21); + this.tb_OriginalEnergy.TabIndex = 51; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Font = new System.Drawing.Font("Gulim", 10F); + this.label12.Location = new System.Drawing.Point(187, 23); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(13, 14); + this.label12.TabIndex = 53; + this.label12.Text = "J"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(12, 23); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(48, 12); + this.label11.TabIndex = 52; + this.label11.Text = "Original"; + // + // EnergyMeterViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(260, 337); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.gb_Status); + this.Name = "EnergyMeterViewer"; + this.Text = "EnergyMeterViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PowerMeterViewer_FormClosing); + this.gb_Status.ResumeLayout(false); + this.gb_Status.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tb_Energy; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox tb_Flag; + private System.Windows.Forms.Label lb_PortName; + private System.Windows.Forms.GroupBox gb_Status; + private System.Windows.Forms.TextBox tb_CurrentMeasurementMode; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label lb_PowerMeterMode; + private System.Windows.Forms.TextBox tb_Count; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TextBox tb_Average; + private System.Windows.Forms.TextBox tb_Min; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox tb_Max; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TextBox tb_OriginalEnergy; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label11; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.cs new file mode 100644 index 0000000..98d24e7 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.cs @@ -0,0 +1,100 @@ +癤퓎sing SA_LTT; +using System; +using System.Drawing; +using System.Threading; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class EnergyMeterViewer : Form + { + MainFrame _mainFrame; + Thread t_UIUpdate; + bool updateCheck; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public EnergyMeterViewer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + lb_PortName.Text = _mainFrame.equipment.powerMeter.PortName; + lb_PortName.BackColor = _mainFrame.equipment.powerMeter.IsOpen ? Color.Lime : Color.Red; + + tb_CurrentMeasurementMode.Text = _mainFrame.equipment.powerMeter.CurrentMeasurementMode.ToString(); + tb_Flag.Text = _mainFrame.equipment.powerMeter.Flag.ToString(); + tb_OriginalEnergy.Text = _mainFrame.equipment.powerMeter.Energy.ToString(); + tb_Energy.Text = _mainFrame.equipment.powerMeter.EnergyPerUnitArea.ToString(); + tb_Count.Text = _mainFrame.equipment.powerMeter.MeasurementsEnergyPerUnitArea.Count.ToString(); + tb_Average.Text = $"{_mainFrame.equipment.powerMeter.MeasurementAverageEnergyPerUnitArea:F4}"; + tb_Max.Text = $"{_mainFrame.equipment.powerMeter.MeasurementMaxEnergyPerUnitArea:F4}"; + tb_Min.Text = $"{_mainFrame.equipment.powerMeter.MeasurementMinEnergyPerUnitArea:F4}"; + + if (_mainFrame.equipment.powerMeter.CurrentMeasurementMode == SA_LTT.Module.PowerMeter.MeasurementMode.Energy) + { + lb_PowerMeterMode.Text = "J/cm짼"; + } + else + { + lb_PowerMeterMode.Text = "W"; + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void PowerMeterViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + + this.Hide(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.Designer.cs new file mode 100644 index 0000000..b127c29 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.Designer.cs @@ -0,0 +1,361 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class PreAlignViwer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.gb_Status = new System.Windows.Forms.GroupBox(); + this.label9 = new System.Windows.Forms.Label(); + this.tb_AlignTime = new System.Windows.Forms.TextBox(); + this.lb_IsHome = new System.Windows.Forms.Label(); + this.lb_Vacuum = new System.Windows.Forms.Label(); + this.lb_WaferExist = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.tb_PositionT = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_PositionX = new System.Windows.Forms.TextBox(); + this.tb_PositionY = new System.Windows.Forms.TextBox(); + this.lb_Version = new System.Windows.Forms.Label(); + this.lb_PortName = new System.Windows.Forms.Label(); + this.btn_Home = new System.Windows.Forms.Button(); + this.btn_Align = new System.Windows.Forms.Button(); + this.btn_Again = new System.Windows.Forms.Button(); + this.tb_Angle = new System.Windows.Forms.TextBox(); + this.btn_VacuumOn = new System.Windows.Forms.Button(); + this.btn_VacuumOff = new System.Windows.Forms.Button(); + this.btn_Center = new System.Windows.Forms.Button(); + this.btn_PinUp = new System.Windows.Forms.Button(); + this.btn_PinDown = new System.Windows.Forms.Button(); + this.gb_Control = new System.Windows.Forms.GroupBox(); + this.lb_RunEnable = new System.Windows.Forms.Label(); + this.gb_Status.SuspendLayout(); + this.gb_Control.SuspendLayout(); + this.SuspendLayout(); + // + // gb_Status + // + this.gb_Status.Controls.Add(this.label9); + this.gb_Status.Controls.Add(this.tb_AlignTime); + this.gb_Status.Controls.Add(this.lb_IsHome); + this.gb_Status.Controls.Add(this.lb_Vacuum); + this.gb_Status.Controls.Add(this.lb_RunEnable); + this.gb_Status.Controls.Add(this.lb_WaferExist); + this.gb_Status.Controls.Add(this.label6); + this.gb_Status.Controls.Add(this.tb_PositionT); + this.gb_Status.Controls.Add(this.label4); + this.gb_Status.Controls.Add(this.label3); + this.gb_Status.Controls.Add(this.tb_PositionX); + this.gb_Status.Controls.Add(this.tb_PositionY); + this.gb_Status.Controls.Add(this.lb_Version); + this.gb_Status.Controls.Add(this.lb_PortName); + this.gb_Status.Location = new System.Drawing.Point(12, 12); + this.gb_Status.Name = "gb_Status"; + this.gb_Status.Size = new System.Drawing.Size(482, 147); + this.gb_Status.TabIndex = 13; + this.gb_Status.TabStop = false; + this.gb_Status.Text = "Status"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(195, 60); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(66, 12); + this.label9.TabIndex = 17; + this.label9.Text = "Align Time"; + // + // tb_AlignTime + // + this.tb_AlignTime.Location = new System.Drawing.Point(267, 55); + this.tb_AlignTime.Name = "tb_AlignTime"; + this.tb_AlignTime.ReadOnly = true; + this.tb_AlignTime.Size = new System.Drawing.Size(72, 21); + this.tb_AlignTime.TabIndex = 16; + // + // lb_IsHome + // + this.lb_IsHome.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_IsHome.Location = new System.Drawing.Point(104, 109); + this.lb_IsHome.Name = "lb_IsHome"; + this.lb_IsHome.Size = new System.Drawing.Size(74, 21); + this.lb_IsHome.TabIndex = 10; + this.lb_IsHome.Text = "Home"; + this.lb_IsHome.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Vacuum + // + this.lb_Vacuum.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Vacuum.Location = new System.Drawing.Point(104, 83); + this.lb_Vacuum.Name = "lb_Vacuum"; + this.lb_Vacuum.Size = new System.Drawing.Size(74, 21); + this.lb_Vacuum.TabIndex = 10; + this.lb_Vacuum.Text = "Vaccum"; + this.lb_Vacuum.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_WaferExist + // + this.lb_WaferExist.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_WaferExist.Location = new System.Drawing.Point(104, 56); + this.lb_WaferExist.Name = "lb_WaferExist"; + this.lb_WaferExist.Size = new System.Drawing.Size(74, 21); + this.lb_WaferExist.TabIndex = 10; + this.lb_WaferExist.Text = "Wafer"; + this.lb_WaferExist.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(7, 58); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(13, 12); + this.label6.TabIndex = 9; + this.label6.Text = "X"; + // + // tb_PositionT + // + this.tb_PositionT.Location = new System.Drawing.Point(26, 108); + this.tb_PositionT.Name = "tb_PositionT"; + this.tb_PositionT.ReadOnly = true; + this.tb_PositionT.Size = new System.Drawing.Size(72, 21); + this.tb_PositionT.TabIndex = 8; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(7, 113); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(13, 12); + this.label4.TabIndex = 7; + this.label4.Text = "T"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(7, 85); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(13, 12); + this.label3.TabIndex = 7; + this.label3.Text = "Y"; + // + // tb_PositionX + // + this.tb_PositionX.Location = new System.Drawing.Point(26, 55); + this.tb_PositionX.Name = "tb_PositionX"; + this.tb_PositionX.ReadOnly = true; + this.tb_PositionX.Size = new System.Drawing.Size(72, 21); + this.tb_PositionX.TabIndex = 6; + // + // tb_PositionY + // + this.tb_PositionY.Location = new System.Drawing.Point(26, 82); + this.tb_PositionY.Name = "tb_PositionY"; + this.tb_PositionY.ReadOnly = true; + this.tb_PositionY.Size = new System.Drawing.Size(72, 21); + this.tb_PositionY.TabIndex = 6; + // + // lb_Version + // + this.lb_Version.AutoSize = true; + this.lb_Version.Location = new System.Drawing.Point(6, 35); + this.lb_Version.Name = "lb_Version"; + this.lb_Version.Size = new System.Drawing.Size(62, 12); + this.lb_Version.TabIndex = 3; + this.lb_Version.Text = "Version - "; + // + // lb_PortName + // + this.lb_PortName.AutoSize = true; + this.lb_PortName.Location = new System.Drawing.Point(6, 17); + this.lb_PortName.Name = "lb_PortName"; + this.lb_PortName.Size = new System.Drawing.Size(27, 12); + this.lb_PortName.TabIndex = 3; + this.lb_PortName.Text = "Port"; + // + // btn_Home + // + this.btn_Home.Location = new System.Drawing.Point(9, 20); + this.btn_Home.Name = "btn_Home"; + this.btn_Home.Size = new System.Drawing.Size(75, 23); + this.btn_Home.TabIndex = 14; + this.btn_Home.Text = "Home"; + this.btn_Home.UseVisualStyleBackColor = true; + this.btn_Home.Click += new System.EventHandler(this.btn_Home_Click); + // + // btn_Align + // + this.btn_Align.Location = new System.Drawing.Point(90, 73); + this.btn_Align.Name = "btn_Align"; + this.btn_Align.Size = new System.Drawing.Size(75, 23); + this.btn_Align.TabIndex = 14; + this.btn_Align.Text = "Align"; + this.btn_Align.UseVisualStyleBackColor = true; + this.btn_Align.Click += new System.EventHandler(this.btn_Align_Click); + // + // btn_Again + // + this.btn_Again.Location = new System.Drawing.Point(90, 102); + this.btn_Again.Name = "btn_Again"; + this.btn_Again.Size = new System.Drawing.Size(75, 23); + this.btn_Again.TabIndex = 14; + this.btn_Again.Text = "Again"; + this.btn_Again.UseVisualStyleBackColor = true; + this.btn_Again.Click += new System.EventHandler(this.btn_Again_Click); + // + // tb_Angle + // + this.tb_Angle.Location = new System.Drawing.Point(9, 73); + this.tb_Angle.Name = "tb_Angle"; + this.tb_Angle.Size = new System.Drawing.Size(75, 21); + this.tb_Angle.TabIndex = 15; + this.tb_Angle.Text = "0"; + // + // btn_VacuumOn + // + this.btn_VacuumOn.Location = new System.Drawing.Point(90, 20); + this.btn_VacuumOn.Name = "btn_VacuumOn"; + this.btn_VacuumOn.Size = new System.Drawing.Size(79, 23); + this.btn_VacuumOn.TabIndex = 16; + this.btn_VacuumOn.Text = "VacuumOn"; + this.btn_VacuumOn.UseVisualStyleBackColor = true; + this.btn_VacuumOn.Click += new System.EventHandler(this.btn_VacuumOn_Click); + // + // btn_VacuumOff + // + this.btn_VacuumOff.Location = new System.Drawing.Point(175, 20); + this.btn_VacuumOff.Name = "btn_VacuumOff"; + this.btn_VacuumOff.Size = new System.Drawing.Size(79, 23); + this.btn_VacuumOff.TabIndex = 16; + this.btn_VacuumOff.Text = "VacuumOff"; + this.btn_VacuumOff.UseVisualStyleBackColor = true; + this.btn_VacuumOff.Click += new System.EventHandler(this.btn_VacuumOff_Click); + // + // btn_Center + // + this.btn_Center.Location = new System.Drawing.Point(175, 73); + this.btn_Center.Name = "btn_Center"; + this.btn_Center.Size = new System.Drawing.Size(79, 23); + this.btn_Center.TabIndex = 17; + this.btn_Center.Text = "Center"; + this.btn_Center.UseVisualStyleBackColor = true; + this.btn_Center.Click += new System.EventHandler(this.btn_Center_Click); + // + // btn_PinUp + // + this.btn_PinUp.Location = new System.Drawing.Point(260, 73); + this.btn_PinUp.Name = "btn_PinUp"; + this.btn_PinUp.Size = new System.Drawing.Size(79, 23); + this.btn_PinUp.TabIndex = 17; + this.btn_PinUp.Text = "Pin Up"; + this.btn_PinUp.UseVisualStyleBackColor = true; + this.btn_PinUp.Click += new System.EventHandler(this.btn_PinUp_Click); + // + // btn_PinDown + // + this.btn_PinDown.Location = new System.Drawing.Point(260, 102); + this.btn_PinDown.Name = "btn_PinDown"; + this.btn_PinDown.Size = new System.Drawing.Size(79, 23); + this.btn_PinDown.TabIndex = 18; + this.btn_PinDown.Text = "Pin Down"; + this.btn_PinDown.UseVisualStyleBackColor = true; + this.btn_PinDown.Click += new System.EventHandler(this.btn_PinDown_Click); + // + // gb_Control + // + this.gb_Control.Controls.Add(this.btn_PinDown); + this.gb_Control.Controls.Add(this.btn_Home); + this.gb_Control.Controls.Add(this.btn_PinUp); + this.gb_Control.Controls.Add(this.btn_Align); + this.gb_Control.Controls.Add(this.btn_Center); + this.gb_Control.Controls.Add(this.btn_Again); + this.gb_Control.Controls.Add(this.btn_VacuumOff); + this.gb_Control.Controls.Add(this.tb_Angle); + this.gb_Control.Controls.Add(this.btn_VacuumOn); + this.gb_Control.Location = new System.Drawing.Point(12, 165); + this.gb_Control.Name = "gb_Control"; + this.gb_Control.Size = new System.Drawing.Size(482, 152); + this.gb_Control.TabIndex = 19; + this.gb_Control.TabStop = false; + this.gb_Control.Text = "Control"; + // + // lb_RunEnable + // + this.lb_RunEnable.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RunEnable.Location = new System.Drawing.Point(104, 31); + this.lb_RunEnable.Name = "lb_RunEnable"; + this.lb_RunEnable.Size = new System.Drawing.Size(74, 21); + this.lb_RunEnable.TabIndex = 10; + this.lb_RunEnable.Text = "Run Enable"; + this.lb_RunEnable.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // PreAlignViwer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(499, 329); + this.Controls.Add(this.gb_Status); + this.Controls.Add(this.gb_Control); + this.Name = "PreAlignViwer"; + this.Text = "PreAlignViwer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PreAlignViwer_FormClosing); + this.gb_Status.ResumeLayout(false); + this.gb_Status.PerformLayout(); + this.gb_Control.ResumeLayout(false); + this.gb_Control.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox gb_Status; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox tb_PositionT; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tb_PositionX; + private System.Windows.Forms.TextBox tb_PositionY; + private System.Windows.Forms.Label lb_PortName; + private System.Windows.Forms.Button btn_Home; + private System.Windows.Forms.Button btn_Align; + private System.Windows.Forms.Button btn_Again; + private System.Windows.Forms.Label lb_Vacuum; + private System.Windows.Forms.Label lb_WaferExist; + private System.Windows.Forms.Label lb_IsHome; + private System.Windows.Forms.TextBox tb_Angle; + private System.Windows.Forms.Button btn_VacuumOn; + private System.Windows.Forms.Button btn_VacuumOff; + private System.Windows.Forms.Label lb_Version; + private System.Windows.Forms.Button btn_Center; + private System.Windows.Forms.Button btn_PinUp; + private System.Windows.Forms.Button btn_PinDown; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox tb_AlignTime; + private System.Windows.Forms.GroupBox gb_Control; + private System.Windows.Forms.Label lb_RunEnable; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.cs new file mode 100644 index 0000000..23ea850 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.cs @@ -0,0 +1,168 @@ +癤퓎sing SA_LTT; +using System; +using System.Drawing; +using System.Threading; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class PreAlignViwer : Form + { + MainFrame _mainFrame; + Thread t_UIUpdate; + + bool updateCheck; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public PreAlignViwer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + lb_PortName.Text = _mainFrame.equipment.preAligner.PortName; + lb_PortName.BackColor = _mainFrame.equipment.preAligner.IsOpen ? Color.Lime : Color.Red; + + lb_Version.Text = $"Version - {_mainFrame.equipment.preAligner.Version}"; + + lb_RunEnable.BackColor = _mainFrame.equipment.preAligner.IsRunEnable ? Color.Lime : Color.Red; + lb_WaferExist.BackColor = _mainFrame.equipment.preAligner.IsWaferExist ? Color.Lime : Color.Red; + lb_Vacuum.BackColor = _mainFrame.equipment.preAligner.IsVacuumOn ? Color.Lime : Color.Red; + lb_IsHome.BackColor = _mainFrame.equipment.preAligner.IsHome ? Color.Lime : Color.Red; + + tb_PositionX.Text = _mainFrame.equipment.preAligner.PositionX.ToString(); + tb_PositionY.Text = _mainFrame.equipment.preAligner.PositionY.ToString(); + tb_PositionT.Text = _mainFrame.equipment.preAligner.PositionT.ToString(); + + if (_mainFrame.equipment.preAligner.IsRunEnable && (_mainFrame.equipment.ProcessStatus == ProcessStatus.Idle || _mainFrame.equipment.ProcessStatus == ProcessStatus.Pause)) + { + if (gb_Control.Enabled == false) + { + gb_Control.Enabled = true; + } + } + else + { + if (gb_Control.Enabled) + { + gb_Control.Enabled = false; + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void btn_Home_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.preAligner.Home(); + } + + private void btn_Align_Click(object sender, EventArgs e) + { + DateTime dt = DateTime.Now; + double angle = 0; + + if(double.TryParse(tb_Angle.Text, out angle)) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} {angle}"); + _mainFrame.equipment.preAligner.Align(angle); + } + + tb_AlignTime.Text = $"{(DateTime.Now - dt).TotalSeconds:F3} s"; + } + + private void btn_Again_Click(object sender, EventArgs e) + { + double angle = 0; + + if (double.TryParse(tb_Angle.Text, out angle)) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} {angle}"); + _mainFrame.equipment.preAligner.Again(angle); + } + } + + private void btn_VacuumOn_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.preAligner.VacuumOn(); + } + + private void btn_VacuumOff_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.preAligner.VacuumOff(); + } + + private void PreAlignViwer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void btn_Center_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.preAligner.Center(); + } + + private void btn_PinDown_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.preAligner.PinUp(); + } + + private void btn_PinUp_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.preAligner.PinDown(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.Designer.cs new file mode 100644 index 0000000..14ec6fc --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.Designer.cs @@ -0,0 +1,246 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class RecipeCreateViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.btn_ProcessFullShot = new System.Windows.Forms.Panel(); + this.label21 = new System.Windows.Forms.Label(); + this.tb_Name = new System.Windows.Forms.TextBox(); + this.label20 = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_Radius = new System.Windows.Forms.TextBox(); + this.label152 = new System.Windows.Forms.Label(); + this.tb_DistancePrimaryFlat = new System.Windows.Forms.TextBox(); + this.btn_Ok = new System.Windows.Forms.Button(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.tb_EdgeRound = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // btn_ProcessFullShot + // + this.btn_ProcessFullShot.BackgroundImage = global::SA_LTT_UI.Properties.Resources.RecipeImage; + this.btn_ProcessFullShot.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btn_ProcessFullShot.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.btn_ProcessFullShot.Location = new System.Drawing.Point(303, 12); + this.btn_ProcessFullShot.Name = "btn_ProcessFullShot"; + this.btn_ProcessFullShot.Size = new System.Drawing.Size(427, 362); + this.btn_ProcessFullShot.TabIndex = 2; + // + // label21 + // + this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label21.Font = new System.Drawing.Font("Gulim", 12F); + this.label21.Location = new System.Drawing.Point(12, 12); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(95, 26); + this.label21.TabIndex = 109; + this.label21.Text = "Name"; + this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Name + // + this.tb_Name.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Name.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tb_Name.Font = new System.Drawing.Font("Gulim", 12F); + this.tb_Name.Location = new System.Drawing.Point(119, 12); + this.tb_Name.Name = "tb_Name"; + this.tb_Name.Size = new System.Drawing.Size(178, 26); + this.tb_Name.TabIndex = 1; + this.tb_Name.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_Name.Leave += new System.EventHandler(this.SettingData_Leave); + // + // label20 + // + this.label20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label20.Font = new System.Drawing.Font("Gulim", 12F); + this.label20.Location = new System.Drawing.Point(12, 44); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(95, 26); + this.label20.TabIndex = 103; + this.label20.Text = "R"; + this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label19 + // + this.label19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label19.Font = new System.Drawing.Font("Gulim", 12F); + this.label19.Location = new System.Drawing.Point(12, 76); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(95, 26); + this.label19.TabIndex = 104; + this.label19.Text = "T"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Font = new System.Drawing.Font("Gulim", 12F); + this.label3.Location = new System.Drawing.Point(260, 76); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(37, 26); + this.label3.TabIndex = 108; + this.label3.Text = "mm"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Radius + // + this.tb_Radius.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Radius.Font = new System.Drawing.Font("Gulim", 12F); + this.tb_Radius.Location = new System.Drawing.Point(119, 44); + this.tb_Radius.Name = "tb_Radius"; + this.tb_Radius.Size = new System.Drawing.Size(135, 26); + this.tb_Radius.TabIndex = 2; + this.tb_Radius.Text = "75"; + this.tb_Radius.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_Radius.Leave += new System.EventHandler(this.SettingData_Leave); + // + // label152 + // + this.label152.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label152.Font = new System.Drawing.Font("Gulim", 12F); + this.label152.Location = new System.Drawing.Point(260, 44); + this.label152.Name = "label152"; + this.label152.Size = new System.Drawing.Size(37, 26); + this.label152.TabIndex = 106; + this.label152.Text = "mm"; + this.label152.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_DistancePrimaryFlat + // + this.tb_DistancePrimaryFlat.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_DistancePrimaryFlat.Font = new System.Drawing.Font("Gulim", 12F); + this.tb_DistancePrimaryFlat.Location = new System.Drawing.Point(119, 76); + this.tb_DistancePrimaryFlat.Name = "tb_DistancePrimaryFlat"; + this.tb_DistancePrimaryFlat.Size = new System.Drawing.Size(135, 26); + this.tb_DistancePrimaryFlat.TabIndex = 3; + this.tb_DistancePrimaryFlat.Text = "70"; + this.tb_DistancePrimaryFlat.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_DistancePrimaryFlat.Leave += new System.EventHandler(this.SettingData_Leave); + // + // btn_Ok + // + this.btn_Ok.Location = new System.Drawing.Point(109, 334); + this.btn_Ok.Name = "btn_Ok"; + this.btn_Ok.Size = new System.Drawing.Size(91, 41); + this.btn_Ok.TabIndex = 111; + this.btn_Ok.Text = "OK"; + this.btn_Ok.UseVisualStyleBackColor = true; + this.btn_Ok.Click += new System.EventHandler(this.btn_Create_Click); + // + // btn_Cancel + // + this.btn_Cancel.Location = new System.Drawing.Point(206, 333); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(91, 41); + this.btn_Cancel.TabIndex = 111; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); + // + // label1 + // + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Font = new System.Drawing.Font("Gulim", 12F); + this.label1.Location = new System.Drawing.Point(12, 108); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(95, 41); + this.label1.TabIndex = 113; + this.label1.Text = "Edge Round"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Font = new System.Drawing.Font("Gulim", 12F); + this.label2.Location = new System.Drawing.Point(260, 108); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(37, 41); + this.label2.TabIndex = 114; + this.label2.Text = "mm"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_EdgeRound + // + this.tb_EdgeRound.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_EdgeRound.Font = new System.Drawing.Font("Gulim", 12F); + this.tb_EdgeRound.Location = new System.Drawing.Point(119, 108); + this.tb_EdgeRound.Multiline = true; + this.tb_EdgeRound.Name = "tb_EdgeRound"; + this.tb_EdgeRound.Size = new System.Drawing.Size(135, 41); + this.tb_EdgeRound.TabIndex = 112; + this.tb_EdgeRound.Text = "0"; + this.tb_EdgeRound.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_EdgeRound.Leave += new System.EventHandler(this.SettingData_Leave); + // + // RecipeCreateViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(738, 385); + this.Controls.Add(this.label1); + this.Controls.Add(this.label2); + this.Controls.Add(this.tb_EdgeRound); + this.Controls.Add(this.btn_Cancel); + this.Controls.Add(this.btn_Ok); + this.Controls.Add(this.label21); + this.Controls.Add(this.tb_Name); + this.Controls.Add(this.label20); + this.Controls.Add(this.label19); + this.Controls.Add(this.label3); + this.Controls.Add(this.tb_Radius); + this.Controls.Add(this.label152); + this.Controls.Add(this.tb_DistancePrimaryFlat); + this.Controls.Add(this.btn_ProcessFullShot); + this.Name = "RecipeCreateViewer"; + this.Text = "RecipeCreateViewer"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Panel btn_ProcessFullShot; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.TextBox tb_Name; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tb_Radius; + private System.Windows.Forms.Label label152; + private System.Windows.Forms.TextBox tb_DistancePrimaryFlat; + private System.Windows.Forms.Button btn_Ok; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tb_EdgeRound; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.cs new file mode 100644 index 0000000..7ca995b --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.cs @@ -0,0 +1,154 @@ +癤퓎sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class RecipeCreateViewer : Form + { + public string RecipeName { get; set; } + + public float Radius { get; set; } + + public float DistancePrimaryFlat { get; set; } + + public float EdgeRound { get; set; } + + public RecipeCreateViewer() + { + InitializeComponent(); + RecipeName = string.Empty; + Radius = 75; + DistancePrimaryFlat = 70; + EdgeRound = 0; + } + + public void SetCopyVersion(float radius, float distancePrimaryFlat, float edgeRound) + { + tb_Radius.Text = $"{radius}"; + tb_DistancePrimaryFlat.Text = $"{distancePrimaryFlat}"; + tb_EdgeRound.Text = $"{edgeRound}"; + tb_Radius.Enabled = false; + tb_DistancePrimaryFlat.Enabled = false; + tb_EdgeRound.Enabled = false; + } + + private void SettingData_Leave(object sender, EventArgs e) + { + SetSettingData(sender); + } + + private void SettingData_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyData == Keys.Enter) + { + SetSettingData(sender); + } + } + + private void SetSettingData(object sender) + { + Control control = (Control)sender; + float floatValue; + + switch(control.Name) + { + case "tb_Name": + { + RecipeName = control.Text; + break; + } + + case "tb_Radius": + { + float.TryParse(tb_Radius.Text, out floatValue); + + if(floatValue < 50) + { + floatValue = 50; + } + + Radius = floatValue; + + if (DistancePrimaryFlat > Radius) + { + DistancePrimaryFlat = Radius; + control.Text = $"{DistancePrimaryFlat}"; + } + + control.Text = $"{Radius}"; + + break; + } + case "tb_DistancePrimaryFlat": + { + float.TryParse(tb_DistancePrimaryFlat.Text, out floatValue); + + DistancePrimaryFlat = floatValue; + + if(DistancePrimaryFlat > Radius) + { + DistancePrimaryFlat = Radius; + } + + control.Text = $"{DistancePrimaryFlat}"; + break; + } + case "tb_EdgeRound": + { + float.TryParse(tb_EdgeRound.Text, out floatValue); + + EdgeRound = floatValue; + + if (EdgeRound > Radius) + { + EdgeRound = Radius; + } + + control.Text = $"{EdgeRound}"; + + break; + } + } + } + + private void btn_Create_Click(object sender, EventArgs e) + { + if (RecipeName == string.Empty) + { + MessageBoxPad messageBox = new MessageBoxPad("�씠由꾩씠 鍮꾩뼱�엳�뒿�땲�떎."); + messageBox.Show(); + } + else + { + char[] nameExceptList = new char[] { '\\', '/', ':', '*', '?', '"', '<', '>', '|' }; + + foreach(char exceptChar in nameExceptList) + { + if(RecipeName.Contains(exceptChar)) + { + MessageBoxPad messageBox = new MessageBoxPad("�뙆�씪 �씠由꾩뿉�뒗 �떎�쓬 臾몄옄瑜� �궗�슜�븷 �닔 �뾾�뒿�땲�떎. \r\n \\ / : * ? \" < > | "); + messageBox.Show(); + return; + } + } + + DialogResult = DialogResult.OK; + this.Close(); + } + } + + private void btn_Cancel_Click(object sender, EventArgs e) + { + RecipeName = string.Empty; + DialogResult = DialogResult.Cancel; + this.Close(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.Designer.cs new file mode 100644 index 0000000..3e4485c --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.Designer.cs @@ -0,0 +1,824 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class RobotViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.lb_PortName = new System.Windows.Forms.Label(); + this.gb_Status = new System.Windows.Forms.GroupBox(); + this.lb_WaferDetected = new System.Windows.Forms.Label(); + this.lb_IsRunEnable = new System.Windows.Forms.Label(); + this.lb_IsRun = new System.Windows.Forms.Label(); + this.lb_Vacuum = new System.Windows.Forms.Label(); + this.btn_EMO = new System.Windows.Forms.Button(); + this.label6 = new System.Windows.Forms.Label(); + this.tb_PositionR = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_PositionF = new System.Windows.Forms.TextBox(); + this.tb_PositionT = new System.Windows.Forms.TextBox(); + this.tb_PositionZ = new System.Windows.Forms.TextBox(); + this.tb_ErrorCode = new System.Windows.Forms.TextBox(); + this.tb_ErrorDescription = new System.Windows.Forms.TextBox(); + this.lb_Error = new System.Windows.Forms.Label(); + this.lb_PowerState = new System.Windows.Forms.Label(); + this.gb_Control = new System.Windows.Forms.GroupBox(); + this.label9 = new System.Windows.Forms.Label(); + this.tb_GetTime = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.tb_PutTime = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.tb_MappingTime = new System.Windows.Forms.TextBox(); + this.btn_Port2Mapping = new System.Windows.Forms.Button(); + this.btn_ServoOff = new System.Windows.Forms.Button(); + this.btn_ServoOn = new System.Windows.Forms.Button(); + this.cbb_Slot = new System.Windows.Forms.ComboBox(); + this.cbb_Stage = new System.Windows.Forms.ComboBox(); + this.btn_Port1Mapping = new System.Windows.Forms.Button(); + this.btn_Put = new System.Windows.Forms.Button(); + this.btn_PutReady = new System.Windows.Forms.Button(); + this.btn_Home = new System.Windows.Forms.Button(); + this.btn_Get = new System.Windows.Forms.Button(); + this.btn_GetReady = new System.Windows.Forms.Button(); + this.btn_ErrorClear = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.gb_Move = new System.Windows.Forms.GroupBox(); + this.label15 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.btn_MoveStop = new System.Windows.Forms.Button(); + this.btn_Move = new System.Windows.Forms.Button(); + this.cbb_EndStage = new System.Windows.Forms.ComboBox(); + this.label13 = new System.Windows.Forms.Label(); + this.cbb_StartStage = new System.Windows.Forms.ComboBox(); + this.label12 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.cbb_EndSlot = new System.Windows.Forms.ComboBox(); + this.label11 = new System.Windows.Forms.Label(); + this.cbb_StartSlot = new System.Windows.Forms.ComboBox(); + this.gb_Status.SuspendLayout(); + this.gb_Control.SuspendLayout(); + this.gb_Move.SuspendLayout(); + this.SuspendLayout(); + // + // lb_PortName + // + this.lb_PortName.AutoSize = true; + this.lb_PortName.Location = new System.Drawing.Point(6, 17); + this.lb_PortName.Name = "lb_PortName"; + this.lb_PortName.Size = new System.Drawing.Size(27, 12); + this.lb_PortName.TabIndex = 3; + this.lb_PortName.Text = "Port"; + // + // gb_Status + // + this.gb_Status.Controls.Add(this.lb_WaferDetected); + this.gb_Status.Controls.Add(this.lb_IsRunEnable); + this.gb_Status.Controls.Add(this.lb_IsRun); + this.gb_Status.Controls.Add(this.lb_Vacuum); + this.gb_Status.Controls.Add(this.btn_EMO); + this.gb_Status.Controls.Add(this.label6); + this.gb_Status.Controls.Add(this.tb_PositionR); + this.gb_Status.Controls.Add(this.label5); + this.gb_Status.Controls.Add(this.label4); + this.gb_Status.Controls.Add(this.label3); + this.gb_Status.Controls.Add(this.tb_PositionF); + this.gb_Status.Controls.Add(this.tb_PositionT); + this.gb_Status.Controls.Add(this.tb_PositionZ); + this.gb_Status.Controls.Add(this.tb_ErrorCode); + this.gb_Status.Controls.Add(this.tb_ErrorDescription); + this.gb_Status.Controls.Add(this.lb_Error); + this.gb_Status.Controls.Add(this.lb_PowerState); + this.gb_Status.Controls.Add(this.lb_PortName); + this.gb_Status.Location = new System.Drawing.Point(12, 12); + this.gb_Status.Name = "gb_Status"; + this.gb_Status.Size = new System.Drawing.Size(587, 147); + this.gb_Status.TabIndex = 12; + this.gb_Status.TabStop = false; + this.gb_Status.Text = "Status"; + // + // lb_WaferDetected + // + this.lb_WaferDetected.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_WaferDetected.Location = new System.Drawing.Point(403, 59); + this.lb_WaferDetected.Name = "lb_WaferDetected"; + this.lb_WaferDetected.Size = new System.Drawing.Size(94, 21); + this.lb_WaferDetected.TabIndex = 12; + this.lb_WaferDetected.Text = "Wafer Detected"; + this.lb_WaferDetected.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_IsRunEnable + // + this.lb_IsRunEnable.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_IsRunEnable.Location = new System.Drawing.Point(403, 113); + this.lb_IsRunEnable.Name = "lb_IsRunEnable"; + this.lb_IsRunEnable.Size = new System.Drawing.Size(94, 21); + this.lb_IsRunEnable.TabIndex = 11; + this.lb_IsRunEnable.Text = "Run Enable"; + this.lb_IsRunEnable.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_IsRun + // + this.lb_IsRun.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_IsRun.Location = new System.Drawing.Point(403, 86); + this.lb_IsRun.Name = "lb_IsRun"; + this.lb_IsRun.Size = new System.Drawing.Size(94, 21); + this.lb_IsRun.TabIndex = 11; + this.lb_IsRun.Text = "Run"; + this.lb_IsRun.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_Vacuum + // + this.lb_Vacuum.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Vacuum.Location = new System.Drawing.Point(403, 33); + this.lb_Vacuum.Name = "lb_Vacuum"; + this.lb_Vacuum.Size = new System.Drawing.Size(94, 21); + this.lb_Vacuum.TabIndex = 11; + this.lb_Vacuum.Text = "Vaccum"; + this.lb_Vacuum.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_EMO + // + this.btn_EMO.Location = new System.Drawing.Point(503, 31); + this.btn_EMO.Name = "btn_EMO"; + this.btn_EMO.Size = new System.Drawing.Size(75, 49); + this.btn_EMO.TabIndex = 9; + this.btn_EMO.Text = "EMO"; + this.btn_EMO.UseVisualStyleBackColor = true; + this.btn_EMO.Click += new System.EventHandler(this.btn_EMO_Click); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(293, 36); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(13, 12); + this.label6.TabIndex = 9; + this.label6.Text = "T"; + // + // tb_PositionR + // + this.tb_PositionR.Location = new System.Drawing.Point(312, 86); + this.tb_PositionR.Name = "tb_PositionR"; + this.tb_PositionR.ReadOnly = true; + this.tb_PositionR.Size = new System.Drawing.Size(72, 21); + this.tb_PositionR.TabIndex = 8; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(293, 116); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(12, 12); + this.label5.TabIndex = 7; + this.label5.Text = "F"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(293, 91); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(13, 12); + this.label4.TabIndex = 7; + this.label4.Text = "R"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(293, 63); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(13, 12); + this.label3.TabIndex = 7; + this.label3.Text = "Z"; + // + // tb_PositionF + // + this.tb_PositionF.Location = new System.Drawing.Point(312, 113); + this.tb_PositionF.Name = "tb_PositionF"; + this.tb_PositionF.ReadOnly = true; + this.tb_PositionF.Size = new System.Drawing.Size(72, 21); + this.tb_PositionF.TabIndex = 6; + // + // tb_PositionT + // + this.tb_PositionT.Location = new System.Drawing.Point(312, 33); + this.tb_PositionT.Name = "tb_PositionT"; + this.tb_PositionT.ReadOnly = true; + this.tb_PositionT.Size = new System.Drawing.Size(72, 21); + this.tb_PositionT.TabIndex = 6; + // + // tb_PositionZ + // + this.tb_PositionZ.Location = new System.Drawing.Point(312, 60); + this.tb_PositionZ.Name = "tb_PositionZ"; + this.tb_PositionZ.ReadOnly = true; + this.tb_PositionZ.Size = new System.Drawing.Size(72, 21); + this.tb_PositionZ.TabIndex = 6; + // + // tb_ErrorCode + // + this.tb_ErrorCode.Location = new System.Drawing.Point(50, 36); + this.tb_ErrorCode.Name = "tb_ErrorCode"; + this.tb_ErrorCode.ReadOnly = true; + this.tb_ErrorCode.Size = new System.Drawing.Size(235, 21); + this.tb_ErrorCode.TabIndex = 6; + // + // tb_ErrorDescription + // + this.tb_ErrorDescription.Location = new System.Drawing.Point(6, 60); + this.tb_ErrorDescription.Multiline = true; + this.tb_ErrorDescription.Name = "tb_ErrorDescription"; + this.tb_ErrorDescription.ReadOnly = true; + this.tb_ErrorDescription.Size = new System.Drawing.Size(279, 79); + this.tb_ErrorDescription.TabIndex = 5; + // + // lb_Error + // + this.lb_Error.AutoSize = true; + this.lb_Error.Location = new System.Drawing.Point(6, 39); + this.lb_Error.Name = "lb_Error"; + this.lb_Error.Size = new System.Drawing.Size(32, 12); + this.lb_Error.TabIndex = 4; + this.lb_Error.Text = "Error"; + // + // lb_PowerState + // + this.lb_PowerState.AutoSize = true; + this.lb_PowerState.Location = new System.Drawing.Point(136, 17); + this.lb_PowerState.Name = "lb_PowerState"; + this.lb_PowerState.Size = new System.Drawing.Size(87, 12); + this.lb_PowerState.TabIndex = 3; + this.lb_PowerState.Text = "Power State - "; + // + // gb_Control + // + this.gb_Control.Controls.Add(this.label9); + this.gb_Control.Controls.Add(this.tb_GetTime); + this.gb_Control.Controls.Add(this.label8); + this.gb_Control.Controls.Add(this.tb_PutTime); + this.gb_Control.Controls.Add(this.label7); + this.gb_Control.Controls.Add(this.tb_MappingTime); + this.gb_Control.Controls.Add(this.btn_Port2Mapping); + this.gb_Control.Controls.Add(this.btn_ServoOff); + this.gb_Control.Controls.Add(this.btn_ServoOn); + this.gb_Control.Controls.Add(this.cbb_Slot); + this.gb_Control.Controls.Add(this.cbb_Stage); + this.gb_Control.Controls.Add(this.btn_Port1Mapping); + this.gb_Control.Controls.Add(this.btn_Put); + this.gb_Control.Controls.Add(this.btn_PutReady); + this.gb_Control.Controls.Add(this.btn_Home); + this.gb_Control.Controls.Add(this.btn_Get); + this.gb_Control.Controls.Add(this.btn_GetReady); + this.gb_Control.Controls.Add(this.btn_ErrorClear); + this.gb_Control.Controls.Add(this.label2); + this.gb_Control.Controls.Add(this.label1); + this.gb_Control.Location = new System.Drawing.Point(12, 165); + this.gb_Control.Name = "gb_Control"; + this.gb_Control.Size = new System.Drawing.Size(404, 193); + this.gb_Control.TabIndex = 13; + this.gb_Control.TabStop = false; + this.gb_Control.Text = "Control"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(216, 106); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(57, 12); + this.label9.TabIndex = 15; + this.label9.Text = "Get Time"; + // + // tb_GetTime + // + this.tb_GetTime.Location = new System.Drawing.Point(279, 103); + this.tb_GetTime.Name = "tb_GetTime"; + this.tb_GetTime.ReadOnly = true; + this.tb_GetTime.Size = new System.Drawing.Size(72, 21); + this.tb_GetTime.TabIndex = 14; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(216, 133); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(56, 12); + this.label8.TabIndex = 13; + this.label8.Text = "Put Time"; + // + // tb_PutTime + // + this.tb_PutTime.Location = new System.Drawing.Point(279, 130); + this.tb_PutTime.Name = "tb_PutTime"; + this.tb_PutTime.ReadOnly = true; + this.tb_PutTime.Size = new System.Drawing.Size(72, 21); + this.tb_PutTime.TabIndex = 12; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(186, 79); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(87, 12); + this.label7.TabIndex = 11; + this.label7.Text = "Mapping Time"; + // + // tb_MappingTime + // + this.tb_MappingTime.Location = new System.Drawing.Point(279, 76); + this.tb_MappingTime.Name = "tb_MappingTime"; + this.tb_MappingTime.ReadOnly = true; + this.tb_MappingTime.Size = new System.Drawing.Size(72, 21); + this.tb_MappingTime.TabIndex = 10; + // + // btn_Port2Mapping + // + this.btn_Port2Mapping.Location = new System.Drawing.Point(290, 47); + this.btn_Port2Mapping.Name = "btn_Port2Mapping"; + this.btn_Port2Mapping.Size = new System.Drawing.Size(107, 23); + this.btn_Port2Mapping.TabIndex = 9; + this.btn_Port2Mapping.Text = "Port 2 Mapping"; + this.btn_Port2Mapping.UseVisualStyleBackColor = true; + this.btn_Port2Mapping.Click += new System.EventHandler(this.btn_Port2Mapping_Click); + // + // btn_ServoOff + // + this.btn_ServoOff.Location = new System.Drawing.Point(290, 20); + this.btn_ServoOff.Name = "btn_ServoOff"; + this.btn_ServoOff.Size = new System.Drawing.Size(75, 23); + this.btn_ServoOff.TabIndex = 8; + this.btn_ServoOff.Text = "Servo Off"; + this.btn_ServoOff.UseVisualStyleBackColor = true; + this.btn_ServoOff.Click += new System.EventHandler(this.btn_ServoOff_Click); + // + // btn_ServoOn + // + this.btn_ServoOn.Location = new System.Drawing.Point(177, 20); + this.btn_ServoOn.Name = "btn_ServoOn"; + this.btn_ServoOn.Size = new System.Drawing.Size(75, 23); + this.btn_ServoOn.TabIndex = 8; + this.btn_ServoOn.Text = "Servo On"; + this.btn_ServoOn.UseVisualStyleBackColor = true; + this.btn_ServoOn.Click += new System.EventHandler(this.btn_ServoOn_Click); + // + // cbb_Slot + // + this.cbb_Slot.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_Slot.FormattingEnabled = true; + this.cbb_Slot.Items.AddRange(new object[] { + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25"}); + this.cbb_Slot.Location = new System.Drawing.Point(50, 77); + this.cbb_Slot.Name = "cbb_Slot"; + this.cbb_Slot.Size = new System.Drawing.Size(121, 20); + this.cbb_Slot.TabIndex = 7; + // + // cbb_Stage + // + this.cbb_Stage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_Stage.FormattingEnabled = true; + this.cbb_Stage.Items.AddRange(new object[] { + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10"}); + this.cbb_Stage.Location = new System.Drawing.Point(50, 49); + this.cbb_Stage.Name = "cbb_Stage"; + this.cbb_Stage.Size = new System.Drawing.Size(121, 20); + this.cbb_Stage.TabIndex = 7; + this.cbb_Stage.SelectedIndexChanged += new System.EventHandler(this.cbb_Stage_SelectedIndexChanged); + // + // btn_Port1Mapping + // + this.btn_Port1Mapping.Location = new System.Drawing.Point(177, 46); + this.btn_Port1Mapping.Name = "btn_Port1Mapping"; + this.btn_Port1Mapping.Size = new System.Drawing.Size(107, 23); + this.btn_Port1Mapping.TabIndex = 0; + this.btn_Port1Mapping.Text = "Port 1 Mapping"; + this.btn_Port1Mapping.UseVisualStyleBackColor = true; + this.btn_Port1Mapping.Click += new System.EventHandler(this.btn_Port1Mapping_Click); + // + // btn_Put + // + this.btn_Put.Location = new System.Drawing.Point(96, 132); + this.btn_Put.Name = "btn_Put"; + this.btn_Put.Size = new System.Drawing.Size(75, 23); + this.btn_Put.TabIndex = 0; + this.btn_Put.Text = "Put"; + this.btn_Put.UseVisualStyleBackColor = true; + this.btn_Put.Click += new System.EventHandler(this.btn_Put_Click); + // + // btn_PutReady + // + this.btn_PutReady.Location = new System.Drawing.Point(6, 132); + this.btn_PutReady.Name = "btn_PutReady"; + this.btn_PutReady.Size = new System.Drawing.Size(75, 23); + this.btn_PutReady.TabIndex = 0; + this.btn_PutReady.Text = "PutReady"; + this.btn_PutReady.UseVisualStyleBackColor = true; + this.btn_PutReady.Click += new System.EventHandler(this.btn_PutReady_Click); + // + // btn_Home + // + this.btn_Home.Location = new System.Drawing.Point(96, 20); + this.btn_Home.Name = "btn_Home"; + this.btn_Home.Size = new System.Drawing.Size(75, 23); + this.btn_Home.TabIndex = 0; + this.btn_Home.Text = "Home"; + this.btn_Home.UseVisualStyleBackColor = true; + this.btn_Home.Click += new System.EventHandler(this.btn_Home_Click); + // + // btn_Get + // + this.btn_Get.Location = new System.Drawing.Point(96, 103); + this.btn_Get.Name = "btn_Get"; + this.btn_Get.Size = new System.Drawing.Size(75, 23); + this.btn_Get.TabIndex = 0; + this.btn_Get.Text = "Get"; + this.btn_Get.UseVisualStyleBackColor = true; + this.btn_Get.Click += new System.EventHandler(this.btn_Get_Click); + // + // btn_GetReady + // + this.btn_GetReady.Location = new System.Drawing.Point(6, 103); + this.btn_GetReady.Name = "btn_GetReady"; + this.btn_GetReady.Size = new System.Drawing.Size(75, 23); + this.btn_GetReady.TabIndex = 0; + this.btn_GetReady.Text = "GetReady"; + this.btn_GetReady.UseVisualStyleBackColor = true; + this.btn_GetReady.Click += new System.EventHandler(this.btn_GetReady_Click); + // + // btn_ErrorClear + // + this.btn_ErrorClear.Location = new System.Drawing.Point(8, 20); + this.btn_ErrorClear.Name = "btn_ErrorClear"; + this.btn_ErrorClear.Size = new System.Drawing.Size(75, 23); + this.btn_ErrorClear.TabIndex = 0; + this.btn_ErrorClear.Text = "ErrorClear"; + this.btn_ErrorClear.UseVisualStyleBackColor = true; + this.btn_ErrorClear.Click += new System.EventHandler(this.btn_ErrorClear_Click); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 80); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(26, 12); + this.label2.TabIndex = 4; + this.label2.Text = "Slot"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 52); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(37, 12); + this.label1.TabIndex = 4; + this.label1.Text = "Stage"; + // + // gb_Move + // + this.gb_Move.Controls.Add(this.label15); + this.gb_Move.Controls.Add(this.label14); + this.gb_Move.Controls.Add(this.btn_MoveStop); + this.gb_Move.Controls.Add(this.btn_Move); + this.gb_Move.Controls.Add(this.cbb_EndStage); + this.gb_Move.Controls.Add(this.label13); + this.gb_Move.Controls.Add(this.cbb_StartStage); + this.gb_Move.Controls.Add(this.label12); + this.gb_Move.Controls.Add(this.label10); + this.gb_Move.Controls.Add(this.cbb_EndSlot); + this.gb_Move.Controls.Add(this.label11); + this.gb_Move.Controls.Add(this.cbb_StartSlot); + this.gb_Move.Location = new System.Drawing.Point(422, 165); + this.gb_Move.Name = "gb_Move"; + this.gb_Move.Size = new System.Drawing.Size(176, 193); + this.gb_Move.TabIndex = 14; + this.gb_Move.TabStop = false; + this.gb_Move.Text = "Move"; + // + // label15 + // + this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label15.Location = new System.Drawing.Point(15, 84); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(153, 18); + this.label15.TabIndex = 12; + this.label15.Text = "End"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label14 + // + this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label14.Location = new System.Drawing.Point(15, 12); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(153, 18); + this.label14.TabIndex = 12; + this.label14.Text = "Start"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_MoveStop + // + this.btn_MoveStop.Location = new System.Drawing.Point(103, 156); + this.btn_MoveStop.Name = "btn_MoveStop"; + this.btn_MoveStop.Size = new System.Drawing.Size(65, 31); + this.btn_MoveStop.TabIndex = 8; + this.btn_MoveStop.Text = "Stop"; + this.btn_MoveStop.UseVisualStyleBackColor = true; + this.btn_MoveStop.Click += new System.EventHandler(this.btn_MoveStop_Click); + // + // btn_Move + // + this.btn_Move.Location = new System.Drawing.Point(13, 156); + this.btn_Move.Name = "btn_Move"; + this.btn_Move.Size = new System.Drawing.Size(65, 31); + this.btn_Move.TabIndex = 8; + this.btn_Move.Text = "Move"; + this.btn_Move.UseVisualStyleBackColor = true; + this.btn_Move.Click += new System.EventHandler(this.btn_Move_Click); + // + // cbb_EndStage + // + this.cbb_EndStage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_EndStage.FormattingEnabled = true; + this.cbb_EndStage.Items.AddRange(new object[] { + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10"}); + this.cbb_EndStage.Location = new System.Drawing.Point(56, 105); + this.cbb_EndStage.Name = "cbb_EndStage"; + this.cbb_EndStage.Size = new System.Drawing.Size(112, 20); + this.cbb_EndStage.TabIndex = 7; + this.cbb_EndStage.SelectedIndexChanged += new System.EventHandler(this.cbb_EndStage_SelectedIndexChanged); + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(13, 109); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(37, 12); + this.label13.TabIndex = 4; + this.label13.Text = "Stage"; + // + // cbb_StartStage + // + this.cbb_StartStage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_StartStage.FormattingEnabled = true; + this.cbb_StartStage.Items.AddRange(new object[] { + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10"}); + this.cbb_StartStage.Location = new System.Drawing.Point(56, 33); + this.cbb_StartStage.Name = "cbb_StartStage"; + this.cbb_StartStage.Size = new System.Drawing.Size(112, 20); + this.cbb_StartStage.TabIndex = 7; + this.cbb_StartStage.SelectedIndexChanged += new System.EventHandler(this.cbb_StartStage_SelectedIndexChanged); + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(13, 137); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(26, 12); + this.label12.TabIndex = 4; + this.label12.Text = "Slot"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(13, 37); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(37, 12); + this.label10.TabIndex = 4; + this.label10.Text = "Stage"; + // + // cbb_EndSlot + // + this.cbb_EndSlot.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_EndSlot.FormattingEnabled = true; + this.cbb_EndSlot.Items.AddRange(new object[] { + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25"}); + this.cbb_EndSlot.Location = new System.Drawing.Point(56, 133); + this.cbb_EndSlot.Name = "cbb_EndSlot"; + this.cbb_EndSlot.Size = new System.Drawing.Size(112, 20); + this.cbb_EndSlot.TabIndex = 7; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(13, 65); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(26, 12); + this.label11.TabIndex = 4; + this.label11.Text = "Slot"; + // + // cbb_StartSlot + // + this.cbb_StartSlot.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_StartSlot.FormattingEnabled = true; + this.cbb_StartSlot.Items.AddRange(new object[] { + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25"}); + this.cbb_StartSlot.Location = new System.Drawing.Point(56, 61); + this.cbb_StartSlot.Name = "cbb_StartSlot"; + this.cbb_StartSlot.Size = new System.Drawing.Size(112, 20); + this.cbb_StartSlot.TabIndex = 7; + // + // RobotViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(614, 374); + this.Controls.Add(this.gb_Move); + this.Controls.Add(this.gb_Control); + this.Controls.Add(this.gb_Status); + this.Name = "RobotViewer"; + this.Text = "RobotViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.RobotViewer_FormClosing); + this.gb_Status.ResumeLayout(false); + this.gb_Status.PerformLayout(); + this.gb_Control.ResumeLayout(false); + this.gb_Control.PerformLayout(); + this.gb_Move.ResumeLayout(false); + this.gb_Move.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label lb_PortName; + private System.Windows.Forms.GroupBox gb_Status; + private System.Windows.Forms.TextBox tb_ErrorDescription; + private System.Windows.Forms.Label lb_Error; + private System.Windows.Forms.TextBox tb_ErrorCode; + private System.Windows.Forms.GroupBox gb_Control; + private System.Windows.Forms.Button btn_ErrorClear; + private System.Windows.Forms.ComboBox cbb_Slot; + private System.Windows.Forms.ComboBox cbb_Stage; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button btn_GetReady; + private System.Windows.Forms.Button btn_Port1Mapping; + private System.Windows.Forms.Button btn_Put; + private System.Windows.Forms.Button btn_PutReady; + private System.Windows.Forms.Button btn_Home; + private System.Windows.Forms.Button btn_Get; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tb_PositionF; + private System.Windows.Forms.TextBox tb_PositionT; + private System.Windows.Forms.TextBox tb_PositionZ; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox tb_PositionR; + private System.Windows.Forms.Label lb_PowerState; + private System.Windows.Forms.Button btn_ServoOff; + private System.Windows.Forms.Button btn_ServoOn; + private System.Windows.Forms.Button btn_EMO; + private System.Windows.Forms.Label lb_WaferDetected; + private System.Windows.Forms.Label lb_Vacuum; + private System.Windows.Forms.Label lb_IsRun; + private System.Windows.Forms.Button btn_Port2Mapping; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox tb_MappingTime; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox tb_GetTime; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TextBox tb_PutTime; + private System.Windows.Forms.Label lb_IsRunEnable; + private System.Windows.Forms.GroupBox gb_Move; + private System.Windows.Forms.Button btn_MoveStop; + private System.Windows.Forms.Button btn_Move; + private System.Windows.Forms.ComboBox cbb_EndStage; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.ComboBox cbb_StartStage; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.ComboBox cbb_EndSlot; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.ComboBox cbb_StartSlot; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label14; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.cs new file mode 100644 index 0000000..df02827 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.cs @@ -0,0 +1,610 @@ +癤퓎sing SA_LTT; +using SA_LTT.Info.WaferInfo; +using System; +using System.Drawing; +using System.Threading; +using System.Windows.Forms; +using static SA_LTT.Info.WaferInfo.WaferInfoManager; +using static SA_LTT.Module.Robot; + +namespace SA_LTT_UI.Viewer +{ + public partial class RobotViewer : Form + { + enum MoveSteps + { + Wait, + + Get, + GetWait, + + Put, + PutWait, + + End + } + + MainFrame _mainFrame; + Thread t_UIUpdate; + Thread t_Move; + int mappingPort = 1; + + DateTime _tactTimeCheck = DateTime.Now; + TimeSpan _mappingTime = new TimeSpan(); + + bool _updateCheck; + private MoveSteps _moveStep; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public RobotViewer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + StageComboBoxInit(); + + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + + t_Move = new Thread(MoveThread); + t_Move.Start(); + } + + private void StageComboBoxInit() + { + string[] stageList = Enum.GetNames(typeof(StageList)); + + cbb_Stage.Items.Clear(); + + cbb_Stage.Items.AddRange(stageList); + + cbb_Stage.SelectedIndex = 0; + + cbb_StartStage.Items.Clear(); + + cbb_StartStage.Items.AddRange(stageList); + + cbb_StartStage.SelectedIndex = 0; + + cbb_EndStage.Items.Clear(); + + cbb_EndStage.Items.AddRange(stageList); + + cbb_EndStage.SelectedIndex = 0; + } + + private void SlotComboBoxRefresh(int stageIndex) + { + cbb_Slot.Items.Clear(); + switch(stageIndex) + { + case 1: + { + for(int i = 0; i < 25; i++) + { + cbb_Slot.Items.Add(WaferNumbers.A1 + i); + } + break; + } + case 2: + { + for (int i = 0; i < 25; i++) + { + cbb_Slot.Items.Add(WaferNumbers.B1 + i); + } + break; + } + default: + { + cbb_Slot.Items.Add(1); + break; + } + } + + cbb_Slot.SelectedIndex = 0; + } + + private void StartSlotComboBoxRefresh(int stageIndex) + { + cbb_StartSlot.Items.Clear(); + switch (stageIndex) + { + case 1: + { + for (int i = 0; i < 25; i++) + { + cbb_StartSlot.Items.Add(WaferNumbers.A1 + i); + } + break; + } + case 2: + { + for (int i = 0; i < 25; i++) + { + cbb_StartSlot.Items.Add(WaferNumbers.B1 + i); + } + break; + } + default: + { + cbb_StartSlot.Items.Add(1); + break; + } + } + + cbb_StartSlot.SelectedIndex = 0; + } + + private void EndSlotComboBoxRefresh(int stageIndex) + { + cbb_EndSlot.Items.Clear(); + switch (stageIndex) + { + case 1: + { + for (int i = 0; i < 25; i++) + { + cbb_EndSlot.Items.Add(WaferNumbers.A1 + i); + } + break; + } + case 2: + { + for (int i = 0; i < 25; i++) + { + cbb_EndSlot.Items.Add(WaferNumbers.B1 + i); + } + break; + } + default: + { + cbb_EndSlot.Items.Add(1); + break; + } + } + + cbb_EndSlot.SelectedIndex = 0; + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (_updateCheck == false) + { + _updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + lb_PortName.Text = _mainFrame.equipment.robot.PortName; + lb_PortName.BackColor = _mainFrame.equipment.robot.IsOpen ? Color.Lime : Color.Red; + + lb_PowerState.Text = $"Power State - {_mainFrame.equipment.robot.PowerStatus}"; + lb_PowerState.BackColor = _mainFrame.equipment.robot.IsServoOn ? Color.Lime : Color.Red; + tb_ErrorCode.Text = _mainFrame.equipment.robot.AlarmCode; + tb_ErrorDescription.Text = _mainFrame.equipment.robot.AlarmDescription; + + tb_PositionT.Text = _mainFrame.equipment.robot.PositionT.ToString(); + tb_PositionZ.Text = _mainFrame.equipment.robot.PositionZ.ToString(); + tb_PositionR.Text = _mainFrame.equipment.robot.PositionR.ToString(); + tb_PositionF.Text = _mainFrame.equipment.robot.PositionF.ToString(); + + lb_WaferDetected.BackColor = _mainFrame.equipment.robot.IsWaferExist ? Color.Lime : Color.Red; + lb_Vacuum.BackColor = _mainFrame.equipment.robot.IsVacuumOn ? Color.Lime : Color.Red; + lb_IsRun.BackColor = _mainFrame.equipment.robot.IsRun ? Color.Lime : Color.Red; + lb_IsRunEnable.BackColor = _mainFrame.equipment.robot.IsRunEnable ? Color.Lime : Color.Red; + + tb_MappingTime.Text = $"{_mappingTime.TotalSeconds:F3} s"; + tb_GetTime.Text = $"{_mainFrame.equipment.robot.GetTactTime.TotalSeconds:F3} s"; + tb_PutTime.Text = $"{_mainFrame.equipment.robot.PutTactTime.TotalSeconds:F3} s"; + + if (_mainFrame.equipment.robot.IsRunEnable && (_mainFrame.equipment.ProcessStatus == ProcessStatus.Idle || _mainFrame.equipment.ProcessStatus == ProcessStatus.Pause)) + { + if (gb_Control.Enabled == false) + { + gb_Control.Enabled = true; + } + + if (gb_Move.Enabled == false) + { + gb_Move.Enabled = true; + } + + } + else + { + if(gb_Control.Enabled) + { + gb_Control.Enabled = false; + } + + if (gb_Move.Enabled) + { + gb_Move.Enabled = false; + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + _updateCheck = false; + } + } + } + + private void RobotViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void btn_GetReady_Click(object sender, EventArgs e) + { + StageList stage = StageList.Port1; + + if (Enum.TryParse(cbb_Stage.Text, out stage)) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} : {stage.ToString()} {cbb_Slot.SelectedIndex + 1}"); + _mainFrame.equipment.robot.GetReady(stage, cbb_Slot.SelectedIndex + 1); + } + } + + private void btn_ErrorClear_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.robot.ErrorClear(); + } + + private void btn_Home_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.robot.Home(); + } + + private void btn_PutReady_Click(object sender, EventArgs e) + { + StageList stage = StageList.Port1; + + if (Enum.TryParse(cbb_Stage.Text, out stage)) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} : {stage.ToString()} {cbb_Slot.SelectedIndex + 1}"); + _mainFrame.equipment.robot.PutReady(stage, cbb_Slot.SelectedIndex + 1); + } + } + + private void MappingTh() + { + _tactTimeCheck = DateTime.Now; + _mainFrame.equipment.robot.Mapping(mappingPort); + + DateTime checkTime = DateTime.Now; + + //Mapping �떆�옉 �썑 1珥� ��湲� or Run �솗�씤. + while(true) + { + if (_mainFrame.equipment.robot.IsRun) + { + break; + } + else + { + if ((DateTime.Now - checkTime).TotalSeconds > 1) + break; + } + } + + while(true) + { + //Run 醫낅즺 �썑 Mapping 寃곌낵 諛쏄린 �떆�옉. + if(_mainFrame.equipment.robot.IsRun == false) + { + if (mappingPort == 1) + ReadPort1MappingResult(); + else if (mappingPort == 2) + ReadPort2MappingResult(); + + break; + } + } + + _mappingTime = DateTime.Now - _tactTimeCheck; + } + + private void ReadPort1MappingResult() + { + string mappingData = _mainFrame.equipment.robot.ReadMappingResult(); + + if (mappingData.Length == 25) + { + for (int i = 0; i < 25; i++) + { + WaferInfo info = _mainFrame.equipment.waferInfoManager.GetWaferInfo(WaferInfoManager.WaferNumbers.A1 + i); + info.SourceNumber = WaferInfoManager.WaferNumbers.A1 + i; + + if (mappingData[i] == '0') + { + info.IsStatus = WaferInfo.WaferStatus.Empty; + } + else if (mappingData[i] == '1') + { + info.IsStatus = WaferInfo.WaferStatus.Exist; + } + else if (mappingData[i] == 'C') + { + info.IsStatus = WaferInfo.WaferStatus.Leaning; + } + else if (mappingData[i] == 'D') + { + info.IsStatus = WaferInfo.WaferStatus.Overlap; + } + + _mainFrame.equipment.waferInfoManager.SetWaferInfo(WaferInfoManager.WaferNumbers.A1 + i, info); + } + } + } + + private void ReadPort2MappingResult() + { + string mappingData = _mainFrame.equipment.robot.ReadMappingResult(); + + if (mappingData.Length == 25) + { + for (int i = 0; i < 25; i++) + { + WaferInfo info = _mainFrame.equipment.waferInfoManager.GetWaferInfo(WaferInfoManager.WaferNumbers.B1 + i); + info.SourceNumber = WaferInfoManager.WaferNumbers.B1 + i; + + if (mappingData[i] == '0') + { + info.IsStatus = WaferInfo.WaferStatus.Empty; + } + else if (mappingData[i] == '1') + { + info.IsStatus = WaferInfo.WaferStatus.Exist; + } + else if (mappingData[i] == 'C') + { + info.IsStatus = WaferInfo.WaferStatus.Leaning; + } + else if (mappingData[i] == 'D') + { + info.IsStatus = WaferInfo.WaferStatus.Overlap; + } + + _mainFrame.equipment.waferInfoManager.SetWaferInfo(WaferInfoManager.WaferNumbers.B1 + i, info); + } + } + } + + private void MoveSequence() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(MoveSequence)); + return; + } + else + { + switch (_moveStep) + { + case MoveSteps.Wait: + { + break; + } + case MoveSteps.Get: + { + StageList stage = StageList.Port1; + + if (Enum.TryParse(cbb_StartStage.Text, out stage)) + { + if (_mainFrame.equipment.robot.Get(stage, cbb_StartSlot.SelectedIndex + 1)) + { + _moveStep = MoveSteps.GetWait; + } + else + { + MessageBoxPad mbp = new MessageBoxPad("Get �븷 �닔 �뾾�뒗 �긽�깭 �엯�땲�떎."); + mbp.Show(); + _moveStep = MoveSteps.End; + } + } + + break; + } + case MoveSteps.GetWait: + { + if (_mainFrame.equipment.robot.IsRunEnable) + { + if (_mainFrame.equipment.robot.IsWaferExist) + { + _moveStep = MoveSteps.Put; + } + else + { + MessageBoxPad mbp = new MessageBoxPad("Wafer瑜� �솗�씤�빐 二쇱꽭�슂 !"); + mbp.Show(); + _moveStep = MoveSteps.End; + } + } + break; + } + case MoveSteps.Put: + { + StageList stage = StageList.Port1; + + if (Enum.TryParse(cbb_EndStage.Text, out stage)) + { + if (_mainFrame.equipment.robot.Put(stage, cbb_EndSlot.SelectedIndex + 1)) + { + _moveStep = MoveSteps.PutWait; + } + else + { + MessageBoxPad mbp = new MessageBoxPad("Put �븷 �닔 �뾾�뒗 �긽�깭 �엯�땲�떎."); + mbp.Show(); + _moveStep = MoveSteps.End; + } + } + break; + } + case MoveSteps.PutWait: + { + if (_mainFrame.equipment.robot.IsRunEnable) + { + if (_mainFrame.equipment.robot.IsWaferExist == false) + { + _moveStep = MoveSteps.End; + } + else + { + MessageBoxPad mbp = new MessageBoxPad("Wafer瑜� �솗�씤�빐 二쇱꽭�슂 !"); + mbp.Show(); + _moveStep = MoveSteps.End; + } + } + break; + } + case MoveSteps.End: + { + _moveStep = MoveSteps.Wait; + + break; + } + } + } + } + + private void MoveThread() + { + while(_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(50); + MoveSequence(); + } + } + + private void btn_Get_Click(object sender, EventArgs e) + { + StageList stage = StageList.Port1; + + if (Enum.TryParse(cbb_Stage.Text, out stage)) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} : {stage.ToString()} {cbb_Slot.SelectedIndex + 1}"); + _mainFrame.equipment.robot.Get(stage, cbb_Slot.SelectedIndex + 1); + } + } + + private void btn_Put_Click(object sender, EventArgs e) + { + StageList stage = StageList.Port1; + + if (Enum.TryParse(cbb_Stage.Text, out stage)) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text} : {stage.ToString()} {cbb_Slot.SelectedIndex + 1}"); + _mainFrame.equipment.robot.Put(stage, cbb_Slot.SelectedIndex + 1); + } + } + + private void cbb_Stage_SelectedIndexChanged(object sender, EventArgs e) + { + SlotComboBoxRefresh(cbb_Stage.SelectedIndex + 1); + } + + private void btn_ServoOn_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.robot.ServoOn(); + } + + private void btn_ServoOff_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.robot.ServoOff(); + } + + private void btn_EMO_Click(object sender, EventArgs e) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.robot.EMS(); + } + + private void btn_Port1Mapping_Click(object sender, EventArgs e) + { + if(_mainFrame.equipment.robot.MappingSeq(1)) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + } + } + + private void btn_Port2Mapping_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.robot.MappingSeq(2)) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + } + } + + private void cbb_StartStage_SelectedIndexChanged(object sender, EventArgs e) + { + StartSlotComboBoxRefresh(cbb_StartStage.SelectedIndex + 1); + } + + private void cbb_EndStage_SelectedIndexChanged(object sender, EventArgs e) + { + EndSlotComboBoxRefresh(cbb_EndStage.SelectedIndex + 1); + } + + //誘몃━ �씤�꽣�씫�쓣 嫄몄뼱 �넃�쓣源� ...? �븘�떂 留먭퉴 + private void btn_Move_Click(object sender, EventArgs e) + { + if (_moveStep == MoveSteps.Wait) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + + _moveStep = MoveSteps.Get; + } + else + { + MessageBoxPad mbp = new MessageBoxPad("Move 吏꾪뻾 以� �엯�땲�떎."); + mbp.Show(); + } + } + + private void btn_MoveStop_Click(object sender, EventArgs e) + { + if (_moveStep != MoveSteps.Wait) + { + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _moveStep = MoveSteps.End; + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.Designer.cs new file mode 100644 index 0000000..bcbe365 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.Designer.cs @@ -0,0 +1,991 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class ScannerViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.label4 = new System.Windows.Forms.Label(); + this.tb_FOV = new System.Windows.Forms.TextBox(); + this.tb_BitsPerMm = new System.Windows.Forms.TextBox(); + this.tb_EncoderCountPerMmY = new System.Windows.Forms.TextBox(); + this.tb_EncoderCountPerMmX = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.label12 = new System.Windows.Forms.Label(); + this.tb_LaserOffDelay = new System.Windows.Forms.TextBox(); + this.tb_LaserOnDelay = new System.Windows.Forms.TextBox(); + this.tb_PulseLength = new System.Windows.Forms.TextBox(); + this.tb_HalfPeriod = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.label10 = new System.Windows.Forms.Label(); + this.tb_PolygonDelay = new System.Windows.Forms.TextBox(); + this.tb_MarkDelay = new System.Windows.Forms.TextBox(); + this.tb_JumpDelay = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.btn_Save = new System.Windows.Forms.Button(); + this.btn_Run = new System.Windows.Forms.Button(); + this.lv_ScanList = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.cbb_ScanMode = new System.Windows.Forms.ComboBox(); + this.tb_PosY = new System.Windows.Forms.TextBox(); + this.tb_PosX = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.btn_Clear = new System.Windows.Forms.Button(); + this.btn_Add = new System.Windows.Forms.Button(); + this.btn_Stop = new System.Windows.Forms.Button(); + this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.btn_CorrectionFilePathOpen = new System.Windows.Forms.Button(); + this.btn_ReadExcel = new System.Windows.Forms.Button(); + this.nud_LineCount = new System.Windows.Forms.NumericUpDown(); + this.btn_WriteExcel = new System.Windows.Forms.Button(); + this.tb_FieldSize = new System.Windows.Forms.TextBox(); + this.nud_LaserShotTime = new System.Windows.Forms.NumericUpDown(); + this.btn_Shot = new System.Windows.Forms.Button(); + this.lb_Initialized = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.lb_Busy = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.groupBox7 = new System.Windows.Forms.GroupBox(); + this.tb_JumpSpeed = new System.Windows.Forms.TextBox(); + this.tb_ProcessPosition = new System.Windows.Forms.TextBox(); + this.tb_MarkSpeed = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.btn_AddScanField = new System.Windows.Forms.Button(); + this.label21 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.btn_LaserOff = new System.Windows.Forms.Button(); + this.btn_LaserOn = new System.Windows.Forms.Button(); + this.btn_GetEncoder = new System.Windows.Forms.Button(); + this.tb_Encoder0 = new System.Windows.Forms.TextBox(); + this.tb_CorrectionFilePath = new System.Windows.Forms.TextBox(); + this.tb_Encoder1 = new System.Windows.Forms.TextBox(); + this.label25 = new System.Windows.Forms.Label(); + this.label24 = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.groupBox6.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nud_LineCount)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nud_LaserShotTime)).BeginInit(); + this.groupBox7.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.btn_CorrectionFilePathOpen); + this.groupBox1.Controls.Add(this.groupBox2); + this.groupBox1.Controls.Add(this.groupBox3); + this.groupBox1.Controls.Add(this.groupBox4); + this.groupBox1.Controls.Add(this.btn_Cancel); + this.groupBox1.Controls.Add(this.btn_Save); + this.groupBox1.Controls.Add(this.tb_CorrectionFilePath); + this.groupBox1.Controls.Add(this.label21); + this.groupBox1.Location = new System.Drawing.Point(12, 223); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(517, 269); + this.groupBox1.TabIndex = 9; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Setting"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.label4); + this.groupBox2.Controls.Add(this.tb_FOV); + this.groupBox2.Controls.Add(this.tb_BitsPerMm); + this.groupBox2.Controls.Add(this.tb_EncoderCountPerMmY); + this.groupBox2.Controls.Add(this.tb_EncoderCountPerMmX); + this.groupBox2.Controls.Add(this.label3); + this.groupBox2.Controls.Add(this.label2); + this.groupBox2.Controls.Add(this.label1); + this.groupBox2.Location = new System.Drawing.Point(8, 47); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(257, 117); + this.groupBox2.TabIndex = 7; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Module"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(79, 67); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(74, 12); + this.label4.TabIndex = 1; + this.label4.Text = "Bits per mm"; + // + // tb_FOV + // + this.tb_FOV.Location = new System.Drawing.Point(159, 89); + this.tb_FOV.Name = "tb_FOV"; + this.tb_FOV.Size = new System.Drawing.Size(83, 21); + this.tb_FOV.TabIndex = 8; + this.tb_FOV.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_FOV.Leave += new System.EventHandler(this.SettingData_Leave); + // + // tb_BitsPerMm + // + this.tb_BitsPerMm.Location = new System.Drawing.Point(159, 64); + this.tb_BitsPerMm.Name = "tb_BitsPerMm"; + this.tb_BitsPerMm.ReadOnly = true; + this.tb_BitsPerMm.Size = new System.Drawing.Size(83, 21); + this.tb_BitsPerMm.TabIndex = 8; + this.tb_BitsPerMm.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_BitsPerMm.Leave += new System.EventHandler(this.SettingData_Leave); + // + // tb_EncoderCountPerMmY + // + this.tb_EncoderCountPerMmY.Location = new System.Drawing.Point(159, 39); + this.tb_EncoderCountPerMmY.Name = "tb_EncoderCountPerMmY"; + this.tb_EncoderCountPerMmY.Size = new System.Drawing.Size(83, 21); + this.tb_EncoderCountPerMmY.TabIndex = 8; + this.tb_EncoderCountPerMmY.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_EncoderCountPerMmY.Leave += new System.EventHandler(this.SettingData_Leave); + // + // tb_EncoderCountPerMmX + // + this.tb_EncoderCountPerMmX.Location = new System.Drawing.Point(159, 14); + this.tb_EncoderCountPerMmX.Name = "tb_EncoderCountPerMmX"; + this.tb_EncoderCountPerMmX.Size = new System.Drawing.Size(83, 21); + this.tb_EncoderCountPerMmX.TabIndex = 8; + this.tb_EncoderCountPerMmX.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_EncoderCountPerMmX.Leave += new System.EventHandler(this.SettingData_Leave); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(88, 92); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(65, 12); + this.label3.TabIndex = 1; + this.label3.Text = "FOV (mm)"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 43); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(147, 12); + this.label2.TabIndex = 1; + this.label2.Text = "Encoder count per mm Y"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 17); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(147, 12); + this.label1.TabIndex = 0; + this.label1.Text = "Encoder count per mm X"; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.label12); + this.groupBox3.Controls.Add(this.tb_LaserOffDelay); + this.groupBox3.Controls.Add(this.tb_LaserOnDelay); + this.groupBox3.Controls.Add(this.tb_PulseLength); + this.groupBox3.Controls.Add(this.tb_HalfPeriod); + this.groupBox3.Controls.Add(this.label5); + this.groupBox3.Controls.Add(this.label11); + this.groupBox3.Controls.Add(this.label6); + this.groupBox3.Location = new System.Drawing.Point(271, 47); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(239, 137); + this.groupBox3.TabIndex = 6; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Laser setting"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(29, 104); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(115, 12); + this.label12.TabIndex = 1; + this.label12.Text = "Laser off delay (�렡)"; + // + // tb_LaserOffDelay + // + this.tb_LaserOffDelay.Location = new System.Drawing.Point(150, 102); + this.tb_LaserOffDelay.Name = "tb_LaserOffDelay"; + this.tb_LaserOffDelay.Size = new System.Drawing.Size(83, 21); + this.tb_LaserOffDelay.TabIndex = 8; + this.tb_LaserOffDelay.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_LaserOffDelay.Leave += new System.EventHandler(this.SettingData_Leave); + // + // tb_LaserOnDelay + // + this.tb_LaserOnDelay.Location = new System.Drawing.Point(150, 73); + this.tb_LaserOnDelay.Name = "tb_LaserOnDelay"; + this.tb_LaserOnDelay.Size = new System.Drawing.Size(83, 21); + this.tb_LaserOnDelay.TabIndex = 8; + this.tb_LaserOnDelay.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_LaserOnDelay.Leave += new System.EventHandler(this.SettingData_Leave); + // + // tb_PulseLength + // + this.tb_PulseLength.Location = new System.Drawing.Point(150, 46); + this.tb_PulseLength.Name = "tb_PulseLength"; + this.tb_PulseLength.Size = new System.Drawing.Size(83, 21); + this.tb_PulseLength.TabIndex = 8; + this.tb_PulseLength.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_PulseLength.Leave += new System.EventHandler(this.SettingData_Leave); + // + // tb_HalfPeriod + // + this.tb_HalfPeriod.Location = new System.Drawing.Point(150, 17); + this.tb_HalfPeriod.Name = "tb_HalfPeriod"; + this.tb_HalfPeriod.Size = new System.Drawing.Size(83, 21); + this.tb_HalfPeriod.TabIndex = 8; + this.tb_HalfPeriod.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_HalfPeriod.Leave += new System.EventHandler(this.SettingData_Leave); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(29, 20); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(115, 12); + this.label5.TabIndex = 1; + this.label5.Text = "Half period (1/64�렡)"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(28, 76); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(116, 12); + this.label11.TabIndex = 1; + this.label11.Text = "Laser on delay (�렡)"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(19, 49); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(125, 12); + this.label6.TabIndex = 1; + this.label6.Text = "Pulse length (1/64�렡)"; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.label10); + this.groupBox4.Controls.Add(this.tb_PolygonDelay); + this.groupBox4.Controls.Add(this.tb_MarkDelay); + this.groupBox4.Controls.Add(this.tb_JumpDelay); + this.groupBox4.Controls.Add(this.label9); + this.groupBox4.Controls.Add(this.label8); + this.groupBox4.Location = new System.Drawing.Point(8, 170); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(257, 87); + this.groupBox4.TabIndex = 5; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Delay setting"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(29, 64); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(124, 12); + this.label10.TabIndex = 1; + this.label10.Text = "Polygon delay (10�렡)"; + // + // tb_PolygonDelay + // + this.tb_PolygonDelay.Location = new System.Drawing.Point(159, 58); + this.tb_PolygonDelay.Name = "tb_PolygonDelay"; + this.tb_PolygonDelay.Size = new System.Drawing.Size(83, 21); + this.tb_PolygonDelay.TabIndex = 8; + this.tb_PolygonDelay.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_PolygonDelay.Leave += new System.EventHandler(this.SettingData_Leave); + // + // tb_MarkDelay + // + this.tb_MarkDelay.Location = new System.Drawing.Point(159, 36); + this.tb_MarkDelay.Name = "tb_MarkDelay"; + this.tb_MarkDelay.Size = new System.Drawing.Size(83, 21); + this.tb_MarkDelay.TabIndex = 8; + this.tb_MarkDelay.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_MarkDelay.Leave += new System.EventHandler(this.SettingData_Leave); + // + // tb_JumpDelay + // + this.tb_JumpDelay.Location = new System.Drawing.Point(159, 14); + this.tb_JumpDelay.Name = "tb_JumpDelay"; + this.tb_JumpDelay.Size = new System.Drawing.Size(83, 21); + this.tb_JumpDelay.TabIndex = 8; + this.tb_JumpDelay.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_JumpDelay.Leave += new System.EventHandler(this.SettingData_Leave); + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(47, 42); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(106, 12); + this.label9.TabIndex = 1; + this.label9.Text = "Mark delay (10�렡)"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(44, 20); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(109, 12); + this.label8.TabIndex = 1; + this.label8.Text = "Jump delay (10�렡)"; + // + // btn_Cancel + // + this.btn_Cancel.Location = new System.Drawing.Point(302, 221); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(102, 33); + this.btn_Cancel.TabIndex = 4; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); + // + // btn_Save + // + this.btn_Save.Location = new System.Drawing.Point(408, 221); + this.btn_Save.Name = "btn_Save"; + this.btn_Save.Size = new System.Drawing.Size(102, 33); + this.btn_Save.TabIndex = 4; + this.btn_Save.Text = "Save"; + this.btn_Save.UseVisualStyleBackColor = true; + this.btn_Save.Click += new System.EventHandler(this.btn_Save_Click); + // + // btn_Run + // + this.btn_Run.Location = new System.Drawing.Point(409, 103); + this.btn_Run.Name = "btn_Run"; + this.btn_Run.Size = new System.Drawing.Size(102, 33); + this.btn_Run.TabIndex = 4; + this.btn_Run.Text = "Run"; + this.btn_Run.UseVisualStyleBackColor = true; + this.btn_Run.Click += new System.EventHandler(this.btn_Run_Click); + // + // lv_ScanList + // + this.lv_ScanList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3, + this.columnHeader4}); + this.lv_ScanList.FullRowSelect = true; + this.lv_ScanList.GridLines = true; + this.lv_ScanList.Location = new System.Drawing.Point(167, 23); + this.lv_ScanList.Name = "lv_ScanList"; + this.lv_ScanList.Size = new System.Drawing.Size(228, 113); + this.lv_ScanList.TabIndex = 10; + this.lv_ScanList.UseCompatibleStateImageBehavior = false; + this.lv_ScanList.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "Num"; + this.columnHeader1.Width = 43; + // + // columnHeader2 + // + this.columnHeader2.Text = "Mode"; + this.columnHeader2.Width = 51; + // + // columnHeader3 + // + this.columnHeader3.Text = "X"; + this.columnHeader3.Width = 62; + // + // columnHeader4 + // + this.columnHeader4.Text = "Y"; + this.columnHeader4.Width = 62; + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.cbb_ScanMode); + this.groupBox5.Controls.Add(this.lv_ScanList); + this.groupBox5.Controls.Add(this.tb_PosY); + this.groupBox5.Controls.Add(this.tb_PosX); + this.groupBox5.Controls.Add(this.label15); + this.groupBox5.Controls.Add(this.label14); + this.groupBox5.Controls.Add(this.label13); + this.groupBox5.Controls.Add(this.btn_Clear); + this.groupBox5.Controls.Add(this.btn_Add); + this.groupBox5.Controls.Add(this.btn_Stop); + this.groupBox5.Controls.Add(this.btn_Run); + this.groupBox5.Location = new System.Drawing.Point(12, 498); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(517, 149); + this.groupBox5.TabIndex = 11; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "Process"; + // + // cbb_ScanMode + // + this.cbb_ScanMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_ScanMode.FormattingEnabled = true; + this.cbb_ScanMode.Items.AddRange(new object[] { + "JUMP", + "MARK"}); + this.cbb_ScanMode.Location = new System.Drawing.Point(67, 23); + this.cbb_ScanMode.Name = "cbb_ScanMode"; + this.cbb_ScanMode.Size = new System.Drawing.Size(94, 20); + this.cbb_ScanMode.TabIndex = 11; + // + // tb_PosY + // + this.tb_PosY.Location = new System.Drawing.Point(67, 76); + this.tb_PosY.Name = "tb_PosY"; + this.tb_PosY.Size = new System.Drawing.Size(94, 21); + this.tb_PosY.TabIndex = 8; + this.tb_PosY.Text = "0"; + // + // tb_PosX + // + this.tb_PosX.Location = new System.Drawing.Point(67, 49); + this.tb_PosX.Name = "tb_PosX"; + this.tb_PosX.Size = new System.Drawing.Size(94, 21); + this.tb_PosX.TabIndex = 8; + this.tb_PosX.Text = "0"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(14, 79); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(49, 12); + this.label15.TabIndex = 1; + this.label15.Text = "Y (mm)"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(14, 52); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(49, 12); + this.label14.TabIndex = 1; + this.label14.Text = "X (mm)"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(14, 26); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(37, 12); + this.label13.TabIndex = 1; + this.label13.Text = "Mode"; + // + // btn_Clear + // + this.btn_Clear.Location = new System.Drawing.Point(409, 23); + this.btn_Clear.Name = "btn_Clear"; + this.btn_Clear.Size = new System.Drawing.Size(102, 33); + this.btn_Clear.TabIndex = 4; + this.btn_Clear.Text = "Clear"; + this.btn_Clear.UseVisualStyleBackColor = true; + this.btn_Clear.Click += new System.EventHandler(this.btn_Clear_Click); + // + // btn_Add + // + this.btn_Add.Location = new System.Drawing.Point(16, 103); + this.btn_Add.Name = "btn_Add"; + this.btn_Add.Size = new System.Drawing.Size(145, 33); + this.btn_Add.TabIndex = 4; + this.btn_Add.Text = "Add"; + this.btn_Add.UseVisualStyleBackColor = true; + this.btn_Add.Click += new System.EventHandler(this.btn_Add_Click); + // + // btn_Stop + // + this.btn_Stop.Location = new System.Drawing.Point(409, 64); + this.btn_Stop.Name = "btn_Stop"; + this.btn_Stop.Size = new System.Drawing.Size(102, 33); + this.btn_Stop.TabIndex = 4; + this.btn_Stop.Text = "Stop"; + this.btn_Stop.UseVisualStyleBackColor = true; + this.btn_Stop.Click += new System.EventHandler(this.btn_Stop_Click); + // + // groupBox6 + // + this.groupBox6.Controls.Add(this.btn_ReadExcel); + this.groupBox6.Controls.Add(this.nud_LineCount); + this.groupBox6.Controls.Add(this.btn_WriteExcel); + this.groupBox6.Controls.Add(this.tb_FieldSize); + this.groupBox6.Controls.Add(this.nud_LaserShotTime); + this.groupBox6.Controls.Add(this.btn_Shot); + this.groupBox6.Controls.Add(this.lb_Initialized); + this.groupBox6.Controls.Add(this.label20); + this.groupBox6.Controls.Add(this.lb_Busy); + this.groupBox6.Controls.Add(this.label19); + this.groupBox6.Controls.Add(this.groupBox7); + this.groupBox6.Controls.Add(this.btn_AddScanField); + this.groupBox6.Controls.Add(this.label18); + this.groupBox6.Controls.Add(this.btn_LaserOff); + this.groupBox6.Controls.Add(this.btn_LaserOn); + this.groupBox6.Controls.Add(this.btn_GetEncoder); + this.groupBox6.Controls.Add(this.tb_Encoder0); + this.groupBox6.Controls.Add(this.tb_Encoder1); + this.groupBox6.Controls.Add(this.label25); + this.groupBox6.Controls.Add(this.label24); + this.groupBox6.Location = new System.Drawing.Point(12, 12); + this.groupBox6.Name = "groupBox6"; + this.groupBox6.Size = new System.Drawing.Size(517, 205); + this.groupBox6.TabIndex = 12; + this.groupBox6.TabStop = false; + this.groupBox6.Text = "Status / Control"; + // + // btn_CorrectionFilePathOpen + // + this.btn_CorrectionFilePathOpen.Location = new System.Drawing.Point(431, 20); + this.btn_CorrectionFilePathOpen.Name = "btn_CorrectionFilePathOpen"; + this.btn_CorrectionFilePathOpen.Size = new System.Drawing.Size(75, 23); + this.btn_CorrectionFilePathOpen.TabIndex = 14; + this.btn_CorrectionFilePathOpen.Text = "Open"; + this.btn_CorrectionFilePathOpen.UseVisualStyleBackColor = true; + this.btn_CorrectionFilePathOpen.Click += new System.EventHandler(this.btn_CorrectionFilePathOpen_Click); + // + // btn_ReadExcel + // + this.btn_ReadExcel.Location = new System.Drawing.Point(417, 177); + this.btn_ReadExcel.Name = "btn_ReadExcel"; + this.btn_ReadExcel.Size = new System.Drawing.Size(93, 23); + this.btn_ReadExcel.TabIndex = 13; + this.btn_ReadExcel.Text = "Read Excel"; + this.btn_ReadExcel.UseVisualStyleBackColor = true; + this.btn_ReadExcel.Click += new System.EventHandler(this.btn_ReadExcel_Click); + // + // nud_LineCount + // + this.nud_LineCount.Location = new System.Drawing.Point(332, 128); + this.nud_LineCount.Maximum = new decimal(new int[] { + 25, + 0, + 0, + 0}); + this.nud_LineCount.Minimum = new decimal(new int[] { + 2, + 0, + 0, + 0}); + this.nud_LineCount.Name = "nud_LineCount"; + this.nud_LineCount.Size = new System.Drawing.Size(70, 21); + this.nud_LineCount.TabIndex = 11; + this.nud_LineCount.Value = new decimal(new int[] { + 2, + 0, + 0, + 0}); + // + // btn_WriteExcel + // + this.btn_WriteExcel.Location = new System.Drawing.Point(318, 177); + this.btn_WriteExcel.Name = "btn_WriteExcel"; + this.btn_WriteExcel.Size = new System.Drawing.Size(93, 23); + this.btn_WriteExcel.TabIndex = 13; + this.btn_WriteExcel.Text = "Write Excel"; + this.btn_WriteExcel.UseVisualStyleBackColor = true; + this.btn_WriteExcel.Click += new System.EventHandler(this.btn_WriteExcel_Click); + // + // tb_FieldSize + // + this.tb_FieldSize.Location = new System.Drawing.Point(332, 150); + this.tb_FieldSize.Name = "tb_FieldSize"; + this.tb_FieldSize.Size = new System.Drawing.Size(70, 21); + this.tb_FieldSize.TabIndex = 8; + this.tb_FieldSize.Text = "0"; + this.tb_FieldSize.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_FieldSize.Leave += new System.EventHandler(this.SettingData_Leave); + // + // nud_LaserShotTime + // + this.nud_LaserShotTime.Increment = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.nud_LaserShotTime.Location = new System.Drawing.Point(78, 139); + this.nud_LaserShotTime.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.nud_LaserShotTime.Name = "nud_LaserShotTime"; + this.nud_LaserShotTime.Size = new System.Drawing.Size(82, 21); + this.nud_LaserShotTime.TabIndex = 10; + // + // btn_Shot + // + this.btn_Shot.Location = new System.Drawing.Point(167, 129); + this.btn_Shot.Name = "btn_Shot"; + this.btn_Shot.Size = new System.Drawing.Size(75, 43); + this.btn_Shot.TabIndex = 9; + this.btn_Shot.Text = "Shot (ms)"; + this.btn_Shot.UseVisualStyleBackColor = true; + this.btn_Shot.Click += new System.EventHandler(this.btn_Shot_Click); + // + // lb_Initialized + // + this.lb_Initialized.BackColor = System.Drawing.Color.Red; + this.lb_Initialized.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Initialized.Location = new System.Drawing.Point(9, 17); + this.lb_Initialized.Name = "lb_Initialized"; + this.lb_Initialized.Size = new System.Drawing.Size(83, 20); + this.lb_Initialized.TabIndex = 0; + this.lb_Initialized.Text = "Initialized"; + this.lb_Initialized.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lb_Initialized.Click += new System.EventHandler(this.lb_Initialized_Click); + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Location = new System.Drawing.Point(260, 153); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(61, 12); + this.label20.TabIndex = 1; + this.label20.Text = "Field Size"; + // + // lb_Busy + // + this.lb_Busy.BackColor = System.Drawing.Color.Red; + this.lb_Busy.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_Busy.Location = new System.Drawing.Point(98, 17); + this.lb_Busy.Name = "lb_Busy"; + this.lb_Busy.Size = new System.Drawing.Size(83, 20); + this.lb_Busy.TabIndex = 0; + this.lb_Busy.Text = "Busy"; + this.lb_Busy.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Location = new System.Drawing.Point(260, 133); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(66, 12); + this.label19.TabIndex = 1; + this.label19.Text = "Line Count"; + // + // groupBox7 + // + this.groupBox7.Controls.Add(this.tb_JumpSpeed); + this.groupBox7.Controls.Add(this.tb_ProcessPosition); + this.groupBox7.Controls.Add(this.tb_MarkSpeed); + this.groupBox7.Controls.Add(this.label7); + this.groupBox7.Controls.Add(this.label16); + this.groupBox7.Controls.Add(this.label17); + this.groupBox7.Location = new System.Drawing.Point(187, 17); + this.groupBox7.Name = "groupBox7"; + this.groupBox7.Size = new System.Drawing.Size(208, 106); + this.groupBox7.TabIndex = 5; + this.groupBox7.TabStop = false; + this.groupBox7.Text = "Process speed"; + // + // tb_JumpSpeed + // + this.tb_JumpSpeed.Location = new System.Drawing.Point(127, 78); + this.tb_JumpSpeed.Name = "tb_JumpSpeed"; + this.tb_JumpSpeed.Size = new System.Drawing.Size(70, 21); + this.tb_JumpSpeed.TabIndex = 8; + this.tb_JumpSpeed.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_JumpSpeed.Leave += new System.EventHandler(this.SettingData_Leave); + // + // tb_ProcessPosition + // + this.tb_ProcessPosition.Location = new System.Drawing.Point(127, 20); + this.tb_ProcessPosition.Name = "tb_ProcessPosition"; + this.tb_ProcessPosition.ReadOnly = true; + this.tb_ProcessPosition.Size = new System.Drawing.Size(70, 21); + this.tb_ProcessPosition.TabIndex = 8; + this.tb_ProcessPosition.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_ProcessPosition.Leave += new System.EventHandler(this.SettingData_Leave); + // + // tb_MarkSpeed + // + this.tb_MarkSpeed.Location = new System.Drawing.Point(127, 49); + this.tb_MarkSpeed.Name = "tb_MarkSpeed"; + this.tb_MarkSpeed.Size = new System.Drawing.Size(70, 21); + this.tb_MarkSpeed.TabIndex = 8; + this.tb_MarkSpeed.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingData_KeyDown); + this.tb_MarkSpeed.Leave += new System.EventHandler(this.SettingData_Leave); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(7, 26); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(100, 12); + this.label7.TabIndex = 1; + this.label7.Text = "Process position"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(7, 82); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(114, 12); + this.label16.TabIndex = 1; + this.label16.Text = "Jump speed (�렂/s)"; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(7, 53); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(111, 12); + this.label17.TabIndex = 1; + this.label17.Text = "Mark speed (�렂/s)"; + // + // btn_AddScanField + // + this.btn_AddScanField.Location = new System.Drawing.Point(408, 128); + this.btn_AddScanField.Name = "btn_AddScanField"; + this.btn_AddScanField.Size = new System.Drawing.Size(102, 43); + this.btn_AddScanField.TabIndex = 4; + this.btn_AddScanField.Text = "Add ScanField"; + this.btn_AddScanField.UseVisualStyleBackColor = true; + this.btn_AddScanField.Click += new System.EventHandler(this.btn_AddScanField_Click); + // + // label21 + // + this.label21.AutoSize = true; + this.label21.Location = new System.Drawing.Point(12, 25); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(95, 12); + this.label21.TabIndex = 1; + this.label21.Text = "Correction File :"; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Location = new System.Drawing.Point(6, 143); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(66, 12); + this.label18.TabIndex = 1; + this.label18.Text = "Laser Shot"; + // + // btn_LaserOff + // + this.btn_LaserOff.Location = new System.Drawing.Point(408, 70); + this.btn_LaserOff.Name = "btn_LaserOff"; + this.btn_LaserOff.Size = new System.Drawing.Size(102, 33); + this.btn_LaserOff.TabIndex = 4; + this.btn_LaserOff.Text = "Laser Off"; + this.btn_LaserOff.UseVisualStyleBackColor = true; + this.btn_LaserOff.Click += new System.EventHandler(this.btn_LaserOff_Click); + // + // btn_LaserOn + // + this.btn_LaserOn.Location = new System.Drawing.Point(408, 33); + this.btn_LaserOn.Name = "btn_LaserOn"; + this.btn_LaserOn.Size = new System.Drawing.Size(102, 33); + this.btn_LaserOn.TabIndex = 4; + this.btn_LaserOn.Text = "Laser On"; + this.btn_LaserOn.UseVisualStyleBackColor = true; + this.btn_LaserOn.Click += new System.EventHandler(this.btn_LaserOn_Click); + // + // btn_GetEncoder + // + this.btn_GetEncoder.Location = new System.Drawing.Point(9, 98); + this.btn_GetEncoder.Name = "btn_GetEncoder"; + this.btn_GetEncoder.Size = new System.Drawing.Size(172, 25); + this.btn_GetEncoder.TabIndex = 4; + this.btn_GetEncoder.Text = "Get encoder"; + this.btn_GetEncoder.UseVisualStyleBackColor = true; + this.btn_GetEncoder.Click += new System.EventHandler(this.btn_GetEncoder_Click); + // + // tb_Encoder0 + // + this.tb_Encoder0.Location = new System.Drawing.Point(75, 45); + this.tb_Encoder0.Name = "tb_Encoder0"; + this.tb_Encoder0.ReadOnly = true; + this.tb_Encoder0.Size = new System.Drawing.Size(106, 21); + this.tb_Encoder0.TabIndex = 8; + this.tb_Encoder0.Text = "0"; + // + // tb_CorrectionFilePath + // + this.tb_CorrectionFilePath.Location = new System.Drawing.Point(113, 20); + this.tb_CorrectionFilePath.Name = "tb_CorrectionFilePath"; + this.tb_CorrectionFilePath.ReadOnly = true; + this.tb_CorrectionFilePath.Size = new System.Drawing.Size(312, 21); + this.tb_CorrectionFilePath.TabIndex = 8; + // + // tb_Encoder1 + // + this.tb_Encoder1.Location = new System.Drawing.Point(75, 70); + this.tb_Encoder1.Name = "tb_Encoder1"; + this.tb_Encoder1.ReadOnly = true; + this.tb_Encoder1.Size = new System.Drawing.Size(106, 21); + this.tb_Encoder1.TabIndex = 8; + this.tb_Encoder1.Text = "0"; + // + // label25 + // + this.label25.AutoSize = true; + this.label25.Location = new System.Drawing.Point(7, 73); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(62, 12); + this.label25.TabIndex = 1; + this.label25.Text = "Encoder 1"; + // + // label24 + // + this.label24.AutoSize = true; + this.label24.Location = new System.Drawing.Point(7, 48); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(62, 12); + this.label24.TabIndex = 1; + this.label24.Text = "Encoder 0"; + // + // ScannerViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(542, 659); + this.Controls.Add(this.groupBox6); + this.Controls.Add(this.groupBox5); + this.Controls.Add(this.groupBox1); + this.Name = "ScannerViewer"; + this.Text = "ScannerViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ScannerViewer_FormClosing); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + this.groupBox6.ResumeLayout(false); + this.groupBox6.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nud_LineCount)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nud_LaserShotTime)).EndInit(); + this.groupBox7.ResumeLayout(false); + this.groupBox7.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_FOV; + private System.Windows.Forms.TextBox tb_BitsPerMm; + private System.Windows.Forms.TextBox tb_EncoderCountPerMmY; + private System.Windows.Forms.TextBox tb_EncoderCountPerMmX; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.TextBox tb_LaserOffDelay; + private System.Windows.Forms.TextBox tb_LaserOnDelay; + private System.Windows.Forms.TextBox tb_PulseLength; + private System.Windows.Forms.TextBox tb_HalfPeriod; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox tb_PolygonDelay; + private System.Windows.Forms.TextBox tb_MarkDelay; + private System.Windows.Forms.TextBox tb_JumpDelay; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Button btn_Run; + private System.Windows.Forms.ListView lv_ScanList; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.ColumnHeader columnHeader4; + private System.Windows.Forms.GroupBox groupBox5; + private System.Windows.Forms.ComboBox cbb_ScanMode; + private System.Windows.Forms.TextBox tb_PosY; + private System.Windows.Forms.TextBox tb_PosX; + private System.Windows.Forms.Button btn_Add; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Button btn_Clear; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.Button btn_Save; + private System.Windows.Forms.GroupBox groupBox6; + private System.Windows.Forms.Label lb_Busy; + private System.Windows.Forms.Button btn_GetEncoder; + private System.Windows.Forms.TextBox tb_Encoder0; + private System.Windows.Forms.TextBox tb_Encoder1; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label lb_Initialized; + private System.Windows.Forms.Button btn_Stop; + private System.Windows.Forms.GroupBox groupBox7; + private System.Windows.Forms.TextBox tb_JumpSpeed; + private System.Windows.Forms.TextBox tb_MarkSpeed; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.TextBox tb_ProcessPosition; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Button btn_LaserOff; + private System.Windows.Forms.Button btn_LaserOn; + private System.Windows.Forms.Button btn_AddScanField; + private System.Windows.Forms.NumericUpDown nud_LaserShotTime; + private System.Windows.Forms.Button btn_Shot; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.TextBox tb_FieldSize; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.NumericUpDown nud_LineCount; + private System.Windows.Forms.Button btn_WriteExcel; + private System.Windows.Forms.Button btn_ReadExcel; + private System.Windows.Forms.Button btn_CorrectionFilePathOpen; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.TextBox tb_CorrectionFilePath; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.cs new file mode 100644 index 0000000..37928c2 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.cs @@ -0,0 +1,542 @@ +癤퓎sing SA_LTT; +using SA_LTT.Module; +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using Excel = Microsoft.Office.Interop.Excel; + +namespace SA_LTT_UI.Viewer +{ + public partial class ScannerViewer : Form + { + MainFrame _mainFrame; + Thread t_UIUpdate; + Scanner scanner; + + object _lockObject = new object(); + + bool updateCheck; + + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + delegate void ScanListAddDelegate(Coord coord); + public ScannerViewer(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + cbb_ScanMode.SelectedIndex = 0; + + scanner = new Scanner(); + + _mainFrame.equipment.scanner.ScanListAdded += Scanner_ScanListAdded; + _mainFrame.equipment.scanner.ScanListCleared += Scanner_ScanListCleared; + + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + + SettingRefresh(); + } + + private void SettingRefresh() + { + scanner.Copy(_mainFrame.equipment.scanner); + tb_CorrectionFilePath.Text = $"{scanner.CorrectionFilePath}"; + tb_EncoderCountPerMmX.Text = $"{scanner.EncoderCountPerMmX}"; + tb_EncoderCountPerMmY.Text = $"{scanner.EncoderCountPerMmY}"; + tb_BitsPerMm.Text = $"{scanner.BitsPerMm}"; + tb_FOV.Text = $"{scanner.FOV}"; + + tb_HalfPeriod.Text = $"{scanner.HalfPeriod}"; + tb_PulseLength.Text = $"{scanner.PulseLength1}"; + tb_LaserOnDelay.Text = $"{scanner.LaserOnDelay}"; + tb_LaserOffDelay.Text = $"{scanner.LaserOffDelay}"; + + tb_JumpDelay.Text = $"{scanner.JumpDelay}"; + tb_MarkDelay.Text = $"{scanner.MarkDelay}"; + tb_PolygonDelay.Text = $"{scanner.PolygonDelay}"; + } + + private void Scanner_ScanListAdded(Coord coord) + { + if (InvokeRequired) + { + BeginInvoke(new ScanListAddDelegate(Scanner_ScanListAdded), coord); + return; + } + else + { + lock (_lockObject) + { + ListViewItem lvi = new ListViewItem(lv_ScanList.Items.Count.ToString()); + lvi.SubItems.Add(coord.ScanMode.ToString()); + lvi.SubItems.Add((coord.X / scanner.BitsPerMm).ToString("f3")); + lvi.SubItems.Add((coord.Y / scanner.BitsPerMm).ToString("f3")); + lv_ScanList.Items.Add(lvi); + } + } + } + + private void Scanner_ScanListCleared() + { + if (InvokeRequired) + { + BeginInvoke(new ScanListCleared(Scanner_ScanListCleared)); + return; + } + else + { + lock (_lockObject) + { + lv_ScanList.Items.Clear(); + } + } + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + tb_ProcessPosition.Text = _mainFrame.equipment.scanner.IsPosition.ToString(); + tb_BitsPerMm.Text = scanner.BitsPerMm.ToString(); + + lb_Initialized.BackColor = _mainFrame.equipment.scanner.IsInitialized ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + lb_Busy.BackColor = _mainFrame.equipment.scanner.IsBusy ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + + tb_CorrectionFilePath.BackColor = scanner.CorrectionFilePath == _mainFrame.equipment.scanner.CorrectionFilePath ? System.Drawing.Color.White : System.Drawing.Color.Red; + tb_EncoderCountPerMmX.BackColor = scanner.EncoderCountPerMmX == _mainFrame.equipment.scanner.EncoderCountPerMmX ? System.Drawing.Color.White : System.Drawing.Color.Red; + tb_EncoderCountPerMmY.BackColor = scanner.EncoderCountPerMmY == _mainFrame.equipment.scanner.EncoderCountPerMmY ? System.Drawing.Color.White : System.Drawing.Color.Red; + tb_BitsPerMm.BackColor = scanner.BitsPerMm == _mainFrame.equipment.scanner.BitsPerMm ? System.Drawing.Color.White : System.Drawing.Color.Red; + tb_FOV.BackColor = scanner.FOV == _mainFrame.equipment.scanner.FOV ? System.Drawing.Color.White : System.Drawing.Color.Red; + + tb_HalfPeriod.BackColor = scanner.HalfPeriod == _mainFrame.equipment.scanner.HalfPeriod ? System.Drawing.Color.White : System.Drawing.Color.Red; + tb_PulseLength.BackColor = scanner.PulseLength1 == _mainFrame.equipment.scanner.PulseLength1 ? System.Drawing.Color.White : System.Drawing.Color.Red; + tb_LaserOnDelay.BackColor = scanner.LaserOnDelay == _mainFrame.equipment.scanner.LaserOnDelay ? System.Drawing.Color.White : System.Drawing.Color.Red; + tb_LaserOffDelay.BackColor = scanner.LaserOffDelay == _mainFrame.equipment.scanner.LaserOffDelay ? System.Drawing.Color.White : System.Drawing.Color.Red; + + tb_JumpDelay.BackColor = scanner.JumpDelay == _mainFrame.equipment.scanner.JumpDelay ? System.Drawing.Color.White : System.Drawing.Color.Red; + tb_MarkDelay.BackColor = scanner.MarkDelay == _mainFrame.equipment.scanner.MarkDelay ? System.Drawing.Color.White : System.Drawing.Color.Red; + tb_PolygonDelay.BackColor = scanner.PolygonDelay == _mainFrame.equipment.scanner.PolygonDelay ? System.Drawing.Color.White : System.Drawing.Color.Red; + + btn_LaserOn.BackColor = _mainFrame.equipment.scanner.IsLaserOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + btn_LaserOff.BackColor = !_mainFrame.equipment.scanner.IsLaserOn ? System.Drawing.Color.Lime : System.Drawing.Color.Red; + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void SettingData_Leave(object sender, EventArgs e) + { + SetSettingData(sender); + } + + private void SettingData_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyData == Keys.Enter) + { + SetSettingData(sender); + } + } + + private void SetSettingData(object sender) + { + TextBox textBox = (TextBox)sender; + double doubleData; + int intData; + uint uintData; + + switch (textBox.Name) + { + case "tb_CorrectionFilePath": + { + scanner.CorrectionFilePath = tb_CorrectionFilePath.Text; + break; + } + case "tb_EncoderCountPerMmX": + { + int.TryParse(tb_EncoderCountPerMmX.Text, out intData); + scanner.EncoderCountPerMmX = intData; + textBox.Text = $"{intData}"; + break; + } + case "tb_EncoderCountPerMmY": + { + int.TryParse(tb_EncoderCountPerMmY.Text, out intData); + scanner.EncoderCountPerMmY = intData; + textBox.Text = $"{intData}"; + break; + } + case "tb_FOV": + { + double.TryParse(tb_FOV.Text, out doubleData); + scanner.FOV = doubleData; + textBox.Text = $"{doubleData}"; + break; + } + case "tb_HalfPeriod": + { + uint.TryParse(tb_HalfPeriod.Text, out uintData); + scanner.HalfPeriod = uintData; + textBox.Text = $"{uintData}"; + break; + } + case "tb_PulseLength": + { + uint.TryParse(tb_PulseLength.Text, out uintData); + scanner.PulseLength1 = uintData; + textBox.Text = $"{uintData}"; + break; + } + case "tb_LaserOnDelay": + { + int.TryParse(tb_LaserOnDelay.Text, out intData); + scanner.LaserOnDelay = intData; + textBox.Text = $"{intData}"; + break; + } + case "tb_LaserOffDelay": + { + uint.TryParse(tb_LaserOffDelay.Text, out uintData); + scanner.LaserOffDelay = uintData; + textBox.Text = $"{uintData}"; + break; + } + case "tb_JumpDelay": + { + uint.TryParse(tb_JumpDelay.Text, out uintData); + scanner.JumpDelay = uintData; + textBox.Text = $"{uintData}"; + break; + } + case "tb_MarkDelay": + { + uint.TryParse(tb_MarkDelay.Text, out uintData); + scanner.MarkDelay = uintData; + textBox.Text = $"{uintData}"; + break; + } + case "tb_PolygonDelay": + { + uint.TryParse(tb_PolygonDelay.Text, out uintData); + scanner.PolygonDelay = uintData; + textBox.Text = $"{uintData}"; + break; + } + } + } + + private void btn_GetEncoder_Click(object sender, EventArgs e) + { + if (_mainFrame.equipment.scanner.GetEncoder()) + { + tb_Encoder0.Text = _mainFrame.equipment.scanner.Encoder0.ToString(); + tb_Encoder1.Text = _mainFrame.equipment.scanner.Encoder1.ToString(); + } + } + + private void btn_Add_Click(object sender, EventArgs e) + { + ScanMode scanmode = (ScanMode)cbb_ScanMode.SelectedIndex; + + double posX; + double posY; + double.TryParse(tb_PosX.Text, out posX); + double.TryParse(tb_PosY.Text, out posY); + + _mainFrame.equipment.scanner.AddScanList(scanmode, posX, posY); + } + + private void btn_Clear_Click(object sender, EventArgs e) + { + _mainFrame.equipment.scanner.ClearScanList(); + } + + private void btn_Run_Click(object sender, EventArgs e) + { + double markSpeed; + double jumpSpeed; + + double.TryParse(tb_MarkSpeed.Text, out markSpeed); + double.TryParse(tb_JumpSpeed.Text, out jumpSpeed); + + _mainFrame.equipment.scanner.SetScannerDelay(); + _mainFrame.equipment.scanner.SetLaserTiming(); + _mainFrame.equipment.scanner.SetLaserDelays(); + _mainFrame.equipment.scanner.SetJumpMarkSpeed(jumpSpeed, markSpeed); + _mainFrame.equipment.scanner.ExcuteScanList(); + } + + private void btn_Stop_Click(object sender, EventArgs e) + { + _mainFrame.equipment.scanner.Stop(); + } + + private void btn_Cancel_Click(object sender, EventArgs e) + { + SettingRefresh(); + } + + private void btn_Save_Click(object sender, EventArgs e) + { + _mainFrame.equipment.scanner.Copy(scanner); + _mainFrame.equipment.scanner.Save(); + } + + private void ScannerViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void lb_Initialized_Click(object sender, EventArgs e) + { + _mainFrame.equipment.scanner.Initialize(); + } + + private void btn_LaserOn_Click(object sender, EventArgs e) + { + _mainFrame.equipment.scanner.LaserOn(); + } + + private void btn_LaserOff_Click(object sender, EventArgs e) + { + _mainFrame.equipment.scanner.LaserOff(); + } + + private void btn_AddScanField_Click(object sender, EventArgs e) + { + _mainFrame.equipment.scanner.ClearScanList(); + + int lineCount = (int)nud_LineCount.Value; + double fieldSize = 0; + + if(double.TryParse(tb_FieldSize.Text, out fieldSize)) + { + _mainFrame.equipment.scanner.AddScanField(lineCount, fieldSize); + } + } + + //�삤�옒嫄몃┝ �뒪�젅�뱶濡� �룎�젮�빞 �맆吏��룄 ..? + private void SaveScanFieldExcel(int lineCount, double fieldSize) + { + try + { + var excelApp = new Excel.Application(); + excelApp.Visible = false; + + Excel.Workbook workBook = excelApp.Workbooks.Add(); + + workBook.Worksheets.Add(); + Excel._Worksheet workSheet = workBook.Worksheets.get_Item(1) as Excel.Worksheet; + + double lineMax = fieldSize / 2; + double lineMin = -(fieldSize / 2); + + double intervalLength = fieldSize / (lineCount - 1); + intervalLength = double.Parse(intervalLength.ToString("F3")); + + List<int> bitsX = new List<int>(); + List<int> bitsY = new List<int>(); + + List<double> positionsX = new List<double>(); + List<double> positionsY = new List<double>(); + + for (int i = -(lineCount - 1) / 2; i <= (lineCount - 1) / 2; i++) + { + bitsX.Add((int)Math.Floor((intervalLength * i) * _mainFrame.equipment.scanner.BitsPerMm)); + bitsY.Add((int)Math.Floor(-(intervalLength * i) * _mainFrame.equipment.scanner.BitsPerMm)); + positionsX.Add(intervalLength * i); + positionsY.Add(-intervalLength * i); + } + + for (int i = 0; i < lineCount; i++) + { + for (int j = 0; j < lineCount; j++) + { + workSheet.Cells[1 + (i * 4), 1 + (j * 2)] = bitsX[j]; + workSheet.Cells[1 + (i * 4), 2 + (j * 2)] = bitsY[i]; + + workSheet.Cells[2 + (i * 4), 1 + (j * 2)] = positionsX[j]; + workSheet.Cells[2 + (i * 4), 2 + (j * 2)] = positionsY[i]; + + workSheet.Cells[3 + (i * 4), 1 + (j * 2)] = ""; + workSheet.Cells[3 + (i * 4), 2 + (j * 2)] = ""; + + workSheet.Cells[3 + (i * 4), 1 + (j * 2)].Interior.Color = System.Drawing.Color.PaleGreen; + workSheet.Cells[3 + (i * 4), 2 + (j * 2)].Interior.Color = System.Drawing.Color.PaleGreen; + + workSheet.Cells[4 + (i * 4), 1 + (j * 2)] = $"= {(char)(65 + (j * 2))}{2 + (i * 4)} - {(char)(65 + (j * 2))}{3 + (i * 4)} "; + workSheet.Cells[4 + (i * 4), 2 + (j * 2)] = $"= {(char)(66 + (j * 2))}{2 + (i * 4)} - {(char)(66 + (j * 2))}{3 + (i * 4)} "; + } + } + + workSheet.Columns[1].AutoFit(); + workSheet.Columns[2].AutoFit(); + + workBook.SaveAs(@"D:\ScannerField.xls"); + //workBook.Save(); + workBook.Close(true, System.Reflection.Missing.Value, System.Reflection.Missing.Value); + excelApp.Quit(); + + Marshal.ReleaseComObject(workSheet); + Marshal.ReleaseComObject(workBook); + Marshal.ReleaseComObject(excelApp); + } + catch (Exception ex) + { + MessageBoxPad mbp = new MessageBoxPad("Excel �벐湲� �떎�뙣" + ex.Message); + mbp.Show(); + } + } + + private void ReadScanFieldExcel(int lineCount, string filePath = @"D:\ScannerField.xls") + { + try + { + List<string[]> result = new List<string[]>(); + + DateTime dt = DateTime.Now; + StringBuilder sb = new StringBuilder(); + sb.Clear(); + sb.AppendLine($"OLDCTFILE = Cor_1to1.ct5"); + sb.AppendLine($"NEWCTFILE = Correction_{dt.ToString("HH_mm")}.ct5"); + sb.AppendLine($"TOLERANCE = 0"); + sb.AppendLine($"NEWCAL = {_mainFrame.equipment.scanner.BitsPerMm}"); + sb.AppendLine("LIMITS"); + var excelApp = new Excel.Application(); + excelApp.Visible = false; + + Excel.Workbook workBook = excelApp.Workbooks.Open(filePath); + + Excel._Worksheet workSheet = workBook.Worksheets.get_Item(1) as Excel.Worksheet; + + Excel.Range range = workSheet.UsedRange; + + object[,] data = (object[,])range.Value; + + for (int row = 1; row <= data.GetLength(0); row += 4) + { + int length = data.GetLength(1); + string[] arr = new string[lineCount]; + + for (int column = 1; column <= length; column += 2) + { + double xbit = double.Parse($"{data[row, column]:F3}"); + double ybit = double.Parse($"{data[row, column + 1]:F3}"); + double xdata = double.Parse($"{data[row + 2, column] :F3}"); + double ydata= double.Parse($"{data[row + 2, column + 1]:F3}"); + + sb.AppendLine($"{xbit} {ybit} {xdata} {ydata}"); + } + } + + workBook.Close(); + excelApp.Quit(); + + Marshal.ReleaseComObject(workSheet); + Marshal.ReleaseComObject(workBook); + Marshal.ReleaseComObject(excelApp); + + using (FileStream fs = new FileStream($@"D:\Correction_{dt.ToString("HH_mm")}.ct5.dat", FileMode.Create)) + { + using (StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("ks_c_5601-1987"))) + { + sw.Write(sb); + } + } + } + catch (Exception ex) + { + MessageBoxPad mbp = new MessageBoxPad("Excel 蹂��솚 �떎�뙣" + ex.Message); + mbp.Show(); + } + } + + private void btn_Shot_Click(object sender, EventArgs e) + { + Thread laserOffThread = new Thread(LaserOff); + laserOffThread.Start(); + } + + private void LaserOff() + { + int laserShotTime = (int)nud_LaserShotTime.Value; + _mainFrame.equipment.scanner.LaserOn(); + Thread.Sleep(laserShotTime); + _mainFrame.equipment.scanner.LaserOff(); + } + + private void btn_WriteExcel_Click(object sender, EventArgs e) + { + int lineCount = (int)nud_LineCount.Value; + double fieldSize = 0; + + if (double.TryParse(tb_FieldSize.Text, out fieldSize)) + { + SaveScanFieldExcel(lineCount, fieldSize); + } + } + + private void btn_ReadExcel_Click(object sender, EventArgs e) + { + int lineCount = (int)nud_LineCount.Value; + double fieldSize = 0; + + if (double.TryParse(tb_FieldSize.Text, out fieldSize)) + { + ReadScanFieldExcel(lineCount); + } + } + + private void btn_CorrectionFilePathOpen_Click(object sender, EventArgs e) + { + OpenFileDialog ofd = new OpenFileDialog(); + + if (ofd.ShowDialog() == DialogResult.OK) + { + tb_CorrectionFilePath.Text = ofd.FileName; + SetSettingData((object)tb_CorrectionFilePath); + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.Designer.cs new file mode 100644 index 0000000..1f6adb4 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.Designer.cs @@ -0,0 +1,1427 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class SequenceViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.lb_TmcStep1 = new System.Windows.Forms.Label(); + this.label70 = new System.Windows.Forms.Label(); + this.label90 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.lb_TmcStep2 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.lb_TmcStep3 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.lb_TmcStep4 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.lb_TmcStep5 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.lb_TmcStep6 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.lb_TmcStep7 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.lb_TmcStep8 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.lb_TmcStep9 = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.lb_TmcStep10 = new System.Windows.Forms.Label(); + this.label22 = new System.Windows.Forms.Label(); + this.lb_TmcStep11 = new System.Windows.Forms.Label(); + this.label24 = new System.Windows.Forms.Label(); + this.lb_TmcStep12 = new System.Windows.Forms.Label(); + this.label26 = new System.Windows.Forms.Label(); + this.lb_TmcStep13 = new System.Windows.Forms.Label(); + this.label28 = new System.Windows.Forms.Label(); + this.lb_PmcStep1 = new System.Windows.Forms.Label(); + this.label30 = new System.Windows.Forms.Label(); + this.lb_PmcStep2 = new System.Windows.Forms.Label(); + this.label32 = new System.Windows.Forms.Label(); + this.lb_PmcStep3 = new System.Windows.Forms.Label(); + this.label34 = new System.Windows.Forms.Label(); + this.lb_PmcStep4 = new System.Windows.Forms.Label(); + this.label36 = new System.Windows.Forms.Label(); + this.lb_PmcStep5 = new System.Windows.Forms.Label(); + this.label38 = new System.Windows.Forms.Label(); + this.lb_PmcStep6 = new System.Windows.Forms.Label(); + this.label40 = new System.Windows.Forms.Label(); + this.lb_PmcStep7 = new System.Windows.Forms.Label(); + this.label42 = new System.Windows.Forms.Label(); + this.lb_PmcStep8 = new System.Windows.Forms.Label(); + this.label44 = new System.Windows.Forms.Label(); + this.lb_PmcStep9 = new System.Windows.Forms.Label(); + this.label46 = new System.Windows.Forms.Label(); + this.lb_PmcStep10 = new System.Windows.Forms.Label(); + this.label48 = new System.Windows.Forms.Label(); + this.lb_PmcStep11 = new System.Windows.Forms.Label(); + this.label50 = new System.Windows.Forms.Label(); + this.lb_PmcStep12 = new System.Windows.Forms.Label(); + this.label52 = new System.Windows.Forms.Label(); + this.lb_PmcStep13 = new System.Windows.Forms.Label(); + this.label54 = new System.Windows.Forms.Label(); + this.label55 = new System.Windows.Forms.Label(); + this.label57 = new System.Windows.Forms.Label(); + this.label58 = new System.Windows.Forms.Label(); + this.label59 = new System.Windows.Forms.Label(); + this.label60 = new System.Windows.Forms.Label(); + this.label61 = new System.Windows.Forms.Label(); + this.label62 = new System.Windows.Forms.Label(); + this.label64 = new System.Windows.Forms.Label(); + this.label65 = new System.Windows.Forms.Label(); + this.label66 = new System.Windows.Forms.Label(); + this.label67 = new System.Windows.Forms.Label(); + this.label68 = new System.Windows.Forms.Label(); + this.gb_TmcSequence = new System.Windows.Forms.GroupBox(); + this.gb_PmcSequence = new System.Windows.Forms.GroupBox(); + this.label81 = new System.Windows.Forms.Label(); + this.label80 = new System.Windows.Forms.Label(); + this.label79 = new System.Windows.Forms.Label(); + this.label78 = new System.Windows.Forms.Label(); + this.label77 = new System.Windows.Forms.Label(); + this.label76 = new System.Windows.Forms.Label(); + this.label75 = new System.Windows.Forms.Label(); + this.label74 = new System.Windows.Forms.Label(); + this.label73 = new System.Windows.Forms.Label(); + this.label72 = new System.Windows.Forms.Label(); + this.label71 = new System.Windows.Forms.Label(); + this.label69 = new System.Windows.Forms.Label(); + this.label56 = new System.Windows.Forms.Label(); + this.label82 = new System.Windows.Forms.Label(); + this.label83 = new System.Windows.Forms.Label(); + this.label84 = new System.Windows.Forms.Label(); + this.gb_MeasureEnergySequence = new System.Windows.Forms.GroupBox(); + this.label98 = new System.Windows.Forms.Label(); + this.lb_MeasureEnergyStep5 = new System.Windows.Forms.Label(); + this.label95 = new System.Windows.Forms.Label(); + this.lb_MeasureEnergyStep4 = new System.Windows.Forms.Label(); + this.label92 = new System.Windows.Forms.Label(); + this.lb_MeasureEnergyStep3 = new System.Windows.Forms.Label(); + this.label89 = new System.Windows.Forms.Label(); + this.lb_MeasureEnergyStep2 = new System.Windows.Forms.Label(); + this.label87 = new System.Windows.Forms.Label(); + this.lb_MeasureEnergyStep1 = new System.Windows.Forms.Label(); + this.label99 = new System.Windows.Forms.Label(); + this.label96 = new System.Windows.Forms.Label(); + this.label93 = new System.Windows.Forms.Label(); + this.label86 = new System.Windows.Forms.Label(); + this.tb_Description = new System.Windows.Forms.TextBox(); + this.label100 = new System.Windows.Forms.Label(); + this.btn_Close = new System.Windows.Forms.Button(); + this.btn_Clear = new System.Windows.Forms.Button(); + this.gb_TmcSequence.SuspendLayout(); + this.gb_PmcSequence.SuspendLayout(); + this.gb_MeasureEnergySequence.SuspendLayout(); + this.SuspendLayout(); + // + // lb_TmcStep1 + // + this.lb_TmcStep1.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep1.Location = new System.Drawing.Point(6, 17); + this.lb_TmcStep1.Name = "lb_TmcStep1"; + this.lb_TmcStep1.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep1.TabIndex = 71; + this.lb_TmcStep1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label70 + // + this.label70.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label70.Location = new System.Drawing.Point(52, 17); + this.label70.Name = "label70"; + this.label70.Size = new System.Drawing.Size(186, 40); + this.label70.TabIndex = 72; + this.label70.Text = "Port status check"; + this.label70.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label90 + // + this.label90.AutoSize = true; + this.label90.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label90.Location = new System.Drawing.Point(136, 57); + this.label90.Name = "label90"; + this.label90.Size = new System.Drawing.Size(18, 15); + this.label90.TabIndex = 70; + this.label90.Text = "�넃"; + this.label90.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Location = new System.Drawing.Point(52, 72); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(186, 40); + this.label2.TabIndex = 72; + this.label2.Text = "Get load port"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep2 + // + this.lb_TmcStep2.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep2.Location = new System.Drawing.Point(6, 72); + this.lb_TmcStep2.Name = "lb_TmcStep2"; + this.lb_TmcStep2.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep2.TabIndex = 71; + this.lb_TmcStep2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label4.Location = new System.Drawing.Point(52, 127); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(186, 40); + this.label4.TabIndex = 72; + this.label4.Text = "Put pre aligner flip"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep3 + // + this.lb_TmcStep3.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep3.Location = new System.Drawing.Point(6, 127); + this.lb_TmcStep3.Name = "lb_TmcStep3"; + this.lb_TmcStep3.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep3.TabIndex = 71; + this.lb_TmcStep3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label6.Location = new System.Drawing.Point(52, 182); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(186, 40); + this.label6.TabIndex = 72; + this.label6.Text = "Align"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep4 + // + this.lb_TmcStep4.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep4.Location = new System.Drawing.Point(6, 182); + this.lb_TmcStep4.Name = "lb_TmcStep4"; + this.lb_TmcStep4.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep4.TabIndex = 71; + this.lb_TmcStep4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label8.Location = new System.Drawing.Point(52, 237); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(186, 40); + this.label8.TabIndex = 72; + this.label8.Text = "Get pre aligner"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep5 + // + this.lb_TmcStep5.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep5.Location = new System.Drawing.Point(6, 237); + this.lb_TmcStep5.Name = "lb_TmcStep5"; + this.lb_TmcStep5.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep5.TabIndex = 71; + this.lb_TmcStep5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label10 + // + this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label10.Location = new System.Drawing.Point(52, 292); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(186, 40); + this.label10.TabIndex = 72; + this.label10.Text = "Chamber status check"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep6 + // + this.lb_TmcStep6.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep6.Location = new System.Drawing.Point(6, 292); + this.lb_TmcStep6.Name = "lb_TmcStep6"; + this.lb_TmcStep6.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep6.TabIndex = 71; + this.lb_TmcStep6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label12 + // + this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label12.Location = new System.Drawing.Point(52, 347); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(186, 40); + this.label12.TabIndex = 72; + this.label12.Text = "Put chamber"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep7 + // + this.lb_TmcStep7.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep7.Location = new System.Drawing.Point(6, 347); + this.lb_TmcStep7.Name = "lb_TmcStep7"; + this.lb_TmcStep7.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep7.TabIndex = 71; + this.lb_TmcStep7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label14 + // + this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label14.Location = new System.Drawing.Point(52, 402); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(186, 40); + this.label14.TabIndex = 72; + this.label14.Text = "Process wait"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep8 + // + this.lb_TmcStep8.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep8.Location = new System.Drawing.Point(6, 402); + this.lb_TmcStep8.Name = "lb_TmcStep8"; + this.lb_TmcStep8.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep8.TabIndex = 71; + this.lb_TmcStep8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label18 + // + this.label18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label18.Location = new System.Drawing.Point(52, 457); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(186, 40); + this.label18.TabIndex = 72; + this.label18.Text = "Get chamber"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep9 + // + this.lb_TmcStep9.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep9.Location = new System.Drawing.Point(6, 457); + this.lb_TmcStep9.Name = "lb_TmcStep9"; + this.lb_TmcStep9.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep9.TabIndex = 71; + this.lb_TmcStep9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label20 + // + this.label20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label20.Location = new System.Drawing.Point(52, 512); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(186, 40); + this.label20.TabIndex = 72; + this.label20.Text = "Put pre aligner flip"; + this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep10 + // + this.lb_TmcStep10.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep10.Location = new System.Drawing.Point(6, 512); + this.lb_TmcStep10.Name = "lb_TmcStep10"; + this.lb_TmcStep10.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep10.TabIndex = 71; + this.lb_TmcStep10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label22 + // + this.label22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label22.Location = new System.Drawing.Point(52, 567); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(186, 40); + this.label22.TabIndex = 72; + this.label22.Text = "Align"; + this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep11 + // + this.lb_TmcStep11.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep11.Location = new System.Drawing.Point(6, 567); + this.lb_TmcStep11.Name = "lb_TmcStep11"; + this.lb_TmcStep11.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep11.TabIndex = 71; + this.lb_TmcStep11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label24 + // + this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label24.Location = new System.Drawing.Point(52, 622); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(186, 40); + this.label24.TabIndex = 72; + this.label24.Text = "Get pre aligner"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep12 + // + this.lb_TmcStep12.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep12.Location = new System.Drawing.Point(6, 622); + this.lb_TmcStep12.Name = "lb_TmcStep12"; + this.lb_TmcStep12.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep12.TabIndex = 71; + this.lb_TmcStep12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label26 + // + this.label26.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label26.Location = new System.Drawing.Point(52, 677); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(186, 40); + this.label26.TabIndex = 72; + this.label26.Text = "Put load port"; + this.label26.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_TmcStep13 + // + this.lb_TmcStep13.BackColor = System.Drawing.Color.Green; + this.lb_TmcStep13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_TmcStep13.Location = new System.Drawing.Point(6, 677); + this.lb_TmcStep13.Name = "lb_TmcStep13"; + this.lb_TmcStep13.Size = new System.Drawing.Size(40, 40); + this.lb_TmcStep13.TabIndex = 71; + this.lb_TmcStep13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label28 + // + this.label28.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label28.Location = new System.Drawing.Point(52, 17); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(186, 40); + this.label28.TabIndex = 72; + this.label28.Text = "Get wafer"; + this.label28.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep1 + // + this.lb_PmcStep1.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep1.Location = new System.Drawing.Point(6, 17); + this.lb_PmcStep1.Name = "lb_PmcStep1"; + this.lb_PmcStep1.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep1.TabIndex = 71; + this.lb_PmcStep1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label30 + // + this.label30.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label30.Location = new System.Drawing.Point(52, 72); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(186, 40); + this.label30.TabIndex = 72; + this.label30.Text = "Vacuun on"; + this.label30.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep2 + // + this.lb_PmcStep2.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep2.Location = new System.Drawing.Point(6, 72); + this.lb_PmcStep2.Name = "lb_PmcStep2"; + this.lb_PmcStep2.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep2.TabIndex = 71; + this.lb_PmcStep2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label32 + // + this.label32.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label32.Location = new System.Drawing.Point(52, 127); + this.label32.Name = "label32"; + this.label32.Size = new System.Drawing.Size(186, 40); + this.label32.TabIndex = 72; + this.label32.Text = "Pin down"; + this.label32.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep3 + // + this.lb_PmcStep3.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep3.Location = new System.Drawing.Point(6, 127); + this.lb_PmcStep3.Name = "lb_PmcStep3"; + this.lb_PmcStep3.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep3.TabIndex = 71; + this.lb_PmcStep3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label34 + // + this.label34.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label34.Location = new System.Drawing.Point(52, 182); + this.label34.Name = "label34"; + this.label34.Size = new System.Drawing.Size(186, 40); + this.label34.TabIndex = 72; + this.label34.Text = "Gate close"; + this.label34.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep4 + // + this.lb_PmcStep4.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep4.Location = new System.Drawing.Point(6, 182); + this.lb_PmcStep4.Name = "lb_PmcStep4"; + this.lb_PmcStep4.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep4.TabIndex = 71; + this.lb_PmcStep4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label36 + // + this.label36.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label36.Location = new System.Drawing.Point(52, 237); + this.label36.Name = "label36"; + this.label36.Size = new System.Drawing.Size(186, 40); + this.label36.TabIndex = 72; + this.label36.Text = "Move center"; + this.label36.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep5 + // + this.lb_PmcStep5.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep5.Location = new System.Drawing.Point(6, 237); + this.lb_PmcStep5.Name = "lb_PmcStep5"; + this.lb_PmcStep5.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep5.TabIndex = 71; + this.lb_PmcStep5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label38 + // + this.label38.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label38.Location = new System.Drawing.Point(52, 292); + this.label38.Name = "label38"; + this.label38.Size = new System.Drawing.Size(186, 40); + this.label38.TabIndex = 72; + this.label38.Text = "Recipe data load"; + this.label38.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep6 + // + this.lb_PmcStep6.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep6.Location = new System.Drawing.Point(6, 292); + this.lb_PmcStep6.Name = "lb_PmcStep6"; + this.lb_PmcStep6.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep6.TabIndex = 71; + this.lb_PmcStep6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label40 + // + this.label40.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label40.Location = new System.Drawing.Point(52, 347); + this.label40.Name = "label40"; + this.label40.Size = new System.Drawing.Size(186, 40); + this.label40.TabIndex = 72; + this.label40.Text = "Process data check"; + this.label40.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep7 + // + this.lb_PmcStep7.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep7.Location = new System.Drawing.Point(6, 347); + this.lb_PmcStep7.Name = "lb_PmcStep7"; + this.lb_PmcStep7.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep7.TabIndex = 71; + this.lb_PmcStep7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label42 + // + this.label42.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label42.Location = new System.Drawing.Point(52, 402); + this.label42.Name = "label42"; + this.label42.Size = new System.Drawing.Size(186, 40); + this.label42.TabIndex = 72; + this.label42.Text = "Measure energy"; + this.label42.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep8 + // + this.lb_PmcStep8.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep8.Location = new System.Drawing.Point(6, 402); + this.lb_PmcStep8.Name = "lb_PmcStep8"; + this.lb_PmcStep8.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep8.TabIndex = 71; + this.lb_PmcStep8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label44 + // + this.label44.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label44.Location = new System.Drawing.Point(52, 457); + this.label44.Name = "label44"; + this.label44.Size = new System.Drawing.Size(186, 40); + this.label44.TabIndex = 72; + this.label44.Text = "Process wafer"; + this.label44.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep9 + // + this.lb_PmcStep9.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep9.Location = new System.Drawing.Point(6, 457); + this.lb_PmcStep9.Name = "lb_PmcStep9"; + this.lb_PmcStep9.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep9.TabIndex = 71; + this.lb_PmcStep9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label46 + // + this.label46.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label46.Location = new System.Drawing.Point(52, 512); + this.label46.Name = "label46"; + this.label46.Size = new System.Drawing.Size(186, 40); + this.label46.TabIndex = 72; + this.label46.Text = "Move load"; + this.label46.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep10 + // + this.lb_PmcStep10.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep10.Location = new System.Drawing.Point(6, 512); + this.lb_PmcStep10.Name = "lb_PmcStep10"; + this.lb_PmcStep10.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep10.TabIndex = 71; + this.lb_PmcStep10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label48 + // + this.label48.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label48.Location = new System.Drawing.Point(52, 567); + this.label48.Name = "label48"; + this.label48.Size = new System.Drawing.Size(186, 40); + this.label48.TabIndex = 72; + this.label48.Text = "Gate open"; + this.label48.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep11 + // + this.lb_PmcStep11.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep11.Location = new System.Drawing.Point(6, 567); + this.lb_PmcStep11.Name = "lb_PmcStep11"; + this.lb_PmcStep11.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep11.TabIndex = 71; + this.lb_PmcStep11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label50 + // + this.label50.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label50.Location = new System.Drawing.Point(52, 622); + this.label50.Name = "label50"; + this.label50.Size = new System.Drawing.Size(186, 40); + this.label50.TabIndex = 72; + this.label50.Text = "Vacuum off"; + this.label50.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep12 + // + this.lb_PmcStep12.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep12.Location = new System.Drawing.Point(6, 622); + this.lb_PmcStep12.Name = "lb_PmcStep12"; + this.lb_PmcStep12.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep12.TabIndex = 71; + this.lb_PmcStep12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label52 + // + this.label52.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label52.Location = new System.Drawing.Point(52, 677); + this.label52.Name = "label52"; + this.label52.Size = new System.Drawing.Size(186, 40); + this.label52.TabIndex = 72; + this.label52.Text = "Pin up"; + this.label52.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_PmcStep13 + // + this.lb_PmcStep13.BackColor = System.Drawing.Color.Green; + this.lb_PmcStep13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_PmcStep13.Location = new System.Drawing.Point(6, 677); + this.lb_PmcStep13.Name = "lb_PmcStep13"; + this.lb_PmcStep13.Size = new System.Drawing.Size(40, 40); + this.lb_PmcStep13.TabIndex = 71; + this.lb_PmcStep13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label54 + // + this.label54.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label54.Location = new System.Drawing.Point(420, 913); + this.label54.Name = "label54"; + this.label54.Size = new System.Drawing.Size(186, 40); + this.label54.TabIndex = 72; + this.label54.Text = "Check wafer removed"; + this.label54.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label55 + // + this.label55.BackColor = System.Drawing.Color.Green; + this.label55.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label55.Location = new System.Drawing.Point(374, 913); + this.label55.Name = "label55"; + this.label55.Size = new System.Drawing.Size(40, 40); + this.label55.TabIndex = 71; + this.label55.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label57 + // + this.label57.AutoSize = true; + this.label57.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label57.Location = new System.Drawing.Point(136, 112); + this.label57.Name = "label57"; + this.label57.Size = new System.Drawing.Size(18, 15); + this.label57.TabIndex = 70; + this.label57.Text = "�넃"; + this.label57.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label58 + // + this.label58.AutoSize = true; + this.label58.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label58.Location = new System.Drawing.Point(136, 167); + this.label58.Name = "label58"; + this.label58.Size = new System.Drawing.Size(18, 15); + this.label58.TabIndex = 70; + this.label58.Text = "�넃"; + this.label58.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label59 + // + this.label59.AutoSize = true; + this.label59.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label59.Location = new System.Drawing.Point(136, 222); + this.label59.Name = "label59"; + this.label59.Size = new System.Drawing.Size(18, 15); + this.label59.TabIndex = 70; + this.label59.Text = "�넃"; + this.label59.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label60 + // + this.label60.AutoSize = true; + this.label60.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label60.Location = new System.Drawing.Point(136, 277); + this.label60.Name = "label60"; + this.label60.Size = new System.Drawing.Size(18, 15); + this.label60.TabIndex = 70; + this.label60.Text = "�넃"; + this.label60.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label61 + // + this.label61.AutoSize = true; + this.label61.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label61.Location = new System.Drawing.Point(136, 332); + this.label61.Name = "label61"; + this.label61.Size = new System.Drawing.Size(18, 15); + this.label61.TabIndex = 70; + this.label61.Text = "�넃"; + this.label61.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label62 + // + this.label62.AutoSize = true; + this.label62.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label62.Location = new System.Drawing.Point(136, 387); + this.label62.Name = "label62"; + this.label62.Size = new System.Drawing.Size(18, 15); + this.label62.TabIndex = 70; + this.label62.Text = "�넃"; + this.label62.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label64 + // + this.label64.AutoSize = true; + this.label64.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label64.Location = new System.Drawing.Point(136, 442); + this.label64.Name = "label64"; + this.label64.Size = new System.Drawing.Size(18, 15); + this.label64.TabIndex = 70; + this.label64.Text = "�넃"; + this.label64.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label65 + // + this.label65.AutoSize = true; + this.label65.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label65.Location = new System.Drawing.Point(136, 497); + this.label65.Name = "label65"; + this.label65.Size = new System.Drawing.Size(18, 15); + this.label65.TabIndex = 70; + this.label65.Text = "�넃"; + this.label65.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label66 + // + this.label66.AutoSize = true; + this.label66.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label66.Location = new System.Drawing.Point(136, 552); + this.label66.Name = "label66"; + this.label66.Size = new System.Drawing.Size(18, 15); + this.label66.TabIndex = 70; + this.label66.Text = "�넃"; + this.label66.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label67 + // + this.label67.AutoSize = true; + this.label67.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label67.Location = new System.Drawing.Point(136, 607); + this.label67.Name = "label67"; + this.label67.Size = new System.Drawing.Size(18, 15); + this.label67.TabIndex = 70; + this.label67.Text = "�넃"; + this.label67.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label68 + // + this.label68.AutoSize = true; + this.label68.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label68.Location = new System.Drawing.Point(136, 662); + this.label68.Name = "label68"; + this.label68.Size = new System.Drawing.Size(18, 15); + this.label68.TabIndex = 70; + this.label68.Text = "�넃"; + this.label68.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // gb_TmcSequence + // + this.gb_TmcSequence.Controls.Add(this.label70); + this.gb_TmcSequence.Controls.Add(this.label90); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep13); + this.gb_TmcSequence.Controls.Add(this.label57); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep12); + this.gb_TmcSequence.Controls.Add(this.label58); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep11); + this.gb_TmcSequence.Controls.Add(this.label59); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep10); + this.gb_TmcSequence.Controls.Add(this.label60); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep9); + this.gb_TmcSequence.Controls.Add(this.label61); + this.gb_TmcSequence.Controls.Add(this.label62); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep8); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep7); + this.gb_TmcSequence.Controls.Add(this.label64); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep6); + this.gb_TmcSequence.Controls.Add(this.label65); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep5); + this.gb_TmcSequence.Controls.Add(this.label66); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep4); + this.gb_TmcSequence.Controls.Add(this.label67); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep3); + this.gb_TmcSequence.Controls.Add(this.label68); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep2); + this.gb_TmcSequence.Controls.Add(this.label2); + this.gb_TmcSequence.Controls.Add(this.label4); + this.gb_TmcSequence.Controls.Add(this.label6); + this.gb_TmcSequence.Controls.Add(this.label8); + this.gb_TmcSequence.Controls.Add(this.label10); + this.gb_TmcSequence.Controls.Add(this.label12); + this.gb_TmcSequence.Controls.Add(this.label14); + this.gb_TmcSequence.Controls.Add(this.label18); + this.gb_TmcSequence.Controls.Add(this.label20); + this.gb_TmcSequence.Controls.Add(this.label22); + this.gb_TmcSequence.Controls.Add(this.label24); + this.gb_TmcSequence.Controls.Add(this.label26); + this.gb_TmcSequence.Controls.Add(this.lb_TmcStep1); + this.gb_TmcSequence.Location = new System.Drawing.Point(12, 12); + this.gb_TmcSequence.Name = "gb_TmcSequence"; + this.gb_TmcSequence.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.gb_TmcSequence.Size = new System.Drawing.Size(246, 725); + this.gb_TmcSequence.TabIndex = 73; + this.gb_TmcSequence.TabStop = false; + this.gb_TmcSequence.Text = "TMC Sequence"; + // + // gb_PmcSequence + // + this.gb_PmcSequence.Controls.Add(this.label28); + this.gb_PmcSequence.Controls.Add(this.label81); + this.gb_PmcSequence.Controls.Add(this.label30); + this.gb_PmcSequence.Controls.Add(this.label80); + this.gb_PmcSequence.Controls.Add(this.label32); + this.gb_PmcSequence.Controls.Add(this.label79); + this.gb_PmcSequence.Controls.Add(this.label34); + this.gb_PmcSequence.Controls.Add(this.label78); + this.gb_PmcSequence.Controls.Add(this.label36); + this.gb_PmcSequence.Controls.Add(this.label77); + this.gb_PmcSequence.Controls.Add(this.label38); + this.gb_PmcSequence.Controls.Add(this.label76); + this.gb_PmcSequence.Controls.Add(this.label40); + this.gb_PmcSequence.Controls.Add(this.label75); + this.gb_PmcSequence.Controls.Add(this.label42); + this.gb_PmcSequence.Controls.Add(this.label74); + this.gb_PmcSequence.Controls.Add(this.label44); + this.gb_PmcSequence.Controls.Add(this.label73); + this.gb_PmcSequence.Controls.Add(this.label46); + this.gb_PmcSequence.Controls.Add(this.label72); + this.gb_PmcSequence.Controls.Add(this.label48); + this.gb_PmcSequence.Controls.Add(this.label71); + this.gb_PmcSequence.Controls.Add(this.label50); + this.gb_PmcSequence.Controls.Add(this.label69); + this.gb_PmcSequence.Controls.Add(this.label52); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep1); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep2); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep3); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep13); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep4); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep12); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep5); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep11); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep6); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep10); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep7); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep9); + this.gb_PmcSequence.Controls.Add(this.lb_PmcStep8); + this.gb_PmcSequence.Location = new System.Drawing.Point(354, 12); + this.gb_PmcSequence.Name = "gb_PmcSequence"; + this.gb_PmcSequence.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.gb_PmcSequence.Size = new System.Drawing.Size(246, 732); + this.gb_PmcSequence.TabIndex = 73; + this.gb_PmcSequence.TabStop = false; + this.gb_PmcSequence.Text = "PMC Sequence"; + // + // label81 + // + this.label81.AutoSize = true; + this.label81.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label81.Location = new System.Drawing.Point(132, 662); + this.label81.Name = "label81"; + this.label81.Size = new System.Drawing.Size(18, 15); + this.label81.TabIndex = 70; + this.label81.Text = "�넃"; + this.label81.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label80 + // + this.label80.AutoSize = true; + this.label80.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label80.Location = new System.Drawing.Point(132, 607); + this.label80.Name = "label80"; + this.label80.Size = new System.Drawing.Size(18, 15); + this.label80.TabIndex = 70; + this.label80.Text = "�넃"; + this.label80.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label79 + // + this.label79.AutoSize = true; + this.label79.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label79.Location = new System.Drawing.Point(132, 552); + this.label79.Name = "label79"; + this.label79.Size = new System.Drawing.Size(18, 15); + this.label79.TabIndex = 70; + this.label79.Text = "�넃"; + this.label79.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label78 + // + this.label78.AutoSize = true; + this.label78.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label78.Location = new System.Drawing.Point(132, 497); + this.label78.Name = "label78"; + this.label78.Size = new System.Drawing.Size(18, 15); + this.label78.TabIndex = 70; + this.label78.Text = "�넃"; + this.label78.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label77 + // + this.label77.AutoSize = true; + this.label77.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label77.Location = new System.Drawing.Point(132, 442); + this.label77.Name = "label77"; + this.label77.Size = new System.Drawing.Size(18, 15); + this.label77.TabIndex = 70; + this.label77.Text = "�넃"; + this.label77.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label76 + // + this.label76.AutoSize = true; + this.label76.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label76.Location = new System.Drawing.Point(132, 387); + this.label76.Name = "label76"; + this.label76.Size = new System.Drawing.Size(18, 15); + this.label76.TabIndex = 70; + this.label76.Text = "�넃"; + this.label76.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label75 + // + this.label75.AutoSize = true; + this.label75.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label75.Location = new System.Drawing.Point(132, 332); + this.label75.Name = "label75"; + this.label75.Size = new System.Drawing.Size(18, 15); + this.label75.TabIndex = 70; + this.label75.Text = "�넃"; + this.label75.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label74 + // + this.label74.AutoSize = true; + this.label74.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label74.Location = new System.Drawing.Point(132, 277); + this.label74.Name = "label74"; + this.label74.Size = new System.Drawing.Size(18, 15); + this.label74.TabIndex = 70; + this.label74.Text = "�넃"; + this.label74.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label73 + // + this.label73.AutoSize = true; + this.label73.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label73.Location = new System.Drawing.Point(132, 222); + this.label73.Name = "label73"; + this.label73.Size = new System.Drawing.Size(18, 15); + this.label73.TabIndex = 70; + this.label73.Text = "�넃"; + this.label73.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label72 + // + this.label72.AutoSize = true; + this.label72.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label72.Location = new System.Drawing.Point(132, 167); + this.label72.Name = "label72"; + this.label72.Size = new System.Drawing.Size(18, 15); + this.label72.TabIndex = 70; + this.label72.Text = "�넃"; + this.label72.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label71 + // + this.label71.AutoSize = true; + this.label71.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label71.Location = new System.Drawing.Point(132, 112); + this.label71.Name = "label71"; + this.label71.Size = new System.Drawing.Size(18, 15); + this.label71.TabIndex = 70; + this.label71.Text = "�넃"; + this.label71.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label69 + // + this.label69.AutoSize = true; + this.label69.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label69.Location = new System.Drawing.Point(132, 57); + this.label69.Name = "label69"; + this.label69.Size = new System.Drawing.Size(18, 15); + this.label69.TabIndex = 70; + this.label69.Text = "�넃"; + this.label69.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label56 + // + this.label56.Font = new System.Drawing.Font("Gulim", 50F, System.Drawing.FontStyle.Bold); + this.label56.Location = new System.Drawing.Point(258, 402); + this.label56.Name = "label56"; + this.label56.Size = new System.Drawing.Size(90, 67); + this.label56.TabIndex = 70; + this.label56.Text = "�넂"; + this.label56.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label82 + // + this.label82.Font = new System.Drawing.Font("Gulim", 50F, System.Drawing.FontStyle.Bold); + this.label82.Location = new System.Drawing.Point(602, 399); + this.label82.Name = "label82"; + this.label82.Size = new System.Drawing.Size(88, 55); + this.label82.TabIndex = 70; + this.label82.Text = "�넂"; + this.label82.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label83 + // + this.label83.Font = new System.Drawing.Font("Gulim", 9F); + this.label83.Location = new System.Drawing.Point(258, 387); + this.label83.Name = "label83"; + this.label83.Size = new System.Drawing.Size(90, 33); + this.label83.TabIndex = 70; + this.label83.Text = "Process sequence"; + this.label83.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label84 + // + this.label84.Font = new System.Drawing.Font("Gulim", 9F); + this.label84.Location = new System.Drawing.Point(600, 371); + this.label84.Name = "label84"; + this.label84.Size = new System.Drawing.Size(90, 48); + this.label84.TabIndex = 70; + this.label84.Text = "Measure energy sequence"; + this.label84.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // gb_MeasureEnergySequence + // + this.gb_MeasureEnergySequence.Controls.Add(this.label98); + this.gb_MeasureEnergySequence.Controls.Add(this.lb_MeasureEnergyStep5); + this.gb_MeasureEnergySequence.Controls.Add(this.label95); + this.gb_MeasureEnergySequence.Controls.Add(this.lb_MeasureEnergyStep4); + this.gb_MeasureEnergySequence.Controls.Add(this.label92); + this.gb_MeasureEnergySequence.Controls.Add(this.lb_MeasureEnergyStep3); + this.gb_MeasureEnergySequence.Controls.Add(this.label89); + this.gb_MeasureEnergySequence.Controls.Add(this.lb_MeasureEnergyStep2); + this.gb_MeasureEnergySequence.Controls.Add(this.label87); + this.gb_MeasureEnergySequence.Controls.Add(this.lb_MeasureEnergyStep1); + this.gb_MeasureEnergySequence.Controls.Add(this.label99); + this.gb_MeasureEnergySequence.Controls.Add(this.label96); + this.gb_MeasureEnergySequence.Controls.Add(this.label93); + this.gb_MeasureEnergySequence.Controls.Add(this.label86); + this.gb_MeasureEnergySequence.Location = new System.Drawing.Point(696, 314); + this.gb_MeasureEnergySequence.Name = "gb_MeasureEnergySequence"; + this.gb_MeasureEnergySequence.Size = new System.Drawing.Size(246, 290); + this.gb_MeasureEnergySequence.TabIndex = 74; + this.gb_MeasureEnergySequence.TabStop = false; + this.gb_MeasureEnergySequence.Text = "Measure energy sequence"; + // + // label98 + // + this.label98.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label98.Location = new System.Drawing.Point(52, 237); + this.label98.Name = "label98"; + this.label98.Size = new System.Drawing.Size(186, 40); + this.label98.TabIndex = 72; + this.label98.Text = "Attenuator set"; + this.label98.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_MeasureEnergyStep5 + // + this.lb_MeasureEnergyStep5.BackColor = System.Drawing.Color.Green; + this.lb_MeasureEnergyStep5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MeasureEnergyStep5.Location = new System.Drawing.Point(6, 237); + this.lb_MeasureEnergyStep5.Name = "lb_MeasureEnergyStep5"; + this.lb_MeasureEnergyStep5.Size = new System.Drawing.Size(40, 40); + this.lb_MeasureEnergyStep5.TabIndex = 71; + this.lb_MeasureEnergyStep5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label95 + // + this.label95.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label95.Location = new System.Drawing.Point(52, 182); + this.label95.Name = "label95"; + this.label95.Size = new System.Drawing.Size(186, 40); + this.label95.TabIndex = 72; + this.label95.Text = "Measure data check"; + this.label95.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_MeasureEnergyStep4 + // + this.lb_MeasureEnergyStep4.BackColor = System.Drawing.Color.Green; + this.lb_MeasureEnergyStep4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MeasureEnergyStep4.Location = new System.Drawing.Point(6, 182); + this.lb_MeasureEnergyStep4.Name = "lb_MeasureEnergyStep4"; + this.lb_MeasureEnergyStep4.Size = new System.Drawing.Size(40, 40); + this.lb_MeasureEnergyStep4.TabIndex = 71; + this.lb_MeasureEnergyStep4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label92 + // + this.label92.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label92.Location = new System.Drawing.Point(52, 127); + this.label92.Name = "label92"; + this.label92.Size = new System.Drawing.Size(186, 40); + this.label92.TabIndex = 72; + this.label92.Text = "Measure energy"; + this.label92.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_MeasureEnergyStep3 + // + this.lb_MeasureEnergyStep3.BackColor = System.Drawing.Color.Green; + this.lb_MeasureEnergyStep3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MeasureEnergyStep3.Location = new System.Drawing.Point(6, 127); + this.lb_MeasureEnergyStep3.Name = "lb_MeasureEnergyStep3"; + this.lb_MeasureEnergyStep3.Size = new System.Drawing.Size(40, 40); + this.lb_MeasureEnergyStep3.TabIndex = 71; + this.lb_MeasureEnergyStep3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label89 + // + this.label89.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label89.Location = new System.Drawing.Point(52, 72); + this.label89.Name = "label89"; + this.label89.Size = new System.Drawing.Size(186, 40); + this.label89.TabIndex = 72; + this.label89.Text = "First attenuator set"; + this.label89.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_MeasureEnergyStep2 + // + this.lb_MeasureEnergyStep2.BackColor = System.Drawing.Color.Green; + this.lb_MeasureEnergyStep2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MeasureEnergyStep2.Location = new System.Drawing.Point(6, 72); + this.lb_MeasureEnergyStep2.Name = "lb_MeasureEnergyStep2"; + this.lb_MeasureEnergyStep2.Size = new System.Drawing.Size(40, 40); + this.lb_MeasureEnergyStep2.TabIndex = 71; + this.lb_MeasureEnergyStep2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label87 + // + this.label87.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label87.Location = new System.Drawing.Point(52, 17); + this.label87.Name = "label87"; + this.label87.Size = new System.Drawing.Size(186, 40); + this.label87.TabIndex = 72; + this.label87.Text = "Move energy meter"; + this.label87.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_MeasureEnergyStep1 + // + this.lb_MeasureEnergyStep1.BackColor = System.Drawing.Color.Green; + this.lb_MeasureEnergyStep1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_MeasureEnergyStep1.Location = new System.Drawing.Point(6, 17); + this.lb_MeasureEnergyStep1.Name = "lb_MeasureEnergyStep1"; + this.lb_MeasureEnergyStep1.Size = new System.Drawing.Size(40, 40); + this.lb_MeasureEnergyStep1.TabIndex = 71; + this.lb_MeasureEnergyStep1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label99 + // + this.label99.AutoSize = true; + this.label99.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label99.Location = new System.Drawing.Point(132, 222); + this.label99.Name = "label99"; + this.label99.Size = new System.Drawing.Size(18, 15); + this.label99.TabIndex = 70; + this.label99.Text = "�넃"; + this.label99.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label96 + // + this.label96.AutoSize = true; + this.label96.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label96.Location = new System.Drawing.Point(132, 167); + this.label96.Name = "label96"; + this.label96.Size = new System.Drawing.Size(18, 15); + this.label96.TabIndex = 70; + this.label96.Text = "�넃"; + this.label96.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label93 + // + this.label93.AutoSize = true; + this.label93.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label93.Location = new System.Drawing.Point(132, 112); + this.label93.Name = "label93"; + this.label93.Size = new System.Drawing.Size(18, 15); + this.label93.TabIndex = 70; + this.label93.Text = "�넃"; + this.label93.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label86 + // + this.label86.AutoSize = true; + this.label86.Font = new System.Drawing.Font("Gulim", 11F, System.Drawing.FontStyle.Bold); + this.label86.Location = new System.Drawing.Point(132, 57); + this.label86.Name = "label86"; + this.label86.Size = new System.Drawing.Size(18, 15); + this.label86.TabIndex = 70; + this.label86.Text = "�넃"; + this.label86.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_Description + // + this.tb_Description.Location = new System.Drawing.Point(948, 41); + this.tb_Description.Multiline = true; + this.tb_Description.Name = "tb_Description"; + this.tb_Description.ReadOnly = true; + this.tb_Description.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.tb_Description.Size = new System.Drawing.Size(418, 749); + this.tb_Description.TabIndex = 75; + // + // label100 + // + this.label100.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label100.Location = new System.Drawing.Point(948, 9); + this.label100.Name = "label100"; + this.label100.Size = new System.Drawing.Size(311, 29); + this.label100.TabIndex = 103; + this.label100.Text = "Process description"; + this.label100.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Close + // + this.btn_Close.Location = new System.Drawing.Point(811, 729); + this.btn_Close.Name = "btn_Close"; + this.btn_Close.Size = new System.Drawing.Size(131, 61); + this.btn_Close.TabIndex = 104; + this.btn_Close.Text = "Close"; + this.btn_Close.UseVisualStyleBackColor = true; + this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click); + // + // btn_Clear + // + this.btn_Clear.Location = new System.Drawing.Point(1265, 8); + this.btn_Clear.Name = "btn_Clear"; + this.btn_Clear.Size = new System.Drawing.Size(101, 30); + this.btn_Clear.TabIndex = 105; + this.btn_Clear.Text = "Clear"; + this.btn_Clear.UseVisualStyleBackColor = true; + this.btn_Clear.Click += new System.EventHandler(this.btn_Clear_Click); + // + // SequenceViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1378, 795); + this.Controls.Add(this.btn_Clear); + this.Controls.Add(this.btn_Close); + this.Controls.Add(this.label100); + this.Controls.Add(this.tb_Description); + this.Controls.Add(this.gb_MeasureEnergySequence); + this.Controls.Add(this.label84); + this.Controls.Add(this.label82); + this.Controls.Add(this.label83); + this.Controls.Add(this.label56); + this.Controls.Add(this.gb_PmcSequence); + this.Controls.Add(this.gb_TmcSequence); + this.Controls.Add(this.label55); + this.Controls.Add(this.label54); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SequenceViewer"; + this.Text = "SequenceViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SequenceViewer_FormClosing); + this.Shown += new System.EventHandler(this.SequenceViewer_Shown); + this.gb_TmcSequence.ResumeLayout(false); + this.gb_TmcSequence.PerformLayout(); + this.gb_PmcSequence.ResumeLayout(false); + this.gb_PmcSequence.PerformLayout(); + this.gb_MeasureEnergySequence.ResumeLayout(false); + this.gb_MeasureEnergySequence.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label lb_TmcStep1; + private System.Windows.Forms.Label label70; + private System.Windows.Forms.Label label90; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label lb_TmcStep2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label lb_TmcStep3; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label lb_TmcStep4; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label lb_TmcStep5; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label lb_TmcStep6; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label lb_TmcStep7; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label lb_TmcStep8; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label lb_TmcStep9; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label lb_TmcStep10; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Label lb_TmcStep11; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label lb_TmcStep12; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Label lb_TmcStep13; + private System.Windows.Forms.Label label28; + private System.Windows.Forms.Label lb_PmcStep1; + private System.Windows.Forms.Label label30; + private System.Windows.Forms.Label lb_PmcStep2; + private System.Windows.Forms.Label label32; + private System.Windows.Forms.Label lb_PmcStep3; + private System.Windows.Forms.Label label34; + private System.Windows.Forms.Label lb_PmcStep4; + private System.Windows.Forms.Label label36; + private System.Windows.Forms.Label lb_PmcStep5; + private System.Windows.Forms.Label label38; + private System.Windows.Forms.Label lb_PmcStep6; + private System.Windows.Forms.Label label40; + private System.Windows.Forms.Label lb_PmcStep7; + private System.Windows.Forms.Label label42; + private System.Windows.Forms.Label lb_PmcStep8; + private System.Windows.Forms.Label label44; + private System.Windows.Forms.Label lb_PmcStep9; + private System.Windows.Forms.Label label46; + private System.Windows.Forms.Label lb_PmcStep10; + private System.Windows.Forms.Label label48; + private System.Windows.Forms.Label lb_PmcStep11; + private System.Windows.Forms.Label label50; + private System.Windows.Forms.Label lb_PmcStep12; + private System.Windows.Forms.Label label52; + private System.Windows.Forms.Label lb_PmcStep13; + private System.Windows.Forms.Label label54; + private System.Windows.Forms.Label label55; + private System.Windows.Forms.Label label57; + private System.Windows.Forms.Label label58; + private System.Windows.Forms.Label label59; + private System.Windows.Forms.Label label60; + private System.Windows.Forms.Label label61; + private System.Windows.Forms.Label label62; + private System.Windows.Forms.Label label64; + private System.Windows.Forms.Label label65; + private System.Windows.Forms.Label label66; + private System.Windows.Forms.Label label67; + private System.Windows.Forms.Label label68; + private System.Windows.Forms.GroupBox gb_TmcSequence; + private System.Windows.Forms.GroupBox gb_PmcSequence; + private System.Windows.Forms.Label label56; + private System.Windows.Forms.Label label69; + private System.Windows.Forms.Label label71; + private System.Windows.Forms.Label label72; + private System.Windows.Forms.Label label73; + private System.Windows.Forms.Label label74; + private System.Windows.Forms.Label label81; + private System.Windows.Forms.Label label80; + private System.Windows.Forms.Label label79; + private System.Windows.Forms.Label label78; + private System.Windows.Forms.Label label77; + private System.Windows.Forms.Label label76; + private System.Windows.Forms.Label label75; + private System.Windows.Forms.Label label82; + private System.Windows.Forms.Label label83; + private System.Windows.Forms.Label label84; + private System.Windows.Forms.GroupBox gb_MeasureEnergySequence; + private System.Windows.Forms.Label label87; + private System.Windows.Forms.Label lb_MeasureEnergyStep1; + private System.Windows.Forms.Label label86; + private System.Windows.Forms.Label label92; + private System.Windows.Forms.Label lb_MeasureEnergyStep3; + private System.Windows.Forms.Label label89; + private System.Windows.Forms.Label lb_MeasureEnergyStep2; + private System.Windows.Forms.Label label93; + private System.Windows.Forms.Label label98; + private System.Windows.Forms.Label lb_MeasureEnergyStep5; + private System.Windows.Forms.Label label95; + private System.Windows.Forms.Label lb_MeasureEnergyStep4; + private System.Windows.Forms.Label label99; + private System.Windows.Forms.Label label96; + private System.Windows.Forms.TextBox tb_Description; + private System.Windows.Forms.Label label100; + private System.Windows.Forms.Button btn_Close; + private System.Windows.Forms.Button btn_Clear; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.cs new file mode 100644 index 0000000..2f6ec22 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.cs @@ -0,0 +1,437 @@ +癤퓎sing SA_LTT; +using System; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using System.Threading; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class SequenceViewer : Form + { + MainFrame _mainFrame; + + Queue<string> _processDescriptions = new Queue<string>(); + + Thread t_UIUpdate; + + bool updateCheck; + + List<Label> _tmcLabels = new List<Label>(); + List<Label> _pmcLabels = new List<Label>(); + List<Label> _measureEnergyLabels = new List<Label>(); + + object _queueLock = new object(); + + private bool _isShown; + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public SequenceViewer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + + InitializeLabels(); + EquipmentLogManager.Instance.ProcessLogAdded += Instance_ProcessLogAdded; + + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + + private void Instance_ProcessLogAdded(string logData) + { + DateTime dt = DateTime.Now; + AddDescription($"{dt.ToString("yyyy/MM/dd HH:mm:ss.fff")} " + logData); + } + + private void InitializeLabels() + { + foreach (Control control in gb_TmcSequence.Controls) + { + if (control.GetType() == typeof(Label) && control.Name.Contains("Tmc")) + { + _tmcLabels.Add((Label)control); + } + } + + Label[] sortedData = SortLabels(_tmcLabels.ToArray()); + _tmcLabels.Clear(); + _tmcLabels.AddRange(sortedData); + + foreach(Label label in _tmcLabels) + { + string str = label.Name; + string kk = Regex.Replace(label.Name, @"\D", ""); + } + + foreach (Control control in gb_PmcSequence.Controls) + { + if (control.GetType() == typeof(Label) && control.Name.Contains("Pmc")) + { + _pmcLabels.Add((Label)control); + } + } + + sortedData = SortLabels(_pmcLabels.ToArray()); + _pmcLabels.Clear(); + _pmcLabels.AddRange(sortedData); + + foreach (Label label in _pmcLabels) + { + string str = label.Name; + string kk = Regex.Replace(label.Name, @"\D", ""); + } + + foreach (Control control in gb_MeasureEnergySequence.Controls) + { + if (control.GetType() == typeof(Label) && control.Name.Contains("Measure")) + { + _measureEnergyLabels.Add((Label)control); + } + } + + sortedData = SortLabels(_measureEnergyLabels.ToArray()); + _measureEnergyLabels.Clear(); + _measureEnergyLabels.AddRange(sortedData); + + foreach (Label label in _measureEnergyLabels) + { + string str = label.Name; + string kk = Regex.Replace(label.Name, @"\D", ""); + } + } + + private Label[] SortLabels(Label[] labels) + { + Label[] sortedLabel = new Label[labels.Length]; + + for(int i = 0; i < labels.Length; i++) + { + int location = 0; + + for(int j = 0; j < labels.Length; j++) + { + int valueI = int.Parse(Regex.Replace(labels[i].Name, @"\D", "")); + int valueJ = int.Parse(Regex.Replace(labels[j].Name, @"\D", "")); + + if(valueJ < valueI) + { + location++; + } + } + + sortedLabel[location] = labels[i]; + } + + foreach(Label l in sortedLabel) + { + string str = l.Name; + } + + return sortedLabel; + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(100); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + UpdateDescription(); + + if (Visible) + { + UpdateTmcSequence(); + UpdatePmcSequence(); + UpdateMeasureEnergySequence(); + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void UpdateDescription() + { + if (_processDescriptions.Count > 0) + { + lock (_queueLock) + { + if(_isShown) + { + string description = _processDescriptions.Dequeue(); + + tb_Description.AppendText(description + "\r\n"); + } + } + } + } + + private void AddDescription(string description) + { + lock(_queueLock) + { + _processDescriptions.Enqueue(description); + } + } + + private void UpdateTmcSequence() + { + int i = 0; + int endCount = 0; + + if(_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.Wait) + { + + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.ProcessDataCheck) + { + endCount = 1; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.CheckGetLoadPort) + { + endCount = 2; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.CheckBeforePutPreAlignerFlip) + { + endCount = 3; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.BeforeAlignWait) + { + endCount = 4; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.CheckBeforeGetPreAligner) + { + endCount = 5; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.ChamberStatusCheck) + { + endCount = 6; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.CheckPutChamber) + { + endCount = 7; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.MeltingWait) + { + endCount = 8; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.CheckGetChamber) + { + endCount = 9; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.CheckAfterPutPreAlignerFlip) + { + endCount = 10; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.AfterAlignWait) + { + endCount = 11; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.CheckAfterGetPreAligner) + { + endCount = 12; + } + else if (_mainFrame.equipment.TmcStep <= Sequence.TmcSteps.CheckPutLoadPort) + { + endCount = 13; + } + + for (i = 0; i < endCount; i++) + { + _tmcLabels[i].BackColor = System.Drawing.Color.Lime; + } + + for (; i < _tmcLabels.Count; i++) + { + _tmcLabels[i].BackColor = System.Drawing.Color.Green; + } + } + + private void UpdatePmcSequence() + { + int i = 0; + int endCount = 0; + + if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.Wait) + { + + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.WaferPutWait) + { + endCount = 1; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.BeforeVacuumOn) + { + endCount = 2; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.BeforePinDown) + { + endCount = 3; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.BeforeGateClose) + { + endCount = 4; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.CheckCenterPosition) + { + endCount = 5; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.GetRecipeData) + { + endCount = 6; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.CoordTransform) + { + endCount = 7; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.CheckAttenuator) + { + endCount = 8; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.ProcessEnd) + { + endCount = 9; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.CheckAfterLoadPosition) + { + endCount = 10; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AfterGateOpen) + { + endCount = 11; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AfterVacuumOff) + { + endCount = 12; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.AfterPinUp) + { + endCount = 13; + } + + for (i = 0; i < endCount; i++) + { + if (_mainFrame.equipment.modeParameterManager.ModeParameter.EnergyMeasurementUse == false && i == 7) + { + _pmcLabels[i].BackColor = System.Drawing.Color.Green; + } + else + { + _pmcLabels[i].BackColor = System.Drawing.Color.Lime; + } + } + + for (; i < _pmcLabels.Count; i++) + { + _pmcLabels[i].BackColor = System.Drawing.Color.Green; + } + } + + private void UpdateMeasureEnergySequence() + { + int i = 0; + int endCount = 0; + + if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.MovePowerMeterPosition) + { + + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.CheckPowerMeterPosition) + { + endCount = 1; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.CalDataCheckAttenuator) + { + endCount = 2; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.MeasurementEnd) + { + endCount = 3; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.MeasurrmentDataCheck) + { + endCount = 4; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.CheckAttenuator) + { + endCount = 5; + } + else if (_mainFrame.equipment.PmcStep <= Sequence.PmcSteps.End) + { + endCount = 5; + } + + if (_mainFrame.equipment.modeParameterManager.ModeParameter.EnergyMeasurementUse == false) + { + endCount = 0; + } + + for (i = 0; i < endCount; i++) + { + _measureEnergyLabels[i].BackColor = System.Drawing.Color.Lime; + } + + for (; i < _measureEnergyLabels.Count; i++) + { + _measureEnergyLabels[i].BackColor = System.Drawing.Color.Green; + } + } + + private void btn_Close_Click(object sender, EventArgs e) + { + this.Hide(); + } + + private void SequenceViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void btn_Clear_Click(object sender, EventArgs e) + { + tb_Description.Text = string.Empty; + } + + private void SequenceViewer_Shown(object sender, EventArgs e) + { + _isShown = true; + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.Designer.cs new file mode 100644 index 0000000..4fec9af --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.Designer.cs @@ -0,0 +1,590 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class VisionViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.tb_Ip = new System.Windows.Forms.TextBox(); + this.tb_Port = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.btn_Connection = new System.Windows.Forms.Button(); + this.btn_DisConnection = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.btn_WaferDetectionResultAck = new System.Windows.Forms.Button(); + this.btn_AlarmAck = new System.Windows.Forms.Button(); + this.btn_RequestAlive = new System.Windows.Forms.Button(); + this.btn_RecipeUpdateAck = new System.Windows.Forms.Button(); + this.btn_RecipeSwitch = new System.Windows.Forms.Button(); + this.btn_WaferDetectionStart = new System.Windows.Forms.Button(); + this.btn_WaferDetectionReadyEndAck = new System.Windows.Forms.Button(); + this.btn_WaferDetectionReady = new System.Windows.Forms.Button(); + this.btn_InspReadyEnd = new System.Windows.Forms.Button(); + this.btn_VisionReady = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_RecipeName = new System.Windows.Forms.TextBox(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.lb_RequestAlive = new System.Windows.Forms.Label(); + this.lb_RecipeUpdateAck = new System.Windows.Forms.Label(); + this.lb_WaferDetectionResultAck = new System.Windows.Forms.Label(); + this.lb_WaferDetectionReadyEndAck = new System.Windows.Forms.Label(); + this.lb_InspReadyEndAck = new System.Windows.Forms.Label(); + this.lb_AlarmAck = new System.Windows.Forms.Label(); + this.lb_RecipeSwitch = new System.Windows.Forms.Label(); + this.lb_WaferDetectionStart = new System.Windows.Forms.Label(); + this.lb_WaferDetectionReady = new System.Windows.Forms.Label(); + this.lb_VisionReady = new System.Windows.Forms.Label(); + this.btn_Close = new System.Windows.Forms.Button(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.tb_ResultT = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.tb_ResultY = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.tb_ResultX = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.tb_Result = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.SuspendLayout(); + // + // tb_Ip + // + this.tb_Ip.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Ip.Location = new System.Drawing.Point(88, 17); + this.tb_Ip.Name = "tb_Ip"; + this.tb_Ip.ReadOnly = true; + this.tb_Ip.Size = new System.Drawing.Size(190, 21); + this.tb_Ip.TabIndex = 0; + // + // tb_Port + // + this.tb_Port.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_Port.Location = new System.Drawing.Point(88, 43); + this.tb_Port.Name = "tb_Port"; + this.tb_Port.ReadOnly = true; + this.tb_Port.Size = new System.Drawing.Size(190, 21); + this.tb_Port.TabIndex = 0; + // + // label1 + // + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.label1.Location = new System.Drawing.Point(6, 17); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(76, 21); + this.label1.TabIndex = 1; + this.label1.Text = "IP address"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.label2.Location = new System.Drawing.Point(6, 43); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(76, 21); + this.label2.TabIndex = 1; + this.label2.Text = "Port"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Connection + // + this.btn_Connection.Location = new System.Drawing.Point(284, 16); + this.btn_Connection.Name = "btn_Connection"; + this.btn_Connection.Size = new System.Drawing.Size(98, 21); + this.btn_Connection.TabIndex = 2; + this.btn_Connection.Text = "Connection"; + this.btn_Connection.UseVisualStyleBackColor = true; + // + // btn_DisConnection + // + this.btn_DisConnection.Location = new System.Drawing.Point(284, 43); + this.btn_DisConnection.Name = "btn_DisConnection"; + this.btn_DisConnection.Size = new System.Drawing.Size(98, 21); + this.btn_DisConnection.TabIndex = 2; + this.btn_DisConnection.Text = "DisConnection"; + this.btn_DisConnection.UseVisualStyleBackColor = true; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.btn_DisConnection); + this.groupBox1.Controls.Add(this.tb_Ip); + this.groupBox1.Controls.Add(this.btn_Connection); + this.groupBox1.Controls.Add(this.tb_Port); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Location = new System.Drawing.Point(12, 12); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(394, 78); + this.groupBox1.TabIndex = 3; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Connection info"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.btn_WaferDetectionResultAck); + this.groupBox2.Controls.Add(this.btn_AlarmAck); + this.groupBox2.Controls.Add(this.btn_RequestAlive); + this.groupBox2.Controls.Add(this.btn_RecipeUpdateAck); + this.groupBox2.Controls.Add(this.btn_RecipeSwitch); + this.groupBox2.Controls.Add(this.btn_WaferDetectionStart); + this.groupBox2.Controls.Add(this.btn_WaferDetectionReadyEndAck); + this.groupBox2.Controls.Add(this.btn_WaferDetectionReady); + this.groupBox2.Controls.Add(this.btn_InspReadyEnd); + this.groupBox2.Controls.Add(this.btn_VisionReady); + this.groupBox2.Controls.Add(this.label3); + this.groupBox2.Controls.Add(this.tb_RecipeName); + this.groupBox2.Location = new System.Drawing.Point(12, 96); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(394, 325); + this.groupBox2.TabIndex = 4; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Send data"; + // + // btn_WaferDetectionResultAck + // + this.btn_WaferDetectionResultAck.Enabled = false; + this.btn_WaferDetectionResultAck.Location = new System.Drawing.Point(197, 167); + this.btn_WaferDetectionResultAck.Name = "btn_WaferDetectionResultAck"; + this.btn_WaferDetectionResultAck.Size = new System.Drawing.Size(185, 45); + this.btn_WaferDetectionResultAck.TabIndex = 2; + this.btn_WaferDetectionResultAck.Text = "Wafer detection result ack"; + this.btn_WaferDetectionResultAck.UseVisualStyleBackColor = true; + this.btn_WaferDetectionResultAck.Click += new System.EventHandler(this.btn_WaferDetectionResultAck_Click); + // + // btn_AlarmAck + // + this.btn_AlarmAck.Enabled = false; + this.btn_AlarmAck.Location = new System.Drawing.Point(6, 269); + this.btn_AlarmAck.Name = "btn_AlarmAck"; + this.btn_AlarmAck.Size = new System.Drawing.Size(185, 45); + this.btn_AlarmAck.TabIndex = 2; + this.btn_AlarmAck.Text = "Alarm ack"; + this.btn_AlarmAck.UseVisualStyleBackColor = true; + this.btn_AlarmAck.Click += new System.EventHandler(this.btn_AlarmAck_Click); + // + // btn_RequestAlive + // + this.btn_RequestAlive.Enabled = false; + this.btn_RequestAlive.Location = new System.Drawing.Point(197, 269); + this.btn_RequestAlive.Name = "btn_RequestAlive"; + this.btn_RequestAlive.Size = new System.Drawing.Size(185, 45); + this.btn_RequestAlive.TabIndex = 2; + this.btn_RequestAlive.Text = "Request alive"; + this.btn_RequestAlive.UseVisualStyleBackColor = true; + this.btn_RequestAlive.Click += new System.EventHandler(this.btn_RequestAlive_Click); + // + // btn_RecipeUpdateAck + // + this.btn_RecipeUpdateAck.Enabled = false; + this.btn_RecipeUpdateAck.Location = new System.Drawing.Point(197, 218); + this.btn_RecipeUpdateAck.Name = "btn_RecipeUpdateAck"; + this.btn_RecipeUpdateAck.Size = new System.Drawing.Size(185, 45); + this.btn_RecipeUpdateAck.TabIndex = 2; + this.btn_RecipeUpdateAck.Text = "Recipe update ack"; + this.btn_RecipeUpdateAck.UseVisualStyleBackColor = true; + this.btn_RecipeUpdateAck.Click += new System.EventHandler(this.btn_RecipeUpdateAck_Click); + // + // btn_RecipeSwitch + // + this.btn_RecipeSwitch.Location = new System.Drawing.Point(6, 218); + this.btn_RecipeSwitch.Name = "btn_RecipeSwitch"; + this.btn_RecipeSwitch.Size = new System.Drawing.Size(185, 45); + this.btn_RecipeSwitch.TabIndex = 2; + this.btn_RecipeSwitch.Text = "Recipe switch"; + this.btn_RecipeSwitch.UseVisualStyleBackColor = true; + this.btn_RecipeSwitch.Click += new System.EventHandler(this.btn_RecipeSwitch_Click); + // + // btn_WaferDetectionStart + // + this.btn_WaferDetectionStart.Location = new System.Drawing.Point(6, 167); + this.btn_WaferDetectionStart.Name = "btn_WaferDetectionStart"; + this.btn_WaferDetectionStart.Size = new System.Drawing.Size(185, 45); + this.btn_WaferDetectionStart.TabIndex = 2; + this.btn_WaferDetectionStart.Text = "Wafer detection start"; + this.btn_WaferDetectionStart.UseVisualStyleBackColor = true; + this.btn_WaferDetectionStart.Click += new System.EventHandler(this.btn_WaferDetectionStart_Click); + // + // btn_WaferDetectionReadyEndAck + // + this.btn_WaferDetectionReadyEndAck.Enabled = false; + this.btn_WaferDetectionReadyEndAck.Location = new System.Drawing.Point(197, 116); + this.btn_WaferDetectionReadyEndAck.Name = "btn_WaferDetectionReadyEndAck"; + this.btn_WaferDetectionReadyEndAck.Size = new System.Drawing.Size(185, 45); + this.btn_WaferDetectionReadyEndAck.TabIndex = 2; + this.btn_WaferDetectionReadyEndAck.Text = "Wafer detection ready end ack"; + this.btn_WaferDetectionReadyEndAck.UseVisualStyleBackColor = true; + this.btn_WaferDetectionReadyEndAck.Click += new System.EventHandler(this.btn_WaferDetectionReadyEndAck_Click); + // + // btn_WaferDetectionReady + // + this.btn_WaferDetectionReady.Location = new System.Drawing.Point(6, 116); + this.btn_WaferDetectionReady.Name = "btn_WaferDetectionReady"; + this.btn_WaferDetectionReady.Size = new System.Drawing.Size(185, 45); + this.btn_WaferDetectionReady.TabIndex = 2; + this.btn_WaferDetectionReady.Text = "Wafer detection ready"; + this.btn_WaferDetectionReady.UseVisualStyleBackColor = true; + this.btn_WaferDetectionReady.Click += new System.EventHandler(this.btn_WaferDetectionReady_Click); + // + // btn_InspReadyEnd + // + this.btn_InspReadyEnd.Enabled = false; + this.btn_InspReadyEnd.Location = new System.Drawing.Point(197, 65); + this.btn_InspReadyEnd.Name = "btn_InspReadyEnd"; + this.btn_InspReadyEnd.Size = new System.Drawing.Size(185, 45); + this.btn_InspReadyEnd.TabIndex = 2; + this.btn_InspReadyEnd.Text = "Insp ready end"; + this.btn_InspReadyEnd.UseVisualStyleBackColor = true; + this.btn_InspReadyEnd.Click += new System.EventHandler(this.btn_InspReadyEnd_Click); + // + // btn_VisionReady + // + this.btn_VisionReady.Location = new System.Drawing.Point(6, 65); + this.btn_VisionReady.Name = "btn_VisionReady"; + this.btn_VisionReady.Size = new System.Drawing.Size(185, 45); + this.btn_VisionReady.TabIndex = 2; + this.btn_VisionReady.Text = "Vision ready"; + this.btn_VisionReady.UseVisualStyleBackColor = true; + this.btn_VisionReady.Click += new System.EventHandler(this.btn_VisionReady_Click); + // + // label3 + // + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.label3.Location = new System.Drawing.Point(6, 20); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(96, 21); + this.label3.TabIndex = 1; + this.label3.Text = "Recipe name"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_RecipeName + // + this.tb_RecipeName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_RecipeName.Location = new System.Drawing.Point(108, 20); + this.tb_RecipeName.MaxLength = 20; + this.tb_RecipeName.Name = "tb_RecipeName"; + this.tb_RecipeName.Size = new System.Drawing.Size(274, 21); + this.tb_RecipeName.TabIndex = 0; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.lb_RequestAlive); + this.groupBox3.Controls.Add(this.lb_RecipeUpdateAck); + this.groupBox3.Controls.Add(this.lb_WaferDetectionResultAck); + this.groupBox3.Controls.Add(this.lb_WaferDetectionReadyEndAck); + this.groupBox3.Controls.Add(this.lb_InspReadyEndAck); + this.groupBox3.Controls.Add(this.lb_AlarmAck); + this.groupBox3.Controls.Add(this.lb_RecipeSwitch); + this.groupBox3.Controls.Add(this.lb_WaferDetectionStart); + this.groupBox3.Controls.Add(this.lb_WaferDetectionReady); + this.groupBox3.Controls.Add(this.lb_VisionReady); + this.groupBox3.Location = new System.Drawing.Point(418, 96); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(200, 325); + this.groupBox3.TabIndex = 4; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Receive ack"; + // + // lb_RequestAlive + // + this.lb_RequestAlive.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RequestAlive.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_RequestAlive.Location = new System.Drawing.Point(6, 293); + this.lb_RequestAlive.Name = "lb_RequestAlive"; + this.lb_RequestAlive.Size = new System.Drawing.Size(185, 21); + this.lb_RequestAlive.TabIndex = 1; + this.lb_RequestAlive.Text = "Request alive"; + this.lb_RequestAlive.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_RecipeUpdateAck + // + this.lb_RecipeUpdateAck.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RecipeUpdateAck.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_RecipeUpdateAck.Location = new System.Drawing.Point(6, 239); + this.lb_RecipeUpdateAck.Name = "lb_RecipeUpdateAck"; + this.lb_RecipeUpdateAck.Size = new System.Drawing.Size(185, 21); + this.lb_RecipeUpdateAck.TabIndex = 1; + this.lb_RecipeUpdateAck.Text = "Recipe update ack"; + this.lb_RecipeUpdateAck.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_WaferDetectionResultAck + // + this.lb_WaferDetectionResultAck.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_WaferDetectionResultAck.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_WaferDetectionResultAck.Location = new System.Drawing.Point(6, 185); + this.lb_WaferDetectionResultAck.Name = "lb_WaferDetectionResultAck"; + this.lb_WaferDetectionResultAck.Size = new System.Drawing.Size(185, 21); + this.lb_WaferDetectionResultAck.TabIndex = 1; + this.lb_WaferDetectionResultAck.Text = "Wafer detection result ack"; + this.lb_WaferDetectionResultAck.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_WaferDetectionReadyEndAck + // + this.lb_WaferDetectionReadyEndAck.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_WaferDetectionReadyEndAck.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_WaferDetectionReadyEndAck.Location = new System.Drawing.Point(6, 131); + this.lb_WaferDetectionReadyEndAck.Name = "lb_WaferDetectionReadyEndAck"; + this.lb_WaferDetectionReadyEndAck.Size = new System.Drawing.Size(185, 21); + this.lb_WaferDetectionReadyEndAck.TabIndex = 1; + this.lb_WaferDetectionReadyEndAck.Text = "Wafer detection ready end ack"; + this.lb_WaferDetectionReadyEndAck.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_InspReadyEndAck + // + this.lb_InspReadyEndAck.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_InspReadyEndAck.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_InspReadyEndAck.Location = new System.Drawing.Point(6, 77); + this.lb_InspReadyEndAck.Name = "lb_InspReadyEndAck"; + this.lb_InspReadyEndAck.Size = new System.Drawing.Size(185, 21); + this.lb_InspReadyEndAck.TabIndex = 1; + this.lb_InspReadyEndAck.Text = "Insp ready end ack"; + this.lb_InspReadyEndAck.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_AlarmAck + // + this.lb_AlarmAck.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_AlarmAck.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_AlarmAck.Location = new System.Drawing.Point(6, 266); + this.lb_AlarmAck.Name = "lb_AlarmAck"; + this.lb_AlarmAck.Size = new System.Drawing.Size(185, 21); + this.lb_AlarmAck.TabIndex = 1; + this.lb_AlarmAck.Text = "Alarm ack"; + this.lb_AlarmAck.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_RecipeSwitch + // + this.lb_RecipeSwitch.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RecipeSwitch.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_RecipeSwitch.Location = new System.Drawing.Point(6, 212); + this.lb_RecipeSwitch.Name = "lb_RecipeSwitch"; + this.lb_RecipeSwitch.Size = new System.Drawing.Size(185, 21); + this.lb_RecipeSwitch.TabIndex = 1; + this.lb_RecipeSwitch.Text = "Recipe switch"; + this.lb_RecipeSwitch.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_WaferDetectionStart + // + this.lb_WaferDetectionStart.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_WaferDetectionStart.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_WaferDetectionStart.Location = new System.Drawing.Point(6, 158); + this.lb_WaferDetectionStart.Name = "lb_WaferDetectionStart"; + this.lb_WaferDetectionStart.Size = new System.Drawing.Size(185, 21); + this.lb_WaferDetectionStart.TabIndex = 1; + this.lb_WaferDetectionStart.Text = "Wafer detection start"; + this.lb_WaferDetectionStart.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_WaferDetectionReady + // + this.lb_WaferDetectionReady.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_WaferDetectionReady.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_WaferDetectionReady.Location = new System.Drawing.Point(6, 104); + this.lb_WaferDetectionReady.Name = "lb_WaferDetectionReady"; + this.lb_WaferDetectionReady.Size = new System.Drawing.Size(185, 21); + this.lb_WaferDetectionReady.TabIndex = 1; + this.lb_WaferDetectionReady.Text = "Wafer detection ready"; + this.lb_WaferDetectionReady.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_VisionReady + // + this.lb_VisionReady.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_VisionReady.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lb_VisionReady.Location = new System.Drawing.Point(6, 50); + this.lb_VisionReady.Name = "lb_VisionReady"; + this.lb_VisionReady.Size = new System.Drawing.Size(185, 21); + this.lb_VisionReady.TabIndex = 1; + this.lb_VisionReady.Text = "Vision ready"; + this.lb_VisionReady.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Close + // + this.btn_Close.Location = new System.Drawing.Point(514, 12); + this.btn_Close.Name = "btn_Close"; + this.btn_Close.Size = new System.Drawing.Size(103, 62); + this.btn_Close.TabIndex = 89; + this.btn_Close.Text = "Close"; + this.btn_Close.UseVisualStyleBackColor = true; + this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click); + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.tb_ResultT); + this.groupBox4.Controls.Add(this.label7); + this.groupBox4.Controls.Add(this.tb_ResultY); + this.groupBox4.Controls.Add(this.label6); + this.groupBox4.Controls.Add(this.tb_ResultX); + this.groupBox4.Controls.Add(this.label5); + this.groupBox4.Controls.Add(this.tb_Result); + this.groupBox4.Controls.Add(this.label4); + this.groupBox4.Location = new System.Drawing.Point(624, 96); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(200, 325); + this.groupBox4.TabIndex = 90; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Detection result"; + // + // tb_ResultT + // + this.tb_ResultT.Location = new System.Drawing.Point(98, 114); + this.tb_ResultT.Name = "tb_ResultT"; + this.tb_ResultT.ReadOnly = true; + this.tb_ResultT.Size = new System.Drawing.Size(96, 21); + this.tb_ResultT.TabIndex = 1; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(18, 119); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(52, 12); + this.label7.TabIndex = 0; + this.label7.Text = "Result T"; + // + // tb_ResultY + // + this.tb_ResultY.Location = new System.Drawing.Point(98, 87); + this.tb_ResultY.Name = "tb_ResultY"; + this.tb_ResultY.ReadOnly = true; + this.tb_ResultY.Size = new System.Drawing.Size(96, 21); + this.tb_ResultY.TabIndex = 1; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(18, 92); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(52, 12); + this.label6.TabIndex = 0; + this.label6.Text = "Result Y"; + // + // tb_ResultX + // + this.tb_ResultX.Location = new System.Drawing.Point(98, 60); + this.tb_ResultX.Name = "tb_ResultX"; + this.tb_ResultX.ReadOnly = true; + this.tb_ResultX.Size = new System.Drawing.Size(96, 21); + this.tb_ResultX.TabIndex = 1; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(18, 65); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(52, 12); + this.label5.TabIndex = 0; + this.label5.Text = "Result X"; + // + // tb_Result + // + this.tb_Result.Location = new System.Drawing.Point(98, 33); + this.tb_Result.Name = "tb_Result"; + this.tb_Result.ReadOnly = true; + this.tb_Result.Size = new System.Drawing.Size(96, 21); + this.tb_Result.TabIndex = 1; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(18, 38); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(40, 12); + this.label4.TabIndex = 0; + this.label4.Text = "Result"; + // + // VisionViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(848, 439); + this.Controls.Add(this.groupBox4); + this.Controls.Add(this.btn_Close); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Name = "VisionViewer"; + this.Text = "VisionViewer"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.VisionViewer_FormClosing); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox3.ResumeLayout(false); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TextBox tb_Ip; + private System.Windows.Forms.TextBox tb_Port; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button btn_Connection; + private System.Windows.Forms.Button btn_DisConnection; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Button btn_WaferDetectionResultAck; + private System.Windows.Forms.Button btn_AlarmAck; + private System.Windows.Forms.Button btn_RequestAlive; + private System.Windows.Forms.Button btn_RecipeUpdateAck; + private System.Windows.Forms.Button btn_RecipeSwitch; + private System.Windows.Forms.Button btn_WaferDetectionStart; + private System.Windows.Forms.Button btn_WaferDetectionReadyEndAck; + private System.Windows.Forms.Button btn_WaferDetectionReady; + private System.Windows.Forms.Button btn_InspReadyEnd; + private System.Windows.Forms.Button btn_VisionReady; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tb_RecipeName; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Label lb_RequestAlive; + private System.Windows.Forms.Label lb_RecipeUpdateAck; + private System.Windows.Forms.Label lb_WaferDetectionResultAck; + private System.Windows.Forms.Label lb_WaferDetectionReadyEndAck; + private System.Windows.Forms.Label lb_InspReadyEndAck; + private System.Windows.Forms.Label lb_AlarmAck; + private System.Windows.Forms.Label lb_RecipeSwitch; + private System.Windows.Forms.Label lb_WaferDetectionStart; + private System.Windows.Forms.Label lb_WaferDetectionReady; + private System.Windows.Forms.Label lb_VisionReady; + private System.Windows.Forms.Button btn_Close; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.TextBox tb_Result; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_ResultT; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox tb_ResultY; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox tb_ResultX; + private System.Windows.Forms.Label label5; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.cs new file mode 100644 index 0000000..15c6083 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.cs @@ -0,0 +1,161 @@ +癤퓎sing SA_LTT; +using SA_LTT.Module; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SA_LTT_UI.Viewer +{ + public partial class VisionViewer : Form + { + MainFrame _mainFrame; + Thread t_UIUpdate; + + Dictionary<VisionToControlCommand, Control> recvAckDatas = new Dictionary<VisionToControlCommand, Control>(); + + bool updateCheck; + + public VisionViewer(MainFrame mainFrame) + { + InitializeComponent(); + _mainFrame = mainFrame; + InitializeData(); + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + + private void InitializeData() + { + recvAckDatas.Add(VisionToControlCommand.VisionReadyAck, lb_VisionReady); + recvAckDatas.Add(VisionToControlCommand.InspReadyEnd, lb_InspReadyEndAck); + recvAckDatas.Add(VisionToControlCommand.WaferDetectionReadyAck, lb_WaferDetectionReady); + recvAckDatas.Add(VisionToControlCommand.WaferDetectionReadyEnd, lb_WaferDetectionReadyEndAck); + recvAckDatas.Add(VisionToControlCommand.WaferDetectionStartAck, lb_WaferDetectionStart); + recvAckDatas.Add(VisionToControlCommand.WaferDetectionResult, lb_WaferDetectionResultAck); + recvAckDatas.Add(VisionToControlCommand.RecipeChangeSwitchAck, lb_RecipeSwitch); + recvAckDatas.Add(VisionToControlCommand.RecipeChangeUpdate, lb_RecipeUpdateAck); + recvAckDatas.Add(VisionToControlCommand.Alarm, lb_AlarmAck); + recvAckDatas.Add(VisionToControlCommand.AliveAck, lb_RequestAlive); + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + private void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + tb_Ip.Text = _mainFrame.equipment.visionControl.Ip.ToString(); + tb_Port.Text = _mainFrame.equipment.visionControl.Port.ToString(); + btn_Connection.BackColor = _mainFrame.equipment.visionControl.isConnected ? Color.Lime : Color.Red; + btn_DisConnection.BackColor = _mainFrame.equipment.visionControl.isConnected ? Color.Red : Color.Lime; + foreach (VisionToControlCommand command in recvAckDatas.Keys) + { + + recvAckDatas[command].BackColor = _mainFrame.equipment.visionControl.CommnadAcks[command] ? Color.Lime : Color.Red; + } + + tb_Result.Text = _mainFrame.equipment.visionControl.WaferDetectionResultValue.Result.ToString(); + tb_ResultX.Text = _mainFrame.equipment.visionControl.WaferDetectionResultValue.ResultX.ToString(); + tb_ResultY.Text = _mainFrame.equipment.visionControl.WaferDetectionResultValue.ResultY.ToString(); + tb_ResultT.Text = _mainFrame.equipment.visionControl.WaferDetectionResultValue.ResultT.ToString(); + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void VisionViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void btn_Close_Click(object sender, EventArgs e) + { + this.Hide(); + } + + private void btn_VisionReady_Click(object sender, EventArgs e) + { + _mainFrame.equipment.visionControl.SendVisionReady(tb_RecipeName.Text); + } + + private void btn_InspReadyEnd_Click(object sender, EventArgs e) + { + _mainFrame.equipment.visionControl.SendInspReadyEndAck(); + + } + + private void btn_WaferDetectionReady_Click(object sender, EventArgs e) + { + _mainFrame.equipment.visionControl.SendWaferDetectionReady(); + } + + private void btn_WaferDetectionReadyEndAck_Click(object sender, EventArgs e) + { + _mainFrame.equipment.visionControl.SendWaferDetectionReadyEndAck(); + } + + private void btn_WaferDetectionStart_Click(object sender, EventArgs e) + { + _mainFrame.equipment.visionControl.SendWaferDetectionStart(); + } + + private void btn_WaferDetectionResultAck_Click(object sender, EventArgs e) + { + _mainFrame.equipment.visionControl.SendWaferDetectionResultAck(); + } + + private void btn_RecipeSwitch_Click(object sender, EventArgs e) + { + _mainFrame.equipment.visionControl.SendRecipeSwitch(tb_RecipeName.Text); + } + + private void btn_RecipeUpdateAck_Click(object sender, EventArgs e) + { + _mainFrame.equipment.visionControl.SendRecipeUpdateAck(); + } + + private void btn_AlarmAck_Click(object sender, EventArgs e) + { + _mainFrame.equipment.visionControl.SendAlarmAck(); + } + + private void btn_RequestAlive_Click(object sender, EventArgs e) + { + _mainFrame.equipment.visionControl.SendRequestAlive(); + } + } +} diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.Designer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.Designer.cs new file mode 100644 index 0000000..ac3b8e9 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.Designer.cs @@ -0,0 +1,696 @@ +癤퓆amespace SA_LTT_UI.Viewer +{ + partial class WaferInfoViewer + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.tb_Status = new System.Windows.Forms.TextBox(); + this.tb_LotID = new System.Windows.Forms.TextBox(); + this.tb_CarrierID = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.flpnl_Port2 = new System.Windows.Forms.FlowLayoutPanel(); + this.flpnl_Port1 = new System.Windows.Forms.FlowLayoutPanel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.cbb_AfterRecipeName = new System.Windows.Forms.ComboBox(); + this.cbb_AfterIsFlip = new System.Windows.Forms.ComboBox(); + this.cbb_AfterStatus = new System.Windows.Forms.ComboBox(); + this.cbb_AfterSourceNum = new System.Windows.Forms.ComboBox(); + this.label13 = new System.Windows.Forms.Label(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.btn_WaferInfoClear = new System.Windows.Forms.Button(); + this.btn_Save = new System.Windows.Forms.Button(); + this.cbb_WaferNumbers = new System.Windows.Forms.ComboBox(); + this.label15 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.tb_RecipeName = new System.Windows.Forms.TextBox(); + this.tb_IsFlip = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.tb_SourceNum = new System.Windows.Forms.TextBox(); + this.tb_AfterLotID = new System.Windows.Forms.TextBox(); + this.tb_AfterCarrierID = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.gb_RobotInfo = new System.Windows.Forms.GroupBox(); + this.lb_RobotWaferExist = new System.Windows.Forms.Label(); + this.lb_RobotWaferExistIo = new System.Windows.Forms.Label(); + this.lb_RobotRun = new System.Windows.Forms.Label(); + this.gb_AlignerInfo = new System.Windows.Forms.GroupBox(); + this.lb_AlignerWaferExist = new System.Windows.Forms.Label(); + this.lb_AlignerWaferExistIo = new System.Windows.Forms.Label(); + this.lb_IsAlignRun = new System.Windows.Forms.Label(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.gb_ChamberInfo = new System.Windows.Forms.GroupBox(); + this.lb_ChamberWaferExist = new System.Windows.Forms.Label(); + this.lb_ChamberVacuumOn = new System.Windows.Forms.Label(); + this.btn_Port1Clear = new System.Windows.Forms.Button(); + this.btn_Port2Clear = new System.Windows.Forms.Button(); + this.label16 = new System.Windows.Forms.Label(); + this.tb_IsProcessComplete = new System.Windows.Forms.TextBox(); + this.cbb_AfterIsProcessComplete = new System.Windows.Forms.ComboBox(); + this.groupBox1.SuspendLayout(); + this.gb_RobotInfo.SuspendLayout(); + this.gb_AlignerInfo.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.gb_ChamberInfo.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 8); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(48, 12); + this.label1.TabIndex = 2; + this.label1.Text = "PORT 1"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(233, 8); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(48, 12); + this.label2.TabIndex = 2; + this.label2.Text = "PORT 2"; + // + // tb_Status + // + this.tb_Status.Location = new System.Drawing.Point(93, 75); + this.tb_Status.Name = "tb_Status"; + this.tb_Status.ReadOnly = true; + this.tb_Status.Size = new System.Drawing.Size(98, 21); + this.tb_Status.TabIndex = 0; + // + // tb_LotID + // + this.tb_LotID.Location = new System.Drawing.Point(93, 129); + this.tb_LotID.Name = "tb_LotID"; + this.tb_LotID.ReadOnly = true; + this.tb_LotID.Size = new System.Drawing.Size(98, 21); + this.tb_LotID.TabIndex = 0; + // + // tb_CarrierID + // + this.tb_CarrierID.Location = new System.Drawing.Point(93, 102); + this.tb_CarrierID.Name = "tb_CarrierID"; + this.tb_CarrierID.ReadOnly = true; + this.tb_CarrierID.Size = new System.Drawing.Size(98, 21); + this.tb_CarrierID.TabIndex = 0; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(5, 105); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(54, 12); + this.label6.TabIndex = 3; + this.label6.Text = "CarrierID"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(5, 132); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(37, 12); + this.label7.TabIndex = 3; + this.label7.Text = "Lot ID"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(5, 78); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(40, 12); + this.label8.TabIndex = 3; + this.label8.Text = "Status"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(5, 210); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(39, 12); + this.label10.TabIndex = 3; + this.label10.Text = "Is Flip"; + // + // flpnl_Port2 + // + this.flpnl_Port2.AutoScroll = true; + this.flpnl_Port2.Cursor = System.Windows.Forms.Cursors.Hand; + this.flpnl_Port2.Location = new System.Drawing.Point(235, 32); + this.flpnl_Port2.Name = "flpnl_Port2"; + this.flpnl_Port2.Size = new System.Drawing.Size(212, 579); + this.flpnl_Port2.TabIndex = 4; + // + // flpnl_Port1 + // + this.flpnl_Port1.AutoScroll = true; + this.flpnl_Port1.Cursor = System.Windows.Forms.Cursors.Hand; + this.flpnl_Port1.Location = new System.Drawing.Point(12, 32); + this.flpnl_Port1.Name = "flpnl_Port1"; + this.flpnl_Port1.Size = new System.Drawing.Size(212, 579); + this.flpnl_Port1.TabIndex = 5; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.cbb_AfterRecipeName); + this.groupBox1.Controls.Add(this.cbb_AfterIsProcessComplete); + this.groupBox1.Controls.Add(this.cbb_AfterIsFlip); + this.groupBox1.Controls.Add(this.cbb_AfterStatus); + this.groupBox1.Controls.Add(this.cbb_AfterSourceNum); + this.groupBox1.Controls.Add(this.label13); + this.groupBox1.Controls.Add(this.btn_Cancel); + this.groupBox1.Controls.Add(this.btn_WaferInfoClear); + this.groupBox1.Controls.Add(this.btn_Save); + this.groupBox1.Controls.Add(this.cbb_WaferNumbers); + this.groupBox1.Controls.Add(this.label15); + this.groupBox1.Controls.Add(this.label14); + this.groupBox1.Controls.Add(this.label8); + this.groupBox1.Controls.Add(this.tb_Status); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.tb_RecipeName); + this.groupBox1.Controls.Add(this.tb_IsProcessComplete); + this.groupBox1.Controls.Add(this.tb_IsFlip); + this.groupBox1.Controls.Add(this.label12); + this.groupBox1.Controls.Add(this.tb_SourceNum); + this.groupBox1.Controls.Add(this.label16); + this.groupBox1.Controls.Add(this.tb_AfterLotID); + this.groupBox1.Controls.Add(this.label10); + this.groupBox1.Controls.Add(this.tb_AfterCarrierID); + this.groupBox1.Controls.Add(this.tb_LotID); + this.groupBox1.Controls.Add(this.tb_CarrierID); + this.groupBox1.Controls.Add(this.label11); + this.groupBox1.Controls.Add(this.label7); + this.groupBox1.Location = new System.Drawing.Point(453, 281); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(344, 328); + this.groupBox1.TabIndex = 6; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Wafer Info"; + // + // cbb_AfterRecipeName + // + this.cbb_AfterRecipeName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_AfterRecipeName.FormattingEnabled = true; + this.cbb_AfterRecipeName.Location = new System.Drawing.Point(239, 234); + this.cbb_AfterRecipeName.Name = "cbb_AfterRecipeName"; + this.cbb_AfterRecipeName.Size = new System.Drawing.Size(98, 20); + this.cbb_AfterRecipeName.TabIndex = 12; + // + // cbb_AfterIsFlip + // + this.cbb_AfterIsFlip.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_AfterIsFlip.FormattingEnabled = true; + this.cbb_AfterIsFlip.Location = new System.Drawing.Point(239, 208); + this.cbb_AfterIsFlip.Name = "cbb_AfterIsFlip"; + this.cbb_AfterIsFlip.Size = new System.Drawing.Size(98, 20); + this.cbb_AfterIsFlip.TabIndex = 12; + // + // cbb_AfterStatus + // + this.cbb_AfterStatus.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_AfterStatus.FormattingEnabled = true; + this.cbb_AfterStatus.Location = new System.Drawing.Point(239, 75); + this.cbb_AfterStatus.Name = "cbb_AfterStatus"; + this.cbb_AfterStatus.Size = new System.Drawing.Size(98, 20); + this.cbb_AfterStatus.TabIndex = 12; + // + // cbb_AfterSourceNum + // + this.cbb_AfterSourceNum.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_AfterSourceNum.FormattingEnabled = true; + this.cbb_AfterSourceNum.Location = new System.Drawing.Point(239, 157); + this.cbb_AfterSourceNum.Name = "cbb_AfterSourceNum"; + this.cbb_AfterSourceNum.Size = new System.Drawing.Size(98, 20); + this.cbb_AfterSourceNum.TabIndex = 12; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Font = new System.Drawing.Font("Gulim", 15F); + this.label13.Location = new System.Drawing.Point(200, 143); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(29, 20); + this.label13.TabIndex = 11; + this.label13.Text = "�넀"; + // + // btn_Cancel + // + this.btn_Cancel.Location = new System.Drawing.Point(122, 261); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(98, 61); + this.btn_Cancel.TabIndex = 10; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); + // + // btn_WaferInfoClear + // + this.btn_WaferInfoClear.Location = new System.Drawing.Point(5, 261); + this.btn_WaferInfoClear.Name = "btn_WaferInfoClear"; + this.btn_WaferInfoClear.Size = new System.Drawing.Size(98, 61); + this.btn_WaferInfoClear.TabIndex = 10; + this.btn_WaferInfoClear.Text = "Clear"; + this.btn_WaferInfoClear.UseVisualStyleBackColor = true; + this.btn_WaferInfoClear.Click += new System.EventHandler(this.btn_WaferInfoClear_Click); + // + // btn_Save + // + this.btn_Save.Location = new System.Drawing.Point(239, 261); + this.btn_Save.Name = "btn_Save"; + this.btn_Save.Size = new System.Drawing.Size(98, 61); + this.btn_Save.TabIndex = 10; + this.btn_Save.Text = "Save"; + this.btn_Save.UseVisualStyleBackColor = true; + this.btn_Save.Click += new System.EventHandler(this.btn_Save_Click); + // + // cbb_WaferNumbers + // + this.cbb_WaferNumbers.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_WaferNumbers.FormattingEnabled = true; + this.cbb_WaferNumbers.Location = new System.Drawing.Point(6, 20); + this.cbb_WaferNumbers.Name = "cbb_WaferNumbers"; + this.cbb_WaferNumbers.Size = new System.Drawing.Size(331, 20); + this.cbb_WaferNumbers.TabIndex = 8; + this.cbb_WaferNumbers.SelectedIndexChanged += new System.EventHandler(this.cbb_WaferNumbers_SelectedIndexChanged); + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(264, 52); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(49, 12); + this.label15.TabIndex = 3; + this.label15.Text = "Change"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(120, 52); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(46, 12); + this.label14.TabIndex = 3; + this.label14.Text = "Current"; + // + // tb_RecipeName + // + this.tb_RecipeName.Location = new System.Drawing.Point(93, 234); + this.tb_RecipeName.Name = "tb_RecipeName"; + this.tb_RecipeName.ReadOnly = true; + this.tb_RecipeName.Size = new System.Drawing.Size(98, 21); + this.tb_RecipeName.TabIndex = 0; + // + // tb_IsFlip + // + this.tb_IsFlip.Location = new System.Drawing.Point(93, 207); + this.tb_IsFlip.Name = "tb_IsFlip"; + this.tb_IsFlip.ReadOnly = true; + this.tb_IsFlip.Size = new System.Drawing.Size(98, 21); + this.tb_IsFlip.TabIndex = 0; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(5, 237); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(82, 12); + this.label12.TabIndex = 3; + this.label12.Text = "Recipe Name"; + // + // tb_SourceNum + // + this.tb_SourceNum.Location = new System.Drawing.Point(93, 156); + this.tb_SourceNum.Name = "tb_SourceNum"; + this.tb_SourceNum.ReadOnly = true; + this.tb_SourceNum.Size = new System.Drawing.Size(98, 21); + this.tb_SourceNum.TabIndex = 0; + // + // tb_AfterLotID + // + this.tb_AfterLotID.Location = new System.Drawing.Point(239, 129); + this.tb_AfterLotID.Name = "tb_AfterLotID"; + this.tb_AfterLotID.Size = new System.Drawing.Size(98, 21); + this.tb_AfterLotID.TabIndex = 0; + // + // tb_AfterCarrierID + // + this.tb_AfterCarrierID.Location = new System.Drawing.Point(239, 102); + this.tb_AfterCarrierID.Name = "tb_AfterCarrierID"; + this.tb_AfterCarrierID.Size = new System.Drawing.Size(98, 21); + this.tb_AfterCarrierID.TabIndex = 0; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(5, 159); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(76, 12); + this.label11.TabIndex = 3; + this.label11.Text = "Source Num"; + // + // gb_RobotInfo + // + this.gb_RobotInfo.Controls.Add(this.lb_RobotWaferExist); + this.gb_RobotInfo.Controls.Add(this.lb_RobotWaferExistIo); + this.gb_RobotInfo.Controls.Add(this.lb_RobotRun); + this.gb_RobotInfo.Cursor = System.Windows.Forms.Cursors.Hand; + this.gb_RobotInfo.Location = new System.Drawing.Point(453, 161); + this.gb_RobotInfo.Name = "gb_RobotInfo"; + this.gb_RobotInfo.Size = new System.Drawing.Size(110, 114); + this.gb_RobotInfo.TabIndex = 7; + this.gb_RobotInfo.TabStop = false; + this.gb_RobotInfo.Text = "Robot"; + // + // lb_RobotWaferExist + // + this.lb_RobotWaferExist.BackColor = System.Drawing.Color.Lime; + this.lb_RobotWaferExist.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RobotWaferExist.Location = new System.Drawing.Point(6, 48); + this.lb_RobotWaferExist.Name = "lb_RobotWaferExist"; + this.lb_RobotWaferExist.Size = new System.Drawing.Size(98, 21); + this.lb_RobotWaferExist.TabIndex = 0; + this.lb_RobotWaferExist.Text = "Wafer Exist"; + this.lb_RobotWaferExist.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_RobotWaferExistIo + // + this.lb_RobotWaferExistIo.BackColor = System.Drawing.Color.Lime; + this.lb_RobotWaferExistIo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RobotWaferExistIo.Location = new System.Drawing.Point(6, 80); + this.lb_RobotWaferExistIo.Name = "lb_RobotWaferExistIo"; + this.lb_RobotWaferExistIo.Size = new System.Drawing.Size(98, 21); + this.lb_RobotWaferExistIo.TabIndex = 0; + this.lb_RobotWaferExistIo.Text = "Wafer Exist IO"; + this.lb_RobotWaferExistIo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_RobotRun + // + this.lb_RobotRun.BackColor = System.Drawing.Color.Lime; + this.lb_RobotRun.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_RobotRun.Location = new System.Drawing.Point(6, 17); + this.lb_RobotRun.Name = "lb_RobotRun"; + this.lb_RobotRun.Size = new System.Drawing.Size(98, 21); + this.lb_RobotRun.TabIndex = 0; + this.lb_RobotRun.Text = "Run"; + this.lb_RobotRun.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // gb_AlignerInfo + // + this.gb_AlignerInfo.Controls.Add(this.lb_AlignerWaferExist); + this.gb_AlignerInfo.Controls.Add(this.lb_AlignerWaferExistIo); + this.gb_AlignerInfo.Controls.Add(this.lb_IsAlignRun); + this.gb_AlignerInfo.Cursor = System.Windows.Forms.Cursors.Hand; + this.gb_AlignerInfo.Location = new System.Drawing.Point(569, 161); + this.gb_AlignerInfo.Name = "gb_AlignerInfo"; + this.gb_AlignerInfo.Size = new System.Drawing.Size(110, 114); + this.gb_AlignerInfo.TabIndex = 7; + this.gb_AlignerInfo.TabStop = false; + this.gb_AlignerInfo.Text = "Aligner"; + // + // lb_AlignerWaferExist + // + this.lb_AlignerWaferExist.BackColor = System.Drawing.Color.Lime; + this.lb_AlignerWaferExist.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_AlignerWaferExist.Location = new System.Drawing.Point(6, 48); + this.lb_AlignerWaferExist.Name = "lb_AlignerWaferExist"; + this.lb_AlignerWaferExist.Size = new System.Drawing.Size(98, 21); + this.lb_AlignerWaferExist.TabIndex = 0; + this.lb_AlignerWaferExist.Text = "Wafer Exist"; + this.lb_AlignerWaferExist.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_AlignerWaferExistIo + // + this.lb_AlignerWaferExistIo.BackColor = System.Drawing.Color.Lime; + this.lb_AlignerWaferExistIo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_AlignerWaferExistIo.Location = new System.Drawing.Point(6, 80); + this.lb_AlignerWaferExistIo.Name = "lb_AlignerWaferExistIo"; + this.lb_AlignerWaferExistIo.Size = new System.Drawing.Size(98, 21); + this.lb_AlignerWaferExistIo.TabIndex = 0; + this.lb_AlignerWaferExistIo.Text = "Wafer Exist IO"; + this.lb_AlignerWaferExistIo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_IsAlignRun + // + this.lb_IsAlignRun.BackColor = System.Drawing.Color.Lime; + this.lb_IsAlignRun.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_IsAlignRun.Location = new System.Drawing.Point(6, 17); + this.lb_IsAlignRun.Name = "lb_IsAlignRun"; + this.lb_IsAlignRun.Size = new System.Drawing.Size(98, 21); + this.lb_IsAlignRun.TabIndex = 0; + this.lb_IsAlignRun.Text = "Run"; + this.lb_IsAlignRun.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.label5); + this.groupBox5.Controls.Add(this.label9); + this.groupBox5.Controls.Add(this.label4); + this.groupBox5.Controls.Add(this.label3); + this.groupBox5.Location = new System.Drawing.Point(453, 32); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(344, 123); + this.groupBox5.TabIndex = 8; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "Description"; + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.Red; + this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label5.Location = new System.Drawing.Point(8, 83); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(90, 21); + this.label5.TabIndex = 0; + this.label5.Text = "Error"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.White; + this.label9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label9.Location = new System.Drawing.Point(104, 17); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(233, 87); + this.label9.TabIndex = 0; + this.label9.Text = "Wafer Exist IO : Module�쓽 IO 媛�\r\n\r\nWafer Exist : Wafer Info�쓽 Wafer Exist 媛�\r\n\r\n�빐�떦 �쐞移�" + + " �겢由��떆 Wafer Info�뿉 �젙蹂� �몴�떆."; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.White; + this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label4.Location = new System.Drawing.Point(8, 49); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(90, 21); + this.label4.TabIndex = 0; + this.label4.Text = "Empty"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.Lime; + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Location = new System.Drawing.Point(8, 17); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(90, 21); + this.label3.TabIndex = 0; + this.label3.Text = "Exist"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // gb_ChamberInfo + // + this.gb_ChamberInfo.Controls.Add(this.lb_ChamberWaferExist); + this.gb_ChamberInfo.Controls.Add(this.lb_ChamberVacuumOn); + this.gb_ChamberInfo.Cursor = System.Windows.Forms.Cursors.Hand; + this.gb_ChamberInfo.Location = new System.Drawing.Point(687, 161); + this.gb_ChamberInfo.Name = "gb_ChamberInfo"; + this.gb_ChamberInfo.Size = new System.Drawing.Size(110, 114); + this.gb_ChamberInfo.TabIndex = 7; + this.gb_ChamberInfo.TabStop = false; + this.gb_ChamberInfo.Text = "Chamber"; + // + // lb_ChamberWaferExist + // + this.lb_ChamberWaferExist.BackColor = System.Drawing.Color.Lime; + this.lb_ChamberWaferExist.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ChamberWaferExist.Location = new System.Drawing.Point(6, 48); + this.lb_ChamberWaferExist.Name = "lb_ChamberWaferExist"; + this.lb_ChamberWaferExist.Size = new System.Drawing.Size(98, 21); + this.lb_ChamberWaferExist.TabIndex = 0; + this.lb_ChamberWaferExist.Text = "Wafer Exist"; + this.lb_ChamberWaferExist.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lb_ChamberVacuumOn + // + this.lb_ChamberVacuumOn.BackColor = System.Drawing.Color.Lime; + this.lb_ChamberVacuumOn.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lb_ChamberVacuumOn.Location = new System.Drawing.Point(6, 80); + this.lb_ChamberVacuumOn.Name = "lb_ChamberVacuumOn"; + this.lb_ChamberVacuumOn.Size = new System.Drawing.Size(98, 21); + this.lb_ChamberVacuumOn.TabIndex = 0; + this.lb_ChamberVacuumOn.Text = "Vaccum On"; + this.lb_ChamberVacuumOn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btn_Port1Clear + // + this.btn_Port1Clear.Location = new System.Drawing.Point(149, 3); + this.btn_Port1Clear.Name = "btn_Port1Clear"; + this.btn_Port1Clear.Size = new System.Drawing.Size(75, 23); + this.btn_Port1Clear.TabIndex = 9; + this.btn_Port1Clear.Text = "Clear"; + this.btn_Port1Clear.UseVisualStyleBackColor = true; + this.btn_Port1Clear.Click += new System.EventHandler(this.btn_Port1Clear_Click); + // + // btn_Port2Clear + // + this.btn_Port2Clear.Location = new System.Drawing.Point(372, 3); + this.btn_Port2Clear.Name = "btn_Port2Clear"; + this.btn_Port2Clear.Size = new System.Drawing.Size(75, 23); + this.btn_Port2Clear.TabIndex = 9; + this.btn_Port2Clear.Text = "Clear"; + this.btn_Port2Clear.UseVisualStyleBackColor = true; + this.btn_Port2Clear.Click += new System.EventHandler(this.btn_Port2Clear_Click); + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(5, 179); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(65, 24); + this.label16.TabIndex = 3; + this.label16.Text = "Is process\r\ncomplete"; + // + // tb_IsProcessComplete + // + this.tb_IsProcessComplete.Location = new System.Drawing.Point(93, 182); + this.tb_IsProcessComplete.Name = "tb_IsProcessComplete"; + this.tb_IsProcessComplete.ReadOnly = true; + this.tb_IsProcessComplete.Size = new System.Drawing.Size(98, 21); + this.tb_IsProcessComplete.TabIndex = 0; + // + // cbb_AfterIsProcessComplete + // + this.cbb_AfterIsProcessComplete.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbb_AfterIsProcessComplete.FormattingEnabled = true; + this.cbb_AfterIsProcessComplete.Location = new System.Drawing.Point(239, 183); + this.cbb_AfterIsProcessComplete.Name = "cbb_AfterIsProcessComplete"; + this.cbb_AfterIsProcessComplete.Size = new System.Drawing.Size(98, 20); + this.cbb_AfterIsProcessComplete.TabIndex = 12; + // + // WaferInfoViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(804, 621); + this.Controls.Add(this.btn_Port2Clear); + this.Controls.Add(this.btn_Port1Clear); + this.Controls.Add(this.groupBox5); + this.Controls.Add(this.gb_AlignerInfo); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.gb_ChamberInfo); + this.Controls.Add(this.gb_RobotInfo); + this.Controls.Add(this.flpnl_Port1); + this.Controls.Add(this.flpnl_Port2); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "WaferInfoViewer"; + this.Text = "WaferInfoViewer"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.WaferInfoViewer_FormClosing); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.gb_RobotInfo.ResumeLayout(false); + this.gb_AlignerInfo.ResumeLayout(false); + this.groupBox5.ResumeLayout(false); + this.gb_ChamberInfo.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tb_Status; + private System.Windows.Forms.TextBox tb_LotID; + private System.Windows.Forms.TextBox tb_CarrierID; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.FlowLayoutPanel flpnl_Port2; + private System.Windows.Forms.FlowLayoutPanel flpnl_Port1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TextBox tb_SourceNum; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.ComboBox cbb_WaferNumbers; + private System.Windows.Forms.TextBox tb_IsFlip; + private System.Windows.Forms.GroupBox gb_RobotInfo; + private System.Windows.Forms.GroupBox gb_AlignerInfo; + private System.Windows.Forms.GroupBox groupBox5; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label lb_RobotWaferExistIo; + private System.Windows.Forms.Label lb_RobotRun; + private System.Windows.Forms.Label lb_AlignerWaferExistIo; + private System.Windows.Forms.GroupBox gb_ChamberInfo; + private System.Windows.Forms.Label lb_ChamberVacuumOn; + private System.Windows.Forms.Button btn_Port1Clear; + private System.Windows.Forms.Button btn_Port2Clear; + private System.Windows.Forms.Button btn_WaferInfoClear; + private System.Windows.Forms.Label lb_RobotWaferExist; + private System.Windows.Forms.Label lb_AlignerWaferExist; + private System.Windows.Forms.Label lb_ChamberWaferExist; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox tb_RecipeName; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.Button btn_Save; + private System.Windows.Forms.Label lb_IsAlignRun; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.TextBox tb_AfterLotID; + private System.Windows.Forms.TextBox tb_AfterCarrierID; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.ComboBox cbb_AfterSourceNum; + private System.Windows.Forms.ComboBox cbb_AfterRecipeName; + private System.Windows.Forms.ComboBox cbb_AfterIsFlip; + private System.Windows.Forms.ComboBox cbb_AfterStatus; + private System.Windows.Forms.ComboBox cbb_AfterIsProcessComplete; + private System.Windows.Forms.TextBox tb_IsProcessComplete; + private System.Windows.Forms.Label label16; + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.cs b/SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.cs new file mode 100644 index 0000000..882d39f --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.cs @@ -0,0 +1,426 @@ +癤퓎sing SA_LTT; +using SA_LTT.Info.RecipeInfo; +using SA_LTT.Info.WaferInfo; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Threading; +using System.Windows.Forms; +using static SA_LTT.Info.WaferInfo.WaferInfoManager; + +namespace SA_LTT_UI.Viewer +{ + public partial class WaferInfoViewer : Form + { + MainFrame _mainFrame; + Thread t_UIUpdate; + + private List<Label> Port1Labels = new List<Label>(); + private List<Label> Port2Labels = new List<Label>(); + + WaferNumbers currentWaferNumber = WaferNumbers.A1; + + bool updateCheck; + protected override CreateParams CreateParams + { + get + { + CreateParams MyCp = base.CreateParams; + MyCp.ExStyle |= 0x02000000; + + return MyCp; + } + } + + public WaferInfoViewer(MainFrame mainFrame) + { + InitializeComponent(); + + _mainFrame = mainFrame; + + InitializeUI(); + + t_UIUpdate = new Thread(UIUpdateTh); + t_UIUpdate.Start(); + } + + private void InitializeUI() + { + flpnl_Port1.Controls.Clear(); + flpnl_Port2.Controls.Clear(); + + Port1Labels.Clear(); + Port2Labels.Clear(); + + for (int i = 0 ; i < 25; i ++) + { + Label label = new Label(); + label.BorderStyle = BorderStyle.FixedSingle; + label.Size = new Size(205, 23); + label.TabIndex = 4; + label.Text = $"{WaferNumbers.A1 + i}"; + label.TextAlign = ContentAlignment.MiddleCenter; + label.Click += Label_Click; + Port1Labels.Add(label); + } + + for (int i = 0; i < 25; i++) + { + Label label = new Label(); + label.BorderStyle = BorderStyle.FixedSingle; + label.Size = new Size(205, 23); + label.TabIndex = 4; + label.Text = $"{WaferNumbers.B1 + i}"; + label.TextAlign = ContentAlignment.MiddleCenter; + label.Click += Label_Click; + Port2Labels.Add(label); + } + + for (int i = 0; i < 25; i++) + { + flpnl_Port1.Controls.Add(Port1Labels[24 - i]); + flpnl_Port2.Controls.Add(Port2Labels[24 - i]); + } + + //Wafer Number ComboBoxSet + cbb_WaferNumbers.Items.Clear(); + + foreach(WaferNumbers waferNumber in Enum.GetValues(typeof(WaferNumbers))) + { + cbb_WaferNumbers.Items.Add(waferNumber); + } + + cbb_WaferNumbers.SelectedIndex = 0; + + //WaferStatus ComboBoxSet + cbb_AfterStatus.Items.Clear(); + foreach (WaferInfo.WaferStatus waferStatus in Enum.GetValues(typeof(WaferInfo.WaferStatus))) + { + cbb_AfterStatus.Items.Add(waferStatus); + } + cbb_AfterStatus.SelectedIndex = 0; + + //SourceNumber ComboBoxSet + cbb_AfterSourceNum.Items.Clear(); + foreach (WaferNumbers waferNumber in Enum.GetValues(typeof(WaferNumbers))) + { + if(waferNumber < WaferNumbers.Robot) + cbb_AfterSourceNum.Items.Add(waferNumber); + } + cbb_AfterSourceNum.SelectedIndex = 0; + + + cbb_AfterIsProcessComplete.Items.Clear(); + cbb_AfterIsProcessComplete.Items.Add("Complete"); + cbb_AfterIsProcessComplete.Items.Add("NonComplete"); + cbb_AfterIsProcessComplete.SelectedIndex = 0; + + cbb_AfterIsFlip.Items.Clear(); + cbb_AfterIsFlip.Items.Add("Flip"); + cbb_AfterIsFlip.Items.Add("NonFlip"); + cbb_AfterIsFlip.SelectedIndex = 0; + + cbb_AfterRecipeName.Items.Clear(); + cbb_AfterRecipeName.Items.Add(""); + foreach (Recipe recipe in _mainFrame.equipment.recipeManager.GetRecipeList()) + { + cbb_AfterRecipeName.Items.Add(recipe.Name); + } + cbb_AfterRecipeName.SelectedIndex = 0; + + gb_RobotInfo.Click += Gb_Click; + gb_ChamberInfo.Click += Gb_Click; + gb_AlignerInfo.Click += Gb_Click; + } + + private void Label_Click(object sender, EventArgs e) + { + Label label = (Label)sender; + WaferNumbers waferNumber = WaferNumbers.A1; + + if(Enum.TryParse(label.Text, out waferNumber)) + { + SetCurrentWaferInfo(waferNumber); + } + } + + private void Gb_Click(object sender, EventArgs e) + { + GroupBox gb = (GroupBox)sender; + + if (gb.Name == "gb_RobotInfo") + { + SetCurrentWaferInfo(WaferNumbers.Robot); + } + else if (gb.Name == "gb_ChamberInfo") + { + SetCurrentWaferInfo(WaferNumbers.Chamber); + } + else if (gb.Name == "gb_AlignerInfo") + { + SetCurrentWaferInfo(WaferNumbers.PreAligner); + } + } + + private void SetCurrentWaferInfo(WaferNumbers waferNumber) + { + currentWaferNumber = waferNumber; + cbb_WaferNumbers.Text = waferNumber.ToString(); + + WaferInfo info = _mainFrame.equipment.waferInfoManager.GetWaferInfo(currentWaferNumber).Clone(); + + cbb_AfterStatus.Text = info.IsStatus.ToString(); + + tb_AfterCarrierID.Text = info.CarrierID; + tb_AfterLotID.Text = info.LotID; + cbb_AfterSourceNum.Text = info.SourceNumber.ToString(); + + cbb_AfterIsProcessComplete.Text = info.IsProcessComplete ? "Complete" : "NonComplete"; + cbb_AfterIsFlip.Text = info.IsFlip ? "Flip" : "NonFlip"; + + cbb_AfterRecipeName.Items.Clear(); + cbb_AfterRecipeName.Items.Add(""); + foreach (Recipe recipe in _mainFrame.equipment.recipeManager.GetRecipeList()) + { + cbb_AfterRecipeName.Items.Add(recipe.Name); + } + cbb_AfterRecipeName.Text = info.RecipeName; + } + + private void UIUpdateTh() + { + while (_mainFrame.equipment.IsDisposed == false) + { + Thread.Sleep(10); + + if (updateCheck == false) + { + updateCheck = true; + UIUpdate(); + } + } + } + + public void UIUpdate() + { + if (InvokeRequired) + { + BeginInvoke(new UIUpdateDelegate(UIUpdate)); + return; + } + else + { + try + { + UpdatePort1(); + UpdatePort2(); + UpdateModule(); + UpdateWaferInfo(); + + if (_mainFrame.equipment.ProcessStatus != ProcessStatus.Execute) + { + if (groupBox1.Enabled == false) + { + groupBox1.Enabled = true; + } + } + else + { + if (groupBox1.Enabled) + { + groupBox1.Enabled = false; + } + } + } + catch (Exception e) + { + EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace); + } + finally + { + updateCheck = false; + } + } + } + + private void UpdatePort1() + { + WaferNumbers waferNumber = WaferNumbers.A1; + + for (int i = 0; i < 25; i++) + { + WaferInfo info = _mainFrame.equipment.waferInfoManager.GetWaferInfo(waferNumber + i).Clone(); + if (info.IsStatus == WaferInfo.WaferStatus.Exist) + { + Port1Labels[i].BackColor = Color.Lime; + } + else if (info.IsStatus == WaferInfo.WaferStatus.Empty) + { + Port1Labels[i].BackColor = Color.White; + } + else + { + Port1Labels[i].BackColor = Color.Red; + } + } + } + + private void UpdatePort2() + { + WaferNumbers waferNumber = WaferNumbers.B1; + + for (int i = 0; i < 25; i++) + { + WaferInfo info = _mainFrame.equipment.waferInfoManager.GetWaferInfo(waferNumber + i).Clone(); + if (info.IsStatus == WaferInfo.WaferStatus.Exist) + { + Port2Labels[i].BackColor = Color.Lime; + } + else if (info.IsStatus == WaferInfo.WaferStatus.Empty) + { + Port2Labels[i].BackColor = Color.White; + } + else + { + Port2Labels[i].BackColor = Color.Red; + } + } + } + + private void UpdateModule() + { + lb_RobotRun.BackColor = _mainFrame.equipment.robot.IsRun ? Color.Lime : Color.Red; + lb_RobotWaferExist.BackColor = _mainFrame.equipment.waferInfoManager.GetWaferInfo(WaferNumbers.Robot).IsStatus == WaferInfo.WaferStatus.Exist ? Color.Lime : Color.Red; + lb_RobotWaferExistIo.BackColor = _mainFrame.equipment.robot.IsWaferExist ? Color.Lime : Color.Red; + + lb_IsAlignRun.BackColor = _mainFrame.equipment.preAligner.IsAlignRun ? Color.Lime : Color.Red; + lb_AlignerWaferExist.BackColor = _mainFrame.equipment.waferInfoManager.GetWaferInfo(WaferNumbers.PreAligner).IsStatus == WaferInfo.WaferStatus.Exist ? Color.Lime : Color.Red; + lb_AlignerWaferExistIo.BackColor = _mainFrame.equipment.preAligner.IsWaferExist ? Color.Lime : Color.Red; + + lb_ChamberVacuumOn.BackColor = _mainFrame.equipment.crevis.DigitalInputs[SA_LTT.Module.Crevis.DigitalInput.CMB_VACUUM_PRESSURE] ? Color.Lime : Color.Red; + lb_ChamberWaferExist.BackColor = _mainFrame.equipment.waferInfoManager.GetWaferInfo(WaferNumbers.Chamber).IsStatus == WaferInfo.WaferStatus.Exist ? Color.Lime : Color.Red; + } + + private void UpdateWaferInfo() + { + WaferInfo info = _mainFrame.equipment.waferInfoManager.GetWaferInfo(currentWaferNumber).Clone(); + + tb_Status.Text = info.IsStatus.ToString(); + tb_CarrierID.Text = info.CarrierID; + tb_LotID.Text = info.LotID; + tb_SourceNum.Text = info.SourceNumber.ToString(); + tb_IsProcessComplete.Text = info.IsProcessComplete ? "Complete" : "NonComplete"; + tb_IsFlip.Text = info.IsFlip ? "Flip" : "NonFlip"; + tb_RecipeName.Text = info.RecipeName; + } + + private void btn_Port1Clear_Click(object sender, EventArgs e) + { + WaferInfo waferInfo = new WaferInfo(); + WaferNumbers waferNumber = WaferNumbers.A1; + + for (int i = 0; i < 25; i++) + { + waferInfo.SourceNumber = waferNumber + i; + _mainFrame.equipment.waferInfoManager.SetWaferInfo(waferNumber + i, waferInfo.Clone()); + } + } + + private void btn_Port2Clear_Click(object sender, EventArgs e) + { + WaferInfo waferInfo = new WaferInfo(); + WaferNumbers waferNumber = WaferNumbers.B1; + + for (int i = 0; i < 25; i++) + { + waferInfo.SourceNumber = waferNumber + i; + + _mainFrame.equipment.waferInfoManager.SetWaferInfo(waferNumber + i , waferInfo.Clone()); + } + } + + private void WaferInfoViewer_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + this.Hide(); + } + + private void btn_WaferInfoClear_Click(object sender, EventArgs e) + { + if (MessageBox.Show("�뜲�씠�꽣瑜� 珥덇린�솕 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + WaferInfo waferInfo = new WaferInfo(); + + EquipmentLogManager.Instance.WriteButtonLog($"{this.Name} : {((Control)sender).Text}"); + _mainFrame.equipment.waferInfoManager.SetWaferInfo(currentWaferNumber, waferInfo.Clone()); + + SetCurrentWaferInfo(currentWaferNumber); + } + } + + private void cbb_WaferNumbers_SelectedIndexChanged(object sender, EventArgs e) + { + WaferNumbers waferNumber = WaferNumbers.A1; + + if (Enum.TryParse(cbb_WaferNumbers.Text, out waferNumber)) + { + SetCurrentWaferInfo(waferNumber); + } + } + + private void btn_Cancel_Click(object sender, EventArgs e) + { + if (MessageBox.Show("痍⑥냼 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + SetCurrentWaferInfo(currentWaferNumber); + } + } + + private void btn_Save_Click(object sender, EventArgs e) + { + if (MessageBox.Show("�쟻�슜 �븯�떆寃좎뒿�땲源�?", "�솗�씤", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + WaferInfo info = _mainFrame.equipment.waferInfoManager.GetWaferInfo(currentWaferNumber); + + WaferInfo.WaferStatus waferStatus = WaferInfo.WaferStatus.Empty; + string carrierId = string.Empty; + string lotId = string.Empty; + WaferNumbers waferNumber = WaferNumbers.A1; + bool isProcessComplete = false; + bool isFlip = false; + string recipeName = string.Empty; + + if(Enum.TryParse(cbb_AfterStatus.Text, out waferStatus) == false) + { + MessageBox.Show("Status 媛믪쓣 �솗�씤�빐 二쇱꽭�슂"); + return; + } + + carrierId = tb_AfterCarrierID.Text; + lotId = tb_AfterLotID.Text; + + if (Enum.TryParse(cbb_AfterSourceNum.Text, out waferNumber) == false) + { + MessageBox.Show("Source Num 媛믪쓣 �솗�씤�빐 二쇱꽭�슂"); + return; + } + + isFlip = cbb_AfterIsFlip.SelectedIndex == 0; + isProcessComplete = cbb_AfterIsProcessComplete.SelectedIndex == 0; + recipeName = cbb_AfterRecipeName.Text; + + info.IsStatus = waferStatus; + info.CarrierID = carrierId; + info.LotID = lotId; + info.SourceNumber = waferNumber; + info.IsProcessComplete = isProcessComplete; + info.IsFlip = isFlip; + info.RecipeName = recipeName; + + _mainFrame.equipment.waferInfoManager.SetWaferInfo(currentWaferNumber, info); + + SetCurrentWaferInfo(currentWaferNumber); + } + } + } +} \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.resx b/SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.resx @@ -0,0 +1,120 @@ +癤�<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor1746.ct5 b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor1746.ct5 new file mode 100644 index 0000000..c461bd9 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor1746.ct5 Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1.ct5 b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1.ct5 new file mode 100644 index 0000000..ff9626c --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1.ct5 Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1_old.ct5 b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1_old.ct5 new file mode 100644 index 0000000..7e6f31b --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1_old.ct5 Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/EasyModbus.dll b/SA_LTT_UI/SA_LTT_UI/bin/Debug/EasyModbus.dll new file mode 100644 index 0000000..484b2da --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/EasyModbus.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DAT.dat b/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DAT.dat new file mode 100644 index 0000000..057cee3 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DAT.dat Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLL.dll b/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLL.dll new file mode 100644 index 0000000..4b48cec --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLL.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLLx64.dll b/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLLx64.dll new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLLx64.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5OUT.out b/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5OUT.out new file mode 100644 index 0000000..3d6cd41 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5OUT.out Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5RBF.rbf b/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5RBF.rbf new file mode 100644 index 0000000..d0dd886 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5RBF.rbf Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Aligner.png b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Aligner.png new file mode 100644 index 0000000..7f6efa7 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Aligner.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Chamber.png b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Chamber.png new file mode 100644 index 0000000..517d2c2 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Chamber.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/RecipeImage.PNG b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/RecipeImage.PNG new file mode 100644 index 0000000..6e95cdd --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/RecipeImage.PNG Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm.png b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm.png new file mode 100644 index 0000000..2a15d09 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm1.png b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm1.png new file mode 100644 index 0000000..d1ddc60 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm1.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm2.png b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm2.png new file mode 100644 index 0000000..da4b264 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm2.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Body.png b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Body.png new file mode 100644 index 0000000..327b8b9 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Body.png Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.dll b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.dll new file mode 100644 index 0000000..9340c03 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.pdb b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.pdb new file mode 100644 index 0000000..07f1869 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.pdb Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe new file mode 100644 index 0000000..64e06e3 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe.config b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.pdb b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.pdb new file mode 100644 index 0000000..b2c994e --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.pdb Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe new file mode 100644 index 0000000..681ab77 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.config b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.manifest b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/log4net.dll b/SA_LTT_UI/SA_LTT_UI/bin/Debug/log4net.dll new file mode 100644 index 0000000..e74861d --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/log4net.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/padDLLBW.dll b/SA_LTT_UI/SA_LTT_UI/bin/Debug/padDLLBW.dll new file mode 100644 index 0000000..a4ff496 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/padDLLBW.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.config b/SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.config @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.manifest b/SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.manifest @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..e8b2027 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferences.cache Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..a13ddb9 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.MainFrame.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.MainFrame.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.MainFrame.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Properties.Resources.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Properties.Resources.resources new file mode 100644 index 0000000..c9103a5 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Properties.Resources.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.AnalogBar.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.AnalogBar.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.AnalogBar.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.IoBar.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.IoBar.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.IoBar.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenAlarmSetting.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenAlarmSetting.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenAlarmSetting.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenIO.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenIO.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenIO.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLaser.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLaser.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLaser.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLog.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLog.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLog.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMain.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMain.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMain.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMaintenance.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMaintenance.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMaintenance.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMotionMaintenance.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMotionMaintenance.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMotionMaintenance.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenParameter.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenParameter.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenParameter.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenRecipe.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenRecipe.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenRecipe.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenSetting.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenSetting.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenSetting.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AlarmViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AlarmViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AlarmViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorCalViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorCalViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorCalViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChamberViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChamberViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChamberViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChillerViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChillerViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChillerViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.CreateUserViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.CreateUserViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.CreateUserViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyMeterViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyMeterViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyMeterViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EquipmentInfoViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EquipmentInfoViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EquipmentInfoViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.LogInViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.LogInViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.LogInViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MaintenanceViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MaintenanceViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MaintenanceViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MessageBoxPad.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MessageBoxPad.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MessageBoxPad.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ModifyUserViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ModifyUserViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ModifyUserViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PiLaserViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PiLaserViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PiLaserViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PreAlignViwer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PreAlignViwer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PreAlignViwer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RecipeCreateViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RecipeCreateViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RecipeCreateViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RobotViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RobotViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RobotViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ScannerViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ScannerViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ScannerViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.SequenceViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.SequenceViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.SequenceViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.VisionViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.VisionViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.VisionViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.WaferInfoViewer.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.WaferInfoViewer.resources new file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.WaferInfoViewer.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CopyComplete b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CopyComplete diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CoreCompileInputs.cache b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..b6151de --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +af5cdbc68c7054918e58a87add2c2e99fce7103c diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.FileListAbsolute.txt b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..bcb7e29 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.FileListAbsolute.txt @@ -0,0 +1,801 @@ +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.dll +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.pdb +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\bin\Debug\log4net.dll +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenModule.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSystemParameter.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +G:\[01]DIT\[07]SIC\[00]SW\[00]Program\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.dll +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\bin\Debug\log4net.dll +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.pdb +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSystemParameter.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenModule.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +F:\�깉 �뤃�뜑\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.dll +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\bin\Debug\log4net.dll +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.pdb +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSystemParameter.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenModule.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +C:\PGM\SLA\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\SA_LTT.dll +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\log4net.dll +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\SA_LTT.pdb +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSystemParameter.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenModule.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +C:\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\SA_LTT.dll +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\log4net.dll +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\bin\Debug\SA_LTT.pdb +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSystemParameter.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenModule.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +C:\PGM\SLA\SA_LTT_UI_PMacTest\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +C:\SA_LTT_UI_220927\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +C:\SA_LTT_UI_220927\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +C:\SA_LTT_UI_220927\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +C:\SA_LTT_UI_220927\SA_LTT_UI\bin\Debug\SA_LTT.dll +C:\SA_LTT_UI_220927\SA_LTT_UI\bin\Debug\log4net.dll +C:\SA_LTT_UI_220927\SA_LTT_UI\bin\Debug\SA_LTT.pdb +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSystemParameter.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenModule.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +C:\SA_LTT_UI_220927\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\bin\Debug\SA_LTT.dll +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\bin\Debug\log4net.dll +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\bin\Debug\SA_LTT.pdb +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSystemParameter.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenModule.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +C:\PGM\SLA\SA_LTT_UI_220927_1730\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\bin\Debug\SA_LTT.dll +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\bin\Debug\log4net.dll +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\bin\Debug\SA_LTT.pdb +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSystemParameter.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenModule.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +C:\PGM\SLA\SA_LTT_UI_220928\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\bin\Debug\SA_LTT.dll +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\bin\Debug\log4net.dll +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\bin\Debug\SA_LTT.pdb +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSystemParameter.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenModule.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +C:\Users\DIT-510\Documents\移댁뭅�삤�넚 諛쏆� �뙆�씪\SA_LTT_UI_220929\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\RecipeImage.PNG +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Aligner.png +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Chamber.png +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm.png +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm1.png +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm2.png +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Body.png +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.dll +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\log4net.dll +F:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.pdb +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.ResolveComReference.cache +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.g.cs +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.g.cs +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.g.cs +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_Content.g.cs +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.baml +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.baml +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.baml +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLaser.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenRecipe.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorCalViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChamberViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChillerViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EquipmentInfoViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MessageBoxPad.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PiLaserViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyMeterViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PreAlignViwer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RecipeCreateViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.SequenceViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.WaferInfoViewer.resources +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojResolveAssemblyReference.cache +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.ResolveComReference.cache +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.g.cs +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.g.cs +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.g.cs +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_Content.g.cs +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\RecipeImage.PNG +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Aligner.png +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Chamber.png +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm.png +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm1.png +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm2.png +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Body.png +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.dll +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\log4net.dll +H:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.pdb +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.baml +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.baml +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.baml +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLaser.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenRecipe.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorCalViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChamberViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChillerViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EquipmentInfoViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MessageBoxPad.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PiLaserViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyMeterViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PreAlignViwer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RecipeCreateViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.SequenceViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.WaferInfoViewer.resources +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +H:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\RecipeImage.PNG +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Aligner.png +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Chamber.png +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm.png +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm1.png +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm2.png +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Body.png +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.dll +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\log4net.dll +C:\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.pdb +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.ResolveComReference.cache +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.g.cs +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.g.cs +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.g.cs +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_Content.g.cs +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.baml +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.baml +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.baml +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLaser.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenRecipe.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorCalViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChamberViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChillerViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EquipmentInfoViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MessageBoxPad.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PiLaserViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyMeterViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PreAlignViwer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RecipeCreateViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.SequenceViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.WaferInfoViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.ResolveComReference.cache +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\RecipeImage.PNG +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Aligner.png +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Chamber.png +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm.png +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm1.png +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm2.png +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Body.png +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.dll +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\log4net.dll +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.pdb +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.g.cs +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.g.cs +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.g.cs +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_Content.g.cs +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.baml +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.baml +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.baml +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLaser.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenRecipe.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorCalViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChamberViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChillerViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EquipmentInfoViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MessageBoxPad.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PiLaserViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyMeterViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PreAlignViwer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RecipeCreateViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.SequenceViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.VisionViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.WaferInfoViewer.resources +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.Cache +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojAssemblyReference.cache +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.CoreCompileInputs.cache +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.CopyComplete +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\Resources\RecipeImage.PNG +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\Resources\Aligner.png +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\Resources\Chamber.png +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\Resources\Robot_Arm.png +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\Resources\Robot_Arm1.png +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\Resources\Robot_Arm2.png +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\Resources\Robot_Body.png +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\SA_LTT.dll +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\log4net.dll +F:\SA_LTT_UI_230503\SA_LTT_UI\bin\Debug\SA_LTT.pdb +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojAssemblyReference.cache +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.ResolveComReference.cache +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.g.cs +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\Screen\RecipeView.g.cs +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.g.cs +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI_Content.g.cs +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.baml +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\Screen\RecipeView.baml +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.baml +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLaser.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenRecipe.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorCalViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChamberViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChillerViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EquipmentInfoViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MessageBoxPad.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PiLaserViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyMeterViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PreAlignViwer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RecipeCreateViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.SequenceViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.VisionViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.WaferInfoViewer.resources +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.cache +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.CoreCompileInputs.cache +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.CopyComplete +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +F:\SA_LTT_UI_230503\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojAssemblyReference.cache +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.VisionViewer.resources +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.CoreCompileInputs.cache +C:\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.CopyComplete +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\RecipeImage.PNG +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Aligner.png +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Chamber.png +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm.png +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm1.png +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm2.png +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Body.png +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.dll +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\log4net.dll +F:\ho\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.pdb +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojAssemblyReference.cache +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.ResolveComReference.cache +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.g.cs +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.g.cs +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.g.cs +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_Content.g.cs +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.baml +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.baml +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.baml +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLaser.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenRecipe.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorCalViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChamberViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChillerViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EquipmentInfoViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MessageBoxPad.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PiLaserViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyMeterViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PreAlignViwer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RecipeCreateViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.SequenceViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.VisionViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.WaferInfoViewer.resources +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.cache +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.CoreCompileInputs.cache +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.CopyComplete +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +F:\ho\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\RecipeImage.PNG +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Aligner.png +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Chamber.png +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm.png +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm1.png +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Arm2.png +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\Resources\Robot_Body.png +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe.config +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.exe +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT_UI.pdb +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.dll +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\log4net.dll +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\bin\Debug\SA_LTT.pdb +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csprojAssemblyReference.cache +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.ResolveComReference.cache +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.g.cs +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.g.cs +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.g.cs +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.g.cs +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_Content.g.cs +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.cache +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI_MarkupCompile.lref +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\AnimationEquipment.baml +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\ChamberStatus.baml +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\RecipeView.baml +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\Screen\WaferProcessPointView.baml +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.g.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.AnalogBar.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.IoBar.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenIO.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLaser.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMaintenance.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMotionMaintenance.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenRecipe.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenSetting.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AlarmViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorCalViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.AttenuatorViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChamberViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ChillerViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.CreateUserViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EquipmentInfoViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.LogInViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.MainFrame.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Properties.Resources.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenAlarmSetting.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenLog.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenMain.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Screen.ScreenParameter.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MaintenanceViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.MessageBoxPad.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ModifyUserViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PiLaserViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.EnergyMeterViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.PreAlignViwer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RecipeCreateViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.RobotViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.ScannerViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.SequenceViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.VisionViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.Viewer.WaferInfoViewer.resources +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.GenerateResource.cache +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.CoreCompileInputs.cache +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.csproj.CopyComplete +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.exe +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\SA_LTT_UI.pdb diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.GenerateResource.cache b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.GenerateResource.cache new file mode 100644 index 0000000..1a7249a --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.GenerateResource.cache Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.ResolveComReference.cache b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.ResolveComReference.cache new file mode 100644 index 0000000..5e693fe --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.ResolveComReference.cache Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csprojAssemblyReference.cache b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csprojAssemblyReference.cache new file mode 100644 index 0000000..572aa7f --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csprojAssemblyReference.cache Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.exe b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.exe new file mode 100644 index 0000000..64e06e3 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.exe Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.g.resources b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.g.resources new file mode 100644 index 0000000..8e4d195 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.g.resources Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.pdb b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.pdb new file mode 100644 index 0000000..b2c994e --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.pdb Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.cs new file mode 100644 index 0000000..36f88b8 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.cs @@ -0,0 +1,13 @@ +癤�//------------------------------------------------------------------------------ +// <auto-generated> +// �씠 肄붾뱶�뒗 �룄援щ�� �궗�슜�븯�뿬 �깮�꽦�릺�뿀�뒿�땲�떎. +// �윴���엫 踰꾩쟾:4.0.30319.42000 +// +// �뙆�씪 �궡�슜�쓣 蹂�寃쏀븯硫� �옒紐삳맂 �룞�옉�씠 諛쒖깮�븷 �닔 �엳�쑝硫�, 肄붾뱶瑜� �떎�떆 �깮�꽦�븯硫� +// �씠�윭�븳 蹂�寃� �궡�슜�씠 �넀�떎�맗�땲�떎. +// </auto-generated> +//------------------------------------------------------------------------------ + +[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("resources/recipeimage.png")] + + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.i.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.i.cs new file mode 100644 index 0000000..36f88b8 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.i.cs @@ -0,0 +1,13 @@ +癤�//------------------------------------------------------------------------------ +// <auto-generated> +// �씠 肄붾뱶�뒗 �룄援щ�� �궗�슜�븯�뿬 �깮�꽦�릺�뿀�뒿�땲�떎. +// �윴���엫 踰꾩쟾:4.0.30319.42000 +// +// �뙆�씪 �궡�슜�쓣 蹂�寃쏀븯硫� �옒紐삳맂 �룞�옉�씠 諛쒖깮�븷 �닔 �엳�쑝硫�, 肄붾뱶瑜� �떎�떆 �깮�꽦�븯硫� +// �씠�윭�븳 蹂�寃� �궡�슜�씠 �넀�떎�맗�땲�떎. +// </auto-generated> +//------------------------------------------------------------------------------ + +[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("resources/recipeimage.png")] + + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.cache b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.cache new file mode 100644 index 0000000..0d0e623 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.cache @@ -0,0 +1,20 @@ +癤풱A_LTT_UI + + +winexe +C# +.cs +C:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\obj\Debug\ +SA_LTT_UI +none +false +DEBUG;TRACE + +4505154117 +1164066037 +801387798072 +25387033412 +Screen\AnimationEquipment.xaml;Screen\ChamberStatus.xaml;Screen\RecipeView.xaml;Screen\WaferProcessPointView.xaml; + +False + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.i.cache b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.i.cache new file mode 100644 index 0000000..87e6e22 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.i.cache @@ -0,0 +1,20 @@ +癤풱A_LTT_UI + + +winexe +C# +.cs +E:\[01]DIT\[07]SIC\23.04.05 �뙆�씪\SA_LTT_UI\SA_LTT_UI\obj\Debug\ +SA_LTT_UI +none +false +DEBUG;TRACE + +4505154117 +1164066037 +842075643187 +25-1116814932 +Screen\AnimationEquipment.xaml;Screen\ChamberStatus.xaml;Screen\RecipeView.xaml;Screen\WaferProcessPointView.xaml; + +False + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.lref b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.lref new file mode 100644 index 0000000..ba20e4d --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.lref @@ -0,0 +1,7 @@ +癤� + +FC:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\Screen\AnimationEquipment.xaml;; +FC:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\Screen\ChamberStatus.xaml;; +FC:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\Screen\RecipeView.xaml;; +FC:\Users\DIT-930\Documents\SA_LTT\SA_LTT_UI\SA_LTT_UI\Screen\WaferProcessPointView.xaml;; + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.baml b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.baml new file mode 100644 index 0000000..9252b17 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.baml Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.cs new file mode 100644 index 0000000..e8e0be1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.cs @@ -0,0 +1,464 @@ +癤�#pragma checksum "..\..\..\Screen\AnimationEquipment.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "93CBB97D20806505B56E2B3A11AE524644E782F4" +//------------------------------------------------------------------------------ +// <auto-generated> +// �씠 肄붾뱶�뒗 �룄援щ�� �궗�슜�븯�뿬 �깮�꽦�릺�뿀�뒿�땲�떎. +// �윴���엫 踰꾩쟾:4.0.30319.42000 +// +// �뙆�씪 �궡�슜�쓣 蹂�寃쏀븯硫� �옒紐삳맂 �룞�옉�씠 諛쒖깮�븷 �닔 �엳�쑝硫�, 肄붾뱶瑜� �떎�떆 �깮�꽦�븯硫� +// �씠�윭�븳 蹂�寃� �궡�슜�씠 �넀�떎�맗�땲�떎. +// </auto-generated> +//------------------------------------------------------------------------------ + +using SA_LTT_UI.Screen; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Forms.Integration; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace SA_LTT_UI.Screen { + + + /// <summary> + /// AnimationEquipment + /// </summary> + public partial class AnimationEquipment : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector { + + + #line 9 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas MainFrame; + + #line default + #line hidden + + + #line 13 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Motor_Y; + + #line default + #line hidden + + + #line 15 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Chamber; + + #line default + #line hidden + + + #line 22 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle ChamberGate; + + #line default + #line hidden + + + #line 23 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas ChamberWafer; + + #line default + #line hidden + + + #line 24 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Ellipse ChamberWaferStatus; + + #line default + #line hidden + + + #line 25 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock ChamberWaferSourceName; + + #line default + #line hidden + + + #line 27 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Slider LiftPin; + + #line default + #line hidden + + + #line 43 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas PreAlignerBody; + + #line default + #line hidden + + + #line 49 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas PreAlignerWafer; + + #line default + #line hidden + + + #line 50 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Ellipse PreAlignerWaferStatus; + + #line default + #line hidden + + + #line 51 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock PreAlignerWaferSourceName; + + #line default + #line hidden + + + #line 53 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle IsAlignRun; + + #line default + #line hidden + + + #line 57 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle Door1; + + #line default + #line hidden + + + #line 58 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle Door2; + + #line default + #line hidden + + + #line 59 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle Door3; + + #line default + #line hidden + + + #line 60 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle Door4; + + #line default + #line hidden + + + #line 61 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle DoorCP; + + #line default + #line hidden + + + #line 62 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas RobotBody; + + #line default + #line hidden + + + #line 66 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Robot; + + #line default + #line hidden + + + #line 67 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas RobotArm1; + + #line default + #line hidden + + + #line 71 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas RobotArm2; + + #line default + #line hidden + + + #line 77 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas RobotHand; + + #line default + #line hidden + + + #line 81 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas RobotWafer; + + #line default + #line hidden + + + #line 82 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Ellipse RobotWaferStatus; + + #line default + #line hidden + + + #line 83 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock RobotWaferSourceName; + + #line default + #line hidden + + + #line 88 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Port1; + + #line default + #line hidden + + + #line 89 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Port2; + + #line default + #line hidden + + + #line 90 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Slider RobotZ; + + #line default + #line hidden + + + #line 100 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas UVLaser; + + #line default + #line hidden + + + #line 102 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock textBlock; + + #line default + #line hidden + + + #line 104 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Scanner; + + #line default + #line hidden + + + #line 106 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock textBlock1; + + #line default + #line hidden + + + #line 108 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Attenuator; + + #line default + #line hidden + + + #line 110 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock textBlock2; + + #line default + #line hidden + + private bool _contentLoaded; + + /// <summary> + /// InitializeComponent + /// </summary> + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/SA_LTT_UI;component/screen/animationequipment.xaml", System.UriKind.Relative); + + #line 1 "..\..\..\Screen\AnimationEquipment.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + this.MainFrame = ((System.Windows.Controls.Canvas)(target)); + return; + case 2: + this.Motor_Y = ((System.Windows.Controls.Canvas)(target)); + return; + case 3: + this.Chamber = ((System.Windows.Controls.Canvas)(target)); + return; + case 4: + this.ChamberGate = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 5: + this.ChamberWafer = ((System.Windows.Controls.Canvas)(target)); + return; + case 6: + this.ChamberWaferStatus = ((System.Windows.Shapes.Ellipse)(target)); + return; + case 7: + this.ChamberWaferSourceName = ((System.Windows.Controls.TextBlock)(target)); + return; + case 8: + this.LiftPin = ((System.Windows.Controls.Slider)(target)); + return; + case 9: + this.PreAlignerBody = ((System.Windows.Controls.Canvas)(target)); + return; + case 10: + this.PreAlignerWafer = ((System.Windows.Controls.Canvas)(target)); + return; + case 11: + this.PreAlignerWaferStatus = ((System.Windows.Shapes.Ellipse)(target)); + return; + case 12: + this.PreAlignerWaferSourceName = ((System.Windows.Controls.TextBlock)(target)); + return; + case 13: + this.IsAlignRun = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 14: + this.Door1 = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 15: + this.Door2 = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 16: + this.Door3 = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 17: + this.Door4 = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 18: + this.DoorCP = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 19: + this.RobotBody = ((System.Windows.Controls.Canvas)(target)); + return; + case 20: + this.Robot = ((System.Windows.Controls.Canvas)(target)); + return; + case 21: + this.RobotArm1 = ((System.Windows.Controls.Canvas)(target)); + return; + case 22: + this.RobotArm2 = ((System.Windows.Controls.Canvas)(target)); + return; + case 23: + this.RobotHand = ((System.Windows.Controls.Canvas)(target)); + return; + case 24: + this.RobotWafer = ((System.Windows.Controls.Canvas)(target)); + return; + case 25: + this.RobotWaferStatus = ((System.Windows.Shapes.Ellipse)(target)); + return; + case 26: + this.RobotWaferSourceName = ((System.Windows.Controls.TextBlock)(target)); + return; + case 27: + this.Port1 = ((System.Windows.Controls.Canvas)(target)); + return; + case 28: + this.Port2 = ((System.Windows.Controls.Canvas)(target)); + return; + case 29: + this.RobotZ = ((System.Windows.Controls.Slider)(target)); + return; + case 30: + this.UVLaser = ((System.Windows.Controls.Canvas)(target)); + return; + case 31: + this.textBlock = ((System.Windows.Controls.TextBlock)(target)); + return; + case 32: + this.Scanner = ((System.Windows.Controls.Canvas)(target)); + return; + case 33: + this.textBlock1 = ((System.Windows.Controls.TextBlock)(target)); + return; + case 34: + this.Attenuator = ((System.Windows.Controls.Canvas)(target)); + return; + case 35: + this.textBlock2 = ((System.Windows.Controls.TextBlock)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.i.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.i.cs new file mode 100644 index 0000000..e8e0be1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.i.cs @@ -0,0 +1,464 @@ +癤�#pragma checksum "..\..\..\Screen\AnimationEquipment.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "93CBB97D20806505B56E2B3A11AE524644E782F4" +//------------------------------------------------------------------------------ +// <auto-generated> +// �씠 肄붾뱶�뒗 �룄援щ�� �궗�슜�븯�뿬 �깮�꽦�릺�뿀�뒿�땲�떎. +// �윴���엫 踰꾩쟾:4.0.30319.42000 +// +// �뙆�씪 �궡�슜�쓣 蹂�寃쏀븯硫� �옒紐삳맂 �룞�옉�씠 諛쒖깮�븷 �닔 �엳�쑝硫�, 肄붾뱶瑜� �떎�떆 �깮�꽦�븯硫� +// �씠�윭�븳 蹂�寃� �궡�슜�씠 �넀�떎�맗�땲�떎. +// </auto-generated> +//------------------------------------------------------------------------------ + +using SA_LTT_UI.Screen; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Forms.Integration; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace SA_LTT_UI.Screen { + + + /// <summary> + /// AnimationEquipment + /// </summary> + public partial class AnimationEquipment : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector { + + + #line 9 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas MainFrame; + + #line default + #line hidden + + + #line 13 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Motor_Y; + + #line default + #line hidden + + + #line 15 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Chamber; + + #line default + #line hidden + + + #line 22 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle ChamberGate; + + #line default + #line hidden + + + #line 23 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas ChamberWafer; + + #line default + #line hidden + + + #line 24 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Ellipse ChamberWaferStatus; + + #line default + #line hidden + + + #line 25 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock ChamberWaferSourceName; + + #line default + #line hidden + + + #line 27 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Slider LiftPin; + + #line default + #line hidden + + + #line 43 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas PreAlignerBody; + + #line default + #line hidden + + + #line 49 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas PreAlignerWafer; + + #line default + #line hidden + + + #line 50 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Ellipse PreAlignerWaferStatus; + + #line default + #line hidden + + + #line 51 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock PreAlignerWaferSourceName; + + #line default + #line hidden + + + #line 53 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle IsAlignRun; + + #line default + #line hidden + + + #line 57 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle Door1; + + #line default + #line hidden + + + #line 58 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle Door2; + + #line default + #line hidden + + + #line 59 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle Door3; + + #line default + #line hidden + + + #line 60 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle Door4; + + #line default + #line hidden + + + #line 61 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle DoorCP; + + #line default + #line hidden + + + #line 62 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas RobotBody; + + #line default + #line hidden + + + #line 66 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Robot; + + #line default + #line hidden + + + #line 67 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas RobotArm1; + + #line default + #line hidden + + + #line 71 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas RobotArm2; + + #line default + #line hidden + + + #line 77 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas RobotHand; + + #line default + #line hidden + + + #line 81 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas RobotWafer; + + #line default + #line hidden + + + #line 82 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Ellipse RobotWaferStatus; + + #line default + #line hidden + + + #line 83 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock RobotWaferSourceName; + + #line default + #line hidden + + + #line 88 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Port1; + + #line default + #line hidden + + + #line 89 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Port2; + + #line default + #line hidden + + + #line 90 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Slider RobotZ; + + #line default + #line hidden + + + #line 100 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas UVLaser; + + #line default + #line hidden + + + #line 102 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock textBlock; + + #line default + #line hidden + + + #line 104 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Scanner; + + #line default + #line hidden + + + #line 106 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock textBlock1; + + #line default + #line hidden + + + #line 108 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Attenuator; + + #line default + #line hidden + + + #line 110 "..\..\..\Screen\AnimationEquipment.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock textBlock2; + + #line default + #line hidden + + private bool _contentLoaded; + + /// <summary> + /// InitializeComponent + /// </summary> + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/SA_LTT_UI;component/screen/animationequipment.xaml", System.UriKind.Relative); + + #line 1 "..\..\..\Screen\AnimationEquipment.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + this.MainFrame = ((System.Windows.Controls.Canvas)(target)); + return; + case 2: + this.Motor_Y = ((System.Windows.Controls.Canvas)(target)); + return; + case 3: + this.Chamber = ((System.Windows.Controls.Canvas)(target)); + return; + case 4: + this.ChamberGate = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 5: + this.ChamberWafer = ((System.Windows.Controls.Canvas)(target)); + return; + case 6: + this.ChamberWaferStatus = ((System.Windows.Shapes.Ellipse)(target)); + return; + case 7: + this.ChamberWaferSourceName = ((System.Windows.Controls.TextBlock)(target)); + return; + case 8: + this.LiftPin = ((System.Windows.Controls.Slider)(target)); + return; + case 9: + this.PreAlignerBody = ((System.Windows.Controls.Canvas)(target)); + return; + case 10: + this.PreAlignerWafer = ((System.Windows.Controls.Canvas)(target)); + return; + case 11: + this.PreAlignerWaferStatus = ((System.Windows.Shapes.Ellipse)(target)); + return; + case 12: + this.PreAlignerWaferSourceName = ((System.Windows.Controls.TextBlock)(target)); + return; + case 13: + this.IsAlignRun = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 14: + this.Door1 = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 15: + this.Door2 = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 16: + this.Door3 = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 17: + this.Door4 = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 18: + this.DoorCP = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 19: + this.RobotBody = ((System.Windows.Controls.Canvas)(target)); + return; + case 20: + this.Robot = ((System.Windows.Controls.Canvas)(target)); + return; + case 21: + this.RobotArm1 = ((System.Windows.Controls.Canvas)(target)); + return; + case 22: + this.RobotArm2 = ((System.Windows.Controls.Canvas)(target)); + return; + case 23: + this.RobotHand = ((System.Windows.Controls.Canvas)(target)); + return; + case 24: + this.RobotWafer = ((System.Windows.Controls.Canvas)(target)); + return; + case 25: + this.RobotWaferStatus = ((System.Windows.Shapes.Ellipse)(target)); + return; + case 26: + this.RobotWaferSourceName = ((System.Windows.Controls.TextBlock)(target)); + return; + case 27: + this.Port1 = ((System.Windows.Controls.Canvas)(target)); + return; + case 28: + this.Port2 = ((System.Windows.Controls.Canvas)(target)); + return; + case 29: + this.RobotZ = ((System.Windows.Controls.Slider)(target)); + return; + case 30: + this.UVLaser = ((System.Windows.Controls.Canvas)(target)); + return; + case 31: + this.textBlock = ((System.Windows.Controls.TextBlock)(target)); + return; + case 32: + this.Scanner = ((System.Windows.Controls.Canvas)(target)); + return; + case 33: + this.textBlock1 = ((System.Windows.Controls.TextBlock)(target)); + return; + case 34: + this.Attenuator = ((System.Windows.Controls.Canvas)(target)); + return; + case 35: + this.textBlock2 = ((System.Windows.Controls.TextBlock)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.baml b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.baml new file mode 100644 index 0000000..895bd46 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.baml Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.cs new file mode 100644 index 0000000..a306f22 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.cs @@ -0,0 +1,134 @@ +癤�#pragma checksum "..\..\..\Screen\ChamberStatus.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "F8EF711BAECC607C432373C0BE1AB4F3F746CDC1" +//------------------------------------------------------------------------------ +// <auto-generated> +// �씠 肄붾뱶�뒗 �룄援щ�� �궗�슜�븯�뿬 �깮�꽦�릺�뿀�뒿�땲�떎. +// �윴���엫 踰꾩쟾:4.0.30319.42000 +// +// �뙆�씪 �궡�슜�쓣 蹂�寃쏀븯硫� �옒紐삳맂 �룞�옉�씠 諛쒖깮�븷 �닔 �엳�쑝硫�, 肄붾뱶瑜� �떎�떆 �깮�꽦�븯硫� +// �씠�윭�븳 蹂�寃� �궡�슜�씠 �넀�떎�맗�땲�떎. +// </auto-generated> +//------------------------------------------------------------------------------ + +using SA_LTT_UI.Screen; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Forms.Integration; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace SA_LTT_UI.Screen { + + + /// <summary> + /// ChamberStatus + /// </summary> + public partial class ChamberStatus : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector { + + + #line 16 "..\..\..\Screen\ChamberStatus.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Chamber; + + #line default + #line hidden + + + #line 23 "..\..\..\Screen\ChamberStatus.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle ChamberGate; + + #line default + #line hidden + + + #line 24 "..\..\..\Screen\ChamberStatus.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas ChamberWafer; + + #line default + #line hidden + + + #line 25 "..\..\..\Screen\ChamberStatus.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Ellipse ChamberWaferStatus; + + #line default + #line hidden + + + #line 26 "..\..\..\Screen\ChamberStatus.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock ChamberWaferSourceName; + + #line default + #line hidden + + private bool _contentLoaded; + + /// <summary> + /// InitializeComponent + /// </summary> + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/SA_LTT_UI;component/screen/chamberstatus.xaml", System.UriKind.Relative); + + #line 1 "..\..\..\Screen\ChamberStatus.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + this.Chamber = ((System.Windows.Controls.Canvas)(target)); + return; + case 2: + this.ChamberGate = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 3: + this.ChamberWafer = ((System.Windows.Controls.Canvas)(target)); + return; + case 4: + this.ChamberWaferStatus = ((System.Windows.Shapes.Ellipse)(target)); + return; + case 5: + this.ChamberWaferSourceName = ((System.Windows.Controls.TextBlock)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.i.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.i.cs new file mode 100644 index 0000000..a306f22 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.i.cs @@ -0,0 +1,134 @@ +癤�#pragma checksum "..\..\..\Screen\ChamberStatus.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "F8EF711BAECC607C432373C0BE1AB4F3F746CDC1" +//------------------------------------------------------------------------------ +// <auto-generated> +// �씠 肄붾뱶�뒗 �룄援щ�� �궗�슜�븯�뿬 �깮�꽦�릺�뿀�뒿�땲�떎. +// �윴���엫 踰꾩쟾:4.0.30319.42000 +// +// �뙆�씪 �궡�슜�쓣 蹂�寃쏀븯硫� �옒紐삳맂 �룞�옉�씠 諛쒖깮�븷 �닔 �엳�쑝硫�, 肄붾뱶瑜� �떎�떆 �깮�꽦�븯硫� +// �씠�윭�븳 蹂�寃� �궡�슜�씠 �넀�떎�맗�땲�떎. +// </auto-generated> +//------------------------------------------------------------------------------ + +using SA_LTT_UI.Screen; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Forms.Integration; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace SA_LTT_UI.Screen { + + + /// <summary> + /// ChamberStatus + /// </summary> + public partial class ChamberStatus : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector { + + + #line 16 "..\..\..\Screen\ChamberStatus.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas Chamber; + + #line default + #line hidden + + + #line 23 "..\..\..\Screen\ChamberStatus.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle ChamberGate; + + #line default + #line hidden + + + #line 24 "..\..\..\Screen\ChamberStatus.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas ChamberWafer; + + #line default + #line hidden + + + #line 25 "..\..\..\Screen\ChamberStatus.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Ellipse ChamberWaferStatus; + + #line default + #line hidden + + + #line 26 "..\..\..\Screen\ChamberStatus.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.TextBlock ChamberWaferSourceName; + + #line default + #line hidden + + private bool _contentLoaded; + + /// <summary> + /// InitializeComponent + /// </summary> + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/SA_LTT_UI;component/screen/chamberstatus.xaml", System.UriKind.Relative); + + #line 1 "..\..\..\Screen\ChamberStatus.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + this.Chamber = ((System.Windows.Controls.Canvas)(target)); + return; + case 2: + this.ChamberGate = ((System.Windows.Shapes.Rectangle)(target)); + return; + case 3: + this.ChamberWafer = ((System.Windows.Controls.Canvas)(target)); + return; + case 4: + this.ChamberWaferStatus = ((System.Windows.Shapes.Ellipse)(target)); + return; + case 5: + this.ChamberWaferSourceName = ((System.Windows.Controls.TextBlock)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.baml b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.baml new file mode 100644 index 0000000..9559e35 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.baml Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.cs new file mode 100644 index 0000000..efbf09a --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.cs @@ -0,0 +1,76 @@ +癤�#pragma checksum "..\..\..\Screen\RecipeView.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "49FF5266B9757734529560BF3563234C44272664" +//------------------------------------------------------------------------------ +// <auto-generated> +// �씠 肄붾뱶�뒗 �룄援щ�� �궗�슜�븯�뿬 �깮�꽦�릺�뿀�뒿�땲�떎. +// �윴���엫 踰꾩쟾:4.0.30319.42000 +// +// �뙆�씪 �궡�슜�쓣 蹂�寃쏀븯硫� �옒紐삳맂 �룞�옉�씠 諛쒖깮�븷 �닔 �엳�쑝硫�, 肄붾뱶瑜� �떎�떆 �깮�꽦�븯硫� +// �씠�윭�븳 蹂�寃� �궡�슜�씠 �넀�떎�맗�땲�떎. +// </auto-generated> +//------------------------------------------------------------------------------ + +using SA_LTT_UI.Screen; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Forms.Integration; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace SA_LTT_UI.Screen { + + + /// <summary> + /// RecipeView + /// </summary> + public partial class RecipeView : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector { + + private bool _contentLoaded; + + /// <summary> + /// InitializeComponent + /// </summary> + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/SA_LTT_UI;component/screen/recipeview.xaml", System.UriKind.Relative); + + #line 1 "..\..\..\Screen\RecipeView.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + this._contentLoaded = true; + } + } +} + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.i.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.i.cs new file mode 100644 index 0000000..efbf09a --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.i.cs @@ -0,0 +1,76 @@ +癤�#pragma checksum "..\..\..\Screen\RecipeView.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "49FF5266B9757734529560BF3563234C44272664" +//------------------------------------------------------------------------------ +// <auto-generated> +// �씠 肄붾뱶�뒗 �룄援щ�� �궗�슜�븯�뿬 �깮�꽦�릺�뿀�뒿�땲�떎. +// �윴���엫 踰꾩쟾:4.0.30319.42000 +// +// �뙆�씪 �궡�슜�쓣 蹂�寃쏀븯硫� �옒紐삳맂 �룞�옉�씠 諛쒖깮�븷 �닔 �엳�쑝硫�, 肄붾뱶瑜� �떎�떆 �깮�꽦�븯硫� +// �씠�윭�븳 蹂�寃� �궡�슜�씠 �넀�떎�맗�땲�떎. +// </auto-generated> +//------------------------------------------------------------------------------ + +using SA_LTT_UI.Screen; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Forms.Integration; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace SA_LTT_UI.Screen { + + + /// <summary> + /// RecipeView + /// </summary> + public partial class RecipeView : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector { + + private bool _contentLoaded; + + /// <summary> + /// InitializeComponent + /// </summary> + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/SA_LTT_UI;component/screen/recipeview.xaml", System.UriKind.Relative); + + #line 1 "..\..\..\Screen\RecipeView.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + this._contentLoaded = true; + } + } +} + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.baml b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.baml new file mode 100644 index 0000000..b58c9ba --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.baml Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.cs new file mode 100644 index 0000000..ae1c89e --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.cs @@ -0,0 +1,115 @@ +癤�#pragma checksum "..\..\..\Screen\WaferProcessPointView.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "B22BE275F90FFC1D093A3E71C5306352D4ACBF9A" +//------------------------------------------------------------------------------ +// <auto-generated> +// �씠 肄붾뱶�뒗 �룄援щ�� �궗�슜�븯�뿬 �깮�꽦�릺�뿀�뒿�땲�떎. +// �윴���엫 踰꾩쟾:4.0.30319.42000 +// +// �뙆�씪 �궡�슜�쓣 蹂�寃쏀븯硫� �옒紐삳맂 �룞�옉�씠 諛쒖깮�븷 �닔 �엳�쑝硫�, 肄붾뱶瑜� �떎�떆 �깮�꽦�븯硫� +// �씠�윭�븳 蹂�寃� �궡�슜�씠 �넀�떎�맗�땲�떎. +// </auto-generated> +//------------------------------------------------------------------------------ + +using SA_LTT_UI.Screen; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Forms.Integration; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace SA_LTT_UI.Screen { + + + /// <summary> + /// WaferProcessPointView + /// </summary> + public partial class WaferProcessPointView : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector { + + + #line 9 "..\..\..\Screen\WaferProcessPointView.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas MainScreen; + + #line default + #line hidden + + + #line 12 "..\..\..\Screen\WaferProcessPointView.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle RectPrimaryFlat; + + #line default + #line hidden + + private bool _contentLoaded; + + /// <summary> + /// InitializeComponent + /// </summary> + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/SA_LTT_UI;component/screen/waferprocesspointview.xaml", System.UriKind.Relative); + + #line 1 "..\..\..\Screen\WaferProcessPointView.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + + #line 8 "..\..\..\Screen\WaferProcessPointView.xaml" + ((SA_LTT_UI.Screen.WaferProcessPointView)(target)).MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.UserControl_MouseDown); + + #line default + #line hidden + + #line 8 "..\..\..\Screen\WaferProcessPointView.xaml" + ((SA_LTT_UI.Screen.WaferProcessPointView)(target)).MouseMove += new System.Windows.Input.MouseEventHandler(this.UserControl_MouseMove); + + #line default + #line hidden + return; + case 2: + this.MainScreen = ((System.Windows.Controls.Canvas)(target)); + return; + case 3: + this.RectPrimaryFlat = ((System.Windows.Shapes.Rectangle)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.i.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.i.cs new file mode 100644 index 0000000..ae1c89e --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.i.cs @@ -0,0 +1,115 @@ +癤�#pragma checksum "..\..\..\Screen\WaferProcessPointView.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "B22BE275F90FFC1D093A3E71C5306352D4ACBF9A" +//------------------------------------------------------------------------------ +// <auto-generated> +// �씠 肄붾뱶�뒗 �룄援щ�� �궗�슜�븯�뿬 �깮�꽦�릺�뿀�뒿�땲�떎. +// �윴���엫 踰꾩쟾:4.0.30319.42000 +// +// �뙆�씪 �궡�슜�쓣 蹂�寃쏀븯硫� �옒紐삳맂 �룞�옉�씠 諛쒖깮�븷 �닔 �엳�쑝硫�, 肄붾뱶瑜� �떎�떆 �깮�꽦�븯硫� +// �씠�윭�븳 蹂�寃� �궡�슜�씠 �넀�떎�맗�땲�떎. +// </auto-generated> +//------------------------------------------------------------------------------ + +using SA_LTT_UI.Screen; +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Forms.Integration; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Effects; +using System.Windows.Media.Imaging; +using System.Windows.Media.Media3D; +using System.Windows.Media.TextFormatting; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Shell; + + +namespace SA_LTT_UI.Screen { + + + /// <summary> + /// WaferProcessPointView + /// </summary> + public partial class WaferProcessPointView : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector { + + + #line 9 "..\..\..\Screen\WaferProcessPointView.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Controls.Canvas MainScreen; + + #line default + #line hidden + + + #line 12 "..\..\..\Screen\WaferProcessPointView.xaml" + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] + internal System.Windows.Shapes.Rectangle RectPrimaryFlat; + + #line default + #line hidden + + private bool _contentLoaded; + + /// <summary> + /// InitializeComponent + /// </summary> + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Uri resourceLocater = new System.Uri("/SA_LTT_UI;component/screen/waferprocesspointview.xaml", System.UriKind.Relative); + + #line 1 "..\..\..\Screen\WaferProcessPointView.xaml" + System.Windows.Application.LoadComponent(this, resourceLocater); + + #line default + #line hidden + } + + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] + void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { + switch (connectionId) + { + case 1: + + #line 8 "..\..\..\Screen\WaferProcessPointView.xaml" + ((SA_LTT_UI.Screen.WaferProcessPointView)(target)).MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.UserControl_MouseDown); + + #line default + #line hidden + + #line 8 "..\..\..\Screen\WaferProcessPointView.xaml" + ((SA_LTT_UI.Screen.WaferProcessPointView)(target)).MouseMove += new System.Windows.Input.MouseEventHandler(this.UserControl_MouseMove); + + #line default + #line hidden + return; + case 2: + this.MainScreen = ((System.Windows.Controls.Canvas)(target)); + return; + case 3: + this.RectPrimaryFlat = ((System.Windows.Shapes.Rectangle)(target)); + return; + } + this._contentLoaded = true; + } + } +} + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/SA_LTT_UI/SA_LTT_UI/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..f95688e --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll Binary files differ diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_Content.g.i.cs b/SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_Content.g.i.cs new file mode 100644 index 0000000..2e73ae1 --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_Content.g.i.cs @@ -0,0 +1,13 @@ +癤�//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("resources/recipeimage.png")] + + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.cache b/SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.cache new file mode 100644 index 0000000..307d2ad --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.cache @@ -0,0 +1,20 @@ +癤퓈p + + +winexe +C# +.cs +F:\SA_LTT_UI\SA_LTT_UI\obj\Debug\ +SA_LTT_UI +none +false +DEBUG;TRACE + +4505154117 +1164066037 +82-1864076963 +25-661537859 +Screen\AnimationEquipment.xaml;Screen\ChamberStatus.xaml;Screen\RecipeView.xaml;Screen\WaferProcessPointView.xaml; + +True + diff --git a/SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.lref b/SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.lref new file mode 100644 index 0000000..1e43d7e --- /dev/null +++ b/SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.lref @@ -0,0 +1,7 @@ +癤� + +FF:\SA_LTT_UI\SA_LTT_UI\Screen\AnimationEquipment.xaml;; +FF:\SA_LTT_UI\SA_LTT_UI\Screen\ChamberStatus.xaml;; +FF:\SA_LTT_UI\SA_LTT_UI\Screen\RecipeView.xaml;; +FF:\SA_LTT_UI\SA_LTT_UI\Screen\WaferProcessPointView.xaml;; + diff --git "a/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.exe" "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.exe" new file mode 100644 index 0000000..893e27e --- /dev/null +++ "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.exe" Binary files differ diff --git "a/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.exe.config" "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.exe.config" new file mode 100644 index 0000000..88fa402 --- /dev/null +++ "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.exe.config" @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git "a/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.pdb" "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.pdb" new file mode 100644 index 0000000..80cf26c --- /dev/null +++ "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.pdb" Binary files differ diff --git "a/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.vshost.exe" "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.vshost.exe" new file mode 100644 index 0000000..681ab77 --- /dev/null +++ "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.vshost.exe" Binary files differ diff --git "a/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.vshost.exe.config" "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.vshost.exe.config" new file mode 100644 index 0000000..88fa402 --- /dev/null +++ "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.vshost.exe.config" @@ -0,0 +1,6 @@ +癤�<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git "a/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.vshost.exe.manifest" "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.vshost.exe.manifest" new file mode 100644 index 0000000..061c9ca --- /dev/null +++ "b/SA_LTT_UI/\352\260\200\352\263\265 \354\204\244\353\252\205 Program/TestRec.vshost.exe.manifest" @@ -0,0 +1,11 @@ +癤�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> +</assembly> -- Gitblit v1.9.3