프로젝트 구조 개선 및 README.md 추가

- UIControl 프로젝트 구조 변경 (CapCleaningControl → Sub/UIControl)
- arAjinextek 라이브러리 통합 및 구조 개선
- 새로운 arAjinextek_Union 프로젝트 추가
- 솔루션 파일에 README.md 추가
- QR 모드에서 WMS RCV 태그 인식 기능 강화
- 데이터베이스 스키마 업데이트 및 관련 클래스 수정
- 프린터 및 바코드 장치 연동 로직 개선

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
ChiKyun Kim
2025-08-07 08:35:56 +09:00
parent c17296101a
commit 9a7d1d27c7
140 changed files with 4203 additions and 6791 deletions

View File

@@ -1,36 +1,36 @@
namespace UIControl
{
partial class CtlContainer
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
//namespace UIControl
//{
// partial class CtlContainer
// {
// /// <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);
}
// /// <summary>
// /// 사용 중인 모든 리소스를 정리합니다.
// /// </summary>
// /// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
// protected override void Dispose(bool disposing)
// {
// if (disposing && (components != null))
// {
// components.Dispose();
// }
// base.Dispose(disposing);
// }
#region
// #region 구성 요소 디자이너에서 생성한 코
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
}
// /// <summary>
// /// 디자이너 지원에 필요한 메서드입니다.
// /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
// /// </summary>
// private void InitializeComponent()
// {
// components = new System.ComponentModel.Container();
// }
#endregion
}
}
// #endregion
// }
//}

View File

@@ -1,86 +1,86 @@
using 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;
//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 UIControl
{
public partial class CtlContainer : GroupBox
{
arDev.AjinEXTEK.Emulator.CEmuleDIO devIO;
arDev.AjinEXTEK.Emulator.CEmulMOT devMOT;
//namespace UIControl
//{
// public partial class CtlContainer : GroupBox
// {
// arDev.AjinEXTEK.emu.Emulator.CEmuleDIO devIO;
// arDev.AjinEXTEK.Emulator.CEmulMOT devMOT;
public CtlContainer()
{
InitializeComponent();
}
public void updateControl()
{
updateControl(this.Controls);
}
// public CtlContainer()
// {
// InitializeComponent();
// }
// public void updateControl()
// {
// updateControl(this.Controls);
// }
public void setDevice(arDev.AjinEXTEK.Emulator.CEmuleDIO dio, arDev.AjinEXTEK.Emulator.CEmulMOT mot)
{
this.devIO = dio;
this.devMOT = mot;
}
// public void setDevice(arDev.AjinEXTEK.Emulator.CEmuleDIO dio, arDev.AjinEXTEK.Emulator.CEmulMOT mot)
// {
// this.devIO = dio;
// this.devMOT = mot;
// }
public void updateControl(System.Windows.Forms.Control.ControlCollection ctl)
{
if (devIO == null && devMOT == null) throw new Exception("디바이스(IO/MOT)가 설정되지 않았습니다");
foreach (Control c in ctl)
{
if (c.HasChildren)
{
updateControl(c.Controls);
}
else if (c is UIControl.CtlBase)
{
var cc = c as UIControl.CtlBase;
foreach (var pin in cc.PinList)
{
if (pin.PinIndex != -1)
{
if (pin.ValueDirection == UIControl.eValueDirection.input)
{
//io의 값을 컨트롤에 적용해줘야한다
if (pin.Output)
{
pin.Raw = devIO.Output[pin.PinIndex];
}
else
{
pin.Raw = devIO.Input[pin.PinIndex];
}
}
else
{
//컨트롤의 값을 io에 적용해줘야 한다
if (pin.Output)
{
//devIO.Output[pin.PinIndex] = pin.Value;
devIO.SetOutput(pin.PinIndex, pin.Value);
}
else
{
// devIO.Input[pin.PinIndex] = pin.Value;
devIO.SetInput(pin.PinIndex, pin.Value);
}
}
// public void updateControl(System.Windows.Forms.Control.ControlCollection ctl)
// {
// if (devIO == null && devMOT == null) throw new Exception("디바이스(IO/MOT)가 설정되지 않았습니다");
// foreach (Control c in ctl)
// {
// if (c.HasChildren)
// {
// updateControl(c.Controls);
// }
// else if (c is UIControl.CtlBase)
// {
// var cc = c as UIControl.CtlBase;
// foreach (var pin in cc.PinList)
// {
// if (pin.PinIndex != -1)
// {
// if (pin.ValueDirection == UIControl.eValueDirection.input)
// {
// //io의 값을 컨트롤에 적용해줘야한다
// if (pin.Output)
// {
// pin.Raw = devIO.Output[pin.PinIndex];
// }
// else
// {
// pin.Raw = devIO.Input[pin.PinIndex];
// }
// }
// else
// {
// //컨트롤의 값을 io에 적용해줘야 한다
// if (pin.Output)
// {
// //devIO.Output[pin.PinIndex] = pin.Value;
// devIO.SetOutput(pin.PinIndex, pin.Value);
// }
// else
// {
// // devIO.Input[pin.PinIndex] = pin.Value;
// devIO.SetInput(pin.PinIndex, pin.Value);
// }
// }
}
}
cc.UpdateValue();
cc.Invalidate();
}
}
// }
// }
// cc.UpdateValue();
// cc.Invalidate();
// }
// }
}
// }
}
}
// }
//}