Add QRValidation project to repository
- Added QRValidation vision control system - Includes CapCleaningControl UI components - WebSocket-based barcode validation system - Support for Crevis PLC integration - Test projects for PLC emulator, motion, IO panel, and Modbus 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		
							
								
								
									
										158
									
								
								QRValidation/Test/Test_IOPanel/fIOMonitor.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								QRValidation/Test/Test_IOPanel/fIOMonitor.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,158 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.ComponentModel; | ||||
| using System.Data; | ||||
| using System.Drawing; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Windows.Forms; | ||||
|  | ||||
| namespace Test_IOPanel | ||||
| { | ||||
|     /// <summary> | ||||
|     /// I/O창에 표시되는 핀 이름 | ||||
|     /// </summary> | ||||
|     enum eDIName | ||||
|     { | ||||
|         SW_START, STOP, RESET, AIR, DOOR ,EMERGENCY, SPARE06, SPARE07, | ||||
|         MGZ_LOAD_IN, MGZ_LOAD_LIMIT, MGZ_HOLD1, MGZ_HOLD2, MGZ_CLAMP_OPEN, MGZ_CLAMP_CLOSE, SPARE14, SPARE15, | ||||
|         PCB_PICKER_OVERLOAD, PUSHER_LIMIT1, PUSHER_LIMIT2, GRIPER_OPEN, GRIPER_CLOSE, GRIP_DETECT, PCB_DETECT, SPARE23, | ||||
|         PCB_PUSHER_OVERLOAD, PUSH_OPEN, PUSH_CLOSE, MGZ_SAFTY, SPARE28, SPARE29, SPARE30, SPARE31, | ||||
|         SPARE32, SPARE33, SPARE34, SPARE35, SPARE36, SPARE37, SPARE38, SPARE39, | ||||
|         SPARE40, SPARE41, SPARE42, SPARE43, SPARE44, SPARE45, SPARE46, SPARE47, | ||||
|     } | ||||
|     /// <summary> | ||||
|     /// 실제 작업시사용하는 이름 | ||||
|     /// </summary> | ||||
|     enum eDIPin | ||||
|     { | ||||
|         X00, X01, X02, X03, X04, X05, X06, X07, | ||||
|         X08, X09, X0A, X0B, X0C, X0D, X0E, X0F, | ||||
|         X10, X11, X12, X13, X14, X15, X16, X17, | ||||
|         X18, X19, X1A, X1B, X1C, X1D, X1E, X1F, | ||||
|         X20, X21, X22, X23, X24, X25, X26, X27, | ||||
|         X28, X29, X2A, X2B, X2C, X2D, X2E, X2F | ||||
|     } | ||||
|  | ||||
|     enum eDOName | ||||
|     { | ||||
|         LED_START, LED_STOP, LED_RESET, LED_AIR, LED_INSIDE, SPARE05, SPARE06, SPARE07, | ||||
|         PUSHER, GRIPPER, MGZ_LOADER, MGZ_CLAMP_ON, MGZ_CLAMP_OFF, SPARE13, SPARE14, SPARE15, | ||||
|         TWR_RED, TWR_GRN, TWR_YEL, TWR_BUZZER, SPARE20, SPARE21, SPARE22, SPARE23, | ||||
|         AIR_ON, SPARE25, SPARE26, SPARE27, SPARE28, SPARE29, SPARE30, SPARE31, | ||||
|         SPARE32, SPARE33, SPARE34, SPARE35, SPARE36, SPARE37, SPARE38, SPARE39, | ||||
|         SPARE40, SPARE41, SPARE42, SPARE43, SPARE44, SPARE45, SPARE46, SPARE47, | ||||
|     } | ||||
|    | ||||
|     enum eDOPin | ||||
|     { | ||||
|         Y00, Y01, Y02, Y03, Y04, Y05, Y06, Y07, | ||||
|         Y08, Y09, Y0A, Y0B, Y0C, Y0D, Y0E, Y0F, | ||||
|         Y10, Y11, Y12, Y13, Y14, Y15, Y16, Y17, | ||||
|         Y18, Y19, Y1A, Y1B, Y1C, Y1D, Y1E, Y1F, | ||||
|         Y20, Y21, Y22, Y23, Y24, Y25, Y26, Y27, | ||||
|         Y28, Y29, Y2A, Y2B, Y2C, Y2D, Y2E, Y2F | ||||
|     } | ||||
|  | ||||
|     public partial class fIOMonitor : Form | ||||
|     { | ||||
|  | ||||
|         public fIOMonitor() | ||||
|         { | ||||
|             InitializeComponent(); | ||||
|             //this.WindowState = FormWindowState.Maximized; | ||||
|  | ||||
|             for (int r = 0; r < 8; r++) | ||||
|             { | ||||
|                 for (int i = 0; i < 6; i++) | ||||
|                 { | ||||
|                     var idx = i * 8 + r; | ||||
|                     var pinNo = Enum.GetName(typeof(eDIPin), idx); | ||||
|                     var pinName = Enum.GetName(typeof(eDIName), idx); | ||||
|                      | ||||
|                     var but = new Button(); | ||||
|                     if (pinName.StartsWith("SPARE")) | ||||
|                     { | ||||
|                         pinName = "--"; | ||||
|                         but.ForeColor = Color.Gray; | ||||
|                     } | ||||
|                     but.Text = string.Format("[{0}]\n{1}", pinNo, pinName, idx); | ||||
|                     but.TextAlign = ContentAlignment.MiddleLeft; | ||||
|                     but.Dock = DockStyle.Fill; | ||||
|                     but.Font = new System.Drawing.Font("Consolas", 9, FontStyle.Bold); | ||||
|                     but.Tag = idx; | ||||
|                     but.Click += butI_Click; | ||||
|                     this.tblDI.Controls.Add(but); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             for (int r = 0; r < 8; r++) | ||||
|             { | ||||
|                 for (int i = 0; i < 6; i++) | ||||
|                 { | ||||
|                     var idx = i * 8 + r; | ||||
|                     var pinNo = Enum.GetName(typeof(eDOPin), idx); | ||||
|                     var pinName = Enum.GetName(typeof(eDOName), idx); | ||||
|  | ||||
|                     var but = new Button(); | ||||
|                     if (pinName.StartsWith("SPARE")) | ||||
|                     { | ||||
|                         pinName = "--"; | ||||
|                         but.ForeColor = Color.Gray; | ||||
|                     } | ||||
|                     but.Font = new System.Drawing.Font("Consolas", 9, FontStyle.Bold); | ||||
|                     but.Text = string.Format("[{0}]\n{1}", pinNo, pinName, idx); | ||||
|                     but.TextAlign = ContentAlignment.MiddleLeft; | ||||
|                     but.Dock = DockStyle.Fill; | ||||
|                     but.Tag = idx; | ||||
|                     but.Click += butO_Click; | ||||
|                     this.tblDO.Controls.Add(but); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         private void fIOMonitor_Load(object sender, EventArgs e) | ||||
|         { | ||||
|  | ||||
|             this.Text = "I/O Monitor"; | ||||
|             this.Show(); | ||||
|             Application.DoEvents(); | ||||
|  | ||||
|             for(int i = 0; i < this.tblDI.Controls.Count; i++) | ||||
|             { | ||||
|                 var but = tblDI.Controls[i] as Button; | ||||
|                 var idx = int.Parse(but.Tag.ToString()); | ||||
|                 but.BackColor = Color.Lime; | ||||
|             } | ||||
|             for (int i = 0; i < this.tblDO.Controls.Count; i++) | ||||
|             { | ||||
|                 var but = tblDO.Controls[i] as Button; | ||||
|                 var idx = int.Parse(but.Tag.ToString()); | ||||
|                 but.BackColor = Color.Pink; | ||||
|             } | ||||
|  | ||||
|  | ||||
|         } | ||||
|  | ||||
|         void butI_Click(object sender, EventArgs e) | ||||
|         { | ||||
|             var but = sender as Button; | ||||
|             var idx = int.Parse(but.Tag.ToString()); | ||||
|             //var curvalue = Pub.dio.INPUT(idx); | ||||
|             //Pub.dio.RaiseEvent(arDev.AzinAxt.eIOPINDIR.INPUT, idx, !curvalue); | ||||
|             //Pub.log.AddI("I/O MON : User DI event idx=" + idx.ToString() + ",oldvalue= " + curvalue.ToString()); | ||||
|         } | ||||
|         void butO_Click(object sender, EventArgs e) | ||||
|         { | ||||
|             var but = sender as Button; | ||||
|             var idx = int.Parse(but.Tag.ToString()); | ||||
|             var 몫 = (int)(Math.Floor(idx / 8.0)); | ||||
|             var 나머지 = (idx % 8.0); | ||||
|             var idx2 = 나머지 * 6 + 몫; | ||||
|             Console.WriteLine(string.Format("idx={0}, 몫={1},나머지={2},컨트롤인덱스={3}", idx, 몫, 나머지, idx2)); | ||||
|             //var curvalue = Pub.dio.OUTPUT(idx); | ||||
|             //if (Pub.dio.initOK) Pub.dio.SetOutput(idx, !curvalue); | ||||
|             //else Pub.dio.RaiseEvent(arDev.AzinAxt.eIOPINDIR.OUTPUT, idx, !curvalue); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 atvstdla
					atvstdla