diff --git a/Handler/.gitignore b/Handler/.gitignore
new file mode 100644
index 0000000..5bad711
--- /dev/null
+++ b/Handler/.gitignore
@@ -0,0 +1,10 @@
+*.suo
+*.user
+*.pdb
+bin
+obj
+desktop.ini
+.vs
+packages
+/*.sln
+/Sub/Sub.zip
diff --git a/Handler/CapCleaningControl/CIcon.cs b/Handler/CapCleaningControl/CIcon.cs
new file mode 100644
index 0000000..5dbe9d3
--- /dev/null
+++ b/Handler/CapCleaningControl/CIcon.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+
+namespace UIControl
+{
+ public class CIcon
+ {
+ public string Text { get; set; }
+ public string Tag { get; set; }
+ public RectangleF Rect { get; set; }
+ public Boolean Focus { get; set; }
+ public Boolean Select { get; set; }
+ public CIcon() : this(string.Empty, RectangleF.Empty) { }
+ public CIcon(string tag,RectangleF rect)
+ {
+ Text = string.Empty;
+ Tag = tag;
+ Rect = rect;
+ }
+ public float X { get { return Rect.X; } }
+ public float Y { get { return Rect.Y; } }
+ public float W { get { return Rect.Width; } }
+ public float H { get { return Rect.Height; } }
+ }
+}
diff --git a/Handler/CapCleaningControl/CItem.cs b/Handler/CapCleaningControl/CItem.cs
new file mode 100644
index 0000000..9ec1950
--- /dev/null
+++ b/Handler/CapCleaningControl/CItem.cs
@@ -0,0 +1,158 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Drawing;
+namespace UIControl
+{
+ [Serializable]
+ public class CItem
+ {
+ public Boolean Delete { get; set; }
+ ///
+ /// 어떠한 포트에서 픽업 되었는지
+ ///
+ public int iPort { get; set; }
+
+ ///
+ /// 출력 포트
+ ///
+ public int oPort { get; set; }
+
+ ///
+ /// 배출여부
+ ///
+ public int ErrorOut { get; set; }
+
+ ///
+ /// 크기는 어떠한지(7 or 13)
+ ///
+ public string Size { get; set; }
+
+ ///
+ /// 존번호 0~10
+ ///
+ public int index { get; set; }
+
+ ///
+ /// 피커에의해서 드랍된 시간
+ ///
+ public DateTime DropTime { get; set; }
+
+ ///
+ /// 차수별 일련번호
+ ///
+ public UInt16 Seq { get; set; }
+
+ public DateTime BarcodeStart { get; set; }
+ public DateTime BarcodeEnd { get; set; }
+
+ public DateTime PlcStartTime { get; set; }
+ public DateTime PlcEndTime { get; set; }
+
+ public DateTime ZoneIntime { get; set; }
+
+ ///
+ /// 컨베이어에 들어온 시간
+ /// 피커에서 드랍되면 dropTime 과 동일하며, 외부에서 들어오면 센서가 최초 감지한 시간이 된다
+ ///
+ public DateTime InTime { get; set; }
+ public DateTime OutTime { get; set; }
+ public Rectangle Rect { get; set; }
+
+ ///
+ /// jobhistory에 연결되는 데이터 키
+ ///
+ public string JGUID { get; set; }
+
+ ///
+ /// 바코드 데이터와 연결되는 키값
+ ///
+ public string Tag { get; set; }
+ public string RID { get; set; }
+ public string SID { get; set; }
+ public string BarcodeRaw { get; set; }
+ public string BarcodeMsg { get; set; }
+ public Boolean Processing { get; set; }
+ public string GUID { get; private set; }
+ public int Qty { get; set; }
+ public List UnloaderMsg { get; set; }
+
+ ///
+ /// 바코드의 완료여부, timeout 혻은 설정 되었을때 적용
+ ///
+ public Boolean BarcodeDone { get; set; }
+
+ public Boolean hasBarcode
+ {
+ get
+ {
+ return !string.IsNullOrEmpty(RID);
+ }
+ }
+
+ public void AddMessage(string msg)
+ {
+ if (this.UnloaderMsg.Contains(msg) == false)
+ UnloaderMsg.Add(msg);
+ }
+
+ public CItem()
+ {
+ Qty = 0;
+ UnloaderMsg = new List();
+ ErrorOut = 0;
+ this.GUID = Guid.NewGuid().ToString();
+ Tag = string.Empty;
+ JGUID = string.Empty;
+ Seq = 0;
+ SID = string.Empty;
+ BarcodeRaw = string.Empty;
+ BarcodeMsg = string.Empty;
+ RID = string.Empty;
+ Rect = Rectangle.Empty;
+ Delete = false;
+ Processing = false;
+ DropTime = DateTime.Parse("1982-11-23");
+ BarcodeStart = DateTime.Parse("1982-11-23");
+ BarcodeEnd = DateTime.Parse("1982-11-23");
+ PlcStartTime = DateTime.Parse("1982-11-23");
+ PlcEndTime = DateTime.Parse("1982-11-23");
+ InTime = DateTime.Parse("1982-11-23");
+ OutTime = DateTime.Parse("1982-11-23");
+ ZoneIntime = DateTime.Parse("1982-11-23");
+
+ index = -1;
+ oPort = -1;
+ iPort = -1;
+ Size = string.Empty;
+ }
+ public CItem Clone()
+ {
+ var item = new CItem();
+ item.Qty = Qty;
+ item.Seq = Seq;//0;
+ item.SID =SID;// string.Empty;
+ item.BarcodeRaw = BarcodeRaw;//string.Empty;
+ item.BarcodeMsg = BarcodeMsg;//string.Empty;
+ item.RID = RID;//string.Empty;
+ item.Rect = Rect;//Rectangle.Empty;
+ item.Delete = Delete;//DropTime;//;
+
+ item.DropTime =DropTime;// DateTime.Parse("1982-11-23");
+ item.BarcodeStart =BarcodeStart;// DateTime.Parse("1982-11-23");
+ item.BarcodeEnd = BarcodeEnd;//DropTime;//.Parse("1982-11-23");
+ item.PlcStartTime = PlcStartTime;//DateTime.Parse("1982-11-23");
+ item.PlcEndTime =PlcEndTime;// DateTime.Parse("1982-11-23");
+ item.InTime = InTime;//DropTime;//.Parse("1982-11-23");
+ item.OutTime = OutTime;//DateTime.Parse("1982-11-23");
+ item.ZoneIntime = ZoneIntime;//DateTime.Parse("1982-11-23");
+ item.index = index;
+ item.oPort = oPort;
+ item.iPort = iPort;
+ item.Size = Size;
+ return item;
+ }
+
+ }
+}
diff --git a/Handler/CapCleaningControl/CMenu.cs b/Handler/CapCleaningControl/CMenu.cs
new file mode 100644
index 0000000..4112084
--- /dev/null
+++ b/Handler/CapCleaningControl/CMenu.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace UIControl
+{
+
+
+ [Serializable]
+ public class CMenuButton
+ {
+ public eButtonType Shape { get; set; }
+ public string Text { get; set; }
+ public string Tag { get; set; }
+ public Rectangle Rect { get; set; }
+ public Color BackColor { get; set; }
+ public Color ForeColor { get; set; }
+ public Color OverColor { get; set; }
+ public Color BorderColor { get; set; }
+ public byte BorderSize { get; set; }
+ public Font Font { get; set; }
+ public CMenuButton() : this(string.Empty, string.Empty) { }
+ public CMenuButton(string text, string tag)
+ {
+ Font = null;
+ BorderColor = Color.Black;
+ BorderSize = 5;
+ Shape = eButtonType.Rectangle;
+ this.Text = text;
+ this.Tag = tag;
+ BackColor = Color.White;
+ OverColor = Color.Gold;
+ ForeColor = Color.Black;
+ text = "Button";
+ }
+ public string menutag { get; set; }
+ }
+
+ [Serializable]
+ public class CMenu
+ {
+ public string Title { get; set; }
+ public string Text { get; set; }
+ public string Tag { get; set; }
+ public RectangleF Rect { get; set; }
+ public Boolean Focus { get; set; }
+ public Boolean Select { get; set; }
+ public eMsgIcon Icon { get; set; }
+ public CMenuButton[] buttons { get; set; }
+ public Font Font { get; set; }
+ public Color BackColor { get; set; }
+ public Color ForeColor { get; set; }
+ public Color BorderColor { get; set; }
+
+ ///
+ /// 반드시 사용자의 허가를 받아야 넘어갈 수 있는 메뉴
+ ///
+ public Boolean RequireInput { get; set; }
+
+ public CMenu() : this("Contents", "Title", "tag", eMsgIcon.Info, null) { }
+
+ public CMenu(string text_, string title_, string tag_, eMsgIcon icon_, params CMenuButton[] buttons_)
+ {
+ this.Tag = tag_;
+ this.Title = title_;
+ this.Text = text_;
+ this.Icon = icon_;
+ this.buttons = buttons_;
+ this.Font = new Font("맑은 고딕", 15, FontStyle.Bold);
+ BackColor = Color.White;
+ ForeColor = Color.Black;
+ BorderColor = Color.Orange;
+ RequireInput = false;
+
+ }
+ public float X { get { return Rect.X; } }
+ public float Y { get { return Rect.Y; } }
+ public float W { get { return Rect.Width; } }
+ public float H { get { return Rect.Height; } }
+ }
+}
diff --git a/Handler/CapCleaningControl/CPicker.cs b/Handler/CapCleaningControl/CPicker.cs
new file mode 100644
index 0000000..8cd9a29
--- /dev/null
+++ b/Handler/CapCleaningControl/CPicker.cs
@@ -0,0 +1,90 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+
+namespace UIControl
+{
+ public class CPicker
+ {
+
+ ///
+ /// 언로드포트 위치(L/R)
+ ///
+ public string PortPos { get; set; }
+ ///
+ /// 프린트 위치(H/L)
+ ///
+ public string PrintPos { get; set; }
+
+ ///
+ /// 릴이 있는 경우 해당 릴이 어느 포트에서 왔는지의 번호
+ ///
+ public short PortIndex { get; set; }
+
+ ///
+ /// 현재 작업이 프론트 포트의 작업인가? (portindex 값을 가지고 판단함)
+ ///
+ public Boolean isFrontJob
+ {
+ get
+ {
+ if (PortIndex <= 1) return true;
+ else return false;
+ }
+ }
+
+ public Boolean Overload { get; set; }
+
+
+ ///
+ /// VAC센서의 값을 가지고 있음, 현재 릴이 감지되었는가?
+ ///
+ public Boolean isReelDetect
+ {
+ get
+ {
+ return VacOutput.Where(t => t == true).Count() > 0;
+ }
+ }
+
+ ///
+ /// PICK후 60mm위치에서 미리 확인한 감지 상태값
+ /// 이값을 가지고 도중에 떨궜을 상황을 감지한다
+ ///
+ public Boolean PreCheckItemOn { get; set; }
+ public Boolean HasRealItemOn { get; set; }
+ public Boolean ItemOn { get; set; }
+ //public Boolean[] VacDetect { get; set; }
+ public Boolean[] VacOutput { get; set; }
+ public CPicker()
+ {
+ this.Overload = false;
+ PortPos = "7";
+ PortIndex = -1;
+ HasRealItemOn = false;
+ PreCheckItemOn = false;
+ }
+ public void Clear()
+ {
+ this.Overload = false;
+ ItemOn = false;
+ PortPos = "--";
+ PortIndex = -1;
+ //if(VacDetect != null && VacDetect.Length > 0)
+ //{
+ // for (int i = 0; i < VacDetect.Length; i++)
+ // VacDetect[i] = false;
+ //}
+ if (VacOutput != null && VacOutput.Length > 0)
+ {
+ for (int i = 0; i < VacOutput.Length; i++)
+ VacOutput[i] = false;
+ }
+ }
+
+
+
+ }
+}
diff --git a/Handler/CapCleaningControl/CPort.cs b/Handler/CapCleaningControl/CPort.cs
new file mode 100644
index 0000000..929c097
--- /dev/null
+++ b/Handler/CapCleaningControl/CPort.cs
@@ -0,0 +1,482 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+
+namespace UIControl
+{
+ public class CPort
+ {
+ public Boolean SaftyErr { get; set; }
+ //public Boolean Safty2Err { get; set; }
+ // public Boolean SaftyErr { get { return Safty1Err || Safty2Err; } }
+ public Boolean MotorRun { get; set; }
+ public Boolean MotorDir { get; set; }
+ public int arrowIndex { get; set; }
+ public Boolean LimitUpper { get; set; }
+ public Boolean LimitLower { get; set; }
+ public Boolean OverLoad
+ {
+ get
+ {
+ return LimitLower && DetectUp;
+ }
+ }
+ public byte AlignOK { get; set; }
+ public void AlignReset() { AlignOK = 0; errorCount = 0; }
+ public Boolean Ready { get; set; }
+
+ public Boolean DetectUp { get; set; } //상단에 있는 자재 감지 센서
+
+
+ ///
+ /// 7인치 13인치의 크기 정보를 표시한다
+ ///
+ public string title { get; set; }
+ public int reelNo { get; set; }
+
+ ///
+ /// 차수별 릴 작업 수량이 표시됨
+ ///
+ public int reelCount { get; set; }
+
+ public int errorCount { get; set; }
+ public int CartSize { get; set; }
+
+
+
+ public System.Drawing.Color bgColor { get; set; }
+ private Boolean _enable = false;
+
+ public Color fgColor { get; set; }
+ public Color fgColorCount { get; set; }
+
+ public Rectangle rect_title { get; set; }
+ public RectangleF Rect { get; set; }
+ public Rectangle rect_count { get; set; }
+ public int AnimationStepPort { get; set; }
+
+ ///
+ /// 0:notcart , 1:ready, 2:full
+ ///
+ public ushort State { get; set; }
+
+ public Boolean Enable
+ {
+ get { return _enable; }
+ set
+ {
+ _enable = value;
+ this.bgColor = value ? Color.Lime : Color.FromArgb(43, 43, 43);
+ this.fgColor = value ? Color.White : Color.DimGray;
+ }
+ }
+
+ public CPort()
+ {
+ CartSize = 0;
+ Ready = false;
+ Enable = false;
+ rect_title = Rectangle.Empty;
+ rect_count = Rectangle.Empty;
+ Rect = RectangleF.Empty;
+ reelNo = -1;
+ arrowIndex = 2;
+ reelCount = 0;
+ fgColor = Color.Black;
+ Clear();
+ AlignOK = 0;
+ AnimationStepPort = 9;
+ //Items.Clear();
+ }
+ //public void ClearItem()
+ //{
+ // Items.Clear();
+ //}
+ public void Clear()
+ {
+ CartSize = 0;
+ Enable = true;
+ SaftyErr = false;
+ MotorRun = false;
+ MotorDir = false;
+ LimitUpper = false;
+ LimitLower = false;
+ reelNo = 0;
+ reelCount = 0;
+ DetectUp = false;
+ }
+
+ public void Display(Graphics g, Font fCnt, Font fMsg, Boolean Magneton, Boolean VisionRdy, Boolean VisionEnd, Boolean ItemOn, Boolean VisionLock, int VisionCnt)
+ {
+ if (Enable == false)
+ {
+ g.DrawLine(Pens.DimGray, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom);
+ g.DrawLine(Pens.DimGray, Rect.Right, Rect.Top, Rect.Left, Rect.Bottom);
+ }
+
+ //모터사용시 화살표
+ eDirection DirL = MotorDir == false ? eDirection.TopToBottom : eDirection.BottomToTop;
+ if (MotorRun) UIControl.Common.Draw_Arrow(g, Rect, DirL, arrowIndex, AnimationStepPort, Color.Gold, fMsg);
+
+ //글자표시 (크기 및 작업 수량)
+ var sf = new StringFormat
+ {
+ Alignment = StringAlignment.Center,
+ LineAlignment = StringAlignment.Center,
+ };
+
+
+ //리밋영역표시(상/하)
+ var limitSizeH = (int)(Rect.Height * 0.2);
+
+
+ if (OverLoad == true)//과적
+ {
+ g.FillRectangle(Brushes.Red, Rect);
+ g.DrawString("OVER\nLOAD", fMsg, new SolidBrush(fgColor), Rect, sf);
+ }
+ else
+ {
+ if (errorCount > 5)
+ {
+ g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Gold)), Rect);
+ }
+ else
+ {
+ g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Black)), Rect);
+ }
+
+
+ if (errorCount > 0)
+ {
+ if (errorCount > 05)
+ {
+ g.DrawString(reelCount.ToString() + "\n(ERROR)", fCnt, new SolidBrush(Color.Red), Rect, sf);
+ }
+ else g.DrawString(reelCount.ToString() + "\nE:" + errorCount.ToString(), fCnt, new SolidBrush(Color.Red), Rect, sf);
+ }
+ else
+ {
+
+ g.DrawString(reelCount.ToString(), fCnt, new SolidBrush(fgColor), Rect, sf);
+ }
+ }
+
+ //마그넷상태표시
+ var magheight = 30;
+ var magrect = new RectangleF(this.Rect.Left, this.Rect.Bottom - magheight, this.Rect.Width, magheight);
+ if (Magneton)
+ {
+ g.DrawString("LOCK(" + CartSize.ToString() + ")", new Font("Consolas", 10, FontStyle.Bold), Brushes.Gold, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ }
+ else
+ {
+ g.FillRectangle(Brushes.DimGray, magrect);
+ g.DrawString("UNLOCK(" + CartSize.ToString() + ")", new Font("Consolas", 10, FontStyle.Bold), Brushes.Black, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ }
+
+ //아이템을 가지고 있다면 처리해준다.
+ if (ItemOn)
+ {
+ magrect = new RectangleF(this.Rect.Left, this.Rect.Top, this.Rect.Width, magheight);
+ g.FillRectangle(Brushes.Gold, magrect);
+ g.DrawString("ITEM-ON", new Font("Consolas", 12, FontStyle.Bold), Brushes.Black, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ }
+
+
+
+ //데두리표시 ( 비활성 회색, 활성 감지 : 라임, 미감지 흰색)
+ Color borderL = Enable ? (LimitUpper ? Color.Red : (LimitLower ? Color.Blue : (DetectUp ? Color.Lime : Color.White))) : Color.DimGray;
+ if (OverLoad) borderL = Color.White;
+ int bordersize = 7;//ortL.enable ? 7 : 1;
+
+ //비젼영역추가 201228
+ using (Font f = new Font("Consolas", 8, FontStyle.Bold))
+ {
+ var vrect = new RectangleF(Rect.Right, Rect.Top, 20, Rect.Height);
+ Color fcolor2 = Color.Gray;
+ var drawstr = "VISON RDY";
+ if (VisionEnd) { drawstr = "VISION END"; fcolor2 = Color.Lime; }
+ else if (VisionRdy) { drawstr = "VISION RUN"; fcolor2 = Color.Gold; };
+ drawstr += "(" + VisionCnt.ToString() + ")";
+ if (VisionLock) g.DrawRect(vrect, Color.Blue, 7);
+ else g.DrawRect(vrect, fcolor2, 7);
+ g.DrawString(drawstr, f, new SolidBrush(fcolor2), vrect, new StringFormat
+ {
+ Alignment = StringAlignment.Center,
+ LineAlignment = StringAlignment.Center,
+ FormatFlags = StringFormatFlags.DirectionVertical
+ });
+
+ vrect = new RectangleF(Rect.Left - 20, Rect.Top, 20, Rect.Height);
+ fcolor2 = Color.Gray;
+ drawstr = "PORT RDY(" + this.AlignOK.ToString() + ")";
+ if (Ready) fcolor2 = Color.Lime;
+ g.DrawRect(vrect, fcolor2, 7);
+ g.DrawString(drawstr, f, new SolidBrush(fcolor2), vrect, new StringFormat
+ {
+ Alignment = StringAlignment.Center,
+ LineAlignment = StringAlignment.Center,
+ FormatFlags = StringFormatFlags.DirectionVertical
+ });
+ }
+
+
+ if (OverLoad == false)
+ {
+ var fontsize = 9;
+ using (Font fnt = new Font("Consolas", fontsize, FontStyle.Bold))
+ {
+ //상단 리밋은 상단에
+ if (LimitUpper)
+ {
+ var msgLU = "+ LIMIT";
+ var fsize = g.MeasureString(msgLU, fnt);
+ var msgW = fsize.Width * 1.5f;
+ var msgH = fsize.Height * 1.5f;
+ if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f;
+
+ var RectMsgL = new RectangleF(
+ Rect.Left + (Rect.Width - msgW) / 2.0f,
+ Rect.Top - msgH - bordersize / 2.0f + 1,
+ msgW, msgH);
+
+ g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Red)), RectMsgL);
+ // g.DrawRectangle(Pens.Black, RectMsgL);
+ g.DrawString(msgLU, fnt, Color.White, RectMsgL);
+
+ }
+
+ //아이템 감지신호는 상단 아래쪽으로
+ if (Ready)
+ {
+ //var msgLU = "READY";
+ //var fsize = g.MeasureString(msgLU, fnt);
+ //var msgW = fsize.Width * 1.5f;
+ //var msgH = fsize.Height * 1.5f;
+ //if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f;
+
+ //var RectMsgL = new RectangleF(
+ //Rect.Left + (Rect.Width - msgW) / 2.0f,
+ //Rect.Top + bordersize / 2.0f - 1,
+ //msgW, msgH);
+
+ //g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Lime)), RectMsgL);
+ //// g.DrawRectangle(Pens.Black, RectMsgL);
+ //g.DrawString(msgLU, fnt, Color.Black, RectMsgL);
+ }
+
+
+ //하단 리밋은 하단에표시
+ if (LimitLower)
+ {
+ var msgLU = "- LIMIT";
+ var fsize = g.MeasureString(msgLU, fnt);
+ var msgW = fsize.Width * 1.5f;
+ var msgH = fsize.Height * 1.5f;
+ if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f;
+
+ var RectMsgL = new RectangleF(
+ Rect.Left + (Rect.Width - msgW) / 2.0f,
+ Rect.Top - msgH - bordersize / 2.0f + 1,
+ msgW, msgH);
+
+ g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Blue)), RectMsgL);
+ //g.DrawString(msgLU, fnt, Brushes.White, RectMsgL, sf);
+ g.DrawString(msgLU, fnt, Color.White, RectMsgL);
+
+ }
+
+
+ //아이템 감지
+ if (DetectUp)
+ {
+ var msgLU = "DETECT";
+ var fsize = g.MeasureString(msgLU, fnt);
+ var msgW = fsize.Width * 1.5f;
+ var msgH = fsize.Height * 1.5f;
+ if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f;
+
+ var RectMsgL = new RectangleF(
+ Rect.Left + (Rect.Width - msgW) / 2.0f,
+ Rect.Bottom + 1,
+ msgW, msgH);
+
+ g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Lime)), RectMsgL);
+ //g.DrawRectangle(Pens.Black, RectMsgL);
+ g.DrawString(msgLU, fnt, Color.Black, RectMsgL);
+
+ }
+
+ //안전 오류는 중앙에
+
+ if (SaftyErr)
+ {
+ var msgS = "SAFTY ERROR";
+ var fsize = g.MeasureString(msgS, fMsg);
+ var msgW = fsize.Width * 1.5f;
+ var msgH = fsize.Height * 1.5f;
+ if (msgW > this.Rect.Width * 0.80f) msgW = this.Rect.Width * 0.8f;
+
+ var RectMsgL = new RectangleF(
+ Rect.Left + (Rect.Width - msgW) / 2.0f,
+ Rect.Top + (Rect.Height - msgH) / 2.0f,
+ msgW, msgH);
+
+ g.FillRectangle(new SolidBrush(Color.FromArgb(240, Color.Khaki)), RectMsgL);
+ g.DrawRectangle(Pens.Black, RectMsgL);
+ g.DrawString(msgS, fMsg, Color.Maroon, RectMsgL);
+
+ }
+ }
+
+ }
+
+ //테두리가 리밋영역을 감추도록 그린다
+ g.DrawRectangle(new Pen(borderL, bordersize), Rect.Left, Rect.Top, Rect.Width, Rect.Height);
+
+
+
+
+ sf.Dispose();
+ }
+
+ public void DisplayConv(Graphics g, Font fCnt, Font fMsg, Boolean Magneton, Boolean VisionRdy, Boolean VisionEnd, Boolean ItemOn, Boolean VisionLock, int VisionCnt, bool cvbusy, bool cvreadyoff)
+ {
+ if (Enable == false)
+ {
+ g.DrawLine(Pens.DimGray, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom);
+ g.DrawLine(Pens.DimGray, Rect.Right, Rect.Top, Rect.Left, Rect.Bottom);
+ }
+
+
+ //모터사용시 화살표
+ eDirection DirL = MotorDir == false ? eDirection.TopToBottom : eDirection.BottomToTop;
+ if (MotorRun) UIControl.Common.Draw_Arrow(g, Rect, DirL, arrowIndex, AnimationStepPort, Color.Gold, fMsg);
+
+ //글자표시 (크기 및 작업 수량)
+ var sf = new StringFormat
+ {
+ Alignment = StringAlignment.Center,
+ LineAlignment = StringAlignment.Center,
+ };
+
+
+ //리밋영역표시(상/하)
+ var limitSizeH = (int)(Rect.Height * 0.2);
+
+
+ if (errorCount > 5)
+ {
+ g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Gold)), Rect);
+ }
+ else
+ {
+ if (cvbusy)
+ g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Tomato)), Rect);
+ if (cvreadyoff)
+ g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Red)), Rect);
+ else
+ g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Black)), Rect);
+ }
+
+ if (reelCount != 0)
+ {
+ //버튼형태처럼 보이게한다.
+ g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.Gold)), Rect);
+ g.DrawRectangle(new Pen(Color.WhiteSmoke, 5), Rect.Left, Rect.Top, Rect.Width, Rect.Height);
+ }
+
+ if (errorCount > 0)
+ {
+ if (errorCount > 05)
+ {
+ g.DrawString(reelCount.ToString() + "\n(ERROR)", fCnt, new SolidBrush(Color.Red), Rect, sf);
+ }
+ else g.DrawString(reelCount.ToString() + "\nE:" + errorCount.ToString(), fCnt, new SolidBrush(Color.Red), Rect, sf);
+ }
+ else if (reelCount > 0)
+ {
+
+ g.DrawString(reelCount.ToString(), fCnt, new SolidBrush(fgColor), Rect, sf);
+ }
+
+ //마그넷상태표시
+ var magheight = 30;
+ var magrect = new RectangleF(this.Rect.Left, this.Rect.Bottom - magheight, this.Rect.Width, magheight);
+ //if (Magneton)
+ //{
+ // g.DrawString("LOCK(" + CartSize.ToString() + ")", new Font("Consolas", 10, FontStyle.Bold), Brushes.Gold, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ //}
+ //else
+ //{
+ // g.FillRectangle(Brushes.DimGray, magrect);
+ // g.DrawString("UNLOCK(" + CartSize.ToString() + ")", new Font("Consolas", 10, FontStyle.Bold), Brushes.Black, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ //}
+
+ //아이템을 가지고 있다면 처리해준다.
+ if (ItemOn)
+ {
+ magrect = new RectangleF(this.Rect.Left, this.Rect.Top, this.Rect.Width, magheight);
+ g.FillRectangle(Brushes.Gold, magrect);
+ g.DrawString("ITEM-ON", new Font("Consolas", 12, FontStyle.Bold), Brushes.Black, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ }
+
+
+
+ //데두리표시 ( 비활성 회색, 활성 감지 : 라임, 미감지 흰색)
+ Color borderL = Enable ? Color.White : Color.DimGray;
+ //if (OverLoad) borderL = Color.White;
+ int bordersize = 7;//ortL.enable ? 7 : 1;
+
+ //비젼영역추가 201228
+ using (Font f = new Font("Consolas", 8, FontStyle.Bold))
+ {
+ var vrect = new RectangleF(Rect.Right, Rect.Top, 20, Rect.Height);
+ Color fcolor2 = Color.Gray;
+ var drawstr = "VISON RDY";
+ if (VisionEnd) { drawstr = "VISION END"; fcolor2 = Color.Lime; }
+ else if (VisionRdy) { drawstr = "VISION RUN"; fcolor2 = Color.Gold; };
+ drawstr += "(" + VisionCnt.ToString() + ")";
+ if (VisionLock) g.DrawRect(vrect, Color.Blue, 7);
+ else g.DrawRect(vrect, fcolor2, 7);
+ g.DrawString(drawstr, f, new SolidBrush(fcolor2), vrect, new StringFormat
+ {
+ Alignment = StringAlignment.Center,
+ LineAlignment = StringAlignment.Center,
+ FormatFlags = StringFormatFlags.DirectionVertical
+ });
+
+ vrect = new RectangleF(Rect.Left - 20, Rect.Top, 20, Rect.Height);
+ fcolor2 = Color.Gray;
+ drawstr = "EXT RDY";
+ if (cvreadyoff) fcolor2 = Color.Red;
+ else if (Ready) fcolor2 = Color.Lime;
+ g.DrawRect(vrect, fcolor2, 7);
+ g.DrawString(drawstr, f, new SolidBrush(fcolor2), vrect, new StringFormat
+ {
+ Alignment = StringAlignment.Center,
+ LineAlignment = StringAlignment.Center,
+ FormatFlags = StringFormatFlags.DirectionVertical
+ });
+ }
+
+
+ //테두리가 리밋영역을 감추도록 그린다
+ if (reelCount == 0)
+ {
+ g.DrawRectangle(new Pen(borderL, bordersize), Rect.Left, Rect.Top, Rect.Width, Rect.Height);
+ }
+
+
+
+
+
+ sf.Dispose();
+ }
+
+
+ }
+}
diff --git a/Handler/CapCleaningControl/Common.cs b/Handler/CapCleaningControl/Common.cs
new file mode 100644
index 0000000..ba367e3
--- /dev/null
+++ b/Handler/CapCleaningControl/Common.cs
@@ -0,0 +1,126 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+
+namespace UIControl
+{
+ public static class Common
+ {
+ public static void Draw_Arrow(Graphics g, RectangleF rect, eDirection dir, int arrowindex, int animstep, Color basecolor,Font f )
+ {
+ //컨베어 RUN 표시기 표시
+ var paddingX = rect.Height * 0.15f; //상하단에 이만큼의 여백을 준다
+ var paddingY = rect.Height * 0.15f;
+ var sigHeight = rect.Height - (paddingX * 2.0f);
+ var sigWidth = rect.Width / animstep;
+
+ if (dir == eDirection.BottomToTop || dir == eDirection.TopToBottom)
+ {
+ paddingX = rect.Width * 0.15f;
+ paddingY = rect.Height / 10.0f;
+ sigWidth = rect.Width - (paddingX * 2.0f);
+ sigHeight = rect.Height / 4.5f;
+ }
+ List pts = new List();
+
+ //사각영역을 표시해준다.
+ //if (dir == eDirection.LeftToRight || dir == eDirection.RightToLeft)
+ //{
+ // var rect2width = rect.Width / animstep;
+ // for (int i = 0; i < animstep; i++)
+ // {
+ // var rect2 = new RectangleF(rect.X + i * rect2width, rect.Y, rect2width, rect.Height);
+ // g.DrawRectangle(new Pen(Color.FromArgb(100, Color.Gray)), rect2.Left, rect2.Top, rect2.Width, rect2.Height);
+ // g.DrawString(i.ToString(), this.Font, Brushes.White, rect2.Left, rect2.Top);
+ // }
+ //}
+ //else
+ //{
+ // var rect2width = rect.Height / animstep;
+ // for (int i = 0; i < animstep; i++)
+ // {
+ // var rect2 = new RectangleF(rect.X, rect.Y + i * rect2width, rect.Width, rect2width);
+ // g.DrawRectangle(new Pen(Color.FromArgb(100, Color.Gray)), rect2.Left, rect2.Top, rect2.Width, rect2.Height);
+ // g.DrawString(i.ToString(), this.Font, Brushes.White, rect2.Left, rect2.Top);
+ // }
+ //}
+
+
+
+ var bX = rect.X + paddingX;
+ var bY = rect.Y + paddingY;
+
+ if (dir == eDirection.LeftToRight)
+ {
+ var gridSize = rect.Width / animstep;
+ pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth), rect.Y + paddingX));
+ pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX));
+ pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth * 2.0f, rect.Y + paddingX + sigHeight / 2.0f));
+ pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX + sigHeight));
+ pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth), rect.Y + paddingX + sigHeight));
+ pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX + sigHeight / 2.0f));
+ }
+ else if (dir == eDirection.RightToLeft)
+ {
+ var gridSize = rect.Width / animstep;
+ paddingY = rect.Height * 0.1f; //상,하 여백을 10%크기로 한다
+ sigHeight = rect.Height - paddingY * 2.0f;
+
+ bX = rect.X + ((animstep - 1) - arrowindex) * gridSize;
+ bY = rect.Y + paddingY;
+
+ pts.Add(new PointF(bX, bY));
+ pts.Add(new PointF(bX - gridSize, bY + sigHeight / 2.0f));
+ pts.Add(new PointF(bX, bY + sigHeight));
+ pts.Add(new PointF(bX + gridSize, bY + sigHeight));
+ pts.Add(new PointF(bX, bY + sigHeight / 2.0f));
+ pts.Add(new PointF(bX + gridSize, bY));
+ }
+ else if (dir == eDirection.TopToBottom)
+ {
+ var gridSize = rect.Height / animstep;
+ paddingX = rect.Width * 0.2f; //상,하 여백을 10%크기로 한다
+ sigWidth = rect.Width - paddingX * 2.0f;
+
+ bX = rect.X + paddingX;
+ bY = rect.Y + (arrowindex + 1) * gridSize;
+
+
+ pts.Add(new PointF(bX, bY));
+ pts.Add(new PointF(bX + (sigWidth / 2.0f), bY + gridSize));
+ pts.Add(new PointF(bX + sigWidth, bY));
+ pts.Add(new PointF(bX + sigWidth, bY - gridSize));
+ pts.Add(new PointF(bX + (sigWidth / 2.0f), bY));
+ pts.Add(new PointF(bX, bY - gridSize));
+
+ }
+ else if (dir == eDirection.BottomToTop)
+ {
+ var gridSize = rect.Height / animstep;
+ paddingX = rect.Width * 0.2f; //상,하 여백을 10%크기로 한다
+ sigWidth = rect.Width - paddingX * 2.0f;
+
+ bX = rect.X + paddingX;
+ bY = rect.Y + ((animstep - 1) - arrowindex) * gridSize;
+
+
+ pts.Add(new PointF(bX, bY));
+ pts.Add(new PointF(bX + (sigWidth / 2.0f), bY - gridSize));
+ pts.Add(new PointF(bX + sigWidth, bY));
+ pts.Add(new PointF(bX + sigWidth, bY + gridSize));
+ pts.Add(new PointF(bX + (sigWidth / 2.0f), bY));
+ pts.Add(new PointF(bX, bY + gridSize));
+ }
+ if (pts.Count > 0)
+ {
+ g.FillPolygon(new SolidBrush(Color.FromArgb(10, basecolor)), pts.ToArray());
+ g.DrawPolygon(new Pen(Color.FromArgb(100, basecolor)), pts.ToArray());
+ }
+
+ //g.DrawString(arrowindex.ToString(), f, Brushes.Yellow, rect.Left, rect.Top - 20);
+ }
+
+ }
+}
diff --git a/Handler/CapCleaningControl/EnumStruct.cs b/Handler/CapCleaningControl/EnumStruct.cs
new file mode 100644
index 0000000..957388f
--- /dev/null
+++ b/Handler/CapCleaningControl/EnumStruct.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace UIControl
+{
+ public enum eMsgIcon
+ {
+ None,
+ Info,
+ Alert,
+ Error,
+ Help
+ }
+ public enum eButtonType
+ {
+ Rectangle = 0,
+ Circle,
+ }
+ public enum eDirection
+ {
+ LeftToRight,
+ RightToLeft,
+ BottomToTop,
+ TopToBottom
+ }
+ public partial class HMI
+ {
+ enum eAxis : byte
+ {
+ Y_P = 0,
+ Z_F,
+ Z_R,
+ X_F,
+ X_R,
+ }
+ public enum eScean : byte
+ {
+ Nomal = 0,
+ MotHome,
+
+ xmove,
+ }
+ }
+}
diff --git a/Handler/CapCleaningControl/Events.cs b/Handler/CapCleaningControl/Events.cs
new file mode 100644
index 0000000..f8071f0
--- /dev/null
+++ b/Handler/CapCleaningControl/Events.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace UIControl
+{
+ public partial class HMI
+ {
+ public class MessageArgs : EventArgs
+ {
+ public string Message { get; set; }
+ public Boolean isError { get; set; }
+ public MessageArgs(string m, Boolean err)
+ {
+ this.Message = m;
+ this.isError = err;
+ }
+ }
+
+
+ public event EventHandler Message;
+
+ }
+}
diff --git a/Handler/CapCleaningControl/HMI.cs b/Handler/CapCleaningControl/HMI.cs
new file mode 100644
index 0000000..0537a5f
--- /dev/null
+++ b/Handler/CapCleaningControl/HMI.cs
@@ -0,0 +1,1682 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using System.Windows.Forms;
+using AR;
+
+namespace UIControl
+{
+ public partial class HMI : System.Windows.Forms.Control
+ {
+ arDev.DIO.IDIO dio = null;
+ arDev.MOT.IMotion mot = null;
+
+ #region "Variable - Private"
+ Timer tm;
+ Boolean _ardebugmode = false;
+ eScean _scean = eScean.Nomal;
+ //기타 내부 변수
+ int AnimationStepConv = 30; //컨베어 이동 애니메이션 최대 값
+ //int AnimationStepPort = 9; //포트 이동 애니메이션 최대 값
+ Boolean bRemakeRect = true; //이값이 활성화되면 각 영역을 다시 그리게 된다
+ DateTime updatetime = DateTime.Now; //화면을 다시 그린 시간
+ Brush BRPortBg = new SolidBrush(Color.FromArgb(50, Color.DimGray));
+ Brush BRDetectDn = new SolidBrush(Color.FromArgb(50, Color.DimGray));
+ StringFormat sfCenter;
+ StringFormat sfLeft = new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center };
+ SolidBrush brVacOff = new SolidBrush(Color.FromArgb(150, Color.White));
+ SolidBrush brVacOn = new SolidBrush(Color.FromArgb(200, Color.Lime));
+ Font arFont_MotPosName { get; set; }
+
+ Pen penVacOn = new Pen(Color.Red, 5);
+ Pen penVacOff = new Pen(Color.Black, 5);
+
+ //영역(큰 그림?) (bRemakeRect 에 의 해 생성된다)
+ RectangleF rect_main = RectangleF.Empty;
+ // RectangleF rect_frontShuttle = RectangleF.Empty;
+ //RectangleF rect_rearShuttle = RectangleF.Empty;
+ RectangleF rect_conveyor = RectangleF.Empty;
+ RectangleF rect_picker = RectangleF.Empty;
+ RectangleF rect_printl = RectangleF.Empty;
+ RectangleF rect_printr = RectangleF.Empty;
+
+
+ //영역(피커)
+ RectangleF rect_picker_left = RectangleF.Empty;
+ RectangleF rect_picker_front_vac1 = RectangleF.Empty;
+ RectangleF rect_picker_front_vac2 = RectangleF.Empty;
+ RectangleF rect_picker_front_vac3 = RectangleF.Empty;
+ RectangleF rect_picker_front_vac4 = RectangleF.Empty;
+
+ //X축 포트 (F-L:0, F-R:1, R-L:2, R-R:3
+ //RectangleF[] rect_port = new RectangleF[4];
+ RectangleF[] rect_zone = new RectangleF[11];
+
+ //CIcon[] icons = new CIcon[7];
+ List Buttons = new List();
+ List menuButtons = new List();
+
+ #endregion
+
+ #region "Variable - Public"
+ // public double[] arMotorPosition = new double[] { 0, 0, 0, 0, 0 };
+ public int ConveyorRunPoint = 1; //컨베어 모터 이동시 이동 화살표의 위치값(내부 타이머에의해 증가함)
+ public double arMcLengthW = 1460;
+ public double arMcLengthH = 1350;//
+ public Boolean arJoystickOn = false;
+ public int arJoystickGroup = 0;
+ public bool CVLeftBusy = false;
+ public bool CVLeftReady = false;
+ public bool CVRightBusy = false;
+ public bool CVRightReady = false;
+ #endregion
+
+ #region "Property"
+
+ public int arCountV0 { get; set; }
+ public int arCountV1 { get; set; }
+ public int arCountV2 { get; set; }
+
+ public int arCountPrint0 { get; set; }
+ public int arCountPrint1 { get; set; }
+
+ public Boolean arPortLItemOn { get; set; }
+ public Boolean arPortRItemOn { get; set; }
+
+ public Boolean arPLItemON { get; set; }
+ public Boolean arPRItemON { get; set; }
+ public Boolean arMagnet0 { get; set; }
+ public Boolean arMagnet1 { get; set; }
+ public Boolean arMagnet2 { get; set; }
+ public Boolean arPickerSafeZone { get; set; }
+
+ private Padding _padding = new Padding(0);
+ public new Padding Padding { get { return _padding; } set { _padding = value; bRemakeRect = true; this.Invalidate(); } }
+
+ ///
+ /// 현재 메뉴가 표시되어있는가?
+ ///
+ public Boolean HasPopupMenu { get; private set; }
+ ///
+ /// 현재표시된 메뉴는 사용자의 입력을 반드시 받아야 하는가?
+ ///
+ public Boolean PopupMenuRequireInput { get; private set; }
+ public Font arFont_PortMessage { get; set; }
+
+
+ public eScean Scean { get { return _scean; } set { _scean = value; bRemakeRect = true; this.Invalidate(); } }
+
+ //컨베이어에 설치된 자재 감지 센서
+ public Boolean[] arDI_Cv_Detect { get; set; }
+ //컨베이어 입구 안전 센서
+ public Boolean arInitMOT { get; set; }
+ public Boolean arJobEND { get; set; }
+ public Boolean arLowDiskSpace { get; set; } //용량 부족 메세지 여부
+ public double arFreespace { get; set; } //남은 디스크 용량 비율
+
+ public Boolean arFGVision0RDY { get; set; }
+ public Boolean arFGVision1RDY { get; set; }
+ public Boolean arFGVision2RDY { get; set; }
+
+ public Boolean arFGVision0END { get; set; }
+ public Boolean arFGVision1END { get; set; }
+ public Boolean arFGVision2END { get; set; }
+
+ public Boolean arFGPrinter0RDY { get; set; }
+ public Boolean arFGPrinter1RDY { get; set; }
+ public Boolean arFGPrinter2RDY { get; set; }
+
+ public Boolean arFGPrinter0END { get; set; }
+ public Boolean arFGPrinter1END { get; set; }
+ public Boolean arFGPrinter2END { get; set; }
+
+
+ public Boolean arDI_SaftyOk { get; set; }
+
+ public string arMotPosNamePX { get; set; }
+ public string arMotPosNamePZ { get; set; }
+ public string arMotPosNameLM { get; set; }
+ public string arMotPosNameLZ { get; set; }
+ public string arMotPosNameRM { get; set; }
+ public string arMotPosNameRZ { get; set; }
+
+ public Boolean arMotILockPKX { get; set; }
+ public Boolean arMotILockPKZ { get; set; }
+ public Boolean arMotILockPLM { get; set; }
+ public Boolean arMotILockPLZ { get; set; }
+ public Boolean arMotILockPRM { get; set; }
+ public Boolean arMotILockPRZ { get; set; }
+
+ public Boolean arMotILockPRL { get; set; }
+ public Boolean arMotILockPRR { get; set; }
+ public Boolean arMotILockVS0 { get; set; }
+ public Boolean arMotILockVS1 { get; set; }
+ public Boolean arMotILockVS2 { get; set; }
+ public Boolean arMotILockCVL { get; set; }
+ public Boolean arMotILockCVR { get; set; }
+
+ public Boolean PrintLPICK { get; set; }
+ public Boolean PrintRPICK { get; set; }
+
+ public Boolean L_PICK_FW { get; set; }
+ public Boolean L_PICK_BW { get; set; }
+ public Boolean R_PICK_FW { get; set; }
+ public Boolean R_PICK_BW { get; set; }
+
+ public Boolean[] arMOT_LimUp = new bool[] { false, false, false, false, false, false, false };
+ public Boolean[] arMOT_LimDn = new bool[] { false, false, false, false, false, false, false };
+ public Boolean[] arMOT_Origin = new bool[] { false, false, false, false, false, false, false };
+ public Boolean[] arMOT_Alm = new bool[] { false, false, false, false, false, false, false };
+ public Boolean[] arMOT_HSet = new bool[] { false, false, false, false, false, false, false };
+ public Boolean[] arMOT_SVOn = new bool[] { false, false, false, false, false, false, false };
+
+ public Boolean arFlag_Minspace { get; set; }
+
+ public byte arUnloaderSeq { get; set; }
+ public Boolean arFlag_UnloaderBusy { get; set; }
+ public Boolean arFlag_UnloaderErr { get; set; }
+ public Boolean arConn_REM { get; set; }
+
+
+ public Boolean arFG_RDY_YP_FPICKON { get; set; }
+ public Boolean arFG_RDY_YP_FPICKOF { get; set; }
+ public Boolean arFG_RDY_YP_RPICKON { get; set; }
+ public Boolean arFG_RDY_YP_RPICKOF { get; set; }
+
+ public Boolean arFG_CMD_YP_FPICKON { get; set; }
+ //public Boolean arFG_CMD_YP_FPICKOF { get; set; }
+ public Boolean arFG_CMD_YP_RPICKON { get; set; }
+ //public Boolean arFG_CMD_YP_RPICKOF { get; set; }
+
+
+
+
+ //비상정지 센서 상태
+ public Boolean arDI_Emergency { get; set; }
+
+ public Boolean arDIAir { get; set; }
+
+ public Boolean arConn_MOT { get; set; }
+ public Boolean arConn_DIO { get; set; }
+ public Boolean arAIRDetect { get; set; }
+ public Boolean arConn_BCD { get; set; }
+ public Boolean arConn_PLC { get; set; }
+
+ public int arLastDetectIndex { get; set; }
+
+
+ public Boolean arDebugMode { get { return _ardebugmode; } set { this._ardebugmode = value; Invalidate(); } }
+
+ public CPort[] arVar_Port { get; set; }
+ public CPicker[] arVar_Picker { get; set; }
+
+ public Boolean arConvRun { get; set; }
+
+
+ public Boolean arIsRunning { get; set; }
+
+
+ private List zitem = new List();
+ public long[] zonetime = new long[11];
+
+ public Font arFont_count { get; set; }
+ public Font arFont_picker { get; set; }
+
+ public double arMotorLengthY { get; set; }
+ public double arMotorLengthZL { get; set; }
+ public double arMotorLengthZR { get; set; }
+
+ private double[] _armotpos = new double[] { 0, 0, 0, 0, 0, 0, 0 };
+ public double[] arMotorPosition { get { return _armotpos; } set { _armotpos = value; } }
+ private double[] _arhomepgoress = new double[] { 0, 0, 0, 0, 0, 0, 0 };
+ public double[] arHomeProgress { get { return _arhomepgoress; } set { _arhomepgoress = value; } }
+
+ private CMenu[] _menus = null;
+ public CMenu[] arMenus { get { return _menus; } set { _menus = value; this.Invalidate(); } }
+
+ #endregion
+
+ public Boolean PickerSafezone = false;
+ public HMI()
+ {
+ // Set Optimized Double Buffer to reduce flickering
+ this.SetStyle(ControlStyles.UserPaint, true);
+ this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
+ this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
+ this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
+ this.SetStyle(ControlStyles.ContainerControl, false);
+ this.SetStyle(ControlStyles.Selectable, true);
+
+ // Redraw when resized
+ this.SetStyle(ControlStyles.ResizeRedraw, true);
+
+ this.Resize += Loader_Resize;
+
+ sfCenter = new StringFormat();
+ sfCenter.Alignment = StringAlignment.Center;
+ sfCenter.LineAlignment = StringAlignment.Center;
+
+
+ tm = new Timer();
+ tm.Interval = 50; //10frame;
+ tm.Tick += Tm_Tick;
+
+ arLastDetectIndex = -1;
+ arFont_PortMessage = new Font("Consolas", 11, FontStyle.Bold);
+ arFont_picker = new Font("Arial", 10, FontStyle.Bold);
+ arFont_MotPosName = new Font("Consolas", 10, FontStyle.Bold);
+
+ arUnloaderSeq = 0;
+ arMotorLengthY = 400;
+ arMotorLengthZL = 580;
+ arMotorLengthZR = 590;
+
+ arDI_Cv_Detect = new bool[8];
+ for (int i = 0; i < arDI_Cv_Detect.Length; i++)
+ arDI_Cv_Detect[i] = false;
+
+ bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
+ if (designMode == false) tm.Start();
+
+ arFont_count = new Font("Consolas", 30, FontStyle.Bold);
+
+ //기본수량설정됨
+ arVar_Port = new CPort[3];
+ arVar_Picker = new CPicker[1];
+
+ for (int i = 0; i < rect_zone.Length; i++)
+ rect_zone[i] = RectangleF.Empty;
+
+ for (int i = 0; i < zonetime.Length; i++)
+ zonetime[i] = 0;
+
+ //미리 10개를 생성한다. 슬롯에 10개이상 생기기 않는다.
+ zitem = new List(10);
+ for (int i = 0; i < zitem.Count; i++)
+ zitem[i] = new CItem();
+ }
+
+
+ public void ClearMessage()
+ {
+
+ }
+
+ private List lkitemsF = new List();
+ private List lkitemsR = new List();
+
+
+
+ #region "Common Data & Device"
+
+ DateTime UpdateTime = DateTime.Now.AddSeconds(-1);
+
+ //public void SetFLAG(arUtil.IInterLock dio_)
+ //{
+ // this.flag = dio_;
+ // this.flag.ValueChanged += Flag_ValueChanged;
+ //}
+ public void SetDIO(arDev.DIO.IDIO dio_)
+ {
+ this.dio = dio_;
+ this.dio.IOValueChanged += Dio_IOValueChanged;
+ }
+ public void SetMOT(arDev.MOT.IMotion dio_)
+ {
+ this.mot = dio_;
+ this.mot.HomeStatusChanged += Mot_HomeStatusChanged;
+ this.mot.PositionChanged += Mot_PositionChanged;
+ this.mot.StatusChanged += Mot_StatusChanged;
+ }
+ private void Dio_IOValueChanged(object sender, arDev.DIO.IOValueEventArgs e)
+ {
+ var ts = DateTime.Now - UpdateTime;
+ if (ts.TotalMilliseconds < 500) return;
+ else UpdateTime = DateTime.Now;
+ this.Invalidate();
+ }
+
+ private void Mot_StatusChanged(object sender, arDev.MOT.StatusChangeEventArags e)
+ {
+ var ts = DateTime.Now - UpdateTime;
+ if (ts.TotalMilliseconds < 500) return;
+ else UpdateTime = DateTime.Now;
+ this.Invalidate();
+ }
+
+ private void Mot_PositionChanged(object sender, arDev.MOT.PositionChangeEventArgs e)
+ {
+ var ts = DateTime.Now - UpdateTime;
+ if (ts.TotalMilliseconds < 500) return;
+ else UpdateTime = DateTime.Now;
+ this.Invalidate();
+ }
+
+ private void Mot_HomeStatusChanged(object sender, arDev.MOT.HomeStatusChangeEventArgs e)
+ {
+ var ts = DateTime.Now - UpdateTime;
+ if (ts.TotalMilliseconds < 500) return;
+ else UpdateTime = DateTime.Now;
+ this.Invalidate();
+ }
+
+ //private void Flag_ValueChanged(object sender, arUtil.InterfaceValueEventArgs e)
+ //{
+ // var ts = DateTime.Now - UpdateTime;
+ // if (ts.TotalMilliseconds < 500) return;
+ // else UpdateTime = DateTime.Now;
+ // this.Invalidate();
+ //}
+
+ public Boolean MotionHome { get; set; }
+
+ bool GetBOOL(eVarBool idx)
+ {
+ return VAR.BOOL?[(int)idx] ?? false;
+ }
+ string GetSTR(eVarString idx)
+ {
+ return VAR.STR?[(int)idx] ?? string.Empty;
+ }
+
+ bool GetDOValue(eDOName pin)
+ {
+ return dio?.GetDOValue((int)pin) ?? false;
+ }
+ bool GetDIValue(eDIName pin)
+ {
+ return dio?.GetDIValue((int)pin) ?? false;
+ }
+
+ #endregion
+
+ public void ClearLockItem(int idx)
+ {
+ if (idx == 0)
+ {
+ lock (lkitemsF)
+ lkitemsF.Clear();
+ }
+ else
+ {
+ lock (lkitemsR)
+ lkitemsR.Clear();
+ }
+ }
+ public void AddLockItem(int idx, params string[] values)
+ {
+ if (idx == 0)
+ {
+ lock (lkitemsF)
+ {
+ foreach (var value in values)
+ {
+ if (lkitemsF.Contains(value) == false)
+ lkitemsF.Add(value);
+ }
+ }
+ }
+ else
+ {
+ lock (lkitemsR)
+ {
+ foreach (var value in values)
+ {
+ if (lkitemsR.Contains(value) == false)
+ lkitemsR.Add(value);
+ }
+ }
+ }
+ }
+ public void RemoveLockItem(int idx, params string[] values)
+ {
+ if (idx == 0)
+ {
+ lock (lkitemsF)
+ {
+ foreach (var value in values)
+ {
+ if (lkitemsF.Contains(value) == true)
+ lkitemsF.Remove(value);
+ }
+ }
+ }
+ else
+ {
+ lock (lkitemsR)
+ {
+ foreach (var value in values)
+ {
+ if (lkitemsR.Contains(value) == true)
+ lkitemsR.Remove(value);
+ }
+ }
+ }
+
+ }
+
+ protected override void OnMouseMove(MouseEventArgs e)
+ {
+ base.OnMouseMove(e);
+ //if (this.icons == null || icons.Length < 1) return;
+
+ //var item = this.icons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault();
+
+ ////선택된 것이 잇다면 모두 해제를 해준다.
+ //icons.Where(t => t.Focus == true).ToList().ForEach(t => t.Focus = false);
+
+
+ //if (item != null)
+ //{
+ // item.Focus = true;
+ // this.Cursor = Cursors.Hand;
+ //}
+ //else
+ //{
+ // this.Cursor = Cursors.Arrow;
+ //}
+ }
+
+ public class ZoneItemClickEventargs : EventArgs
+ {
+ public CItem item { get; private set; }
+ public ZoneItemClickEventargs(CItem item_)
+ {
+ this.item = item_;
+ }
+ }
+ public class IconClickEventargs : EventArgs
+ {
+ public CIcon item { get; private set; }
+ public IconClickEventargs(CIcon item_)
+ {
+ this.item = item_;
+ }
+ }
+ public class MenuItemClickEventargs : EventArgs
+ {
+ public CMenuButton item { get; private set; }
+ public MenuItemClickEventargs(CMenuButton item_)
+ {
+ this.item = item_;
+ }
+ }
+ public event EventHandler ButtonClick;
+ public event EventHandler IConClick;
+ public event EventHandler ZoneItemClick;
+ protected override void OnMouseClick(MouseEventArgs e)
+ {
+ base.OnMouseClick(e);
+
+ if (e.Button == MouseButtons.Left)
+ {
+ //var item = this.icons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault();
+ //if (item != null)
+ //{
+ // //다른 메뉴가 선택되어잇다면 동작하지 않게 한다.
+ // if (IConClick != null)
+ // IConClick(this, new IconClickEventargs(item));
+ //}
+
+ var zitem = this.zitem.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault();
+ if (zitem != null)
+ {
+ //특정 존의 아이템을 선택했다
+ if (ZoneItemClick != null)
+ ZoneItemClick(this, new ZoneItemClickEventargs(zitem));
+
+ }
+
+ //메뉴의해 생성된 버튼
+ var zbbut = this.menuButtons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault();
+ if (zbbut != null)
+ {
+ //특정 존의 아이템을 선택했다
+ if (ButtonClick != null)
+ ButtonClick(this, new MenuItemClickEventargs(zbbut));
+
+ }
+
+ //아이콘
+ var zbut = this.Buttons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault();
+ if (zbut != null)
+ {
+ //특정 존의 아이템을 선택했다
+ if (ButtonClick != null)
+ ButtonClick(this, new MenuItemClickEventargs(zbut));
+ }
+
+ }
+ }
+ void Loader_Resize(object sender, EventArgs e)
+ {
+ bRemakeRect = true;
+ }
+
+
+ public void RemakeRect()
+ {
+ bRemakeRect = true;
+ }
+
+ ///
+ /// 각 영역을 현재 크기대비하여 재계산 한다
+ ///
+ void makeRect_Normal()
+ {
+
+ rect_main = new RectangleF(
+ DisplayRectangle.Left + Padding.Left,
+ DisplayRectangle.Top + Padding.Top,
+ DisplayRectangle.Width - Padding.Left - Padding.Right,
+ DisplayRectangle.Height - Padding.Top - Padding.Bottom);
+
+ //X축 모션(셔틀) 표시
+ var xPos1 = rect_main.Left + (rect_main.Width * 0.175);
+ var xPos2 = rect_main.Right - xPos1;
+ var yposR = rect_main.Height * 0.15;
+ var yposF = rect_main.Height * 0.85;
+ var h0p5 = rect_main.Height * 0.03;
+ var w0p5 = (rect_main.Width * 0.035) * ((rect_main.Height * 1.0) / rect_main.Width);
+
+ //var conv_height = rect_main.Height * 0.3;
+
+ var cx = (float)(rect_main.Top + (rect_main.Width / 2.0));
+ var cy = (float)(rect_main.Top + (rect_main.Height / 2.0));
+
+
+ var conv_height = CvtMMtoPX_H(350, 0); //컨베이어 높이
+ var conv_width = CvtMMtoPX_W(arMcLengthW, 0); //컨베어이어너비는 장비 너비와 같다
+
+ rect_conveyor = new RectangleF(rect_main.Left,
+ (float)(rect_main.Top + (rect_main.Height - conv_height) / 2.0f),
+ (float)conv_width,
+ (float)conv_height);
+
+ var h10p = rect_main.Height * 0.03;
+
+
+ //프론트셔틀의 영역(가동 영역) - 아래서 450mm 떨어진곳
+ var xAxisLengthMM = arMcLengthW - 200; // 컨베어 길이에서 좌우 100mm 씩 리밋센서가 있다
+ var xAxisLengthPX = CvtMMtoPX_W(xAxisLengthMM, rect_conveyor.Left);
+ //rect_frontShuttle = new RectangleF(
+ // (float)(CvtMMtoPX_W(100, rect_conveyor.Left)),
+ // (float)(CvtMMtoPX_H(100, rect_main.Top)),
+ // (float)xAxisLengthPX,
+ // (float)(CvtMMtoPX_H(20, 0)));
+
+
+ //세로축 총길이 1400mm Y축 모터는 양끝에 100mm 의 여유가 있으며, Y축
+
+ var pickWidth = rect_main.Width * 0.6f;
+ var pickerX = rect_main.Width / 2.0f;// CvtMMtoPX_W(750, rect_conveyor.Left);
+
+ var YAxisLenWMM = arMcLengthW - 100 * 2;
+ var YAxisLenHMM = 100;//
+ var yAxisLenWPx = CvtMMtoPX_W(YAxisLenWMM, 0); //너비
+ var yAxisLenHPx = CvtMMtoPX_H(YAxisLenHMM, 0); //길이
+ var yAxisX = CvtMMtoPX_W(100, rect_main.Left);
+ var yAxisY = CvtMMtoPX_H(200, rect_main.Top);
+
+ rect_picker = new RectangleF(
+ (float)(yAxisX),
+ (float)(yAxisY),
+ (float)(yAxisLenWPx),
+ (float)(yAxisLenHPx)
+ );
+
+ rect_printl = new RectangleF(rect_main.Left + 30, rect_picker.Bottom + 30, 30, rect_main.Height * 0.25f);
+ rect_printr = new RectangleF(rect_main.Right - rect_printl.Width - rect_printl.Left, rect_printl.Top, rect_printl.Width, rect_printl.Height);
+
+
+ //Y축 피커 관련 세부 영역 설정 (VAC 와 원)
+
+ //전체영역의 80% 영역에 Y-로봇의 축을 그린다.
+ //var motorMax = 400; //전체 가동 길이 400mm
+ RectangleF rect = rect_picker;
+ var MotPosPx = rect.Left + rect.Width * (this.arMotorPosition[0] / (this.arMotorLengthY * 1.0f));
+ cx = rect.Left + rect.Width / 2.0f;
+
+ //상(Rear), 하(Front)로 영역을 그린다
+ var port_height = rect.Height * 0.25f;
+ var port_width = port_height;
+ //;// var port_width = rect.Width * 3f;
+ //port_width = port_height;
+ var port_space = CvtMMtoPX_H(350 / 2.0f, 0);
+ var port_spacex = CvtMMtoPX_W(10, 0); ;
+
+ var PickerSizeW = CvtMMtoPX_W(200, 0);// (float)(Math.Max(CvtMMtoPX_W(150, 0), CvtMMtoPX_H(15, 0)));
+ var PickerSizeH = PickerSizeW;// CvtMMtoPX_H(130, 0);//(float)(Math.Max(CvtMMtoPX_W(150, 0), CvtMMtoPX_H(15, 0)));
+ var PickerSpaceW = CvtMMtoPX_H(100, 0);
+
+
+ rect_picker_left = new RectangleF(
+ (float)(MotPosPx - PickerSpaceW),
+ (float)(rect.Top + 50),
+ (float)PickerSizeW,
+ (float)PickerSizeH);
+
+
+ var pointoffset = 5;
+
+
+ //진공표시영역
+ rect_picker_front_vac1 = new RectangleF(
+ (float)rect_picker_left.Left + pointoffset,
+ (float)rect_picker_left.Top + pointoffset,
+ (float)rect_picker_left.Width * 0.2f,
+ (float)rect_picker_left.Height * 0.2f);
+ rect_picker_front_vac2 = new RectangleF(
+ (float)rect_picker_left.Right - rect_picker_front_vac1.Width - pointoffset,
+ (float)rect_picker_front_vac1.Top,
+ (float)rect_picker_front_vac1.Width,
+ (float)rect_picker_front_vac1.Height);
+ rect_picker_front_vac3 = new RectangleF(
+ (float)rect_picker_left.Left + pointoffset,
+ (float)rect_picker_left.Bottom - rect_picker_front_vac1.Height - pointoffset,
+ (float)rect_picker_front_vac1.Width,
+ (float)rect_picker_front_vac1.Height);
+ rect_picker_front_vac4 = new RectangleF(
+ (float)rect_picker_left.Right - rect_picker_front_vac1.Width - pointoffset,
+ (float)rect_picker_left.Bottom - rect_picker_front_vac1.Height - pointoffset,
+ (float)rect_picker_front_vac1.Width,
+ (float)rect_picker_front_vac1.Height);
+
+
+ //각 존의 영역 확인
+
+ //컨베어의 릴감지센서 위치를 표시한다
+ var senseW = rect_conveyor.Width * 0.02f;
+ var senseH = rect_conveyor.Height * 0.05f;
+ var slist = new double[] { 20, 340, 550, 890, 1110, 1440 };// new double[] { 0.02, 0.25, 0.4, 0.6, 0.75, 0.9 }; //센서의 위치정보(컨베어좌측기준)
+
+
+
+ //센서가 포함된 존의 영역을 생성한다
+ for (int i = 0; i < slist.Length; i++)
+ {
+ //선으로 영역을 표시해준다.
+ var PosMM = rect_conveyor.Width * (slist[i] / arMcLengthW);
+ var x = (float)(rect_conveyor.Left + PosMM);
+ var rx = x - senseW / 2.0f;
+ rect_zone[i * 2] = new RectangleF(rx, rect_conveyor.Top, senseW, rect_conveyor.Height);
+ }
+
+ var arraylis = new int[] { 1, 3, 5, 7, 9 };
+ var zterm = 4;
+ for (int i = 0; i < arraylis.Length; i++)
+ {
+ var idx = arraylis[i];
+ rect_zone[idx] = new RectangleF(
+ rect_zone[idx - 1].Right + zterm,
+ rect_zone[idx - 1].Top,
+ rect_zone[idx + 1].Left - rect_zone[idx - 1].Right - zterm * 2,
+ rect_zone[idx - 1].Height);
+ }
+
+ //입출력포트의 영역을 다시 계산한다
+ var portW = (int)(rect_main.Width * 0.175f);
+ var portH = (int)(rect_main.Height * 0.25f);
+ var portPad = (int)(rect_main.Width / 7f);
+ var MarginX = (int)((rect_main.Width - portW * 3 - portPad * 2) / 2.0);
+ var MarginY = (int)(rect_main.Height - portH - (portPad / 2f));
+
+ for (int i = 0; i < arVar_Port.Length; i++)
+ {
+ arVar_Port[i].Rect = new Rectangle(
+ (int)rect_main.Left + MarginX + (i * portW) + (i * portPad),
+ (int)rect_main.Top + MarginY,
+ portW, portH);
+ zitem.Add(new CItem
+ {
+ Rect = arVar_Port[i].Rect.toRect(),
+ index = i,
+ Tag = $"PORT{i}",
+ });
+
+ }
+
+ }
+ void makeRect_xmove()
+ {
+ rect_main = new RectangleF(
+ DisplayRectangle.Left + DisplayRectangle.Width * 0.05f,
+ DisplayRectangle.Top + DisplayRectangle.Height * 0.05f,
+ DisplayRectangle.Width * 0.9f,
+ DisplayRectangle.Height * 0.9f);
+
+ //화면에 꽉차도록 전체 영역을 할당한다.
+ var cx = rect_main.Left + rect_main.Width / 2.0f;
+ var cy = rect_main.Top + rect_main.Height / 2.0f;
+
+ var padding = (int)(rect_main.Width * 0.03);
+
+ var width = (int)((cx - rect_main.Left) - padding * 2);
+ var height = (int)((cy - rect_main.Top) - padding * 2);
+ arVar_Port[0].Rect = new Rectangle(
+ (int)rect_main.Left + padding,
+ (int)cy + padding,
+ width, height);
+
+ arVar_Port[1].Rect = new Rectangle(
+ (int)cx + padding,
+ (int)cy + padding,
+ width, height);
+
+
+ arVar_Port[2].Rect = new Rectangle(
+ (int)(rect_main.Left + (rect_main.Width - width) / 2f),
+ (int)rect_main.Top + padding,
+ width, height);
+
+ }
+ void makeRect_MotHome()
+ {
+ rect_main = new RectangleF(
+ DisplayRectangle.Left + DisplayRectangle.Width * 0.05f,
+ DisplayRectangle.Top + DisplayRectangle.Height * 0.05f,
+ DisplayRectangle.Width * 0.9f,
+ DisplayRectangle.Height * 0.9f);
+ }
+
+ double CvtMMtoPX_W(double PosMM, double startPos)
+ {
+ //컨베어 기준으로 값을 반환한ㄷ.
+ return startPos + rect_main.Width * (PosMM / arMcLengthW);
+ }
+ double CvtMMtoPX_H(double PosMM, double startPos)
+ {
+ //컨베어 기준으로 값을 반환한ㄷ.
+ return startPos + rect_main.Height * (PosMM / arMcLengthH);
+ }
+
+ #region "Menu Method"
+ public void ClearMenu()
+ {
+ _menus = null;
+ this.Invalidate();
+ }
+ public void AddMenu(CMenu menu)
+ {
+ var curCnt = 0;
+ if (this._menus != null) curCnt = this._menus.Length;
+ Array.Resize(ref _menus, curCnt + 1);
+ _menus[curCnt] = menu;
+ this.Invalidate();
+ }
+
+ public void DelMenu(CMenu menu)
+ {
+ List newlist = new List();
+ for (int i = 0; i < _menus.Length; i++)
+ {
+ if (_menus[i] != menu) newlist.Add(_menus[i]);
+ }
+ this._menus = newlist.ToArray();
+ this.Invalidate();
+ }
+
+ public void DelMenu(int idx)
+ {
+ List newlist = new List();
+ for (int i = 0; i < _menus.Length; i++)
+ {
+ if (i != idx) newlist.Add(_menus[i]);
+ }
+ this._menus = newlist.ToArray();
+ this.Invalidate();
+ }
+ public void DelMenu()
+ {
+ //제거할 아이템이 없다
+ if (_menus == null || _menus.Length < 1) return;
+
+ if (_menus.Length == 1) _menus = null;
+ else
+ {
+ //마지막요소를 제거 해주낟
+ Array.Resize(ref _menus, _menus.Length - 1);
+
+ }
+
+ this.Invalidate();
+ }
+ #endregion
+
+ protected override void OnPaint(PaintEventArgs e)
+ {
+ e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
+ e.Graphics.InterpolationMode = InterpolationMode.High;
+ e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
+
+ base.OnPaint(e);
+
+ if (bRemakeRect)
+ {
+ this.zitem.Clear();
+ if (Scean == eScean.Nomal) makeRect_Normal();
+ else if (Scean == eScean.MotHome) makeRect_MotHome();
+ else if (Scean == eScean.xmove) makeRect_xmove();
+ bRemakeRect = false;
+ }
+
+ if (this.Scean == eScean.Nomal) Scean_Normal(e.Graphics);
+ else if (this.Scean == eScean.MotHome) Scean_MotHome(e.Graphics);
+ else if (this.Scean == eScean.xmove) Scean_XMove(e.Graphics);
+
+
+
+ //조이스틱표시
+ if (arJoystickOn)
+ {
+ var joyname = string.Empty;
+ if (arJoystickGroup == 0) joyname = "PICKER X/Z";
+ else if (arJoystickGroup == 1) joyname = "LEFT Y/Z";
+ else if (arJoystickGroup == 2) joyname = "RIGHT Y/Z";
+ else if (arJoystickGroup == 3) joyname = "THETA";
+ else joyname = arJoystickGroup.ToString();
+
+
+ var joystr = "JOYSTICK(" + joyname + ")";
+ var joyfsize = e.Graphics.MeasureString(joystr, this.Font);
+ var joyrect = new Rectangle(0, 0, (int)(joyfsize.Width * 1.1), (int)(joyfsize.Height * 1.1));
+ e.Graphics.FillRectangle(Brushes.Black, joyrect);
+ e.Graphics.DrawString(joystr, this.Font,
+ Brushes.Gold,
+ joyrect,
+ new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ e.Graphics.DrawRect(joyrect, Color.Black, 3);
+ }
+ }
+
+ ///
+ /// Z축이 아이템을 내려놓은 시간(연속으로 놓는 증상이 발생하여, 일단 이것으로 2초이상 빠르게 놓는일이 없도록 한다)
+ ///
+ public DateTime LastDropTime = DateTime.Now;
+
+
+ void RaiseMessage(string m, Boolean iserr, params object[] args)
+ {
+ if (args != null && args.Length > 0) m = string.Format(m, args);
+ if (Message != null) Message(this, new MessageArgs(m, iserr));
+ }
+
+ ///
+ /// 아이템을 DROP해도 되는가? 존 3번 부터 아이템이 존재하면 drop 불가능으로 한다
+ ///
+
+ void Scean_XMove(Graphics g)
+ {
+ //g.DrawRect(arVar_Port[0].Rect, Color.White, 3);
+ Pen p = new Pen(Color.White, 5);
+
+ var pts = new List();
+ pts.Add(new PointF(arVar_Port[0].Rect.Right, arVar_Port[0].Rect.Top));
+ pts.Add(new PointF(arVar_Port[0].Rect.Left, arVar_Port[0].Rect.Bottom - arVar_Port[0].Rect.Height / 2f));
+ pts.Add(new PointF(arVar_Port[0].Rect.Right, arVar_Port[0].Rect.Bottom));
+ g.FillPolygon(Brushes.Blue, pts.ToArray());
+ g.DrawPolygon(p, pts.ToArray());
+ g.DrawString("[START]\nLEFT", this.Font, Brushes.Gold, arVar_Port[0].Rect, new StringFormat { Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Center });
+
+ pts.Clear();
+ pts.Add(new PointF(arVar_Port[1].Rect.Left, arVar_Port[1].Rect.Top));
+ pts.Add(new PointF(arVar_Port[1].Rect.Right, arVar_Port[1].Rect.Bottom - arVar_Port[1].Rect.Height / 2f));
+ pts.Add(new PointF(arVar_Port[1].Rect.Left, arVar_Port[1].Rect.Bottom));
+ g.FillPolygon(Brushes.Brown, pts.ToArray());
+ g.DrawPolygon(p, pts.ToArray());
+ g.DrawString("[STOP]\nRIGHT", this.Font, Brushes.Gold, arVar_Port[1].Rect, new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center });
+
+ if (arPickerSafeZone)
+ g.FillEllipse(Brushes.Lime, arVar_Port[2].Rect);
+ else
+ g.FillEllipse(Brushes.Tomato, arVar_Port[2].Rect);
+ g.DrawEllipse(new Pen(Color.White, 3), arVar_Port[2].Rect);
+ g.DrawString("PICKER\nSAFTY\n" + (arPickerSafeZone ? "ON" : "OFF"), this.Font, Brushes.Black, arVar_Port[2].Rect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+
+
+ //중앙에 메세지를 표시한다.
+ var cpad = rect_main.Width * 0.1f;
+ var cheigh = rect_main.Height * 0.20f;
+ var crect = new RectangleF(rect_main.Left + cpad, rect_main.Top + (rect_main.Height - cheigh) / 2f, rect_main.Width - cpad * 2f, cheigh);
+ g.FillRectangle(new SolidBrush(Color.FromArgb(20, 20, 20)), crect);
+
+ if (arPickerSafeZone)
+ g.DrawString("홈 검색이 가능합니다", new Font("맑은 고딕", 20, FontStyle.Bold), Brushes.Lime, crect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ else
+ {
+ if (MessageOn)
+ g.DrawString("피커를 움직여 안전위치로 이동하세요", new Font("맑은 고딕", 12, FontStyle.Bold), Brushes.Red, crect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ else
+ g.DrawString("피커를 움직여 안전위치로 이동하세요", new Font("맑은 고딕", 12, FontStyle.Bold), Brushes.White, crect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ }
+
+ g.DrawRect(crect, Color.White, 5);
+ p.Dispose();
+ var ts = DateTime.Now - ScreenUpdateTime;
+ if (ts.TotalMilliseconds >= 200)
+ {
+ MessageOn = !MessageOn;
+ ScreenUpdateTime = DateTime.Now;
+ }
+
+ }
+
+ DateTime ScreenUpdateTime = DateTime.Now;
+ Boolean MessageOn = false;
+
+
+ void Scean_MotHome(Graphics g)
+ {
+ //g.DrawString("mot home", this.Font, Brushes.Black, 100, 100);
+ g.DrawRectangle(new Pen(Color.SteelBlue, 10), this.rect_main.Left, rect_main.Top, rect_main.Width, rect_main.Height);
+ Font f = new Font(this.Font.Name, 20f, FontStyle.Bold);
+
+ var titleSize = g.MeasureString("HOME", f);
+
+ var rectTitle = new RectangleF(
+ rect_main.Left,
+ rect_main.Top + 10,
+ rect_main.Width,
+ titleSize.Height * 1.2f);
+
+ g.DrawString("MOTION HOME", f, Brushes.White, rectTitle, sfCenter); ;
+ // g.DrawRectangle(Pens.Red, rectTitle.Left, rectTitle.Top, rectTitle.Width, rectTitle.Height);
+
+ var rectBody = new RectangleF(
+ rect_main.Left + 10,
+ rectTitle.Bottom + 10,
+ rect_main.Width - 20,
+ rect_main.Height - rectTitle.Height - 10 - 20);
+
+ //g.DrawRectangle(Pens.White, rectBody.Left, rectBody.Top, rectBody.Width, rectBody.Height);
+
+
+
+ var rectT = new Rectangle(
+ (int)(rectBody.Left + 20),
+ (int)(rectBody.Top + 30),
+ (int)(rectBody.Width * 0.3f),
+ (int)(rectBody.Height * 0.07));
+
+ var rectXF = new Rectangle(
+ (int)(rectT.Right + 20),
+ (int)(rectBody.Top + 30),
+ (int)(rectBody.Width - rectT.Width - rectT.Left - 10),
+ (int)(rectBody.Height * 0.07));
+
+ //g.DrawRect(rectT, Color.White, 1);
+ //g.DrawRect(rectXF, Color.Red, 1);
+
+
+ var titles = new string[] { "[0] PICKER-Y", "[1] PICKER-Z", "[2] PRINTL-Y", "[3] PRINTL-Z", "[4] PRINTR-Y", "[5] PRINTR-Z", "[6] ANGLE" };
+ for (int i = 0; i < titles.Length; i++)
+ {
+ var perc = arHomeProgress[i];
+ var title = titles[i];
+ var offsetY = (rectBody.Height * 0.12f);
+
+ //0번은 처리하지 않음
+ if (i > 0)
+ {
+ rectXF.Offset(0, (int)offsetY);
+ rectT.Offset(0, (int)offsetY);
+ }
+
+
+ //g.DrawRectangle(Pens.Yellow, rectT.Left, rectT.Top, rectT.Width, rectT.Height);
+
+ using (Font f2 = new Font(this.Font.Name, 10f, FontStyle.Bold))
+ {
+ g.DrawString("* " + title, f2, Brushes.Lime, rectT, sfLeft);
+ }
+
+ LinearGradientBrush brProgr = new LinearGradientBrush(rectXF, Color.Gold, Color.Yellow, LinearGradientMode.Vertical);
+ var rectXF_P = new Rectangle(rectXF.Left, rectXF.Top, (int)(rectXF.Width * (perc / 100.0)), rectXF.Height);
+ g.FillRectangle(brProgr, rectXF_P);
+ g.DrawRectangle(Pens.Gray, rectXF);
+ brProgr.Dispose();
+ }
+
+
+
+
+
+ f.Dispose();
+
+ }
+
+ void Scean_Normal(Graphics g)
+ {
+
+
+ //Draw_Icon(g);
+
+ //전체 영역 테두리
+ g.DrawRectangle(new Pen(Color.White, 2), rect_main.Left, rect_main.Top, rect_main.Width, rect_main.Height);
+
+ //컨베어 그리기
+ //Draw_Conveyor(g, rect_conveyor);
+
+ //셔틀표시
+ //Draw_BallScrewRail(g, rect_frontShuttle, 50, 5, false, true, this.arMOT_Origin[(int)eAxis.X_F], arMOT_LimDn[(int)eAxis.X_F], arMOT_LimUp[(int)eAxis.X_F]);
+
+ //포트표시(셔틀위에 표시됨)
+ Draw_Port(g); //front
+ Draw_Vision(g);
+
+
+
+ //프린터영역그리기 201228
+ var printareahei = 50;
+ var printareaw = 100;
+ var printbordersize = 5;
+ var rectpl = new RectangleF(arVar_Port[0].Rect.Right + printbordersize, arVar_Port[0].Rect.Top - 85, printareaw, printareahei);
+ var fColorPrn = arFGPrinter0END ? Color.Lime : (arFGPrinter0RDY ? Color.Gold : Color.Gray);
+ g.DrawRect(rectpl, fColorPrn, printbordersize);
+ var prnstrbase = "";// "인쇄수량:" + arCountPrint0.ToString("000") + "\n";
+ var prnstr = prnstrbase + (arFGPrinter0END ? "인쇄완료" : (arFGPrinter0RDY ? "인쇄중" : "인쇄대기"));
+ prnstr += "\n" + arCountPrint0.ToString("0000");
+ g.DrawString(prnstr, new Font("맑은 고딕", 10, FontStyle.Bold), new SolidBrush(fColorPrn), rectpl,
+ new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ //g.DrawString(string.Format("AIR:{0}\nVI:{1}\nVO:{2}", PrintLAIRO, PrintLVACI, PrintLVACO), new Font("Consolas", 11, FontStyle.Bold),
+ // Brushes.Tomato, rectpl.Left, rectpl.Top);
+
+
+
+ rectpl = new RectangleF(arVar_Port[2].Rect.Left - 90 - printbordersize, arVar_Port[2].Rect.Top - 85, printareaw, printareahei);
+ fColorPrn = arFGPrinter1END ? Color.Lime : (arFGPrinter1RDY ? Color.Gold : Color.Gray);
+ g.DrawRect(rectpl, fColorPrn, printbordersize);
+ prnstrbase = "";// "인쇄수량:" + arCountPrint1.ToString("000") + "\n";
+ prnstr = prnstrbase + (arFGPrinter1END ? "인쇄완료" : (arFGPrinter1RDY ? "인쇄중" : "인쇄대기"));
+ prnstr += "\n" + arCountPrint1.ToString("0000");
+ g.DrawString(prnstr, new Font("맑은 고딕", 10, FontStyle.Bold), new SolidBrush(fColorPrn), rectpl,
+ new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ //g.DrawString(string.Format("AIR:{0}\nVI:{1}\nVO:{2}", PrintRAIRO, PrintRVACI, PrintRVACO), new Font("Consolas", 11, FontStyle.Bold),
+ // Brushes.Tomato, rectpl.Left, rectpl.Top);
+
+
+ //Y축 레일표시
+ //Draw_BallScrewRail(g, rect_picker, 50, 5, true, LockYP, this.arMOT_Origin[(int)eAxis.Y_P], arMOT_LimDn[(int)eAxis.Y_P], arMOT_LimUp[(int)eAxis.Y_P]);
+
+
+
+ //모터 Y/Z축
+ Draw_PickerY(g, rect_picker);
+
+
+ //왼쪽 프린터
+ Draw_PickerPrinter(g, rect_printl, 2, 3, false, arMotILockPLM, arMotILockPLZ, arPLItemON, PrintLPICK, L_PICK_FW, L_PICK_BW);
+
+ //오른쪽 프린터
+ Draw_PickerPrinter(g, rect_printr, 4, 5, true, arMotILockPRM, arMotILockPRZ, arPRItemON, PrintRPICK, R_PICK_FW, R_PICK_BW);
+
+ //정보 표시 (나중에 제거해야함) 별도 인포박스형태를 취해야 함
+ Draw_Info(g, rect_conveyor);
+ Draw_Error(g);
+
+ //메뉴는 최상위에 표시한다
+ Draw_Menu(g);
+
+ //arDebugMode = true;
+
+ if (arDebugMode)
+ {
+
+ var sb = new System.Text.StringBuilder();
+ sb.AppendLine("Debug Message");
+ sb.AppendLine(string.Format("Display {0}", rect_main));
+ sb.AppendLine(string.Format("Mot Name : {0}/{1}/{2}/{3}/{4}/{5}", arMotPosNamePX, arMotPosNamePZ, arMotPosNameLM, arMotPosNameLZ, arMotPosNameRM, arMotPosNameRZ));
+
+ updatetime = DateTime.Now;
+
+ //작업 수량 및 전체수량을 표시함
+ var sb2 = new System.Text.StringBuilder();
+ if (arVar_Port != null && arVar_Port.Length > 0)
+ {
+ //sb2.AppendLine(string.Format("입(PICKER)/출(SS:DET1)/겹침(SS:DET1) : {0}/{1}/{2}",
+ // ar_cnt_in, ar_cnt_out, ar_cnt_outdup));
+
+ //sb2.AppendLine(string.Format("바코드 입/출:CMD/DUP/READ/ERR/중복수신/할당실패 {0}/{1}:{2}/{3}/{4}/{5}/{6}/{7}",
+ // ar_cnt_barcodein, ar_cnt_barcodeot, ar_cnt_barcodecmd, ar_cnt_barcodedup, ar_cnt_barcoderead, ar_cnt_barcodereaderr, ar_cnt_barcodereaddup, ar_cnt_barcodeAssignErr));
+
+ //sb2.AppendLine(string.Format("언로더 입/출:CMD/DUP {0}/{1}:{2}/{3}",
+ // ar_cnt_plcin, ar_cnt_plcot, ar_cnt_plccmd, ar_cnt_plcdup));
+
+
+ sb.AppendLine(string.Format("DIO:{4},BCD:{5},PLC:{6}\n" +
+ "YP_RDY {7},{8},{9},{10}\n" +
+ "YP_CMD {7},{8},{9},{10}\n",
+ arVar_Port[0].reelCount,
+ arVar_Port[1].reelCount,
+ arVar_Port[2].reelCount,
+ arConn_DIO,
+ arConn_BCD,
+ arConn_PLC,
+ arFG_RDY_YP_FPICKON, arFG_RDY_YP_FPICKOF, arFG_RDY_YP_RPICKON, arFG_RDY_YP_RPICKOF,
+ arFG_CMD_YP_FPICKON, arFG_CMD_YP_RPICKON));
+
+ }
+
+ var pad = 10;
+ using (Font f = new Font("맑은 고딕", 9))
+ {
+ var smgsize = g.MeasureString(sb.ToString(), f);
+ var dbgrect = new RectangleF(rect_main.Left + pad, rect_main.Top + pad, smgsize.Width + pad * 2f, smgsize.Height + pad * 2f);
+
+ //g.FillRectangle(new SolidBrush(Color.FromArgb(252, 0, 0, 0)), dbgrect);
+ //g.DrawString(sb.ToString(), f, Brushes.SkyBlue, dbgrect, new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center });
+ }
+
+ }
+
+ }
+
+
+ void Draw_Info(Graphics g, RectangleF rect)
+ {
+
+ //디자인 모드에서는 표시하지 않는다 200714
+ //if (DesignMode == true) return;
+
+ //if (this.arFlag_UnloaderBusy) ShowPopupMessage(g, "언로더 작업 대기 중\nBUSY", Properties.Resources.info);
+ //if (this.arIsRunning)
+ //{
+ // if (this.arFlag_UnloaderErr == true) ShowPopupMessage(g, "언로더 오류 발생", "STOP된 언로더를 확인하세요", Properties.Resources.error, false);
+ // else if (this.arFlag_WaitPLC && arUnloaderSeq > 0)
+ // {
+ // if (arUnloaderSeq == 1) ShowPopupMessage(g, "언로더 작업 대기 중", "상태확인(#1)", Properties.Resources.info, false);
+ // else if (arUnloaderSeq == 2) ShowPopupMessage(g, "언로더 작업 대기 중", "BUSY(#2)", Properties.Resources.info, false);
+ // else if (arUnloaderSeq == 3) ShowPopupMessage(g, "언로더 작업 대기 중", "ITEM CHECK(#3)", Properties.Resources.info, false);
+ // else if (arUnloaderSeq == 4) ShowPopupMessage(g, "언로더 작업 대기 중", "NO SETTING(#4)", Properties.Resources.info, false);
+ // else if (arUnloaderSeq == 5) ShowPopupMessage(g, "언로더 작업 대기 중", "SIZE SETTING(#5)", Properties.Resources.info, false);
+ // else if (arUnloaderSeq == 6) ShowPopupMessage(g, "언로더 작업 대기 중", "No.ZERO CHECK(#6)", Properties.Resources.info, false);
+ // }
+ //}
+
+ }
+
+ //void Draw_PickerRail(Graphics g, RectangleF rect)
+ //{
+ // RectangleF rectRailL = new RectangleF(rect.Left, rect.Top, rect.Width / 2.0f + 1, rect.Height);
+ // RectangleF rectRailR = new RectangleF(rect.Left + rect.Width / 2.0f, rect.Top, rect.Width / 2.0f, rect.Height);
+ // var brR = new LinearGradientBrush(rect, Color.FromArgb(60, 60, 60), Color.FromArgb(80, 80, 80), LinearGradientMode.Horizontal);
+ // var brL = new LinearGradientBrush(rect, Color.FromArgb(80, 80, 80), Color.FromArgb(60, 60, 60), LinearGradientMode.Horizontal);
+ // g.FillRectangle(brL, rectRailL);
+ // //g.FillRectangle(brR, rectRailR);
+ // brL.Dispose();
+ // brR.Dispose();
+ // g.DrawRectangle(Pens.DimGray, rect.Left, rect.Top, rect.Width, rect.Height);
+
+ //}
+
+ RectangleF rect_zlaxis = RectangleF.Empty;// new RectangleF((float)motZLPosX, (float)motZPosY, motZwPx, (float)motZhPx);
+ //RectangleF rect_zraxis = RectangleF.Empty;//new RectangleF((float)motZRPosX, (float)motZPosY, motZwPx, (float)motZhPx);
+
+ void Draw_Screw(Graphics g, Rectangle rect)
+ {
+ //모터표시(X축)
+ g.FillRectangle(new SolidBrush(Color.FromArgb(50, 150, 150, 150)), rect);
+
+ //해다 영역에 사선으로그림을 그린다.
+ var termcount = 50;
+ var lineterm = rect.Width / termcount;
+ var skew = rect.Width * 0.01f;
+ Pen p = new Pen(Color.FromArgb(50, 120, 120, 120), 2);
+ for (int i = 0; i < termcount; i++)
+ {
+ var pt1 = new PointF(rect.Left + i * lineterm, rect.Top);
+ var pt2 = new PointF(pt1.X + skew, rect.Bottom);
+ g.DrawLine(p, pt1, pt2);
+ }
+ p.Dispose();
+ //e.Graphics.DrawRectangle(Pens.Gray, motr_rect.Left, motr_rect.Top, motr_rect.Width, motr_rect.Height);
+ //e.Graphics.DrawRectangle(Pens.Gray, motf_rect.Left, motf_rect.Top, motf_rect.Width, motf_rect.Height);
+
+
+ //RectangleF rectRailT = new RectangleF(rect.Left, rect.Top, rect.Width, rect.Height / 2.0f + 1);
+ //RectangleF rectRailB = new RectangleF(rect.Left, rect.Top + rect.Height / 2.0f, rect.Width, rect.Height / 2.0f);
+ //var brR = new LinearGradientBrush(rect, Color.FromArgb(100, 60, 60, 60), Color.FromArgb(100, 80, 80, 80), LinearGradientMode.Vertical);
+ //var brL = new LinearGradientBrush(rect, Color.FromArgb(100, 80, 80, 80), Color.FromArgb(100, 60, 60, 60), LinearGradientMode.Vertical);
+ ////g.FillRectangle(brL, rectRailT);
+ ////g.FillRectangle(brR, rectRailB);
+ //brL.Dispose();
+ //brR.Dispose();
+
+ g.DrawRectangle(new Pen(Color.FromArgb(50, Color.Gray)), rect.Left, rect.Top, rect.Width, rect.Height);
+
+
+ }
+
+ void Draw_BallScrewRail(Graphics g, RectangleF rect, int divCount, int alpha, Boolean downDirection, Boolean MLock, Boolean Org, Boolean LimDn, Boolean LimUp)
+ {
+ //모터표시(X축)
+ if (Org) g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, Color.SkyBlue)), rect);
+ else if (LimUp) g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, Color.Red)), rect);
+ else if (LimDn) g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, Color.Blue)), rect);
+ else g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, 150, 150, 150)), rect);
+
+ //해다 영역에 사선으로그림을 그린다.
+ var baseSize = (downDirection == false ? rect.Width : rect.Height);
+ var lineterm = baseSize / divCount;
+ var skew = baseSize * 0.01f;
+ Pen p = new Pen(Color.FromArgb(alpha, 120, 120, 120), 2);
+ PointF pt1 = PointF.Empty;
+ PointF pt2 = PointF.Empty;
+ for (int i = 0; i < divCount; i++)
+ {
+ if (downDirection)
+ {
+ pt1 = new PointF(rect.Left, rect.Top + i * lineterm);
+ pt2 = new PointF(rect.Right, pt1.Y + skew);
+ }
+ else
+ {
+ pt1 = new PointF(rect.Left + i * lineterm, rect.Top);
+ pt2 = new PointF(pt1.X + skew, rect.Bottom);
+ }
+ g.DrawLine(p, pt1, pt2);
+ }
+ p.Dispose();
+
+ //limi이 걸려있다면 해당 영역에 적색으로 표시한다.
+ var limwidth = 30;
+ if (LimUp)
+ {
+ RectangleF rectlu;
+ if (downDirection) rectlu = new RectangleF(rect.Left, rect.Top, rect.Width, limwidth);
+ else rectlu = new RectangleF(rect.Right - limwidth, rect.Top, limwidth, rect.Height);
+
+ g.FillRectangle(Brushes.Red, rectlu.Left, rectlu.Top, rectlu.Width, rectlu.Height);
+ }
+
+ if (LimDn)
+ {
+ RectangleF rectlu;
+ if (downDirection) rectlu = new RectangleF(rect.Left, rect.Bottom - limwidth, rect.Width, limwidth);
+ else rectlu = new RectangleF(rect.Left, rect.Top, limwidth, rect.Height);
+
+ g.FillRectangle(Brushes.Red, rectlu.Left, rectlu.Top, rectlu.Width, rectlu.Height);
+ }
+ //전체 테두리
+ g.DrawRectangle(new Pen(Color.FromArgb(alpha, Color.Gray)), rect.Left, rect.Top, rect.Width, rect.Height);
+ }
+
+ Boolean NeedHomeSet()
+ {
+ return arConn_MOT && (this.arMOT_HSet[0] == false || this.arMOT_HSet[1] == false || this.arMOT_HSet[2] == false || this.arMOT_HSet[3] == false || this.arMOT_HSet[4] == false);
+ }
+
+ byte errstep = 0;
+ bool errstepR = true;
+ void Draw_Error(Graphics g)
+ {
+ //디자인 모드에서는 표시하지 않는다 200714
+ if (DesignMode == true) return;
+
+ if (arConn_DIO && this.arDI_Emergency == true) ShowPopupMessage(g, "EMERGENCY BUTTON", "비상정지 확인\nEMERGENCY or POWER LOSS", Properties.Resources.error, true);
+ else if (this.arDI_SaftyOk == false) ShowPopupMessage(g, "SAFTY SENSOR", "안전 센서 확인", Properties.Resources.alert, true);
+ else if (arConn_MOT && this.arMOT_Alm[0] == true) ShowPopupMessage(g, "SERVO ALARM", "Y-PICKER 모터 알람 발생", Properties.Resources.error, true);
+ else if (arConn_MOT && this.arMOT_Alm[1] == true) ShowPopupMessage(g, "SERVO ALARM", "Z-FRONT 모터 알람 발생", Properties.Resources.error, true);
+ else if (arConn_MOT && this.arMOT_Alm[2] == true) ShowPopupMessage(g, "SERVO ALARM", "Z-REAR 모터 알람 발생", Properties.Resources.error, true);
+
+ else if (arConn_MOT && this.arMOT_SVOn[0] == false) ShowPopupMessage(g, "SERVO ALARM", "Y-PICKER\nSERVO-OFF", Properties.Resources.alert, true);
+ else if (arConn_MOT && this.arMOT_SVOn[1] == false) ShowPopupMessage(g, "SERVO ALARM", "Z-PICKER\nSERVO-OFF", Properties.Resources.alert, true);
+ else if (arConn_MOT && this.arMOT_SVOn[2] == false) ShowPopupMessage(g, "SERVO ALARM", "L-PRINT-Y\nSERVO-OFF", Properties.Resources.alert, true);
+ else if (arConn_MOT && this.arMOT_SVOn[3] == false) ShowPopupMessage(g, "SERVO ALARM", "L-PRINT-Z\nSERVO-OFF", Properties.Resources.alert, true);
+ else if (arConn_MOT && this.arMOT_SVOn[4] == false) ShowPopupMessage(g, "SERVO ALARM", "R-PRINT-Y\nSERVO-OFF", Properties.Resources.alert, true);
+
+ else if (arConn_DIO && this.arAIRDetect == false) ShowPopupMessage(g, "AIR DETECT", "*전면의 AIR버튼(청색)을 눌러 AIR를 공급하세요\n* AIR 라인을 확인하세요", Properties.Resources.error, true);
+
+ else if (arConn_MOT && (this.arMOT_HSet[0] == false || this.arMOT_HSet[1] == false || this.arMOT_HSet[2] == false))
+ {
+ //안전오류도 표시해줘야한다
+ var SaftyMessage = string.Empty;
+ if (arVar_Port[0].SaftyErr == true) SaftyMessage += "DOOR:LEFT";
+ if (arVar_Port[1].SaftyErr == true) SaftyMessage += (string.IsNullOrEmpty(SaftyMessage) == false ? "," : string.Empty) + "DOOR:CENTER";
+ if (arVar_Port[2].SaftyErr == true) SaftyMessage += (string.IsNullOrEmpty(SaftyMessage) == false ? "," : string.Empty) + "DOOR:RIGHT";
+
+ if (arPickerSafeZone == false) SaftyMessage += (string.IsNullOrEmpty(SaftyMessage) == false ? "\n" : string.Empty) + "피커안전위치 : OFF";
+ else SaftyMessage += "피커안전위치 : ON"; ;
+
+ ShowPopupMessage(g, "SYSTEM NOT READY", "초기화가 필요 합니다\n" + SaftyMessage, Properties.Resources.error, true);
+ }
+ else if (arConn_MOT && this.arMOT_HSet[0] == false) ShowPopupMessage(g, "SERVO ALARM", "Y-PICKER 홈 검색 필요", Properties.Resources.alert, true);
+ else if (arConn_MOT && this.arMOT_HSet[1] == false) ShowPopupMessage(g, "SERVO ALARM", "Z-FRONT 홈 검색 필요", Properties.Resources.alert, true);
+ else if (arConn_MOT && this.arMOT_HSet[2] == false) ShowPopupMessage(g, "SERVO ALARM", "Z-REAR 홈 검색 필요", Properties.Resources.alert, true);
+
+ else if (arVar_Port[0].OverLoad) ShowPopupMessage(g, "## OVERLOAD ##", "FRONT-LEFT", Properties.Resources.alert, true);
+ else if (arVar_Port[1].OverLoad) ShowPopupMessage(g, "## OVERLOAD ##", "FRONT-RIGHT", Properties.Resources.alert, true);
+
+ //else if (arFlag_UnloaderBusy) ShowPopupMessage(g, "## UNLOADER ##\nBUSY", Properties.Resources.alert);
+ //else if (arFlag_UnloaderErr) ShowPopupMessage(g, "## UNLOADER ##\nERROR", Properties.Resources.alert);
+ }
+
+
+ void Draw_Menu(Graphics g)
+ {
+ //var buttonOk = new CMenuButton("OK", "1");
+ //var buttonNo = new CMenuButton("CANCLE", "0");
+ //var newmenu = new CMenu("body str", "title", eMsgIcon.Error, buttonOk, buttonNo)
+ //{
+ // BorderColor = Color.Gray
+ //};
+ //this.menus.Push(newmenu);
+
+ if (arMenus == null || arMenus.Length < 1) { this.HasPopupMenu = false; return; }
+ else HasPopupMenu = true;
+
+ ShowMaskLayer(g, Color.FromArgb(250, Color.Black));
+ var item = this.arMenus.Last();//.Peek();
+ //이 메뉴를 표시 합니다.
+
+ PopupMenuRequireInput = item.RequireInput;
+
+ var buttonSpace = 10;
+ var hSpace = 5;
+ var vSpace = 10;
+ var iconSize = 80;
+ var menuheight = 64;
+ var padding = 10;
+ var msgW = 900;// (int)(this.rect_main.Width * 0.65f);// 640;// (int)(rect_main.Width * 0.7f);
+ var msgH = 400;
+ var rect = new RectangleF(
+ rect_main.Left + (rect_main.Width - msgW) / 2.0f,
+ rect_main.Top + (rect_main.Height - msgH) / 2.0f,
+ msgW, msgH);
+
+ Rectangle rectT = Rectangle.Empty; //title
+ Rectangle rectI = Rectangle.Empty; //icon
+ Rectangle rectC = Rectangle.Empty; //content
+ Rectangle rectB = Rectangle.Empty; //button
+
+ rectT = new Rectangle((int)rect.Left + padding, (int)rect.Top + padding, (int)rect.Width - (padding * 2), (int)(rect.Height * 0.1));
+ rectI = new Rectangle((int)rect.Left + padding + 10, (int)rectT.Bottom + vSpace, iconSize, iconSize); //icon size
+ rectB = new Rectangle((int)(rect.Left + padding * 2), (int)(rect.Bottom - menuheight - padding), (int)rect.Width - (padding * 4), menuheight);
+ rectC = new Rectangle((int)rectI.Right + 20 + hSpace * 2, (int)rectT.Bottom + 10 + vSpace,
+ (int)(rect.Width - hSpace - (padding * 2) - rectI.Width),
+ (int)(rect.Height - rectT.Height - rectB.Height - (padding * 2) - vSpace * 2));
+
+ g.FillRectangle(new SolidBrush(Color.FromArgb(220, item.BackColor)), rect);
+
+ //제목줄 표시
+ using (LinearGradientBrush sb = new LinearGradientBrush(rectT,
+ Color.FromArgb(160, 160, 160),
+ Color.FromArgb(180, 180, 180),
+ LinearGradientMode.Vertical))
+ {
+ g.FillRectangle(sb, rectT);
+ }
+
+
+ g.DrawString(item.Title, item.Font, new SolidBrush(item.ForeColor), rectT, sfCenter);
+
+ //버튼표시
+ if (item.buttons != null && item.buttons.Length > 0)
+ {
+ //현재 버튼 영역의 갯수가 다르면 다시 생성한다.
+ if (menuButtons.Count != item.buttons.Length)
+ {
+
+ menuButtons = new List();
+ foreach (var bt in item.buttons)
+ menuButtons.Add(bt);
+
+ g.DrawString("!!", this.Font, Brushes.Red, rectB.Left + 10, rectB.Top + 10);
+ }
+ else
+ {
+ for (int i = 0; i < menuButtons.Count; i++)
+ menuButtons[i] = item.buttons[i];
+ }
+
+ g.DrawString(item.buttons.Length.ToString() + "/" + menuButtons.Count.ToString(), this.Font, Brushes.Red, rectB);
+ var butidx = 0;
+ var butwid = (rectB.Width - (item.buttons.Length - 1) * buttonSpace) / item.buttons.Length;
+ foreach (var but in item.buttons)
+ {
+ but.menutag = item.Tag;
+ but.Rect = new Rectangle(rectB.Left + butwid * butidx + buttonSpace * butidx, rectB.Top, butwid, rectB.Height);
+ g.FillRectangle(new SolidBrush(but.BackColor), but.Rect);
+ g.DrawRectangle(new Pen(but.BorderColor, but.BorderSize), but.Rect);
+ g.DrawString(but.Text, item.Font, new SolidBrush(but.ForeColor), but.Rect, sfCenter);
+ butidx++;
+ }
+ }
+ else menuButtons.Clear();
+
+ //아이콘 영역에 그림표시
+ if (rectI.IsEmpty == false)
+ {
+ g.DrawImage(Properties.Resources.info, rectI);
+ }
+
+ //본문데이터표시
+ if (string.IsNullOrEmpty(item.Text) == false) //contec
+ {
+ g.DrawString(item.Text, item.Font, new SolidBrush(item.ForeColor), rectC);
+ }
+
+ //외각 테두리
+ //g.DrawRectangle(new Pen(Color.FromArgb(20,20,20), 10) { Alignment = PenAlignment.Center }, rect.Left + 1, rect.Top + 1, rect.Width, rect.Height);
+
+ g.DrawRectangle(new Pen(Color.FromArgb(180, 180, 180), 10) { Alignment = PenAlignment.Center }, rect.Left, rect.Top, rect.Width, rect.Height);
+
+
+ //g.DrawRectangle(Pens.Black, rect.Left, rect.Top, rect.Width, rect.Height);
+
+ //g.DrawRectangle(Pens.Red, rectT); //제목표시줄
+ //g.DrawRectangle(Pens.Blue, rectI); //아이콘
+ //g.DrawRectangle(Pens.Green, rectB); //버튼영역
+ //g.DrawRectangle(Pens.Black, rectC); //본문영역
+ }
+
+ void ShowMaskLayer(Graphics g, Color maskColor)
+ {
+ g.FillRectangle(new SolidBrush(maskColor), this.DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width, DisplayRectangle.Height);
+
+ }
+
+ public Font MessageBody { get; set; } = new Font("맑은 고딕", 20, FontStyle.Bold);
+ public Font MessageTitle { get; set; } = new Font("맑은 고딕", 10, FontStyle.Bold);
+
+ void ShowPopupMessage(Graphics g, string title, string msg, Image icon, Boolean isError)
+ {
+ //팝업표시할때마다 배경 마스킹을 한다
+ //var maskColor = Color.FromArgb(100, Color.White);
+ //ShowMaskLayer(g, maskColor);
+
+ //var msgf = new Font("맑은 고딕", 20, FontStyle.Bold);
+ //var msgt = new Font("맑은 고딕", 10, FontStyle.Bold);
+
+ if (isError == false)
+ {
+ //팝업표시할때마다 배경 마스킹을 한다
+
+ var maskColor = Color.FromArgb(50, Color.Gray);
+ ShowMaskLayer(g, maskColor);
+
+ var msgW = (int)(this.rect_main.Width * 0.65f);// 640;// (int)(rect_main.Width * 0.7f);
+ var msgH = 105;
+ var rect = new RectangleF(
+ rect_main.Left + (rect_main.Width - msgW) / 2.0f,
+ rect_main.Top + (rect_main.Height - msgH) / 2.0f,
+ msgW, msgH);
+
+ var TitleHeight = 25;
+ var rectT = new Rectangle((int)rect.Left, (int)rect.Bottom - TitleHeight, (int)rect.Width, TitleHeight);
+ var rectI = new Rectangle((int)rect.Left, (int)rect.Top, (int)rect.Width, (int)rect.Height - rectT.Height);
+
+ //g.FillRectangle(new SolidBrush(Color.FromArgb(220, Color.Black)), rect);
+ g.FillRectangle(new SolidBrush(Color.FromArgb(120, Color.White)), rect);
+
+ var rectTL = new RectangleF(rectT.Left, rectT.Top, rectT.Width / 2.0f, rectT.Height);
+ var rectTR = new RectangleF(rectTL.Right, rectT.Top, rectTL.Width, rectTL.Height);
+ using (var sb = new LinearGradientBrush(rectT, Color.Transparent, Color.White, LinearGradientMode.Horizontal))
+ g.FillRectangle(sb, rectTL);
+ using (var sb = new LinearGradientBrush(rectT, Color.White, Color.Transparent, LinearGradientMode.Horizontal))
+ g.FillRectangle(sb, rectTR);
+
+ //g.DrawImage(icon,
+ // (int)(rect.Left + 20),
+ // (int)(rect.Top + (rect.Height - icon.Height) / 2.0f));
+
+ g.DrawString(title, MessageTitle, Color.Black, rectT, ContentAlignment.MiddleCenter);
+ g.DrawString(msg, MessageBody, Color.White, rectI, ContentAlignment.MiddleCenter, Color.FromArgb(24, 24, 24));
+
+ if (errstep % 5 == 0) errstepR = !errstepR;
+
+ if (errstepR)
+ g.DrawRectangle(new Pen(Color.Gold, 2), rect.Left, rect.Top, rect.Width, rect.Height);
+ else
+ g.DrawRectangle(new Pen(Color.White, 2), rect.Left, rect.Top, rect.Width, rect.Height);
+
+ if (errstep < 255) errstep += 1;
+ else errstep = 0;
+ }
+ else
+ {
+ //팝업표시할때마다 배경 마스킹을 한다
+ var maskColor = Color.FromArgb(253, 15, 15, 15);
+ ShowMaskLayer(g, maskColor);
+
+ var msgW = (int)(this.rect_main.Width * 0.8f);// 640;// (int)(rect_main.Width * 0.7f);
+ var msgH = (int)(this.rect_main.Height * 0.8f);//
+ var rect = new RectangleF(
+ rect_main.Left + (rect_main.Width - msgW) / 2.0f,
+ rect_main.Top + (rect_main.Height - msgH) / 2.0f,
+ msgW, msgH);
+
+ var rectT = new Rectangle((int)rect.Left, (int)rect.Bottom - 200, (int)rect.Width, 200);
+ var rectI = new Rectangle((int)rect.Left, (int)rect.Top, (int)rect.Width, (int)rect.Height - rectT.Height);
+
+ //g.FillRectangle(new SolidBrush(Color.FromArgb(220, Color.Black)), rect);
+ g.FillRectangle(new SolidBrush(Color.FromArgb(253, Color.Black)), rect);
+
+ g.DrawImage(icon,
+ (int)(rectI.Left + rectI.Width / 2.0f) - 40,
+ (int)(rectI.Top + rectI.Height / 2.0f) + 10);
+
+ g.DrawString(msg, MessageBody, Brushes.Gold, rectT, sfCenter);
+
+ if (errstep % 5 == 0) errstepR = !errstepR;
+
+ if (errstepR)
+ g.DrawRectangle(new Pen(Color.Red, 10), rect.Left, rect.Top, rect.Width, rect.Height);
+ else
+ g.DrawRectangle(new Pen(Color.Gold, 10), rect.Left, rect.Top, rect.Width, rect.Height);
+
+ if (errstep < 255) errstep += 1;
+ else errstep = 0;
+ }
+
+ //msgf.Dispose();
+ //msgt.Dispose();
+ }
+
+ void Draw_Port(Graphics g)
+ {
+ var fSizeCnt = 20;
+ var convmode = VAR.BOOL?[eVarBool.Use_Conveyor] ?? false;
+ using (Font fCnt = new Font("consolas", fSizeCnt, FontStyle.Bold))
+ {
+ using (Font fMSg = new Font("맑은 고딕", 15, FontStyle.Bold))
+ {
+ if (convmode)
+ this.arVar_Port[0].DisplayConv(g, fCnt, fMSg, arMagnet0, arFGVision0RDY, arFGVision0END, arPortLItemOn, arMotILockVS0, arCountV0, CVLeftBusy, CVLeftReady);
+ else
+ this.arVar_Port[0].Display(g, fCnt, fMSg, arMagnet0, arFGVision0RDY, arFGVision0END, arPortLItemOn, arMotILockVS0, arCountV0);
+
+ this.arVar_Port[1].Display(g, fCnt, fMSg, arMagnet1, arFGVision1RDY, arFGVision1END, false, arMotILockVS1, arCountV1);
+
+ if (convmode)
+ this.arVar_Port[2].DisplayConv(g, fCnt, fMSg, arMagnet2, arFGVision2RDY, arFGVision2END, arPortRItemOn, arMotILockVS2, arCountV2, CVRightBusy, CVRightReady);
+ else
+ this.arVar_Port[2].Display(g, fCnt, fMSg, arMagnet2, arFGVision2RDY, arFGVision2END, arPortRItemOn, arMotILockVS2, arCountV2);
+ }
+ }
+ }
+
+ void Draw_Vision(Graphics g)
+ {
+
+ //var NewX0 = arVar_Port[0].Rect.Right;
+
+ //var NewXDist = arVar_Port[1].Rect.Left - arVar_Port[0].Rect.Right;
+ //var NewYDist = arVar_Port[0].Rect.Height;
+
+ //var NewY = arVar_Port[0].Rect.Top;
+ //var portw_Px = arVar_Port[0].Rect.Width;
+
+ ////둘사이의 공간으로 처리한다
+ //var VisionRectSizePx = (int)Math.Min(NewXDist - 10, NewYDist - 10);
+ //rect_vision = new RectangleF(
+ // (float)(NewX0 + (NewXDist - VisionRectSizePx) / 2.0f),
+ // (float)(NewY + (NewYDist - VisionRectSizePx) / 2.0f),
+ // (float)VisionRectSizePx,
+ // (float)VisionRectSizePx);
+
+ //g.DrawEllipse(Pens.Gray, rect_vision);
+
+ ////가운에 영역(10% 작은)에. 감지된 릴 모양을 그려준다
+ //var padval = rect_vision.Width * 0.05f;
+ //var rellrect = new RectangleF(
+ // rect_vision.Left + padval,
+ // rect_vision.Top + padval,
+ // rect_vision.Width - padval * 2,
+ // rect_vision.Height - padval * 2);
+
+ //if (arVisionProcessC)
+ //{
+ // using (LinearGradientBrush br = new LinearGradientBrush(rellrect, Color.Lime, Color.Green, LinearGradientMode.BackwardDiagonal))
+ // g.FillEllipse(br, rellrect);
+ // g.DrawEllipse(Pens.Lime, rellrect);
+ //}
+ //else
+ //{
+ // using (LinearGradientBrush br = new LinearGradientBrush(rellrect, Color.Yellow, Color.Gold, LinearGradientMode.BackwardDiagonal))
+ // g.FillEllipse(br, rellrect);
+ // g.DrawEllipse(Pens.Lime, rellrect);
+ //}
+
+ ////감지상태를 글자료 표시해준다.
+ ////비젼데이터가 있다면 그것을 사용해준다
+ //var msg = string.IsNullOrEmpty(arVision_RID) ? "REEL ON" : arVision_RID;
+ //using (var sb = new SolidBrush(Color.FromArgb(120, Color.Black)))
+ // g.DrawString(msg, this.Font, sb, rellrect,
+ // new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+
+ }
+ RectangleF rect_vision = RectangleF.Empty;
+
+ public string arVision_RID { get; set; }
+ public string arVision_SID { get; set; }
+
+
+ public Boolean arVisionProcessL { get; set; }
+ public Boolean arVisionProcessC { get; set; }
+ public Boolean arVisionProcessR { get; set; }
+
+ private void Tm_Tick(object sender, EventArgs e)
+ {
+
+ if (ConveyorRunPoint < (AnimationStepConv - 3)) ConveyorRunPoint += 1;
+ else ConveyorRunPoint = 1;
+
+ for (int i = 0; i < 3; i++)
+ {
+
+ if (this.arVar_Port[i].arrowIndex < (arVar_Port[i].AnimationStepPort - 3)) this.arVar_Port[i].arrowIndex += 1;
+ else this.arVar_Port[i].arrowIndex = 1;
+ }
+ this.Invalidate();
+
+ // var ts = DateTime.Now - updatetime;
+ //if (ts.TotalMilliseconds >= tm.Interval) this.Invalidate();
+ }
+
+ }
+}
diff --git a/Handler/CapCleaningControl/Loader/Draw_PickerPrinter.cs b/Handler/CapCleaningControl/Loader/Draw_PickerPrinter.cs
new file mode 100644
index 0000000..9d951a6
--- /dev/null
+++ b/Handler/CapCleaningControl/Loader/Draw_PickerPrinter.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using System.Windows.Forms;
+
+
+namespace UIControl
+{
+ public partial class HMI
+ {
+ void Draw_PickerPrinter(Graphics g, RectangleF rect,
+ int motAxisY, int motAxisZ, bool reverse,
+ Boolean LockY, Boolean LockZ, Boolean ItemOn, Boolean ItemPickOK,
+ Boolean CylFW, Boolean CylBW)
+ {
+ //실제 로봇의 길이를 입력한다 (단위:mm)
+ var RealLenY = 400;
+ var RealLenZ = 250;
+
+ g.FillRectangle(Brushes.DimGray, rect);
+ if (LockY) g.DrawRect(rect, Color.Blue, 5);
+ else g.DrawRect(rect, Color.White);
+
+ var PXName = motAxisY == 2 ? arMotPosNameLM : arMotPosNameRM;
+ g.DrawString(PXName, this.arFont_MotPosName, Brushes.Black, rect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center, FormatFlags = StringFormatFlags.DirectionVertical });
+
+ var RPosY = this.arMotorPosition[motAxisY];
+ var RPosZ = this.arMotorPosition[motAxisZ];
+ //RPosY = 0;
+ //RPosZ = 300;
+
+ //모터의 실제 위치에 뭉치를 그린다.
+
+ var PosY = (float)(rect.Top + (rect.Height - (rect.Height * RPosY / RealLenY)));
+
+ //Y뭉치를 그린다
+ var rectYP = new RectangleF(rect.X - 1, PosY - (rect.Width / 2.0f), rect.Width + 2, rect.Width);
+ g.FillRectangle(Brushes.Yellow, rectYP);
+ g.DrawRect(rectYP, Color.Black, 2);
+ //g.DrawLine(Pens.Red, rect.X - 30, PosY, rect.Right + 130, PosY);
+
+
+ //Z축을 그린다.
+ RectangleF rectZ = RectangleF.Empty;
+ var zwidth = 60;
+ if (reverse) rectZ = new RectangleF(rect.X - zwidth, PosY - 10, zwidth, 20);
+ else rectZ = new RectangleF(rect.Right, PosY - 10, zwidth, 20);
+
+ float PosZ = 0f;
+ if (reverse) PosZ = (float)(rectZ.Left + rectZ.Width - (rectZ.Width * RPosZ / RealLenZ));
+ else PosZ = (float)(rectZ.Left + rectZ.Width * RPosZ / RealLenZ);
+
+ g.FillRectangle(Brushes.DimGray, rectZ);
+ if (LockZ) g.DrawRect(rectZ, Color.Blue, 5);
+ else g.DrawRect(rectZ, Color.White);
+
+ //z축 포지션 이름
+ var ZposName = motAxisZ == 3 ? arMotPosNameLZ : arMotPosNameRZ;
+ g.DrawString(ZposName, this.arFont_MotPosName, Brushes.Black, rectZ, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+
+ //var CylStr = string.Format("FW:{0},BW:{1}", CylFW, CylBW);
+ //if (CylFW == true && CylFW != CylBW) CylStr = "FW";
+ //else if (CylBW == true && CylFW != CylBW) CylStr = "BW";
+ //g.DrawString(CylStr, this.arFont_MotPosName, Brushes.Red, rectZ.Left, rectZ.Top - 20);
+
+ //Z뭉치를 그린다
+ var rectZP = new RectangleF(PosZ - (rectZ.Height / 2.0f), rectZ.Y - 1, rectZ.Height, rectZ.Height + 2);
+ if (ItemOn)
+ {
+ g.FillRectangle(Brushes.Lime, rectZP);
+ g.DrawRect(rectZP, Color.Black, 2);
+
+
+ }
+ else
+ {
+ g.FillRectangle(Brushes.SkyBlue, rectZP);
+ g.DrawRect(rectZP, Color.Black, 2);
+ }
+ using (Font f = new Font("Consolas", 10, FontStyle.Bold))
+ g.DrawString((ItemPickOK ? "O" : "X"), f, Brushes.Black, rectZP, new StringFormat
+ {
+ Alignment = StringAlignment.Center,
+ LineAlignment = StringAlignment.Center
+ });
+
+ //g.DrawLine(Pens.Blue, PosZ, rectZ.Top - 30, PosZ, rectZ.Bottom + 100);
+
+ }
+ }
+}
diff --git a/Handler/CapCleaningControl/Loader/Draw_PickerY.cs b/Handler/CapCleaningControl/Loader/Draw_PickerY.cs
new file mode 100644
index 0000000..19a1a84
--- /dev/null
+++ b/Handler/CapCleaningControl/Loader/Draw_PickerY.cs
@@ -0,0 +1,237 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using System.Windows.Forms;
+
+
+namespace UIControl
+{
+ public partial class HMI
+ {
+ void Draw_PickerY(Graphics g, RectangleF rect)
+ {
+
+ //return;
+
+ //전체영역의 80% 영역에 Y-로봇의 축을 그린다.
+ //var motorMax = 400; //전체 가동 길이 400mm
+ var cx = rect_main.Left + rect_main.Width / 2.0f;
+ var cy = rect_main.Top + rect_main.Height * 0.2f;// / 2.0f - 200;
+
+
+ //모터길이가 설정되지않았따면 600으로 설정한다
+ if (this.arMotorLengthY == 0) this.arMotorLengthY = 600;
+ var motYPosX = rect.Left + (rect.Width * ((arMotorPosition[0] + 1) / (this.arMotorLengthY * 1.0f)));
+
+
+
+ //g.DrawString(arMotorPositionYP.ToString() + "/" + motYPosX.ToString(), this.Font, Brushes.Red, 100, 100);
+
+ //Y축 모터의 현재위치를 표시한다
+ g.DrawLine(new Pen(Color.SteelBlue, 10), (float)motYPosX, rect.Top, (float)motYPosX, rect.Bottom);
+
+ g.DrawLine(new Pen(Color.Black, 1), (float)motYPosX, rect.Top - 5, (float)motYPosX, rect.Bottom + 5);
+
+ //Y축 모터의 영역을 표시한다.
+ // g.DrawRect(rect_picker, Color.White, 3);
+
+ if(arPickerSafeZone) g.FillRectangle(Brushes.Lime, rect_picker);
+ else g.FillRectangle(Brushes.DimGray, rect_picker);
+ g.DrawString(arMotPosNamePX, arFont_MotPosName, Brushes.Gray, rect_picker, new StringFormat
+ {
+ Alignment = StringAlignment.Near,
+ LineAlignment = StringAlignment.Center
+ });
+ if (arMotILockPKX) g.DrawRect(rect_picker, Color.Blue, 5);
+ else g.DrawRect(rect_picker, Color.FromArgb(50, 50, 50), 3);
+
+ //중앙에 Safty Zone 글자 표시함
+ if(arPickerSafeZone)
+ {
+ g.DrawString("PICKER X - SAFETY ZONE", new Font("Consolas",12, FontStyle.Bold), Brushes.Black, rect_picker, new StringFormat
+ {
+ Alignment = StringAlignment.Center,
+ LineAlignment = StringAlignment.Center
+ });
+ }
+
+
+ //Z축 모터의 영역 계산
+ var motZLPosX = motYPosX;
+ // var motZRPosX = motYPosX + CvtMMtoPX_W(motZSpaceMM / 2, 0);
+ var motZPosY = rect.Top - CvtMMtoPX_H(50, 0); //Y축하단에서 50mm 아래에 Z축을 표시한다.
+ var motZHMm = 300;
+ var motZhPx = CvtMMtoPX_H(motZHMm, 0); //
+ var motZwPx = rect.Height;
+ rect_zlaxis = new RectangleF((float)(motZLPosX - motZwPx / 2.0), (float)motZPosY, motZwPx, (float)motZhPx);
+ // rect_zraxis = new RectangleF((float)(motZRPosX - motZwPx / 2.0), (float)motZPosY, motZwPx, (float)motZhPx);
+
+ //현재위치를 표시하는 영역생성
+ var zlSize = g.MeasureString("UNKNOWN", this.Font);
+ var zrSize = g.MeasureString("UNKNOWN", this.Font);
+ var zSizeW = Math.Max(zlSize.Width, zrSize.Width);
+ var zSizeH = Math.Max(zlSize.Height, zrSize.Height);
+ var rect_zlposname = new RectangleF(
+ rect_zlaxis.Left + (rect_zlaxis.Width - zSizeW) / 2.0f,
+ rect_zlaxis.Top - zSizeH + 5,
+ zSizeW,
+ zSizeH);
+
+
+ g.FillRectangle(Brushes.DimGray, rect_zlaxis);
+
+
+ //테두리
+ if (arMotILockPKZ == true) g.DrawRect(rect_zlaxis, Color.Blue, 5);
+ else g.DrawRect(rect_zlaxis, Color.DimGray, 3);
+
+
+
+ g.FillRectangle(Brushes.DimGray, rect_zlposname);
+
+ if (arMotILockPKZ == true) g.DrawRect(rect_zlposname, Color.Blue, 5);
+ else g.DrawRect(rect_zlposname, Color.DimGray, 3);
+
+
+ //피커Z축위치 표시
+ g.DrawString(arMotPosNamePZ, arFont_MotPosName, Brushes.Gray, rect_zlposname, new StringFormat
+ {
+ Alignment = StringAlignment.Center,
+ LineAlignment = StringAlignment.Center
+ });
+
+
+ //중심점 센서 확인
+ g.DrawLine(new Pen(Color.Black, 1), (float)motZLPosX, rect.Top - 5, (float)motZLPosX, rect.Bottom + 5);
+
+ //Z축 모터위치와 길이확인
+ if (this.arMotorLengthZL == 0) this.arMotorLengthZL = 600;
+ var motZLosY = rect_zlaxis.Top + (rect_zlaxis.Height * ((arMotorPosition[1] + 1) / (this.arMotorLengthZL * 1.0f)));
+
+ //상(Rear), 하(Front)로 영역을 그린다
+ var port_width = rect_picker_left.Width;// * 3f;
+ var port_height = rect_picker_left.Height; // rect.Height * 0.2f;
+
+ //New Front Position
+ var newYF = (float)(motZLPosX - port_width / 2.0);
+ if (newYF != rect_picker_left.X)
+ {
+ var offset = newYF - rect_picker_left.X;
+ this.rect_picker_left.Offset(offset, 0); //좌표가 변경되었다면 재계산
+ this.rect_picker_front_vac1.Offset(offset, 0);
+ this.rect_picker_front_vac2.Offset(offset, 0);
+ this.rect_picker_front_vac3.Offset(offset, 0);
+ this.rect_picker_front_vac4.Offset(offset, 0);
+ }
+ if (motZLosY != rect_picker_left.Y)
+ {
+ var offset = (float)(motZLosY - rect_picker_left.Y);
+ this.rect_picker_left.Offset(0, offset); //좌표가 변경되었다면 재계산
+ this.rect_picker_front_vac1.Offset(0, offset);
+ this.rect_picker_front_vac2.Offset(0, offset);
+ this.rect_picker_front_vac3.Offset(0, offset);
+ this.rect_picker_front_vac4.Offset(0, offset);
+ }
+
+ //피커 #1 Circle 색상
+ var Bg1 = Color.FromArgb(100, 100, 100);
+ var Bg2 = Color.FromArgb(160, 160, 160);
+ if (this.arVar_Picker[0].Overload)
+ {
+ Bg1 = Color.Tomato;
+ Bg2 = Color.Red;
+ }
+ else
+ {
+ if (this.arVar_Picker[0].ItemOn)
+ {
+
+ //if (this.arVar_Picker[0].isReelDetect)
+ //{
+ Bg1 = Color.Lime; //.FromArgb(100, 100, 100);
+ Bg2 = Color.Green;//.FromArgb(160, 160, 160);
+ //}
+ //else
+ //{
+ // Bg1 = Color.Magenta; //.FromArgb(100, 100, 100);
+ // Bg2 = Color.DarkMagenta;//.FromArgb(160, 160, 160);
+ //}
+
+ }
+ else
+ {
+ Bg1 = Color.FromArgb(100, 100, 100);
+ Bg2 = Color.FromArgb(160, 160, 160);
+ }
+ }
+
+
+ using (var br = new LinearGradientBrush(rect_picker_left, Bg1, Bg2, LinearGradientMode.Vertical))
+ {
+ g.FillEllipse(br, rect_picker_left);
+ }
+
+ //피커 #2 Circle 색상
+ if (this.arVar_Picker[1].Overload)
+ {
+ Bg1 = Color.Tomato;
+ Bg2 = Color.Red;
+ }
+ else
+ {
+ if (this.arVar_Picker[1].ItemOn)
+ {
+ //실제 아이템 체크
+
+ if (this.arVar_Picker[1].isReelDetect)
+ {
+ Bg1 = Color.Lime; //.FromArgb(100, 100, 100);
+ Bg2 = Color.Green;//.FromArgb(160, 160, 160);
+ }
+ else
+ {
+ Bg1 = Color.Magenta; //.FromArgb(100, 100, 100);
+ Bg2 = Color.DarkMagenta;//.FromArgb(160, 160, 160);
+ }
+ }
+ else
+ {
+ Bg1 = Color.FromArgb(100, 100, 100);
+ Bg2 = Color.FromArgb(160, 160, 160);
+ }
+ }
+
+
+ //피커 테두리
+ using (var bgPen = new Pen(Color.Black, 3))
+ {
+ var posT = arMotorPosition[6];
+ g.DrawEllipse(bgPen, rect_picker_left);
+ g.DrawString(posT.ToString("N0"), this.Font, Brushes.Black, rect_picker_left,new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ }
+
+ //피커 내부의 진공 표현
+ g.FillEllipse((this.arVar_Picker[0].VacOutput[0] ? brVacOn : brVacOff), rect_picker_front_vac1);
+ g.FillEllipse((this.arVar_Picker[0].VacOutput[1] ? brVacOn : brVacOff), rect_picker_front_vac2);
+ g.FillEllipse((this.arVar_Picker[0].VacOutput[2] ? brVacOn : brVacOff), rect_picker_front_vac3);
+ g.FillEllipse((this.arVar_Picker[0].VacOutput[3] ? brVacOn : brVacOff), rect_picker_front_vac4);
+
+ //피커설명 표시
+ if (arVar_Picker[0].Overload)
+ g.DrawString("OVL", arFont_picker, Brushes.Black, rect_picker_left, sfCenter);
+ else
+ g.DrawString(this.arVar_Picker[0].PortPos, arFont_picker, Brushes.Black, rect_picker_left, sfCenter);
+
+ //피커 진공표시 테두리 (진공출력상태에 따라서 색상을 달리 함)
+ g.DrawEllipse((this.arVar_Picker[0].VacOutput[0] ? penVacOn : penVacOff), rect_picker_front_vac1);
+ g.DrawEllipse((this.arVar_Picker[0].VacOutput[1] ? penVacOn : penVacOff), rect_picker_front_vac2);
+ g.DrawEllipse((this.arVar_Picker[0].VacOutput[2] ? penVacOn : penVacOff), rect_picker_front_vac3);
+ g.DrawEllipse((this.arVar_Picker[0].VacOutput[3] ? penVacOn : penVacOff), rect_picker_front_vac4);
+
+ }
+ }
+}
diff --git a/Handler/CapCleaningControl/PrintDirection.Designer.cs b/Handler/CapCleaningControl/PrintDirection.Designer.cs
new file mode 100644
index 0000000..01e8149
--- /dev/null
+++ b/Handler/CapCleaningControl/PrintDirection.Designer.cs
@@ -0,0 +1,37 @@
+namespace UIControl
+{
+ partial class PrintDirection
+ {
+ ///
+ /// 필수 디자이너 변수입니다.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 사용 중인 모든 리소스를 정리합니다.
+ ///
+ /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region 구성 요소 디자이너에서 생성한 코드
+
+ ///
+ /// 디자이너 지원에 필요한 메서드입니다.
+ /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
+ ///
+ private void InitializeComponent()
+ {
+ components = new System.ComponentModel.Container();
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ }
+
+ #endregion
+ }
+}
diff --git a/Handler/CapCleaningControl/PrintDirection.cs b/Handler/CapCleaningControl/PrintDirection.cs
new file mode 100644
index 0000000..ef5fadf
--- /dev/null
+++ b/Handler/CapCleaningControl/PrintDirection.cs
@@ -0,0 +1,106 @@
+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 PrintDirection : UserControl
+ {
+ public PrintDirection()
+ {
+ InitializeComponent();
+ // Set Optimized Double Buffer to reduce flickering
+ this.SetStyle(ControlStyles.UserPaint, true);
+ this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
+ this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
+ this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
+ this.SetStyle(ControlStyles.ContainerControl, false);
+ this.SetStyle(ControlStyles.Selectable, true);
+ this.Resize += Loader_Resize;
+ BorderColor = Color.Black;
+ }
+ [DisplayName("AR_TITLEFONT")]
+ public Font TitleFont { get; set; }
+ Boolean bRemake = true;
+ void Loader_Resize(object sender, EventArgs e)
+ {
+ if (this.Width < 16) this.Width = 16;
+ if (this.Height < 16) this.Height = 16;
+ bRemake = true;
+ }
+ public Color BorderColor { get; set; }
+
+ List rects = new List();
+ [DisplayName("AR_COLORS")]
+ public Color[] colors { get; set; }
+ [DisplayName("AR_TITLES")]
+ public string[] titles { get; set; }
+
+ protected override void OnPaint(PaintEventArgs e)
+ {
+ base.OnPaint(e);
+ var disprect = new Rectangle(DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width - 1, DisplayRectangle.Height - 1); ;
+ if (bRemake)
+ {
+ rects.Clear();
+ var w = (disprect.Width - 2) / 3f;
+ var h = (disprect.Height - 2) / 3f;
+ for (int i = 2; i >= 0; i--)
+ {
+ for (int j = 0; j < 3; j++)
+ {
+ var rect = new RectangleF(j * w + 2, i * h + 2, w - 2, h - 2);
+ rects.Add(rect);
+ }
+ }
+ }
+ for (int i = 0; i < rects.Count; i++)
+ {
+ var item = this.rects[i];
+
+ if (this.colors != null && i < this.colors.Length)
+ {
+ var color = this.colors[i];
+ if (color != Color.Transparent)
+ e.Graphics.FillRectangle(new SolidBrush(color), item);
+ }
+
+
+ //테두리 그리기
+ if (BorderColor != Color.Transparent)
+ e.Graphics.DrawRect(item, BorderColor, 1);
+
+ if (this.titles != null && i < this.titles.Length)
+ {
+ var title = this.titles[i];
+ if (string.IsNullOrEmpty(title) == false)
+ {
+ using (var br = new SolidBrush(this.ForeColor))
+ {
+ if (i == 4 && TitleFont != null)
+ e.Graphics.DrawString(title, this.TitleFont, br, rects[i], new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ else
+ e.Graphics.DrawString(title, this.Font, br, rects[i], new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
+ }
+ }
+
+ }
+ }
+
+
+
+ //전체외곽
+ //e.Graphics.DrawRect(disprect, Color.Black, 1);
+ }
+ public void SetColor(int idx, Color color)
+ {
+ this.colors[idx] = color;
+ }
+ }
+}
diff --git a/Handler/CapCleaningControl/Properties/AssemblyInfo.cs b/Handler/CapCleaningControl/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..44193bf
--- /dev/null
+++ b/Handler/CapCleaningControl/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
+// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
+// 이러한 특성 값을 변경하세요.
+[assembly: AssemblyTitle("CapCleaningControl")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("CapCleaningControl")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
+// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
+// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
+[assembly: ComVisible(false)]
+
+// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
+[assembly: Guid("9264cd2e-7cf8-4237-a69f-dcda984e0613")]
+
+// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
+//
+// 주 버전
+// 부 버전
+// 빌드 번호
+// 수정 버전
+//
+// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
+// 기본값으로 할 수 있습니다.
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Handler/CapCleaningControl/Properties/Resources.Designer.cs b/Handler/CapCleaningControl/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..a366221
--- /dev/null
+++ b/Handler/CapCleaningControl/Properties/Resources.Designer.cs
@@ -0,0 +1,243 @@
+//------------------------------------------------------------------------------
+//
+// 이 코드는 도구를 사용하여 생성되었습니다.
+// 런타임 버전:4.0.30319.42000
+//
+// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
+// 이러한 변경 내용이 손실됩니다.
+//
+//------------------------------------------------------------------------------
+
+namespace UIControl.Properties {
+ using System;
+
+
+ ///
+ /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
+ ///
+ // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
+ // 클래스에서 자동으로 생성되었습니다.
+ // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
+ // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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() {
+ }
+
+ ///
+ /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
+ ///
+ [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("UIControl.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
+ /// 재정의합니다.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap air {
+ get {
+ object obj = ResourceManager.GetObject("air", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap alert {
+ get {
+ object obj = ResourceManager.GetObject("alert", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap bcd {
+ get {
+ object obj = ResourceManager.GetObject("bcd", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap bg_blue {
+ get {
+ object obj = ResourceManager.GetObject("bg_blue", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap bg_red {
+ get {
+ object obj = ResourceManager.GetObject("bg_red", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap debug {
+ get {
+ object obj = ResourceManager.GetObject("debug", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap debug40 {
+ get {
+ object obj = ResourceManager.GetObject("debug40", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap emg {
+ get {
+ object obj = ResourceManager.GetObject("emg", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap erase {
+ get {
+ object obj = ResourceManager.GetObject("erase", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap error {
+ get {
+ object obj = ResourceManager.GetObject("error", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap help {
+ get {
+ object obj = ResourceManager.GetObject("help", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap icons8_pause_button_30 {
+ get {
+ object obj = ResourceManager.GetObject("icons8_pause_button_30", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap info {
+ get {
+ object obj = ResourceManager.GetObject("info", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap mot {
+ get {
+ object obj = ResourceManager.GetObject("mot", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap plc {
+ get {
+ object obj = ResourceManager.GetObject("plc", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap reel_big {
+ get {
+ object obj = ResourceManager.GetObject("reel_big", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap reel_small {
+ get {
+ object obj = ResourceManager.GetObject("reel_small", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap safty {
+ get {
+ object obj = ResourceManager.GetObject("safty", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+ }
+}
diff --git a/Handler/CapCleaningControl/Properties/Resources.resx b/Handler/CapCleaningControl/Properties/Resources.resx
new file mode 100644
index 0000000..da63550
--- /dev/null
+++ b/Handler/CapCleaningControl/Properties/Resources.resx
@@ -0,0 +1,435 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABXRJREFUWEft
+ WHlM22UYxmMeMWo8ojPxH2E6l02dqPFWsrgZ2WaWsbiLjcTEOc8tGq9t0f3hkajTMGJBEDY2GFA3xmCj
+ COUqpXd/pa1dyzoJjGsgx2DGxOn4fN7m/fWADtNC2WL2JE8gv/f73vf5rvd7v8ZdxqUGu91+h9VqXQQu
+ t1gsiS6X6xo2XVxAzFK9RdLnqN1iR0WbeL+sQ3xZeVKUNTnOwqYA7+KmMwulUnkVgud8W+UVD+cMi3sU
+ ZydwZWGvqGh2jpjN5sXcbeaApcx9p/RUWGHBXPDjiChudJ2TJOlJ7hp7YOZWfK3yhghZU9wrdle3itxa
+ t/gUS/147pDftjB7WNTpbW1er/dadhFbNJkk60MIKgsgsZjRDCxlvMPhuAUDWNJokNzJ+/v8bWhvwr6R
+ XcQOQogrihpc5+XAqw/0CgjazWY/jEbjbapmx8AcxaivXWLOEAksZ3NsYbRIVWklXWJ5wWmham7p1ul0
+ t7IpBBD0xYrC0/5ZrNbbO9kUW2i12hsRfDsJAOP58wTA9vbGkm6/wHLMKJsuDWDpC5/OG/SJS8gcFdiX
+ LjZdfGD2krPV7jF59l7c1097VcHm6EGbGyfyFXBTNKRlhZADWTWesfnIgbLADKQg5MJHOUx0MBgMd6u0
+ 9sF3SzvEpoNdUZEOz3N7BvzCiGuLeygN7eMw0QMjfy81aFNPB0mc1mST6GBxmOiB5Vm182hb2ECRkA7E
+ S/v7haKmdQyDzp8WcQRKwnD4TWWzva9cax+NhkebnYNNRpsTS5oBX4ns+n8OjHYlcpTjcJOjZyZYq7d1
+ aAwSwlpzwWVYuStZykSYTKbZRSiH5mYFUsJMMAF3dNLe332Vj8Zo80DHUywpFLRPvlKdDOtkpkiFREGD
+ 62/M5nqWFUB9ff3VWF7zB2XtYfNaLEi5cilKMTrtssh78X9+3fF/kEmSWFoAEHkdDCkYQdjbIQZ8C/xO
+ pXMMrC7q9Yt8MPuMwP5s9xe2ELV4XMdJifZrwAtWL5ECN9dNBqPl2Hokc1kkF7YbaO/totdXakmPWIcG
+ /8UNuGHoDZJZ4xF6s6WarkWOMyXguXqDWt/SNTeLC9ufhqmoqIgr0zj+kFVHykU4fRVax9CUL38GBO2g
+ N43sv1LnHIjDwbA/EfSwiZSJeGqq8RBCNX09x4kaWNJVVKDIvpWaX89Rcp6nN1vVuJ66wyXT8SzTOvqy
+ 1Z6xpKBKhU4kRv8xxwkBvq9D4HJwJ/6fxZ/DAvY3X/05UKTg0T/KpsgARwlqg/3UApw2cnQ/9o3OLJnY
+ 7AcG/+wP1R7xANptPthJg8hkU1gYTJKW9h75pL1oNEl6NkUOBNuSpgyM9ojWOcImP6hNanGgTUbNiTHM
+ 5Fo2hwDfP/wsqIKiNwz6f8Lm8ECDRLXB9ptS4/oL/6cH35WYnc9Tgl5qlTp7H5v8wLU1P682UO7TNapQ
+ t46hby5sz0NUPPwuMVkspZRJ4jlhU+I+1OT8ExniTnYVHhqjZKJfA6jT1sMdNCIlnCbh75YC3NvyW/cR
+ XFEIUsHdQoD2379xqNPXTmYyakSarfTqE74fmigbBNvpXsYgtrKLC6NOL7nuCyoelhX0ie3lbeJ17Ce6
+ kuTvVNxCSAp3CwEGM0tntvyyeZzIcIwHt8E/+uRw98mBhmm7qry+juEcEmmZkQVqqMjlbhNAIsF0Ov0v
+ 5IfOFpH8v4zHf2G9kwqFbZP5mgDavLnYR8/wu1bmPLzUPjrSLgxmqRHBb+bmkwL7biH85VXqHGeyaty+
+ F15OrUeodC39NACIm8NNIwMcPwYHymNae/+eOrcobDh+HoWmHQ5fo98HuVlEgM/ZEEuH5Hb+ND2gh8+M
+ /Xx2GVNGXNy/B7Gt3iRjVn4AAAAASUVORK5CYII=
+
+
+
+
+ ..\Resources\icons8-automatic-gearbox-warning-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAsxJREFUWEft
+ ll1IU1EcwBdGBUFvPfRUD0VBjaAeerCHCMyHHkrXsZwhohOE2q6F835s0jUlg6h7J2rp7hJsICzQHiJI
+ LGePfdFLDyVEEEG9SEEguez0P/Nfzu3cfRjn+rIf/OAw/uec38O2e11lypQpEcWMBRXTWgSpQ75X++9u
+ x+sLo5rWC84hYo3EavD6wihmdIJ7iFgJXl8Y1Yz1cQ4QbfGBcsTycg4QbfGBmjG8g3OAaIsPZMAv+Tnn
+ EGHKkegpvLo45EjMzztIgClwRu+Pb8Ori6PjxthW2Pgl46D/tvPmCJWuD9C27lu0OdxHz3depWcv6efw
+ ytJRjFgD76JCdvXfXhoY6aWDd0K0vaeXNso9tK49TM8EtBw9kjaE160N+AO9ApcuZUegC7IZfaUY1his
+ ZdmwTirG6C76aPfmxeSB8VTSTb9NHaKh7jZuHNMT0N7hVWtHNaxKNWINQcQ92bTCqhGtDUZG95BEogJH
+ cqAJUpGadU+zyPmpw7Q52MENZNZeCO3Ebc7yc8a9DwJ/s8j4YB03jkkktQW3OA/EvWGBrxPHuXHoOI47
+ D8RNssC5B5W8sGUl9SuMblje4TC/Zt0N8F18+SxePceNQ2v88kHcsj5AxLXsqExJIHQZR9cHiPicHbVK
+ SXuIo+sDRKRyolb7/Ziub8Rx54EAH/gxIyhHj6QewfH8VHlb3zLZ+oTXp1d5fbS6vnU/k63ZZytzPrpi
+ S/qVKb2u991n60yamvQt8OQY5sUx4f9QwdH8iApksEiImc+OWzb0GMfyIzKQATHTuXFpfxBd34Rj9ogO
+ JH5tkhOXlkihozhmj+hACElmh2XYhWP2OBD4IStqRUl9gmP2iAwkUngvNwwlAe0pjtojNDCgSbywv8J3
+ 8CKO2iMyEB5pjbwwNEEIsX0J/ofIQPY4gxD24sCeKgvgJ3DC066expEyZcqUhsv1B6iAtIhPh2shAAAA
+ AElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAAAsFJREFUeF7t
+ nL1uE0EUhS0QvBDvYCcVCHAQeRoXId4N1IBrRyClSiSwgR7vFoCgQHZkp4wpDUqo+Bnm7M5AFM1aa07n
+ OUf6uvG17ifvrKvTUBRFUZan3fl8vdnN7rXS/FkrySetJDu3mDXD7mR3K3bMtrCzW59Lq5vf2UhGJ5e+
+ LAZmG2l222lYPe2Dg6utNHvkB24/+WR2h3PT//DdHB3/NIPZ77UCO2E37Ihd/d72x/Ow0zFXnJb68fI2
+ 93KTvPliBtPwF68jL6e/TPf1vNgdDpppvue01AseWy+vN/oa/JIY6I0WFySObjk9y4PL0995xS8vMDgm
+ dl/N/eM8rfViKd629gO4B/BTDg2NCTjYfvyxvA+7o7bTVJ1mkj3HYZgPDYyRneGpE5jtO03VsQePcXjf
+ vpFCw2Kk//7cPcb5xGmqjj14hsOHkx/BYTFyZF2UArMzp6k67mBwUMx4L05TdSQwjASSSCCJBJJIIIkE
+ kkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkE
+ kkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCDJKgKL0gkU
+ LYQGxcjh+G/pxDenqTr2kGpPLrFa7UnZn2ceDE+Dw2JkZ1AW7zSTrO80Vcce3MJh1B2p+qmsfrrvqp+a
+ aX7XaaoOCrbs4Rk+gAq40NCYQJ8gXFimN3rvrjlNy4PmRnyorL9bBAfHwNO3C7OZlvV39v676fTUC5ob
+ vUQUkcX0OL+wu+KX909eljot9YPaSzQ3ugHFnYgWM7yR1rFXCzthN7w8/Z3n5f1XBagPmhvtkOmFgbFg
+ d17xsa0KLk+UD6I/zw4eW4o/22sGdhpjR7xta78wFEVRok2j8Qfk0Qty9BRILAAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAAAsFJREFUeF7t
+ nMFOE1EYhRuMvozLtok+gxq1UMDAri7EXaXs2WkpbO3MGiyKb6EriVsD9g68AwFcSa73n/mnMeROM8PZ
+ zT0n+XZ37uT/OnOnq9NgGIZh5ufh0a8H7ShZaUXJxHHaisyVw9YMN5PMlkzaY7MsM+v4WFrj6aLb/OzW
+ zUIgaUfTjmqonu6Rved+id18w5W9b/ZwMLRnvZ79s/bS2tUntUJmktlkRpk1n7sZTUeNbbugWsonl/f4
+ 46n9+u69vVl96r1xHbl59cx+2fyQzp6JTHZUS7noa5tucPym771JCBxv9GcSm3HyQvXMjxye7oL0zJMn
+ z7dxSHzeHGZPYWxMqQ9L9rXNzjx5lH2bhoQ4WN77rk+h6aqm4rTi6aEslsPUt2GIfBqMMoGROVBNxXEL
+ f8vic/dF8m0WIknvdfYau/+Jqqk4buGlLL6u4V+Vu3K93lGB5lI1FUcXejcKmdyLaioOBfqhQBAKBKFA
+ EAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFA
+ EAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKki
+ MCudWO94NwqRq7XFXOCFaiqOW8Tak1tUrD2RjkBjJ4Md72Yhsr+1mz+B+6qpOFI+KIul7ojVT1n1U1er
+ nxxLqqk4Wj6WyAVSAefbNCSkAiuVFxvTjH/eV03zI82NclFaf7cRbv3dj7d9+2icdwia56qnXKS5MZco
+ FXAhvc5/3azy5M3kxclQtVTItl2Q5ka1n56J0mImX6Q69mrJTDLbwdbo/zMvk3eXCtA80two7/9sw1DI
+ Zq722hZFDk8pH5T+PLfpiSP9s10zZKYTnXGp9AeDYRgm2DQa/wBGopc1FSaqkQAAAABJRU5ErkJggg==
+
+
+
+ ..\Resources\icons8-bug-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\icons8-bug-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABOJJREFUWEft
+ WOtvFFUUb6Ifff8HRv8AE9xZmqJsd0ZgW0BCWWp4tDxcKIK8FFsSEx/VAlXjB1NrNWpCMUSiSLR0i00w
+ EEHlIeq3on4UE40K2Z2ZfR/PuXvnzr0z03Vf9VNP8ktn5575nd/ce+fcc9oyb/NWwf6Khe8yDa0zHdX6
+ zaj2Nv79iMCv+2mMfLj7/2MQidye0sNPpPXQl2ldKyDgP5BHTKX0UDfE47dxmrkxFLYmpWu/egRUDVPX
+ fkkZodWcrnl2a2nrfSjsVFBQgrkyClZvHOydW8HevQ3sJ9fjPT3Ql4BcJ28uWnQvp2/MbkVaHwyaNbMr
+ Brk3DkPxi9MAV34EuPqTD8WpafQZBqt7ufIse97Qfr4ZXfAAD1OfkTgk+10hXhGF/OgIwKVrgaICgS+Q
+ f2c0aFZv1C2SL6syc3ZiA5TOnlcCFz49CdlDg2DvSoC1uRusresgs7cPskMv4+xOKEJL575Gjo2yQDaT
+ /0QeuoeHrd6C9pzVuxbgm8ssWOHoUbA2rlHGg2BtWA2Fj0+4Qi99z16Atkh26CXmY+qhT3jY6iwV1eLe
+ QA7s3QnIDOwLHKuEzMFnAC7/IESWzl+A/IcfiHH8wlfx8JWtnOekpTXCYO/YLIgagf10golzZlMWiLhe
+ VZ4sJ+HyQ7SEtMeIzFq3SiarHfiiucOvKF+8RyBgjlzLZcxudEKwL3XkLYUs9+ZrClmtMDseZdsjO/gi
+ 5N8bg+LnE5B/d8zrl+Qygu1vY8Hd6FQwOxezPVOaPisEls5dgPSSVi9hs5H/s63tTi7Hb+zglx4onp4q
+ i5v+Cq+TYO/pk8nmBGb04RiX47e0ERoQjsvb3eV9/Uj5XsdihaxhLGtjqSsde8S9Z2gHuBy/pQxt1HGk
+ hOsIpPNVEDQJdt8mscetHjefmnp4hMvxGzocEwS4oYXALesFQbNgbep2+Z/aIo2Fx7kcv6FDoECaTZeg
+ OVAEYhXkjlUQKC+xrSxxQiJoDljS5vzVLzGW6cLxcV0Q5IaHBEGzkKWkTfy4DynvirFo+Fkux29me7hD
+ JqF6jkjoNJHvNwPFz04xbqp41LHQMi7Hb9TgoBP1EMyZik1nFmnPuCSNgZbU4c0NH5LHchUTNRnmoTOC
+ CCthJxUUxsdlooZAXEwgFg5m11JpLDzJZcxu1H3JZPmxUfG29ZRZXmSf7xd8VJnLY1TmcRmzG5U8VOU6
+ D9GJIqrob6+wBCuT1gKWnL+7yrjobPe0ADNVt6UpI9wlPQj2th63B8EAmef2ysR+yEcXBytYHQ78a2/v
+ UcbN9oUrefjqjFpDmYCOO+ftCbSPgkp+M96Jdd774jedtWrJfw0y+3epzxjaCR62eqO+VV5qgr29V22a
+ EJl9O9xAWKYVJ6ewnL9YbkknJhVfWlbvzCFmqMzjYWszagmR4IZMaK6IuG0n9hiU0NnYYwuhcPy4IkgA
+ fekZavBlLsx5v9lLtPt5uPqMRHpnkkDpITOwX/zOHNijisL0VJxMQu7Iq7jsMeVZjpmGxTlGfSu1hgFB
+ FNBXWkyeYQIpnQT5EGjP1b2slYxaQwxw3RtQAS519oWD2PMOBo3P1Py11mqUq6j7wmBJhDgWfcAujl/n
+ 6ISgJDzn/37zGp2b1ENQmU5lEoqhevIYu8Z7dPD/EYncwd3nbd781tLyLxOgcrDBNHH8AAAAAElFTkSu
+ QmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAK
+ YQAACmEB/MxKJQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJrSURBVEhLvdZd
+ b9JQGAdwEr3wTm9M/AheqJlfxWSfQudMBnYaWarQ8WIyMBlUWoSp0CkzawWM6C5G0aiZzhfoMCZidIu6
+ bG5DL8yc0mMPO8cwOIUyWv/J/6aF55eekifYzMogHT424AqdoGl6H7pkfSgvn/bzYu36XVmlfNHNU3Tk
+ MLplXRwe7mn0zqw6pyyCuYUlIL+sgLPe6O+BS+xx9BHzA1GGnVLThTJ4UvxUh2ELrypg2BezBseomFeA
+ JCsg84iMn2FCfegrvacZxW3BtWMf9se2TMH10B14aSdO+a719uSdUFxTcaMorg7e3bHbPZH0yBVBlfIl
+ IqLX7OMyeNbwzvPz74HDw//UlsxeNFo/rnCSCgnZqjNwE9x6ME8E2jXThN+QCurgxXA/Gk8OROPizFr1
+ lwreLa2CnnFtyVzmp2unGfYIIlrTiP7YAvX+wx/uAtfeOZeaUbWjTiOiNe6Q4Elm5Y3vCGxs5es6GNHw
+ yfvPiQCp4mwJXAgmVDvD3UZEa9qhuBgXci+IUGNNQ3GN4KajuO1wQyjDCkPNPySjJeEQdWqow8uJiGiN
+ wx8/FJyQlneD4kLcObaNG0Jhzvu5PuGevEoa2E3fLq7Un9wZTKpDTCSLxuunP5XaM8pOvi5/XK6RBhot
+ PLHxRKZq9/ASGt05lDey380KpTeVz39IQzt1Y7OmLYfcmms8cRKNNJ46HhaUbvGeUByMFytfDOGmoDhG
+ cVNRnE44RKNTuW+mojh0IH6AhFuK4kCcCQsLxQ/b+H9Bcc6Nxg66rwqKtsfXAxPTK3C9olvWB/5Hosbi
+ R+F6RZd6jM32F+J393EUKic/AAAAAElFTkSuQmCC
+
+
+
+ ..\Resources\icons8-hazard-warning-flasher-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\icons8-help-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAK
+ YQAACmEB/MxKJQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKmSURBVEhL1ZfL
+ bxJRFMbrwvj4a4wLXdRUXZo4vGkxtDst0MQFGKMwMB1eKdVNI9CdaNQmxkWtIQyvqRTqprU8VpZuNLFt
+ FOq0tbpo7ALvCbch0gsZ4Frjl3wJmTnn/HIvl3MPff+F9NZXZxi7cFnBCka1K3lf7Uzcg88KNjZwhc+c
+ xmH0pOFSar17Pmfwvd0YCxertsjavmPmUw1se1zeh2cGf2Z90D2fVXMJJU7rXhoucVXPi2vm6dKe/021
+ 9jC+29YQYw4X9/QesazhkwO4TGfSuUXXSCD3zfe6QoS0s3euUhtGuTo+5cDl5EnHi89NofzuA2GHWFiO
+ IdcULOwg+FNctr104ym/JVz6QSrWjS2hwne09RwuT5aajV8yBhalXlbabKhlDOQkrSt2EWOaVTuhd6dX
+ fTIOUaf2z1VrWj79ARgY1pDKmVTBd0JKfLn0s3aoz9LBkffw7FAQ2/webArmtxln8jrGNTToSb9rtVoa
+ YPh16N1iFuPqYvjoWYN/YZOUAKYBBhu8C5t/dDhoeZbpkkQKBtMCm0NFSWEX+jEWTrNgvBMpH5CCwbTA
+ tsjqL4aN3cBY1BpRl7K/+EgMBtMC21FvR33fhbHQk5Pj9pljAqNFYmx9q2EbSMFgWmArYihZYQhj/+Hh
+ unZbODXky2yQgsG0wAZvZn10dOUkxtaF2mXubzcQHZ/OYFxD0DLNocI2KYkG2PSoRcsEocu/4Jn9Skzs
+ xZ7ZL9AuVzDmqDQuod84kduifS0OT2SrKjZ6AWPIQrPS2K2p9y1PeKe+ObUsabi4CZdvL3R3PqM1+mh5
+ 8QkuK09aLn13ZLKHYW9ycUvrTltxuc7EOKLnUfIyGlkrssfbYL6KBrwllSN2DpfpXjCkyx3olVySwWn0
+ dOx/Yeirr+83SXRvTbd4pKkAAAAASUVORK5CYII=
+
+
+
+ ..\Resources\icons8-info-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABF1JREFUWEft
+ Vt1PU2ccZtebu5gXy7Ys2TJ3vf9id5rtZhdeumQxQbaQQQnooAWhxZaPtpSV0p5+QG0nLT0gVaHGQqQF
+ lkgUK6UyQJSYbZmaqVkCi5ydp/m97Hh62h5LSxazJ3mSk/M+z+/39LwffateOySCX22lr317rxTCS2Uq
+ h3Ss+o+d9T6hFMJLZSqH/wPuF//pgDVnLJ/09bU/dwx2PyuF8KIGlSsvTp2xftxs9qdH40sCP5MqiZH4
+ baHFHMjUt9k/pbLlQTnCMZY9ZDnDMZYtZCXCMe47ZCXDMZYc8iDCMb5yyIMMx6g6JM6oZvP5ZRiUCknJ
+ jSWeGRyRVTU0cRcfFKuJcfQueE42mrw31YT7MXj1UZ3e2UG2oqAfnlYTEhnIlovmXv+MklFK6/Dkb/Ud
+ Tg1ZVANL54fe4ksHGciSi3qD2x2O31I0gl3c+P269oHjJH9lFAuJ9w0GzkXyXJxq6z/mjszuyI2R6ZSg
+ t4+u1bcNfE7SklEoJMdf/7tGZztK0lyc0HQeOufk78mNLZZApqbV/hnJ9g2syRZxTcr7oDcykEwZzRZ/
+ Um4UN4SHhssG1JT3EUMnaDg/Gjpdgcj0y7tNKeCggW8K2q9tXnDMbBQiNNCSbQ/ygOjZcI7z03B+fNfa
+ f9w7nnwhNcsD9mgDH0U8iY1f7jwV1JD3JDZt2qEjZM9CHtA7lnxRq+0vvgG/1na/Y3Jf3JKa5QHdXdHp
+ zNKTvQCrqafC8o3Hwu2FR1niGe/Y+F1R6zZGp4Uq4Q0qkRPQxI1vVTf2HabhwtBZAj9LzdKAg/rI9wvx
+ jb9Y8yUx0NzUQ+FSMCWEXfPbIJ7xDmGZDh54qUxOQK01sEBDxdFgdId5yTpkAbtPez8Ic7NrrOni7O/C
+ ZGh519cbW7ad5Y8a63xvgnbx2WeeSk+G0rvQMD28qIFa0oA4xhqNnhG8V4XaVvvJoej8rjwgZ4zGVmhq
+ 8eUQzmO6wmVNCuCMV7xToZVdaOGBFzUwJg04HJ0Xas86TmZNavBNU897vZ7or9KAg+189dzV9edohPWF
+ KcSXI0teiJqVudhD0fNnNiRqoJY0YI/Y64TG+j5Z1EFnDS6yAho9FxxxzqyiAYhNgHWGaSV5Xgy0hb64
+ /FNKuHPj302FWqjJ6uusgUWSq0edwTXCrktave/+ys3Hew0wZSHn3LZNe+EtkudFp8Z1SNTuSDdM5tYT
+ oUXve8DqoxfJS4PbOHFZIeCOmoCWmuG3lQK6TdEJkuwfvU3n31WaYuxWkuSFQxf+UmmKUZMk5YHiJhGP
+ EhrOiyFLLKO0SWi4vJAeM5gynHM4Smg4B+6uS/5YnmOmIlA6qHHO4Uv2d4wdw5oEMa0+cyyDcPkO6opB
+ 8a9OnEKss1FufhvEM96xLwfK/+oqCs40EcdOZM2xvrAJMO0gntmaA3FZEKf2pctCRWE7HfiQ9ybXWYBi
+ 5D3JTVzRyH4wwCU0zF1f472J1UKERunC+pqgquofdvoa6+LDQkwAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAnhJREFUWEft
+ ls1rE1EUxd/eP0BcigvBpS5sQcVdFEVTUFuoOi1pG8ViotSkBGea1tSQzJBObEhSMOmHMYm2JqmlWgNq
+ IoiLdiXBD1zozmVx6cJc33u+DIozNZ1JYsU58CMhN/eew7tvYJApU1tZMIe2wRSaw6w1lDh6jj/3Mhv9
+ ghgaxMOgKcRQidnoFx7iVR3eGCrMRr/++YDvvAgWL6pTvorgW0y9j9H8gPJpBMEObT6Oq/cxmh/wlQvB
+ LKdO/gKCrxH1PoZ5B41iBjSKGdAoZkCjmAGNYgY0yv8RcOu98vd6pT0cL+0juH3uA6/Du5ffT+5800je
+ yrtWs+KxrrOeiR3Mtn71jYY+9fAitIpeQfrACVI3s/+zAsl7n8dvp6EV8JEZ6B+TqzSsII6xCBur8Oxl
+ BQPzKyVw+SQYuMaDP5YA8tvPTM5mwe4SwDnih9TSk19qm+lN5pbBKcbIaVbP82I7i6EtPIAG7By4DPst
+ JxW8oahicGsmC20Wq1KzdHIwXywp9c32JguP2cqlaRZDW3hIJfWwSJs5hwvuLK7AoRNn4JTtkmJidwu0
+ Hs88gCteP/0uT6dpTW+v/Ua4ygniKouhLTykQlbUfrQDjnfbwBMIQ9sRK5wbHFJMHCM36WBiUDutqUyO
+ 1vT0xtM5sI2GyF18wWJoCw+hKx72TyirOGztUgIQyJ0jqyE1Qv/QdaWmpzeSKbAnWvSxGNrCQ2hAQnJh
+ CUKJFGQfPVUMaiwUyyAn72Lz/G81Qj298XSehvtxetJ6n0fezmJoa1hOfHEGo9BsHIFoba3k4Vjv4YMH
+ WYSNhf98HzettQRBLJO11nVypkz9FSH0HdsLU8gVsNwDAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAADlRJREFUeF7t
+ XOlzFMcV96dcH5L8BTm+53alkg+5/oNUkvJ3V0VoDyGMsGFXO7urlbQ6kXbn2FurvXQghGStThsMso2N
+ IWAS4jJg7LKNMT6CQRDQEYOh079mZMFs7zkzwgev6le1pZnu9/qpu9/Rr+eRh/SQvr5U74t/x+oM/sni
+ DFhtLjnU4A0dafAo521u+ZJVkFYszeJnAH7jb3hmp+/g3fpm0bKlOfBH9KF29/WgOqH/txZBbKeK+LfF
+ JX7a5I9f84gjK10DeSIOHyCxiRfJwNTLJD17jGQXjjPgN/6GZ3gH73rE4ZWm9vg19GHzKKfq3VIbVepv
+ VDZfLapzKz+2CHIrnUUfbmuNXm+LjN+UR58jmbl/kKFnXtUF9IG+2sLjNxt9kRt2t/KB1SX56Mz+kcr+
+ y0t1TulRm0d+lipu1SvvWYuMP89VgpEIjy+SFnlszeqW1+weeaHeFfyVKs6Xh6A4q1t50e5Rlulyu23E
+ TKsW4NmTnL5D981V+g88bHX2/1IV74tLj/uC37e5pSQVeKV3cPZ2bv44d3CbCcjQm5q5Q/dJzMpEvaP7
+ e6q4XyyyCeJjVHlXPeLoanrmGHcwDxKpmaPEHRyhs1G6ahXEv6liP3h63Of7lk2QB7Z6Q8vhvebvcXoR
+ HlskW73hFTudjY2N8jfVYTwYgnWly+INZ192OT33xZt1xZCibpGjN7NKjczZB2atLY7+n9sEaal7IP9Z
+ boEvKFDqmdkoJ1dXIn/L6pau1LnEn6nD2hxCBECVdyOQW7jDE24d0sh+8mRnnDnCvOdmAjzBOzj0LPf5
+ OjAGui/esDjEP6jDM5egPLpsV+C88gQCBqePEG8wSzy7Q0ROREhnbB/3PTPRQXlKlLe3L8RkSeZf4b4H
+ YCwYk+lKrHcEfkqn/HV55ABXEACzrrFFJk9PJ8itT3Lk6oUs2eaTSw7AaIAXeII3ZJjMJ5hMUgm5lT0H
+ CWbiFlfwF+pwjSUYDOx5pZZtd3KK7OoMkXfPpAlZGvocGIBPGeG2MQPgNTmVuE+Gd8+kyK4OhfQM5rlt
+ AIwNe6LhhkV1Vc7BYPAYI+CH0L7+MLn2fvY+wYG1j3OkqU1hyQBeeyMBHuAFnlo5MCNb+kOkjcqamz/B
+ bQ/DYndLZwx1cRBdOHrSK3yrdoK0SDnSF4lwhV7HwecGiDuQ4rQ3Fu7+NDl08P7Zdy/+958cCcQjTGbI
+ rm2PMTp3Z1ZsHimuDl8fIcJo8IZWivl57eExEohFyGef8AVeB/YiZ1eI7TW8fowA+gYP8OLJsA7I2h+N
+ UNn3cPuBn9hAne0tzsBfVDXURmpse7VYhNERnyStgRD7r/IE1eLE0STZ1RWnbfnLRw8wcxzdcfLq0UEu
+ by2wWloCYdJFx8DrLzR2iBoVeUlX7Gx3K0mPNLrKYyAO76cGQyH/5ex5xXDnyhDxi2HSn10o6E8v0Gdb
+ MMJ48HjzgP16Jx1DMLef26cQHF21CUpUVUd1VOeUHqXxIjcxkJp+hWxvC5HzGmtbCd58LUWa2sMsS6Lt
+ t1bAiO3wh8kbpyqbfffivbNpOhaFjUnbLxIQyGXW5NpQ5b3Um5otcFmwVIT+DJmeLb5Rl4MYj5Z0J6pF
+ TzJPneYol1clyM8kiNCX4oZ+PcmZ2za38ryqlsoIyUe6fFeznFnSl56j+164rNEohQ/fypBtrQoxIgGB
+ PtAX+uTxqgQYC1ywvvR8Qf9YKXavsoIVqaqnPDV4lWe7B6ZvazuDQpvo0sW05wlSDTIjMeKPjd/Xfy3w
+ R8dJZjTG5VENsB1hW+JNmi7q/9o9yryqntLEIg667nlpeOpIk9Bg7UvlXmADZyHe1JECPpUCMTf6WHqv
+ ckNWCkoyhmOAAj7QBc5Y/i70/VBVU3HC6RkOgHidPNEaIu+fq32paDE1HSc+ufYQr0UaJlN0/+L1XQs+
+ eDNDnvAp3NNC6MTqkjyqmooTnX0f8E7P8J+JZvQvlXuhJ8QrFbLpQSRFZ+Fg4SyEL0yNyUVVTXzCoTfO
+ bbWNgV1dsZrchHI4dJCGeDT84vEsBVjNxUMD3D714My/UsTZA2f/fn6w0Ftbwje2OMVfq+oqJKsr6G8L
+ 77upbRyfPEx2tCvk9mU+Uz2ABXR2KUQZrTzEQ8gGJ75cyFYL4Ig/6VfYmLV8W5XxT6mOfKq6CgnlFrxE
+ KZKTE5r0kJE4eSxJdlYc4p1gIdvJY8avhnWMT8ZZmKrljTyo3R06qarrfkKRDupMeBvoUx2Rghyfkbgb
+ 4kUqCvHwDt6tJmSrFu+cTtMxRwt4Qzesnqcp8G1VbRuEKikU+mgbDdIQp8Ej0eVr/HK5F2+/nmYhXpQa
+ sPbIGN1zo4wvgN/+8BiJTrxAl1eYvPWaef9MANuK3S2ysWv10dSeuMZN/aPEDFVS2gaB3DOkU4lwGRmJ
+ W5eGiNCrkO2tMpmbT5ALb6RZlge4QB13/O0J+sxN3zFj79OiQ44QkXMg5Q6OLG9pFreoatsgqyCFUTam
+ bdARmyBPU3+Nx8QoQHn9UTr70qWTsngWSYVJIFY+56cXk3m6D8YK90Gqozt2ISSpatsgFDfyDl1axCw5
+ fiTJZWIUhvdGSYwqr5J9De9E02GyZ58xEVExHHs5SceeKdAH6hO3epXDqto2yOZV3uM5tA7qE507leIy
+ MQIXz9EN2y9V5RCvfpRlbRA58J4bgbPUH3T0JAr0Edv3AqHeyruq2jbIJsiXB/IvFzRArkxPpqMc9k7E
+ yDzd33jPSmF2Lk7GaVveMyOAMSO5oNXHAI3dabR2SVXbBqEOGWcB2gawgviP85gYgZY+mbxPDQbvWSnA
+ sPj6Ze4zI7DyUY6NXasPJFmtbvmGqrYNQjE3MrvaBtTvIfXNQdNgE4IVn6ncCyx5uBq8Po2CVRAL9IH8
+ INXJLVVtG1RMgWajwVvd/rcOtOHNELNRVIHFlrDZ2NkZYT4fT0mlgKTuTupg8/o0E0WXcDEjYjYQYczW
+ cL4yMxMn7WH9Ge1qUdSI2D2h85tReqFFfOJw1Xk9GDVELLyMidko6sbAkYaTyGtkNlAhoCSjFTvS8kCU
+ xcu8vsyGOLSf70hTixPuTuZLFkyaBRgv1+5BpsRSLhOe4R0XjiCLFAeZjaKhXLFkwmYhQ63bU9SgNLWK
+ zEmGkYB7g6WN3/gbniG1lp17MMoDiiYTUHna5E8UpLM2Cz2DM+y8GQ4yIgw4yY1ekQG/xydjLOzzS2HS
+ myo8s9gsbPfHr9U1B36vqm2DSiVUzQYMCVJVH79dPmT85B2cnMlsM+f1ZSZKJlRBNq9yqlTtsxmAUE91
+ RsnRlyrP+Bx/ZZDs8Ee4x49mAtkqaoFfVdVVSLiGipuUvMZmAZWtg0PVJwWStE1raPPKhgFfCIdKUouq
+ rkLCfVtcGeU1NgO4goCCyFpCORgYV0/IlFI5HtaPNcvWyODweDOupSbzR+i+p7Dib56CKgGsM/pAdMDj
+ YSTCexeJ3aNcUNVUnHBZmVfaYSRyCyeIs2eAHNiv/6j0wP4Blvg02y/0SqNrlmbRraqpOKHEv1hxkVHA
+ OUt/rLLIoxzQB+oNO+PmXeaBLqxuaa3eIf1AVVNpogp8pntgmnulQS9Qe7yjTa6qNLgcrl/MscoJswrY
+ uxJTKG+bU9VTnlDSWqzAUg+QCkKaHPUnPEXoAc5tcPwwOH2Uy7tWQAdUeStVfzqAKvBFGh0UFFnWClgx
+ TyBjaonIvqk4K1QCL54MtaA7OY0S30OqWionlPliL8Ss4XVcLVAyhlDNzPNcVE+wUI9TnlYLUHiOQvua
+ r8PaBCnuFod1JxiqCdX0wshQTwiOrFoFJayqo3rCJRN20WZskcugEtQSqumFEaHe3Ys20lKjT/6uqo7a
+ yNIc/CuuPdV6XtIq01Bt2NzSEB4QHrbWeEMUd2Nwvc3iCPxZVYM+srrlRPHLhsWhJ1TTi1pDPYzRsTu7
+ TP2+iDp8/YSrn3aPdBZXQXlMeTAiVNOLWkK9zvjULWo4Xn/M5/uGOnxjCBGKVZAv0/9oWdfGyFBNL6oJ
+ 9QJZ9v2EyxVHHNUSjZN/YhWk61KZnKE/NkncvSFTaqqrBWSALJCJJ+s6UKNNlXcDXyNRh2sOoTqT7okl
+ PzqBT9U1706SDuqTIQ3PG9hmAHda4Be6qCyQiScrgNpnjInOvN+pwzSXcB0CM7EvM1fiFO8E2Z2eI9vp
+ HgQrfOW8eQVKWlw+n2FWGLwhQynj159ZuI2xcM85zCR455TxFRiWUgLi+y347AlzbjMxVsDNG7QRePt0
+ il0GguHAzYJSfiBkhsHAnoetSR3W5tLd1Jd0xtGbWS7nJ2Iw3ck8c6qbe8JkZjbBTuD0pLTQFpYWV2+b
+ u0NkJ+0bN6rKOdDw8xy96VWbRz5tmsGolODiWF1yDB8fg/fOE1iLyN5FdssShUUI8YLxKJmeuXtdH7MI
+ X9dY+TDHFATgN/6GSn68k6fvBuMxss0nsQIj9IUPL/J4aQEZG7zKql1Qooa7KnoIH2iwueUlfGKumgQE
+ blyiXMIfmyA+KUtcvQmW8mpskYjFFWT1ifiNv+GZT86yd9Gmmo/5IDEgBBDbykuGRRhGE4udPVIUWRzc
+ 9DY6n1gLIANSUsiqILrQHdtuBiEhaxPkRSo0PgF6S09QXyvYnnv3ojRdrvLipn+hzQhSM9vz1Mda88h7
+ 1sz+QCMsK07PcACEM4wGtzJrumO8GYSb3pZm0Ust9kWcrbYqe2/CeTViZqIPVAzg0Bt94+jR6gp6Hrh1
+ NYtw3xan+zav8k9WZ9KeuCYER7DU736Ie98LLGqAW4SyNwC/2Ye46TMYD+p7EiE4vIxCH/SBG5R0y/DW
+ VfNhiK8CoUgHoaHFGaxHzV2DN/RSg0d5hxqhS1TJn38K3iKIy/gbnqG4Ee+iDaKHooU+D+khfQ3okUf+
+ D1WHWk/swkxBAAAAAElFTkSuQmCC
+
+ rell icon ( 80x80)
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABe5JREFUWEfd
+ mF1zE1UYxzOjd+r38AVH/TBcOIgX3sggQtJqgQIlpQn2vSSbwiabzW42zXvSNiUJjjJKodBC6oXjgKDA
+ ADpjWxTEGwWkx/Pf7gm7ydlkU+SGZ+Y3k9lznv95Nuftedb1wtqOfcH3uv3S8N4htXrwWGqpL5i5TLlp
+ cPngxNQS2tBnZ+/Eu4bb87WPeoZe8/ijg/snEstjavVBbG6RJE4ttwR9RtXqnwfGEsuegcjgTu/kq4bc
+ /2der/dlj0/y9wXTP0Vnz6/zAnGCNLuwTjWueXyRAWga8s9mu72BLXuHleVw8exj3qCbQSzMP+4ZVmvd
+ R8U3jWE2Z3v84of9ofxtrVrjDvQsQPNIKH+ryy99YAzXmXn8kT3Dcmm1Lli5RILxPBmX002DOQW+0IAW
+ ezYolVa7ByKfGsM6s939ke3D8txvTEQuLZCQqpK1Gyo5fVohkeKZ+gBOgQ98oRFSFF2TtQ1F59Yc/5NY
+ c5hW5ixR4VgqRh7f1Qi5lyBPftdIUNHq4k6BD3yhAS2ZakrF+Xp7fyh3yz0w+YYRBt+ws7Ah2JqLzi4Q
+ JRMj638kdGFGbVEhxzNf1cXbgb6XFlWLBjSVlKyPgT5apUawcVrubhwlbLdinUzSaf33rjU4xnE1ToWd
+ bJ6a3pengX8SSyde3ViTYn7+kXsgfMQIx2o4hHHOMeGAmiN3b/KFwfUfVCIky6ZA+AjJk+Rn2penAdZu
+ xEkgnq33p7fQVe5hjhuCHcLRmQUyV45xBc1Ek4plRzaCNvTh+ZoplRUc4rpPdOb8epc/ctQI66ntn5ha
+ ZsIBJUUervHFzKzQHRnUpi1BmUEb+vB8zfyzSjeemqr79Y5pNSOsDcPFj7sVjWr5IslMt39rxlReIbGT
+ S5bAgFJeIql8+1lgJGlfjA3fMbVyf9ch4W0jPExveJRd/MJUhdy52v6tGX/9qtF//OkaYuAZ2ng+PG5f
+ UYiQqui+sdIF0u2TvjDCc7n2jcQrTBh/deOx0o7sdJQE5Lh+XoKJaJz+ezK3rx0YUzBN894RtWyE53Id
+ HJ+6yBrklPO3BvduqyRXDJNHxkEO8DtbEPU2c992ROnYLA4a06IRnsvVF8hcYQ1arjPRwrRoCY6BZ8UZ
+ sel5KzA2iwNJrxEevUGE7HXW4Bckkp9RHaMm7YNQUyLXxw6/EKkH6BUy143wrAF2CtYcLzigpGNcHydY
+ AjRPcacEYhvT2RgcngnKFNfHCZYpNm+STpFmzpJYMmYJEr9lPRG4wPVxgmWT9JiOmc0wKqVIMnuC5It0
+ zVHSOZGMRTef2ALLMdN1NDLipELjEc59Tc6dab55LiwoRMw6T8nM4KC23McfHwq+g9KQ17kVeCklbX8t
+ xlL0GqSD8XxbMaqU7+/oDWwxwtuwA+OJGq+zHVoVG0Qjf6/YH+xIAo7Jmt6Xp2FHU7IAQ1GNupXnwAOZ
+ Sqs8j3HzCs0bE/YZTyPSzPknbr/YnG4hSURRzXNqJFz4llROOc94ylWF+nzD1WqkL5C8uv2zkVeMsKzm
+ 8Yn9kcLZhzxHBlIiUVM6SijQFz4snbJDzJ951DUQ9hrhNBsKlp4htdaqUJ+QU+TBL/algB0badnTbKUR
+ FE2fDyqXtm7NvWSEwzd8jkDFzxOZpPnadxedT20j39cUqnGySRd4adm5yyu8boTR2ty+E9toMV0v3AFd
+ vDTr7SzH4wENaJm1h6TSqtsX2WYM78y6fOHdg9G5FSaCKQgliqRQotfamv3RYgdKzMqXKjmm5Ejc+ulj
+ xd3ppw9mbp+8DRW/eU1Ks+eIoGVIqqjqpUGrzYK2Oz+qet9QPE0rtnN1HbwwptXtE983htuc4XMEKn4U
+ 1UwcYEdOpqskSAeW0zTZzKokWVB08BuZOdqwbht3bzg//xAbwvGaa2cbHzAj/SiqUbeaB+sEHMI459x+
+ 6XDb3boZw2GOU37/uFZDaejknpVLi/rd2juWqMH3uXwC5hkuc1yPPcNKBbkbEszDQuYGwG88Q5uHlo+f
+ HAq9Zbi9aOZy/Qe4xYHxvg6NpAAAAABJRU5ErkJggg==
+
+ reel icon (40x40)
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAW9JREFUWEfl
+ 2E1qwlAUBeBndygvC9CdCHHcuIkWqp27DK3toLiIOrRkkno1B6TcJO/e95fSA2fiUfgwPogx/yLNYvGw
+ K4rqOJt9UPfWPtJr7Zw3BNlPpy+nsvw+V1VD/SrL+s3a1+zIxpjJBfJ8j0NPy2V9KIpNNmQfDs2GdMGh
+ yZESHJoMqcGh0ZE+ODQaMgQODY6U4BBuu28wpPSbQ7jtd72RmsuKcBtXNVL7m0O4ratipM+BQLitr85I
+ HxwV4bahDiJ9cVSE21zaiQyBoyLc5loWSTebdA/HfUBShNskJQuZWp4xx/n8nXujtAi3Sft5MbW8PwAc
+ 4yWm/zUt73ZIDtY+jeiQrNmTHALp004ckhM5iEPUyNWqqbfba9m9p844RIMkGCJBinGIFKkBqnGIBpkM
+ h8Q4OMFwSEhkcBwSAhkNh/ggo+MQDTIZDpEgk+MQF2Q2HNKHzI5DCDDaR8AIQeiml+6CqaN6iB43xvwA
+ iFk1KsvXeuAAAAAASUVORK5CYII=
+
+
+
\ No newline at end of file
diff --git a/Handler/CapCleaningControl/Resources/air.png b/Handler/CapCleaningControl/Resources/air.png
new file mode 100644
index 0000000..d897308
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/air.png differ
diff --git a/Handler/CapCleaningControl/Resources/bcd.png b/Handler/CapCleaningControl/Resources/bcd.png
new file mode 100644
index 0000000..fc99058
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/bcd.png differ
diff --git a/Handler/CapCleaningControl/Resources/bg_blue.png b/Handler/CapCleaningControl/Resources/bg_blue.png
new file mode 100644
index 0000000..2ae2259
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/bg_blue.png differ
diff --git a/Handler/CapCleaningControl/Resources/bg_red.png b/Handler/CapCleaningControl/Resources/bg_red.png
new file mode 100644
index 0000000..981e312
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/bg_red.png differ
diff --git a/Handler/CapCleaningControl/Resources/emg.png b/Handler/CapCleaningControl/Resources/emg.png
new file mode 100644
index 0000000..9e5daee
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/emg.png differ
diff --git a/Handler/CapCleaningControl/Resources/erase.png b/Handler/CapCleaningControl/Resources/erase.png
new file mode 100644
index 0000000..e6f0f75
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/erase.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-assembly-machine-40.png b/Handler/CapCleaningControl/Resources/icons8-assembly-machine-40.png
new file mode 100644
index 0000000..8c48dfe
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-assembly-machine-40.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-automatic-gearbox-warning-80.png b/Handler/CapCleaningControl/Resources/icons8-automatic-gearbox-warning-80.png
new file mode 100644
index 0000000..2bd7235
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-automatic-gearbox-warning-80.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-barcode-reader-40.png b/Handler/CapCleaningControl/Resources/icons8-barcode-reader-40.png
new file mode 100644
index 0000000..e0ba761
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-barcode-reader-40.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-bug-40.png b/Handler/CapCleaningControl/Resources/icons8-bug-40.png
new file mode 100644
index 0000000..9efaccf
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-bug-40.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-bug-80.png b/Handler/CapCleaningControl/Resources/icons8-bug-80.png
new file mode 100644
index 0000000..1c529aa
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-bug-80.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-code-30.png b/Handler/CapCleaningControl/Resources/icons8-code-30.png
new file mode 100644
index 0000000..95f99b8
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-code-30.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-deployment-40.png b/Handler/CapCleaningControl/Resources/icons8-deployment-40.png
new file mode 100644
index 0000000..db1b184
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-deployment-40.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-emergency-stop-button-40.png b/Handler/CapCleaningControl/Resources/icons8-emergency-stop-button-40.png
new file mode 100644
index 0000000..1ee1522
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-emergency-stop-button-40.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-erase-30.png b/Handler/CapCleaningControl/Resources/icons8-erase-30.png
new file mode 100644
index 0000000..d2224c9
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-erase-30.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-hazard-warning-flasher-80.png b/Handler/CapCleaningControl/Resources/icons8-hazard-warning-flasher-80.png
new file mode 100644
index 0000000..1ae1ccf
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-hazard-warning-flasher-80.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-help-80.png b/Handler/CapCleaningControl/Resources/icons8-help-80.png
new file mode 100644
index 0000000..04d5900
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-help-80.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-high-priority-40.png b/Handler/CapCleaningControl/Resources/icons8-high-priority-40.png
new file mode 100644
index 0000000..ddc9455
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-high-priority-40.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-info-80.png b/Handler/CapCleaningControl/Resources/icons8-info-80.png
new file mode 100644
index 0000000..7f5bd87
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-info-80.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-pause-button-30.png b/Handler/CapCleaningControl/Resources/icons8-pause-button-30.png
new file mode 100644
index 0000000..3fa608c
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-pause-button-30.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-rounded-square-80.png b/Handler/CapCleaningControl/Resources/icons8-rounded-square-80.png
new file mode 100644
index 0000000..db2b607
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-rounded-square-80.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-rounded-square-80_blue.png b/Handler/CapCleaningControl/Resources/icons8-rounded-square-80_blue.png
new file mode 100644
index 0000000..768e3c9
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-rounded-square-80_blue.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-rounded-square-80_red.png b/Handler/CapCleaningControl/Resources/icons8-rounded-square-80_red.png
new file mode 100644
index 0000000..2e5a27e
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-rounded-square-80_red.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-settings-30.png b/Handler/CapCleaningControl/Resources/icons8-settings-30.png
new file mode 100644
index 0000000..ddef91d
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-settings-30.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8-start-30.png b/Handler/CapCleaningControl/Resources/icons8-start-30.png
new file mode 100644
index 0000000..100219c
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8-start-30.png differ
diff --git a/Handler/CapCleaningControl/Resources/icons8_pause_button_30.png b/Handler/CapCleaningControl/Resources/icons8_pause_button_30.png
new file mode 100644
index 0000000..f6d30c6
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/icons8_pause_button_30.png differ
diff --git a/Handler/CapCleaningControl/Resources/mot.png b/Handler/CapCleaningControl/Resources/mot.png
new file mode 100644
index 0000000..3bb6ae9
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/mot.png differ
diff --git a/Handler/CapCleaningControl/Resources/plc.png b/Handler/CapCleaningControl/Resources/plc.png
new file mode 100644
index 0000000..1474662
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/plc.png differ
diff --git a/Handler/CapCleaningControl/Resources/reel_big.png b/Handler/CapCleaningControl/Resources/reel_big.png
new file mode 100644
index 0000000..2ddd859
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/reel_big.png differ
diff --git a/Handler/CapCleaningControl/Resources/reel_small.png b/Handler/CapCleaningControl/Resources/reel_small.png
new file mode 100644
index 0000000..3049f6b
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/reel_small.png differ
diff --git a/Handler/CapCleaningControl/Resources/safty.png b/Handler/CapCleaningControl/Resources/safty.png
new file mode 100644
index 0000000..39b1abd
Binary files /dev/null and b/Handler/CapCleaningControl/Resources/safty.png differ
diff --git a/Handler/CapCleaningControl/UIControl.csproj b/Handler/CapCleaningControl/UIControl.csproj
new file mode 100644
index 0000000..b607417
--- /dev/null
+++ b/Handler/CapCleaningControl/UIControl.csproj
@@ -0,0 +1,214 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {9264CD2E-7CF8-4237-A69F-DCDA984E0613}
+ Library
+ UIControl
+ UIControl
+ v4.8
+ 512
+ true
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ AnyCPU
+ false
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Component
+
+
+ Component
+
+
+ Form
+
+
+ fTestControl.cs
+
+
+ Component
+
+
+ Component
+
+
+ Component
+
+
+ UserControl
+
+
+ PrintDirection.cs
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+
+
+ fTestControl.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {4f457e76-bf83-4b98-8565-ae87d7d16744}
+ arAzinAxt
+
+
+ {14e8c9a5-013e-49ba-b435-efefc77dd623}
+ CommData
+
+
+ {14e8c9a5-013e-49ba-b435-ffffff7dd623}
+ arCommUtil
+
+
+ {48654765-548d-42ed-9238-d65eb3bc99ad}
+ Setting
+
+
+
+
\ No newline at end of file
diff --git a/Handler/CapCleaningControl/Utility.cs b/Handler/CapCleaningControl/Utility.cs
new file mode 100644
index 0000000..3764f23
--- /dev/null
+++ b/Handler/CapCleaningControl/Utility.cs
@@ -0,0 +1,168 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+
+namespace UIControl
+{
+ public static class Utility
+ {
+
+ public static Rectangle OffsetRect(this Rectangle rect, int x,int y)
+ {
+ var retval = new Rectangle(rect.X + x, rect.Y + y, rect.Width, rect.Height);
+ return retval;
+ }
+
+ public static void DrawString(this Graphics g,
+ string msg,
+ Font font,
+ Color fcolor,
+ RectangleF rect,
+ ContentAlignment textalign = ContentAlignment.MiddleCenter,
+ Color? ShadowColor = null,
+ Brush BackBrush = null,
+ Pen BorderPen = null)
+ {
+ DrawString(g, msg, font, fcolor, rect.toRect(), textalign, ShadowColor, BackBrush, BorderPen);
+ }
+
+ public static void DrawRectangle(this Graphics g, Pen pen, RectangleF rect)
+ {
+ g.DrawRectangle(pen, rect.Left, rect.Top, rect.Width, rect.Height);
+ }
+
+ public static void DrawString(this Graphics g,
+ string msg,
+ Font font,
+ Color fcolor,
+ Rectangle rect,
+ ContentAlignment textalign = ContentAlignment.MiddleCenter,
+ Color? ShadowColor = null,
+ Brush BackBrush = null,
+ Pen BorderPen = null)
+ {
+ //배경색 지정되어 있다면
+ if (BackBrush != null) g.FillRectangle(BackBrush, rect);
+
+ //테두리 지정되어 있다면
+ if (BorderPen != null) g.DrawRectangle(BorderPen, rect);
+
+ //그립자가 지정되있다면 별도 처리를 한다
+ if (ShadowColor != null && ShadowColor != Color.Transparent)
+ {
+ SizeF fsize;
+ var drawPT = GetTextPosition(g, msg, font, rect, textalign, out fsize);
+
+ //그림자를 먼저 그린다
+ g.DrawString(msg, font, new SolidBrush((Color)ShadowColor), drawPT.X + 1, drawPT.Y + 1);
+ g.DrawString(msg, font, new SolidBrush(fcolor), drawPT.X, drawPT.Y);
+ }
+ else
+ {
+ var sf = new StringFormat();
+
+ if (textalign == ContentAlignment.BottomCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Near; }
+ else if (textalign == ContentAlignment.BottomLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Near; }
+ else if (textalign == ContentAlignment.BottomRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Near; }
+ else if (textalign == ContentAlignment.MiddleCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; }
+ else if (textalign == ContentAlignment.MiddleLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Center; }
+ else if (textalign == ContentAlignment.MiddleRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Center; }
+ else if (textalign == ContentAlignment.TopCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Far; }
+ else if (textalign == ContentAlignment.TopLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Far; }
+ else if (textalign == ContentAlignment.TopRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Far; }
+ else { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; }
+
+
+ g.DrawString(msg, font, new SolidBrush(fcolor), rect, sf);
+
+ sf.Dispose();
+ }
+ }
+
+ public static void DrawRect(this Graphics g, Rectangle rect, Color color, Color shadowColor, int pensize = 1)
+ {
+ //우측하단에 선을 그려준다. 일단은 검은색
+ g.DrawLine(new Pen(shadowColor, pensize), rect.Left + 1, rect.Bottom + 1, rect.Right - 1, rect.Bottom + 1);
+ g.DrawLine(new Pen(shadowColor, pensize), rect.Right + 1, rect.Top + 1, rect.Right + 1, rect.Bottom - 1);
+ DrawRect(g, rect, color, pensize);
+ }
+ public static void DrawRect(this Graphics g, Rectangle rect, Color color, int pensize = 1)
+ {
+ g.DrawRectangle(new Pen(color, pensize), rect);
+ }
+
+ public static void DrawRect(this Graphics g, RectangleF rect, Color color, int pensize = 1, Boolean shadow = false)
+ {
+ g.DrawRectangle(new Pen(color, pensize), rect.Left, rect.Top, rect.Width, rect.Height);
+ }
+
+ ///
+ /// Rectangle 개체를 반환 합니다. 단순 float -> int 로 값을 변환 합니다.
+ ///
+ ///
+ ///
+ public static Rectangle toRect(this RectangleF rect)
+ {
+ return new Rectangle((int)rect.Left, (int)rect.Top, (int)rect.Width, (int)rect.Height); ;
+ }
+
+ static PointF GetTextPosition(Graphics g, string data, Font f, Rectangle rect, ContentAlignment align, System.Windows.Forms.Padding Padding, out SizeF fsize)
+ {
+ float x = 0;
+ float y = 0;
+ fsize = g.MeasureString(data, f);
+ if (align == ContentAlignment.MiddleCenter)
+ {
+ x = (rect.Width - fsize.Width) / 2 + Padding.Left - Padding.Right;
+ y = (rect.Height - fsize.Height) / 2 + Padding.Top - Padding.Bottom;
+ }
+ else if (align == ContentAlignment.MiddleLeft)
+ {
+ x = Padding.Left;
+ y = (rect.Height - fsize.Height) / 2;
+ }
+ else if (align == ContentAlignment.MiddleRight)
+ {
+ x = rect.Width - fsize.Width - Padding.Right;
+ y = (rect.Height - fsize.Height) / 2;
+ }
+ else if (align == ContentAlignment.BottomLeft)
+ {
+ x = Padding.Left;
+ y = rect.Height - fsize.Height - Padding.Bottom;
+ }
+ else if (align == ContentAlignment.BottomRight)
+ {
+ x = rect.Width - fsize.Width - Padding.Right;
+ y = rect.Height - fsize.Height - Padding.Bottom;
+ }
+ else if (align == ContentAlignment.BottomCenter)
+ {
+ x = (rect.Width - fsize.Width) / 2;
+ y = rect.Height - fsize.Height - Padding.Bottom;
+ }
+ else if (align == ContentAlignment.TopLeft)
+ {
+ x = Padding.Left;
+ y = Padding.Top;
+ }
+ else if (align == ContentAlignment.TopRight)
+ {
+ x = rect.Width - fsize.Width - Padding.Right;
+ y = Padding.Top;
+ }
+ else if (align == ContentAlignment.TopCenter)
+ {
+ x = (rect.Width - fsize.Width) / 2;
+ y = Padding.Top;
+ }
+ return new PointF(x + rect.Left, y + rect.Top);
+ }
+ static PointF GetTextPosition(Graphics g, string data, Font f, Rectangle rect, ContentAlignment align, out SizeF fsize)
+ {
+ return GetTextPosition(g, data, f, rect, align, new System.Windows.Forms.Padding(0), out fsize);
+ }
+ }
+}
diff --git a/Handler/CapCleaningControl/fTestControl.Designer.cs b/Handler/CapCleaningControl/fTestControl.Designer.cs
new file mode 100644
index 0000000..1cf52ef
--- /dev/null
+++ b/Handler/CapCleaningControl/fTestControl.Designer.cs
@@ -0,0 +1,82 @@
+namespace UIControl
+{
+ partial class fTestControl
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.printDirection1 = new UIControl.PrintDirection();
+ this.SuspendLayout();
+ //
+ // printDirection1
+ //
+ this.printDirection1.BackColor = System.Drawing.Color.White;
+ this.printDirection1.BorderColor = System.Drawing.Color.Black;
+ this.printDirection1.colors = new System.Drawing.Color[] {
+ System.Drawing.Color.Empty,
+ System.Drawing.Color.Empty,
+ System.Drawing.Color.Empty,
+ System.Drawing.Color.Empty,
+ System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(192))))),
+ System.Drawing.Color.Empty,
+ System.Drawing.Color.Empty,
+ System.Drawing.Color.Empty,
+ System.Drawing.Color.Empty};
+ this.printDirection1.Font = new System.Drawing.Font("맑은 고딕", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.printDirection1.Location = new System.Drawing.Point(62, 56);
+ this.printDirection1.Margin = new System.Windows.Forms.Padding(7, 10, 7, 10);
+ this.printDirection1.Name = "printDirection1";
+ this.printDirection1.Size = new System.Drawing.Size(323, 283);
+ this.printDirection1.TabIndex = 0;
+ this.printDirection1.TitleFont = new System.Drawing.Font("궁서체", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.printDirection1.titles = new string[] {
+ "↖",
+ "↑",
+ "↗",
+ "←",
+ "?",
+ "→",
+ "↙",
+ "↓",
+ "↘"};
+ //
+ // fTestControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(476, 453);
+ this.Controls.Add(this.printDirection1);
+ this.Name = "fTestControl";
+ this.Text = "fTestControl";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private PrintDirection printDirection1;
+ }
+}
\ No newline at end of file
diff --git a/Handler/CapCleaningControl/fTestControl.cs b/Handler/CapCleaningControl/fTestControl.cs
new file mode 100644
index 0000000..5be0681
--- /dev/null
+++ b/Handler/CapCleaningControl/fTestControl.cs
@@ -0,0 +1,20 @@
+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 UIControl
+{
+ public partial class fTestControl : Form
+ {
+ public fTestControl()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Handler/CapCleaningControl/fTestControl.resx b/Handler/CapCleaningControl/fTestControl.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Handler/CapCleaningControl/fTestControl.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Handler/DLL/ArLog.Net4.dll b/Handler/DLL/ArLog.Net4.dll
new file mode 100644
index 0000000..1f7c09a
Binary files /dev/null and b/Handler/DLL/ArLog.Net4.dll differ
diff --git a/Handler/DLL/ArSetting.Net4.dll b/Handler/DLL/ArSetting.Net4.dll
new file mode 100644
index 0000000..941494f
Binary files /dev/null and b/Handler/DLL/ArSetting.Net4.dll differ
diff --git a/Handler/DLL/CarlosAg.ExcelXmlWriter.dll b/Handler/DLL/CarlosAg.ExcelXmlWriter.dll
new file mode 100644
index 0000000..7760d6d
Binary files /dev/null and b/Handler/DLL/CarlosAg.ExcelXmlWriter.dll differ
diff --git a/Handler/DLL/ChilkatDotNet4.dll b/Handler/DLL/ChilkatDotNet4.dll
new file mode 100644
index 0000000..134c43e
Binary files /dev/null and b/Handler/DLL/ChilkatDotNet4.dll differ
diff --git a/Handler/DLL/Communication.dll b/Handler/DLL/Communication.dll
new file mode 100644
index 0000000..c656f28
Binary files /dev/null and b/Handler/DLL/Communication.dll differ
diff --git a/Handler/DLL/Keyence.AutoID.SDK.dll b/Handler/DLL/Keyence.AutoID.SDK.dll
new file mode 100644
index 0000000..f9250ca
Binary files /dev/null and b/Handler/DLL/Keyence.AutoID.SDK.dll differ
diff --git a/Handler/DLL/Newtonsoft.Json.dll b/Handler/DLL/Newtonsoft.Json.dll
new file mode 100644
index 0000000..7af125a
Binary files /dev/null and b/Handler/DLL/Newtonsoft.Json.dll differ
diff --git a/Handler/DLL/Sato/x64/SATOPrinterAPI.dll b/Handler/DLL/Sato/x64/SATOPrinterAPI.dll
new file mode 100644
index 0000000..b367a83
Binary files /dev/null and b/Handler/DLL/Sato/x64/SATOPrinterAPI.dll differ
diff --git a/Handler/DLL/Sato/x86/SATOPrinterAPI.dll b/Handler/DLL/Sato/x86/SATOPrinterAPI.dll
new file mode 100644
index 0000000..2ad94c1
Binary files /dev/null and b/Handler/DLL/Sato/x86/SATOPrinterAPI.dll differ
diff --git a/Handler/DLL/VncClientControlCommon.dll b/Handler/DLL/VncClientControlCommon.dll
new file mode 100644
index 0000000..0e66ce7
Binary files /dev/null and b/Handler/DLL/VncClientControlCommon.dll differ
diff --git a/Handler/DLL/VncClientControlCommonLib.dll b/Handler/DLL/VncClientControlCommonLib.dll
new file mode 100644
index 0000000..2d0d74c
Binary files /dev/null and b/Handler/DLL/VncClientControlCommonLib.dll differ
diff --git a/Handler/DLL/WatsonWebsocket.dll b/Handler/DLL/WatsonWebsocket.dll
new file mode 100644
index 0000000..ae762d9
Binary files /dev/null and b/Handler/DLL/WatsonWebsocket.dll differ
diff --git a/Handler/DLL/Winsock Orcas.dll b/Handler/DLL/Winsock Orcas.dll
new file mode 100644
index 0000000..3ac1126
Binary files /dev/null and b/Handler/DLL/Winsock Orcas.dll differ
diff --git a/Handler/DLL/arRS232.Net4.dll b/Handler/DLL/arRS232.Net4.dll
new file mode 100644
index 0000000..59df697
Binary files /dev/null and b/Handler/DLL/arRS232.Net4.dll differ
diff --git a/Handler/DLL/libxl.dll b/Handler/DLL/libxl.dll
new file mode 100644
index 0000000..b3159fd
Binary files /dev/null and b/Handler/DLL/libxl.dll differ
diff --git a/Handler/DLL/libxl.net.dll b/Handler/DLL/libxl.net.dll
new file mode 100644
index 0000000..b487ebc
Binary files /dev/null and b/Handler/DLL/libxl.net.dll differ
diff --git a/Handler/DLL/libxl/bin64/libxl.dll b/Handler/DLL/libxl/bin64/libxl.dll
new file mode 100644
index 0000000..204a7e3
Binary files /dev/null and b/Handler/DLL/libxl/bin64/libxl.dll differ
diff --git a/Handler/DLL/libxl/libxl.net.dll b/Handler/DLL/libxl/libxl.net.dll
new file mode 100644
index 0000000..dc8b1b3
Binary files /dev/null and b/Handler/DLL/libxl/libxl.net.dll differ
diff --git a/Handler/MotParam/Mot_Picker_X.swpp b/Handler/MotParam/Mot_Picker_X.swpp
new file mode 100644
index 0000000..94d317b
Binary files /dev/null and b/Handler/MotParam/Mot_Picker_X.swpp differ
diff --git a/Handler/MotParam/Mot_Picker_X.usrs b/Handler/MotParam/Mot_Picker_X.usrs
new file mode 100644
index 0000000..0c4e777
--- /dev/null
+++ b/Handler/MotParam/Mot_Picker_X.usrs
@@ -0,0 +1,256 @@
+File-Spec,2
+FileType,User Parameters Data File
+Made-by,YASKAWA SigmaWin+ Ver.7
+DateTime,12/23/2020 11:45:35 AM
+SERVO-TYPE,SGD7S-2R8A00A
+SERVO-ID,112
+SERVO-YMOD,0
+SERVO-SPEC,00
+SERVO-SOFT,47
+SERVO-CAPACITY,400
+SerialNo,D0205I826810007
+BTOFlag,1
+BTO-ID,
+IS-SUPPORTED,1
+IS-EDITED,0
+MachineName,
+OP-TYPE,
+OP-ID,65533
+OP-YMOD,65535
+OP-SOFT,65535
+OP1-TYPE,
+OP1-TYPEID,0
+OP1-ID,65533
+OP1-YMOD,65535
+OP1-YMODTYPE,65535
+OP1-SOFT,65535
+OP2-TYPE,
+OP2-TYPEID,0
+OP2-ID,65533
+OP2-YMOD,65535
+OP2-YMODTYPE,65535
+OP2-SOFT,65535
+OP3-TYPE,
+OP3-TYPEID,0
+OP3-ID,65533
+OP3-YMOD,65535
+OP3-YMODTYPE,65535
+OP3-SOFT,65535
+ACCESS-LEVEL,1
+SpecVersion,65535
+AXIS-NUM,1
+MOTOR-TYPE,SGM7J-04AFD21
+MOTOR-ID,173
+ENCODER-ID,24
+ENCODER-SOFT,3
+ServoControlType,512
+CompatibleMapNum,6
+CompatibleMap,0,3,3,6,6,10
+CommentCnt,0
+Comment,
+ServoNameComment,Picker X
+UserPrmCnt,198
+UserPrm,000,17,2,1
+UserPrm,001,0,2,0
+UserPrm,002,0,2,0
+UserPrm,006,2,2,0
+UserPrm,007,0,2,0
+UserPrm,008,0,2,0
+UserPrm,009,16,2,0
+UserPrm,00A,1,2,0
+UserPrm,00B,256,2,1
+UserPrm,00C,0,2,0
+UserPrm,00D,0,2,0
+UserPrm,00E,0,2,0
+UserPrm,00F,0,2,0
+UserPrm,010,1,2,0
+UserPrm,021,0,2,0
+UserPrm,040,0,2,0
+UserPrm,080,0,2,0
+UserPrm,081,0,2,0
+UserPrm,100,400,2,0
+UserPrm,101,2000,2,0
+UserPrm,102,400,2,0
+UserPrm,103,100,2,0
+UserPrm,104,400,2,0
+UserPrm,105,2000,2,0
+UserPrm,106,400,2,0
+UserPrm,109,0,2,0
+UserPrm,10A,0,2,0
+UserPrm,10B,0,2,0
+UserPrm,10C,200,2,0
+UserPrm,10D,0,2,0
+UserPrm,10E,0,2,0
+UserPrm,10F,0,2,0
+UserPrm,11F,0,2,0
+UserPrm,121,100,2,0
+UserPrm,122,100,2,0
+UserPrm,123,0,2,0
+UserPrm,124,0,2,0
+UserPrm,125,100,2,0
+UserPrm,131,0,2,0
+UserPrm,132,0,2,0
+UserPrm,135,0,2,0
+UserPrm,136,0,2,0
+UserPrm,139,0,2,0
+UserPrm,13D,2000,2,0
+UserPrm,140,256,2,0
+UserPrm,141,500,2,0
+UserPrm,142,1000,2,0
+UserPrm,143,1000,2,0
+UserPrm,144,1000,2,0
+UserPrm,145,500,2,0
+UserPrm,146,700,2,0
+UserPrm,147,1000,2,0
+UserPrm,148,500,2,0
+UserPrm,149,1000,2,0
+UserPrm,14A,800,2,0
+UserPrm,14B,100,2,0
+UserPrm,14F,33,2,0
+UserPrm,160,16,2,0
+UserPrm,161,1000,2,0
+UserPrm,162,100,2,0
+UserPrm,163,0,2,0
+UserPrm,164,0,2,0
+UserPrm,165,0,2,0
+UserPrm,166,0,2,0
+UserPrm,170,5121,2,0
+UserPrm,200,1,2,1
+UserPrm,205,65535,2,0
+UserPrm,207,0,2,0
+UserPrm,20A,32768,4,0
+UserPrm,20E,16777216,4,1
+UserPrm,210,20000,4,1
+UserPrm,212,5000,4,1
+UserPrm,216,0,2,0
+UserPrm,217,0,2,0
+UserPrm,218,1,2,0
+UserPrm,22A,0,2,0
+UserPrm,240,0,2,0
+UserPrm,281,20,2,0
+UserPrm,300,600,2,0
+UserPrm,301,100,2,0
+UserPrm,302,200,2,0
+UserPrm,303,300,2,0
+UserPrm,304,50,2,1
+UserPrm,305,0,2,0
+UserPrm,306,0,2,0
+UserPrm,307,40,2,0
+UserPrm,308,0,2,0
+UserPrm,30A,0,2,0
+UserPrm,30C,0,2,0
+UserPrm,310,0,2,0
+UserPrm,311,100,2,0
+UserPrm,312,50,2,0
+UserPrm,316,10000,2,0
+UserPrm,324,300,2,0
+UserPrm,400,30,2,0
+UserPrm,401,100,2,0
+UserPrm,402,800,2,0
+UserPrm,403,800,2,0
+UserPrm,404,100,2,0
+UserPrm,405,100,2,0
+UserPrm,406,800,2,0
+UserPrm,407,10000,2,0
+UserPrm,408,0,2,0
+UserPrm,409,5000,2,0
+UserPrm,40A,70,2,0
+UserPrm,40B,0,2,0
+UserPrm,40C,5000,2,0
+UserPrm,40D,70,2,0
+UserPrm,40E,0,2,0
+UserPrm,40F,5000,2,0
+UserPrm,410,50,2,0
+UserPrm,412,100,2,0
+UserPrm,415,0,2,0
+UserPrm,416,0,2,0
+UserPrm,417,5000,2,0
+UserPrm,418,70,2,0
+UserPrm,419,0,2,0
+UserPrm,41A,5000,2,0
+UserPrm,41B,70,2,0
+UserPrm,41C,0,2,0
+UserPrm,41D,5000,2,0
+UserPrm,41E,70,2,0
+UserPrm,41F,0,2,0
+UserPrm,423,0,2,0
+UserPrm,424,50,2,0
+UserPrm,425,100,2,0
+UserPrm,426,0,2,0
+UserPrm,427,0,2,0
+UserPrm,456,15,2,0
+UserPrm,460,257,2,0
+UserPrm,475,0,2,0
+UserPrm,476,0,2,0
+UserPrm,481,400,2,0
+UserPrm,482,3000,2,0
+UserPrm,486,25,2,0
+UserPrm,487,0,2,0
+UserPrm,488,100,2,0
+UserPrm,490,100,2,0
+UserPrm,495,100,2,0
+UserPrm,498,10,2,0
+UserPrm,501,10,2,0
+UserPrm,502,20,2,0
+UserPrm,503,10,2,0
+UserPrm,506,0,2,0
+UserPrm,507,100,2,0
+UserPrm,508,50,2,0
+UserPrm,509,20,2,0
+UserPrm,50A,8448,2,0
+UserPrm,50B,25923,2,0
+UserPrm,50C,34952,2,0
+UserPrm,50D,34952,2,0
+UserPrm,50E,12817,2,0
+UserPrm,50F,0,2,0
+UserPrm,510,0,2,0
+UserPrm,512,0,2,0
+UserPrm,513,0,2,0
+UserPrm,514,0,2,0
+UserPrm,515,34952,2,0
+UserPrm,516,34952,2,0
+UserPrm,517,1620,2,0
+UserPrm,518,0,2,0
+UserPrm,519,34952,2,0
+UserPrm,51B,1000,4,0
+UserPrm,51E,100,2,0
+UserPrm,520,5242880,4,0
+UserPrm,522,7,4,0
+UserPrm,524,1073741824,4,0
+UserPrm,526,5242880,4,0
+UserPrm,528,100,2,0
+UserPrm,529,10000,2,0
+UserPrm,52A,20,2,0
+UserPrm,52B,20,2,0
+UserPrm,52C,100,2,0
+UserPrm,52F,4095,2,0
+UserPrm,530,0,2,0
+UserPrm,531,32768,4,0
+UserPrm,533,500,2,0
+UserPrm,534,100,2,0
+UserPrm,535,100,2,0
+UserPrm,536,1,2,0
+UserPrm,550,0,2,0
+UserPrm,551,0,2,0
+UserPrm,552,100,2,0
+UserPrm,553,100,2,0
+UserPrm,55A,1,2,0
+UserPrm,560,400,2,0
+UserPrm,561,100,2,0
+UserPrm,600,0,2,0
+UserPrm,601,0,2,0
+UserPrm,603,0,2,0
+UserPrm,604,0,2,0
+UserPrm,621,0,2,0
+UserPrm,622,10000,2,0
+UserPrm,623,10000,2,0
+UserPrm,624,10,2,0
+UserPrm,625,100,2,0
+UserPrm,626,100,4,0
+UserPrm,628,10,2,0
+Custom
+CustomGroupNum,1
+Gp1_Begin
+GroupName,
+Num,0
+Gp1_End
diff --git a/Handler/MotParam/Mot_Picker_Z.swpp b/Handler/MotParam/Mot_Picker_Z.swpp
new file mode 100644
index 0000000..31fc815
Binary files /dev/null and b/Handler/MotParam/Mot_Picker_Z.swpp differ
diff --git a/Handler/MotParam/Mot_Picker_Z.usrs b/Handler/MotParam/Mot_Picker_Z.usrs
new file mode 100644
index 0000000..9c2cc34
--- /dev/null
+++ b/Handler/MotParam/Mot_Picker_Z.usrs
@@ -0,0 +1,256 @@
+File-Spec,2
+FileType,User Parameters Data File
+Made-by,YASKAWA SigmaWin+ Ver.7
+DateTime,12/23/2020 11:46:21 AM
+SERVO-TYPE,SGD7S-1R6A00A002
+SERVO-ID,112
+SERVO-YMOD,0
+SERVO-SPEC,00
+SERVO-SOFT,47
+SERVO-CAPACITY,200
+SerialNo,1A2036500620011
+BTOFlag,1
+BTO-ID,
+IS-SUPPORTED,1
+IS-EDITED,0
+MachineName,
+OP-TYPE,
+OP-ID,65533
+OP-YMOD,65535
+OP-SOFT,65535
+OP1-TYPE,
+OP1-TYPEID,0
+OP1-ID,65533
+OP1-YMOD,65535
+OP1-YMODTYPE,65535
+OP1-SOFT,65535
+OP2-TYPE,
+OP2-TYPEID,0
+OP2-ID,65533
+OP2-YMOD,65535
+OP2-YMODTYPE,65535
+OP2-SOFT,65535
+OP3-TYPE,
+OP3-TYPEID,0
+OP3-ID,65533
+OP3-YMOD,65535
+OP3-YMODTYPE,65535
+OP3-SOFT,65535
+ACCESS-LEVEL,1
+SpecVersion,65535
+AXIS-NUM,1
+MOTOR-TYPE,SGM7J-02AFD2C
+MOTOR-ID,173
+ENCODER-ID,24
+ENCODER-SOFT,3
+ServoControlType,512
+CompatibleMapNum,6
+CompatibleMap,0,3,3,6,6,10
+CommentCnt,0
+Comment,
+ServoNameComment,Picker Z
+UserPrmCnt,198
+UserPrm,000,17,2,1
+UserPrm,001,0,2,0
+UserPrm,002,0,2,0
+UserPrm,006,2,2,0
+UserPrm,007,0,2,0
+UserPrm,008,0,2,0
+UserPrm,009,16,2,0
+UserPrm,00A,1,2,0
+UserPrm,00B,256,2,1
+UserPrm,00C,0,2,0
+UserPrm,00D,0,2,0
+UserPrm,00E,0,2,0
+UserPrm,00F,0,2,0
+UserPrm,010,1,2,0
+UserPrm,021,0,2,0
+UserPrm,040,0,2,0
+UserPrm,080,0,2,0
+UserPrm,081,0,2,0
+UserPrm,100,400,2,0
+UserPrm,101,2000,2,0
+UserPrm,102,400,2,0
+UserPrm,103,100,2,0
+UserPrm,104,400,2,0
+UserPrm,105,2000,2,0
+UserPrm,106,400,2,0
+UserPrm,109,0,2,0
+UserPrm,10A,0,2,0
+UserPrm,10B,0,2,0
+UserPrm,10C,200,2,0
+UserPrm,10D,0,2,0
+UserPrm,10E,0,2,0
+UserPrm,10F,0,2,0
+UserPrm,11F,0,2,0
+UserPrm,121,100,2,0
+UserPrm,122,100,2,0
+UserPrm,123,0,2,0
+UserPrm,124,0,2,0
+UserPrm,125,100,2,0
+UserPrm,131,0,2,0
+UserPrm,132,0,2,0
+UserPrm,135,0,2,0
+UserPrm,136,0,2,0
+UserPrm,139,0,2,0
+UserPrm,13D,2000,2,0
+UserPrm,140,256,2,0
+UserPrm,141,500,2,0
+UserPrm,142,1000,2,0
+UserPrm,143,1000,2,0
+UserPrm,144,1000,2,0
+UserPrm,145,500,2,0
+UserPrm,146,700,2,0
+UserPrm,147,1000,2,0
+UserPrm,148,500,2,0
+UserPrm,149,1000,2,0
+UserPrm,14A,800,2,0
+UserPrm,14B,100,2,0
+UserPrm,14F,33,2,0
+UserPrm,160,16,2,0
+UserPrm,161,1000,2,0
+UserPrm,162,100,2,0
+UserPrm,163,0,2,0
+UserPrm,164,0,2,0
+UserPrm,165,0,2,0
+UserPrm,166,0,2,0
+UserPrm,170,5121,2,0
+UserPrm,200,1,2,1
+UserPrm,205,65535,2,0
+UserPrm,207,0,2,0
+UserPrm,20A,32768,4,0
+UserPrm,20E,16777216,4,1
+UserPrm,210,20000,4,1
+UserPrm,212,5000,4,1
+UserPrm,216,0,2,0
+UserPrm,217,0,2,0
+UserPrm,218,1,2,0
+UserPrm,22A,0,2,0
+UserPrm,240,0,2,0
+UserPrm,281,20,2,0
+UserPrm,300,600,2,0
+UserPrm,301,100,2,0
+UserPrm,302,200,2,0
+UserPrm,303,300,2,0
+UserPrm,304,50,2,1
+UserPrm,305,0,2,0
+UserPrm,306,0,2,0
+UserPrm,307,40,2,0
+UserPrm,308,0,2,0
+UserPrm,30A,0,2,0
+UserPrm,30C,0,2,0
+UserPrm,310,0,2,0
+UserPrm,311,100,2,0
+UserPrm,312,50,2,0
+UserPrm,316,10000,2,0
+UserPrm,324,300,2,0
+UserPrm,400,30,2,0
+UserPrm,401,85,2,1
+UserPrm,402,800,2,0
+UserPrm,403,800,2,0
+UserPrm,404,100,2,0
+UserPrm,405,100,2,0
+UserPrm,406,800,2,0
+UserPrm,407,10000,2,0
+UserPrm,408,256,2,1
+UserPrm,409,5000,2,0
+UserPrm,40A,70,2,0
+UserPrm,40B,0,2,0
+UserPrm,40C,1480,2,1
+UserPrm,40D,150,2,1
+UserPrm,40E,0,2,0
+UserPrm,40F,5000,2,0
+UserPrm,410,50,2,0
+UserPrm,412,100,2,0
+UserPrm,415,0,2,0
+UserPrm,416,0,2,0
+UserPrm,417,5000,2,0
+UserPrm,418,70,2,0
+UserPrm,419,0,2,0
+UserPrm,41A,5000,2,0
+UserPrm,41B,70,2,0
+UserPrm,41C,0,2,0
+UserPrm,41D,5000,2,0
+UserPrm,41E,70,2,0
+UserPrm,41F,0,2,0
+UserPrm,423,0,2,0
+UserPrm,424,50,2,0
+UserPrm,425,100,2,0
+UserPrm,426,0,2,0
+UserPrm,427,0,2,0
+UserPrm,456,15,2,0
+UserPrm,460,257,2,0
+UserPrm,475,0,2,0
+UserPrm,476,0,2,0
+UserPrm,481,400,2,0
+UserPrm,482,3000,2,0
+UserPrm,486,25,2,0
+UserPrm,487,0,2,0
+UserPrm,488,100,2,0
+UserPrm,490,100,2,0
+UserPrm,495,100,2,0
+UserPrm,498,10,2,0
+UserPrm,501,10,2,0
+UserPrm,502,20,2,0
+UserPrm,503,10,2,0
+UserPrm,506,0,2,0
+UserPrm,507,100,2,0
+UserPrm,508,50,2,0
+UserPrm,509,20,2,0
+UserPrm,50A,8448,2,0
+UserPrm,50B,25923,2,0
+UserPrm,50C,34952,2,0
+UserPrm,50D,34952,2,0
+UserPrm,50E,12305,2,1
+UserPrm,50F,512,2,1
+UserPrm,510,0,2,0
+UserPrm,512,0,2,0
+UserPrm,513,0,2,0
+UserPrm,514,0,2,0
+UserPrm,515,34952,2,0
+UserPrm,516,34952,2,0
+UserPrm,517,1620,2,0
+UserPrm,518,0,2,0
+UserPrm,519,34952,2,0
+UserPrm,51B,1000,4,0
+UserPrm,51E,100,2,0
+UserPrm,520,5242880,4,0
+UserPrm,522,7,4,0
+UserPrm,524,1073741824,4,0
+UserPrm,526,5242880,4,0
+UserPrm,528,100,2,0
+UserPrm,529,10000,2,0
+UserPrm,52A,20,2,0
+UserPrm,52B,20,2,0
+UserPrm,52C,100,2,0
+UserPrm,52F,4095,2,0
+UserPrm,530,0,2,0
+UserPrm,531,32768,4,0
+UserPrm,533,500,2,0
+UserPrm,534,100,2,0
+UserPrm,535,100,2,0
+UserPrm,536,1,2,0
+UserPrm,550,0,2,0
+UserPrm,551,0,2,0
+UserPrm,552,100,2,0
+UserPrm,553,100,2,0
+UserPrm,55A,1,2,0
+UserPrm,560,400,2,0
+UserPrm,561,100,2,0
+UserPrm,600,0,2,0
+UserPrm,601,0,2,0
+UserPrm,603,0,2,0
+UserPrm,604,0,2,0
+UserPrm,621,0,2,0
+UserPrm,622,10000,2,0
+UserPrm,623,10000,2,0
+UserPrm,624,10,2,0
+UserPrm,625,100,2,0
+UserPrm,626,100,4,0
+UserPrm,628,10,2,0
+Custom
+CustomGroupNum,1
+Gp1_Begin
+GroupName,
+Num,0
+Gp1_End
diff --git a/Handler/MotParam/Mot_Printer_Y.swpp b/Handler/MotParam/Mot_Printer_Y.swpp
new file mode 100644
index 0000000..dc0c57a
Binary files /dev/null and b/Handler/MotParam/Mot_Printer_Y.swpp differ
diff --git a/Handler/MotParam/Mot_Printer_Y.usrs b/Handler/MotParam/Mot_Printer_Y.usrs
new file mode 100644
index 0000000..172f652
--- /dev/null
+++ b/Handler/MotParam/Mot_Printer_Y.usrs
@@ -0,0 +1,256 @@
+File-Spec,2
+FileType,User Parameters Data File
+Made-by,YASKAWA SigmaWin+ Ver.7
+DateTime,12/29/2020 4:34:27 PM
+SERVO-TYPE,SGD7S-1R6A00A002
+SERVO-ID,112
+SERVO-YMOD,0
+SERVO-SPEC,00
+SERVO-SOFT,47
+SERVO-CAPACITY,200
+SerialNo,1A2036500620026
+BTOFlag,1
+BTO-ID,
+IS-SUPPORTED,1
+IS-EDITED,0
+MachineName,
+OP-TYPE,
+OP-ID,65533
+OP-YMOD,65535
+OP-SOFT,65535
+OP1-TYPE,
+OP1-TYPEID,0
+OP1-ID,65533
+OP1-YMOD,65535
+OP1-YMODTYPE,65535
+OP1-SOFT,65535
+OP2-TYPE,
+OP2-TYPEID,0
+OP2-ID,65533
+OP2-YMOD,65535
+OP2-YMODTYPE,65535
+OP2-SOFT,65535
+OP3-TYPE,
+OP3-TYPEID,0
+OP3-ID,65533
+OP3-YMOD,65535
+OP3-YMODTYPE,65535
+OP3-SOFT,65535
+ACCESS-LEVEL,1
+SpecVersion,65535
+AXIS-NUM,1
+MOTOR-TYPE,SGM7J-02AFD21
+MOTOR-ID,173
+ENCODER-ID,24
+ENCODER-SOFT,3
+ServoControlType,512
+CompatibleMapNum,6
+CompatibleMap,0,3,3,6,6,10
+CommentCnt,0
+Comment,
+ServoNameComment,PrintLeft Move
+UserPrmCnt,198
+UserPrm,000,16,2,1
+UserPrm,001,0,2,0
+UserPrm,002,0,2,0
+UserPrm,006,2,2,0
+UserPrm,007,0,2,0
+UserPrm,008,0,2,0
+UserPrm,009,16,2,0
+UserPrm,00A,1,2,0
+UserPrm,00B,256,2,1
+UserPrm,00C,0,2,0
+UserPrm,00D,0,2,0
+UserPrm,00E,0,2,0
+UserPrm,00F,0,2,0
+UserPrm,010,1,2,0
+UserPrm,021,0,2,0
+UserPrm,040,0,2,0
+UserPrm,080,0,2,0
+UserPrm,081,0,2,0
+UserPrm,100,600,2,1
+UserPrm,101,2000,2,0
+UserPrm,102,600,2,1
+UserPrm,103,3000,2,1
+UserPrm,104,400,2,0
+UserPrm,105,2000,2,0
+UserPrm,106,400,2,0
+UserPrm,109,0,2,0
+UserPrm,10A,0,2,0
+UserPrm,10B,0,2,0
+UserPrm,10C,200,2,0
+UserPrm,10D,0,2,0
+UserPrm,10E,0,2,0
+UserPrm,10F,0,2,0
+UserPrm,11F,0,2,0
+UserPrm,121,100,2,0
+UserPrm,122,100,2,0
+UserPrm,123,0,2,0
+UserPrm,124,0,2,0
+UserPrm,125,100,2,0
+UserPrm,131,0,2,0
+UserPrm,132,0,2,0
+UserPrm,135,0,2,0
+UserPrm,136,0,2,0
+UserPrm,139,0,2,0
+UserPrm,13D,2000,2,0
+UserPrm,140,256,2,0
+UserPrm,141,500,2,0
+UserPrm,142,1000,2,0
+UserPrm,143,1000,2,0
+UserPrm,144,1000,2,0
+UserPrm,145,500,2,0
+UserPrm,146,700,2,0
+UserPrm,147,1000,2,0
+UserPrm,148,500,2,0
+UserPrm,149,1000,2,0
+UserPrm,14A,800,2,0
+UserPrm,14B,100,2,0
+UserPrm,14F,33,2,0
+UserPrm,160,16,2,0
+UserPrm,161,1000,2,0
+UserPrm,162,100,2,0
+UserPrm,163,0,2,0
+UserPrm,164,0,2,0
+UserPrm,165,0,2,0
+UserPrm,166,0,2,0
+UserPrm,170,5120,2,1
+UserPrm,200,1,2,1
+UserPrm,205,65535,2,0
+UserPrm,207,0,2,0
+UserPrm,20A,32768,4,0
+UserPrm,20E,16777216,4,1
+UserPrm,210,46000,4,1
+UserPrm,212,11500,4,1
+UserPrm,216,0,2,0
+UserPrm,217,0,2,0
+UserPrm,218,1,2,0
+UserPrm,22A,0,2,0
+UserPrm,240,0,2,0
+UserPrm,281,20,2,0
+UserPrm,300,600,2,0
+UserPrm,301,100,2,0
+UserPrm,302,200,2,0
+UserPrm,303,300,2,0
+UserPrm,304,50,2,1
+UserPrm,305,0,2,0
+UserPrm,306,0,2,0
+UserPrm,307,40,2,0
+UserPrm,308,0,2,0
+UserPrm,30A,0,2,0
+UserPrm,30C,0,2,0
+UserPrm,310,0,2,0
+UserPrm,311,100,2,0
+UserPrm,312,50,2,0
+UserPrm,316,10000,2,0
+UserPrm,324,300,2,0
+UserPrm,400,90,2,1
+UserPrm,401,400,2,1
+UserPrm,402,800,2,0
+UserPrm,403,800,2,0
+UserPrm,404,800,2,1
+UserPrm,405,800,2,1
+UserPrm,406,800,2,0
+UserPrm,407,10000,2,0
+UserPrm,408,0,2,0
+UserPrm,409,5000,2,0
+UserPrm,40A,70,2,0
+UserPrm,40B,0,2,0
+UserPrm,40C,5000,2,0
+UserPrm,40D,70,2,0
+UserPrm,40E,0,2,0
+UserPrm,40F,5000,2,0
+UserPrm,410,50,2,0
+UserPrm,412,100,2,0
+UserPrm,415,0,2,0
+UserPrm,416,0,2,0
+UserPrm,417,5000,2,0
+UserPrm,418,70,2,0
+UserPrm,419,0,2,0
+UserPrm,41A,5000,2,0
+UserPrm,41B,70,2,0
+UserPrm,41C,0,2,0
+UserPrm,41D,5000,2,0
+UserPrm,41E,70,2,0
+UserPrm,41F,0,2,0
+UserPrm,423,0,2,0
+UserPrm,424,50,2,0
+UserPrm,425,100,2,0
+UserPrm,426,0,2,0
+UserPrm,427,0,2,0
+UserPrm,456,15,2,0
+UserPrm,460,257,2,0
+UserPrm,475,0,2,0
+UserPrm,476,0,2,0
+UserPrm,481,400,2,0
+UserPrm,482,3000,2,0
+UserPrm,486,25,2,0
+UserPrm,487,0,2,0
+UserPrm,488,100,2,0
+UserPrm,490,100,2,0
+UserPrm,495,100,2,0
+UserPrm,498,10,2,0
+UserPrm,501,10,2,0
+UserPrm,502,20,2,0
+UserPrm,503,10,2,0
+UserPrm,506,0,2,0
+UserPrm,507,100,2,0
+UserPrm,508,50,2,0
+UserPrm,509,20,2,0
+UserPrm,50A,33025,2,1
+UserPrm,50B,25928,2,1
+UserPrm,50C,34952,2,0
+UserPrm,50D,34952,2,0
+UserPrm,50E,12817,2,0
+UserPrm,50F,0,2,0
+UserPrm,510,0,2,0
+UserPrm,512,0,2,0
+UserPrm,513,0,2,0
+UserPrm,514,0,2,0
+UserPrm,515,34952,2,0
+UserPrm,516,34952,2,0
+UserPrm,517,1620,2,0
+UserPrm,518,0,2,0
+UserPrm,519,34952,2,0
+UserPrm,51B,1000,4,0
+UserPrm,51E,100,2,0
+UserPrm,520,5242880,4,0
+UserPrm,522,7,4,0
+UserPrm,524,1073741824,4,0
+UserPrm,526,5242880,4,0
+UserPrm,528,100,2,0
+UserPrm,529,10000,2,0
+UserPrm,52A,20,2,0
+UserPrm,52B,20,2,0
+UserPrm,52C,100,2,0
+UserPrm,52F,4095,2,0
+UserPrm,530,5,2,1
+UserPrm,531,2000,4,1
+UserPrm,533,100,2,1
+UserPrm,534,100,2,0
+UserPrm,535,3,2,1
+UserPrm,536,0,2,1
+UserPrm,550,0,2,0
+UserPrm,551,0,2,0
+UserPrm,552,100,2,0
+UserPrm,553,100,2,0
+UserPrm,55A,1,2,0
+UserPrm,560,400,2,0
+UserPrm,561,100,2,0
+UserPrm,600,0,2,0
+UserPrm,601,0,2,0
+UserPrm,603,0,2,0
+UserPrm,604,0,2,0
+UserPrm,621,0,2,0
+UserPrm,622,10000,2,0
+UserPrm,623,10000,2,0
+UserPrm,624,10,2,0
+UserPrm,625,100,2,0
+UserPrm,626,100,4,0
+UserPrm,628,10,2,0
+Custom
+CustomGroupNum,1
+Gp1_Begin
+GroupName,
+Num,0
+Gp1_End
diff --git a/Handler/MotParam/Mot_Printer_Z.swpp b/Handler/MotParam/Mot_Printer_Z.swpp
new file mode 100644
index 0000000..9a0a87f
Binary files /dev/null and b/Handler/MotParam/Mot_Printer_Z.swpp differ
diff --git a/Handler/MotParam/Mot_Printer_Z.usrs b/Handler/MotParam/Mot_Printer_Z.usrs
new file mode 100644
index 0000000..eeb0f03
--- /dev/null
+++ b/Handler/MotParam/Mot_Printer_Z.usrs
@@ -0,0 +1,256 @@
+File-Spec,2
+FileType,User Parameters Data File
+Made-by,YASKAWA SigmaWin+ Ver.7
+DateTime,12/29/2020 4:42:26 PM
+SERVO-TYPE,SGD7S-1R6A00A002
+SERVO-ID,112
+SERVO-YMOD,0
+SERVO-SPEC,00
+SERVO-SOFT,47
+SERVO-CAPACITY,200
+SerialNo,1A2046912320009
+BTOFlag,1
+BTO-ID,
+IS-SUPPORTED,1
+IS-EDITED,0
+MachineName,
+OP-TYPE,
+OP-ID,65533
+OP-YMOD,65535
+OP-SOFT,65535
+OP1-TYPE,
+OP1-TYPEID,0
+OP1-ID,65533
+OP1-YMOD,65535
+OP1-YMODTYPE,65535
+OP1-SOFT,65535
+OP2-TYPE,
+OP2-TYPEID,0
+OP2-ID,65533
+OP2-YMOD,65535
+OP2-YMODTYPE,65535
+OP2-SOFT,65535
+OP3-TYPE,
+OP3-TYPEID,0
+OP3-ID,65533
+OP3-YMOD,65535
+OP3-YMODTYPE,65535
+OP3-SOFT,65535
+ACCESS-LEVEL,1
+SpecVersion,65535
+AXIS-NUM,1
+MOTOR-TYPE,SGM7J-02AFD2C
+MOTOR-ID,173
+ENCODER-ID,24
+ENCODER-SOFT,3
+ServoControlType,512
+CompatibleMapNum,6
+CompatibleMap,0,3,3,6,6,10
+CommentCnt,0
+Comment,
+ServoNameComment,Print Left Up/Dn
+UserPrmCnt,198
+UserPrm,000,17,2,1
+UserPrm,001,0,2,0
+UserPrm,002,0,2,0
+UserPrm,006,2,2,0
+UserPrm,007,0,2,0
+UserPrm,008,0,2,0
+UserPrm,009,16,2,0
+UserPrm,00A,1,2,0
+UserPrm,00B,256,2,1
+UserPrm,00C,0,2,0
+UserPrm,00D,0,2,0
+UserPrm,00E,0,2,0
+UserPrm,00F,0,2,0
+UserPrm,010,1,2,0
+UserPrm,021,0,2,0
+UserPrm,040,0,2,0
+UserPrm,080,0,2,0
+UserPrm,081,0,2,0
+UserPrm,100,400,2,0
+UserPrm,101,2000,2,0
+UserPrm,102,400,2,0
+UserPrm,103,100,2,0
+UserPrm,104,400,2,0
+UserPrm,105,2000,2,0
+UserPrm,106,400,2,0
+UserPrm,109,0,2,0
+UserPrm,10A,0,2,0
+UserPrm,10B,0,2,0
+UserPrm,10C,200,2,0
+UserPrm,10D,0,2,0
+UserPrm,10E,0,2,0
+UserPrm,10F,0,2,0
+UserPrm,11F,0,2,0
+UserPrm,121,100,2,0
+UserPrm,122,100,2,0
+UserPrm,123,0,2,0
+UserPrm,124,0,2,0
+UserPrm,125,100,2,0
+UserPrm,131,0,2,0
+UserPrm,132,0,2,0
+UserPrm,135,0,2,0
+UserPrm,136,0,2,0
+UserPrm,139,0,2,0
+UserPrm,13D,2000,2,0
+UserPrm,140,256,2,0
+UserPrm,141,500,2,0
+UserPrm,142,1000,2,0
+UserPrm,143,1000,2,0
+UserPrm,144,1000,2,0
+UserPrm,145,500,2,0
+UserPrm,146,700,2,0
+UserPrm,147,1000,2,0
+UserPrm,148,500,2,0
+UserPrm,149,1000,2,0
+UserPrm,14A,800,2,0
+UserPrm,14B,100,2,0
+UserPrm,14F,33,2,0
+UserPrm,160,16,2,0
+UserPrm,161,1000,2,0
+UserPrm,162,100,2,0
+UserPrm,163,0,2,0
+UserPrm,164,0,2,0
+UserPrm,165,0,2,0
+UserPrm,166,0,2,0
+UserPrm,170,5121,2,0
+UserPrm,200,1,2,1
+UserPrm,205,65535,2,0
+UserPrm,207,0,2,0
+UserPrm,20A,32768,4,0
+UserPrm,20E,16777216,4,1
+UserPrm,210,10000,4,1
+UserPrm,212,2500,4,1
+UserPrm,216,0,2,0
+UserPrm,217,0,2,0
+UserPrm,218,1,2,0
+UserPrm,22A,0,2,0
+UserPrm,240,0,2,0
+UserPrm,281,20,2,0
+UserPrm,300,600,2,0
+UserPrm,301,100,2,0
+UserPrm,302,200,2,0
+UserPrm,303,300,2,0
+UserPrm,304,50,2,1
+UserPrm,305,0,2,0
+UserPrm,306,0,2,0
+UserPrm,307,40,2,0
+UserPrm,308,0,2,0
+UserPrm,30A,0,2,0
+UserPrm,30C,0,2,0
+UserPrm,310,0,2,0
+UserPrm,311,100,2,0
+UserPrm,312,50,2,0
+UserPrm,316,10000,2,0
+UserPrm,324,300,2,0
+UserPrm,400,30,2,0
+UserPrm,401,85,2,1
+UserPrm,402,800,2,0
+UserPrm,403,800,2,0
+UserPrm,404,100,2,0
+UserPrm,405,100,2,0
+UserPrm,406,800,2,0
+UserPrm,407,10000,2,0
+UserPrm,408,256,2,1
+UserPrm,409,5000,2,0
+UserPrm,40A,70,2,0
+UserPrm,40B,0,2,0
+UserPrm,40C,1480,2,1
+UserPrm,40D,150,2,1
+UserPrm,40E,0,2,0
+UserPrm,40F,5000,2,0
+UserPrm,410,50,2,0
+UserPrm,412,100,2,0
+UserPrm,415,0,2,0
+UserPrm,416,0,2,0
+UserPrm,417,5000,2,0
+UserPrm,418,70,2,0
+UserPrm,419,0,2,0
+UserPrm,41A,5000,2,0
+UserPrm,41B,70,2,0
+UserPrm,41C,0,2,0
+UserPrm,41D,5000,2,0
+UserPrm,41E,70,2,0
+UserPrm,41F,0,2,0
+UserPrm,423,0,2,0
+UserPrm,424,50,2,0
+UserPrm,425,100,2,0
+UserPrm,426,0,2,0
+UserPrm,427,0,2,0
+UserPrm,456,15,2,0
+UserPrm,460,257,2,0
+UserPrm,475,0,2,0
+UserPrm,476,0,2,0
+UserPrm,481,400,2,0
+UserPrm,482,3000,2,0
+UserPrm,486,25,2,0
+UserPrm,487,0,2,0
+UserPrm,488,100,2,0
+UserPrm,490,100,2,0
+UserPrm,495,100,2,0
+UserPrm,498,10,2,0
+UserPrm,501,10,2,0
+UserPrm,502,20,2,0
+UserPrm,503,10,2,0
+UserPrm,506,0,2,0
+UserPrm,507,100,2,0
+UserPrm,508,50,2,0
+UserPrm,509,20,2,0
+UserPrm,50A,8448,2,0
+UserPrm,50B,25923,2,0
+UserPrm,50C,34952,2,0
+UserPrm,50D,34952,2,0
+UserPrm,50E,12305,2,1
+UserPrm,50F,512,2,1
+UserPrm,510,0,2,0
+UserPrm,512,0,2,0
+UserPrm,513,0,2,0
+UserPrm,514,0,2,0
+UserPrm,515,34952,2,0
+UserPrm,516,34952,2,0
+UserPrm,517,1620,2,0
+UserPrm,518,0,2,0
+UserPrm,519,34952,2,0
+UserPrm,51B,1000,4,0
+UserPrm,51E,100,2,0
+UserPrm,520,5242880,4,0
+UserPrm,522,7,4,0
+UserPrm,524,1073741824,4,0
+UserPrm,526,5242880,4,0
+UserPrm,528,100,2,0
+UserPrm,529,10000,2,0
+UserPrm,52A,20,2,0
+UserPrm,52B,20,2,0
+UserPrm,52C,100,2,0
+UserPrm,52F,4095,2,0
+UserPrm,530,0,2,0
+UserPrm,531,32768,4,0
+UserPrm,533,500,2,0
+UserPrm,534,100,2,0
+UserPrm,535,100,2,0
+UserPrm,536,1,2,0
+UserPrm,550,0,2,0
+UserPrm,551,0,2,0
+UserPrm,552,100,2,0
+UserPrm,553,100,2,0
+UserPrm,55A,1,2,0
+UserPrm,560,400,2,0
+UserPrm,561,100,2,0
+UserPrm,600,0,2,0
+UserPrm,601,0,2,0
+UserPrm,603,0,2,0
+UserPrm,604,0,2,0
+UserPrm,621,0,2,0
+UserPrm,622,10000,2,0
+UserPrm,623,10000,2,0
+UserPrm,624,10,2,0
+UserPrm,625,100,2,0
+UserPrm,626,100,4,0
+UserPrm,628,10,2,0
+Custom
+CustomGroupNum,1
+Gp1_Begin
+GroupName,
+Num,0
+Gp1_End
diff --git a/Handler/MotParam/Mot_Theta.swpp b/Handler/MotParam/Mot_Theta.swpp
new file mode 100644
index 0000000..6947722
Binary files /dev/null and b/Handler/MotParam/Mot_Theta.swpp differ
diff --git a/Handler/MotParam/Mot_Theta.usrs b/Handler/MotParam/Mot_Theta.usrs
new file mode 100644
index 0000000..5517e83
--- /dev/null
+++ b/Handler/MotParam/Mot_Theta.usrs
@@ -0,0 +1,256 @@
+File-Spec,2
+FileType,User Parameters Data File
+Made-by,YASKAWA SigmaWin+ Ver.7
+DateTime,12/23/2020 11:42:01 AM
+SERVO-TYPE,SGD7S-1R6A00A002
+SERVO-ID,112
+SERVO-YMOD,0
+SERVO-SPEC,00
+SERVO-SOFT,47
+SERVO-CAPACITY,200
+SerialNo,1A2036500620098
+BTOFlag,1
+BTO-ID,
+IS-SUPPORTED,1
+IS-EDITED,0
+MachineName,
+OP-TYPE,
+OP-ID,65533
+OP-YMOD,65535
+OP-SOFT,65535
+OP1-TYPE,
+OP1-TYPEID,0
+OP1-ID,65533
+OP1-YMOD,65535
+OP1-YMODTYPE,65535
+OP1-SOFT,65535
+OP2-TYPE,
+OP2-TYPEID,0
+OP2-ID,65533
+OP2-YMOD,65535
+OP2-YMODTYPE,65535
+OP2-SOFT,65535
+OP3-TYPE,
+OP3-TYPEID,0
+OP3-ID,65533
+OP3-YMOD,65535
+OP3-YMODTYPE,65535
+OP3-SOFT,65535
+ACCESS-LEVEL,1
+SpecVersion,65535
+AXIS-NUM,1
+MOTOR-TYPE,SGM7J-02AFD21
+MOTOR-ID,173
+ENCODER-ID,24
+ENCODER-SOFT,3
+ServoControlType,512
+CompatibleMapNum,6
+CompatibleMap,0,3,3,6,6,10
+CommentCnt,0
+Comment,
+ServoNameComment,Picker Theta
+UserPrmCnt,198
+UserPrm,000,17,2,1
+UserPrm,001,0,2,0
+UserPrm,002,0,2,0
+UserPrm,006,2,2,0
+UserPrm,007,0,2,0
+UserPrm,008,0,2,0
+UserPrm,009,16,2,0
+UserPrm,00A,1,2,0
+UserPrm,00B,256,2,1
+UserPrm,00C,0,2,0
+UserPrm,00D,0,2,0
+UserPrm,00E,0,2,0
+UserPrm,00F,0,2,0
+UserPrm,010,1,2,0
+UserPrm,021,0,2,0
+UserPrm,040,0,2,0
+UserPrm,080,0,2,0
+UserPrm,081,0,2,0
+UserPrm,100,400,2,0
+UserPrm,101,2000,2,0
+UserPrm,102,400,2,0
+UserPrm,103,100,2,0
+UserPrm,104,400,2,0
+UserPrm,105,2000,2,0
+UserPrm,106,400,2,0
+UserPrm,109,0,2,0
+UserPrm,10A,0,2,0
+UserPrm,10B,0,2,0
+UserPrm,10C,200,2,0
+UserPrm,10D,0,2,0
+UserPrm,10E,0,2,0
+UserPrm,10F,0,2,0
+UserPrm,11F,0,2,0
+UserPrm,121,100,2,0
+UserPrm,122,100,2,0
+UserPrm,123,0,2,0
+UserPrm,124,0,2,0
+UserPrm,125,100,2,0
+UserPrm,131,0,2,0
+UserPrm,132,0,2,0
+UserPrm,135,0,2,0
+UserPrm,136,0,2,0
+UserPrm,139,0,2,0
+UserPrm,13D,2000,2,0
+UserPrm,140,256,2,0
+UserPrm,141,500,2,0
+UserPrm,142,1000,2,0
+UserPrm,143,1000,2,0
+UserPrm,144,1000,2,0
+UserPrm,145,500,2,0
+UserPrm,146,700,2,0
+UserPrm,147,1000,2,0
+UserPrm,148,500,2,0
+UserPrm,149,1000,2,0
+UserPrm,14A,800,2,0
+UserPrm,14B,100,2,0
+UserPrm,14F,33,2,0
+UserPrm,160,16,2,0
+UserPrm,161,1000,2,0
+UserPrm,162,100,2,0
+UserPrm,163,0,2,0
+UserPrm,164,0,2,0
+UserPrm,165,0,2,0
+UserPrm,166,0,2,0
+UserPrm,170,5121,2,0
+UserPrm,200,1,2,1
+UserPrm,205,65535,2,0
+UserPrm,207,0,2,0
+UserPrm,20A,32768,4,0
+UserPrm,20E,16777216,4,1
+UserPrm,210,20000,4,1
+UserPrm,212,5000,4,1
+UserPrm,216,0,2,0
+UserPrm,217,0,2,0
+UserPrm,218,1,2,0
+UserPrm,22A,0,2,0
+UserPrm,240,0,2,0
+UserPrm,281,20,2,0
+UserPrm,300,600,2,0
+UserPrm,301,100,2,0
+UserPrm,302,200,2,0
+UserPrm,303,300,2,0
+UserPrm,304,200,2,1
+UserPrm,305,0,2,0
+UserPrm,306,0,2,0
+UserPrm,307,40,2,0
+UserPrm,308,0,2,0
+UserPrm,30A,0,2,0
+UserPrm,30C,0,2,0
+UserPrm,310,0,2,0
+UserPrm,311,100,2,0
+UserPrm,312,50,2,0
+UserPrm,316,10000,2,0
+UserPrm,324,300,2,0
+UserPrm,400,30,2,0
+UserPrm,401,100,2,0
+UserPrm,402,800,2,0
+UserPrm,403,800,2,0
+UserPrm,404,100,2,0
+UserPrm,405,100,2,0
+UserPrm,406,800,2,0
+UserPrm,407,10000,2,0
+UserPrm,408,0,2,0
+UserPrm,409,5000,2,0
+UserPrm,40A,70,2,0
+UserPrm,40B,0,2,0
+UserPrm,40C,5000,2,0
+UserPrm,40D,70,2,0
+UserPrm,40E,0,2,0
+UserPrm,40F,5000,2,0
+UserPrm,410,50,2,0
+UserPrm,412,100,2,0
+UserPrm,415,0,2,0
+UserPrm,416,0,2,0
+UserPrm,417,5000,2,0
+UserPrm,418,70,2,0
+UserPrm,419,0,2,0
+UserPrm,41A,5000,2,0
+UserPrm,41B,70,2,0
+UserPrm,41C,0,2,0
+UserPrm,41D,5000,2,0
+UserPrm,41E,70,2,0
+UserPrm,41F,0,2,0
+UserPrm,423,0,2,0
+UserPrm,424,50,2,0
+UserPrm,425,100,2,0
+UserPrm,426,0,2,0
+UserPrm,427,0,2,0
+UserPrm,456,15,2,0
+UserPrm,460,257,2,0
+UserPrm,475,0,2,0
+UserPrm,476,0,2,0
+UserPrm,481,400,2,0
+UserPrm,482,3000,2,0
+UserPrm,486,25,2,0
+UserPrm,487,0,2,0
+UserPrm,488,100,2,0
+UserPrm,490,100,2,0
+UserPrm,495,100,2,0
+UserPrm,498,10,2,0
+UserPrm,501,10,2,0
+UserPrm,502,20,2,0
+UserPrm,503,10,2,0
+UserPrm,506,0,2,0
+UserPrm,507,100,2,0
+UserPrm,508,50,2,0
+UserPrm,509,20,2,0
+UserPrm,50A,8448,2,0
+UserPrm,50B,25923,2,0
+UserPrm,50C,34952,2,0
+UserPrm,50D,34952,2,0
+UserPrm,50E,12817,2,0
+UserPrm,50F,0,2,0
+UserPrm,510,0,2,0
+UserPrm,512,0,2,0
+UserPrm,513,0,2,0
+UserPrm,514,0,2,0
+UserPrm,515,34952,2,0
+UserPrm,516,34952,2,0
+UserPrm,517,1620,2,0
+UserPrm,518,0,2,0
+UserPrm,519,34952,2,0
+UserPrm,51B,1000,4,0
+UserPrm,51E,100,2,0
+UserPrm,520,5242880,4,0
+UserPrm,522,7,4,0
+UserPrm,524,1073741824,4,0
+UserPrm,526,5242880,4,0
+UserPrm,528,100,2,0
+UserPrm,529,10000,2,0
+UserPrm,52A,20,2,0
+UserPrm,52B,20,2,0
+UserPrm,52C,100,2,0
+UserPrm,52F,4095,2,0
+UserPrm,530,0,2,0
+UserPrm,531,32768,4,0
+UserPrm,533,500,2,0
+UserPrm,534,100,2,0
+UserPrm,535,100,2,0
+UserPrm,536,1,2,0
+UserPrm,550,0,2,0
+UserPrm,551,0,2,0
+UserPrm,552,100,2,0
+UserPrm,553,100,2,0
+UserPrm,55A,1,2,0
+UserPrm,560,400,2,0
+UserPrm,561,100,2,0
+UserPrm,600,0,2,0
+UserPrm,601,0,2,0
+UserPrm,603,0,2,0
+UserPrm,604,0,2,0
+UserPrm,621,0,2,0
+UserPrm,622,10000,2,0
+UserPrm,623,10000,2,0
+UserPrm,624,10,2,0
+UserPrm,625,100,2,0
+UserPrm,626,100,4,0
+UserPrm,628,10,2,0
+Custom
+CustomGroupNum,1
+Gp1_Begin
+GroupName,
+Num,0
+Gp1_End
diff --git a/Handler/Project/Button/AIR.cs b/Handler/Project/Button/AIR.cs
new file mode 100644
index 0000000..8782464
--- /dev/null
+++ b/Handler/Project/Button/AIR.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+
+namespace Project
+{
+ public partial class FMain
+ {
+ }
+}
diff --git a/Handler/Project/Button/RESET.cs b/Handler/Project/Button/RESET.cs
new file mode 100644
index 0000000..f5b6496
--- /dev/null
+++ b/Handler/Project/Button/RESET.cs
@@ -0,0 +1,86 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using UIControl;
+using AR;
+namespace Project
+{
+ public partial class FMain
+ {
+
+ void _BUTTON_RESET()
+ {
+ //RESET 버튼 눌렸을때 공통 처리 사항
+ DIO.SetBuzzer(false); //buzzer off
+
+ if (PUB.popup.Visible)
+ PUB.popup.needClose = true;
+
+ if (
+ hmi1.Scean == HMI.eScean.xmove)
+ hmi1.Scean = UIControl.HMI.eScean.Nomal;
+
+ PUB.flag.set(eVarBool.FG_KEYENCE_OFFF, false, "USER");
+ PUB.flag.set(eVarBool.FG_KEYENCE_OFFR, false, "USER");
+
+ //팝업메세지가 제거가능한 메세지라면 없앤다.
+ if (hmi1.HasPopupMenu && hmi1.PopupMenuRequireInput == false)
+ hmi1.DelMenu();
+
+ //알람클리어작업(모션에 오류가 있는 경우에만)
+ if (PUB.mot.IsInit && PUB.mot.HasServoAlarm)
+ {
+ PUB.mot.SetAlarmClearOn();
+ System.Threading.Thread.Sleep(200);
+ PUB.mot.SetAlarmClearOff();
+ }
+
+ //자재가 없고, 센서도 반응안하는데. 진공이 되어잇으면 off한다
+ if (DIO.isVacOKL() == 0 && PUB.flag.get(eVarBool.FG_PK_ITEMON) == false && DIO.GetIOOutput(eDOName.PICK_VAC1) == false)
+ DIO.SetPickerVac(false, true);
+
+
+ //중단, 오류 모드일때에는 이 리셋이 의미가 있다.
+ if (PUB.sm.Step == eSMStep.RUN)
+ {
+ PUB.log.Add("동작중에는 [RESET] 버튼이 동작하지 않습니다");
+ }
+ else if (PUB.sm.Step == eSMStep.PAUSE)
+ {
+ //시작대기상태로 전환(대기상태일때 시작키를 누르면 실행 됨)
+ PUB.sm.SetNewStep(eSMStep.WAITSTART);
+ PUB.log.AddAT("Reset Clear System Resume & Pause ON");
+ }
+ else if (PUB.sm.Step == eSMStep.EMERGENCY)
+ {
+ PUB.popup.setMessage("EMERGENCY RESET\n" +
+ "[비상정지] 상태에는 [시스템초기화] 를 실행 해야 합니다\n" +
+ "상단메뉴 [초기화] 를 실행하세요");
+
+ PUB.log.Add("RESET버튼으로 인해 EMG 상황에서 IDLE전환");
+ PUB.sm.SetNewStep(eSMStep.IDLE);
+ }
+ else if (PUB.sm.Step == eSMStep.ERROR)
+ {
+ PUB.log.Add("RESET버튼으로 인해 ERR 상황에서 IDLE전환");
+ PUB.sm.SetNewStep(eSMStep.IDLE);
+ }
+ else if (PUB.sm.Step == eSMStep.WAITSTART)
+ {
+ //시작대기중일때에도 아무 처리안함
+ //Pub.log.Add("시작버튼대기중에는 [RESET] 버튼이 동작하지 않습니다");
+ }
+ else if (PUB.sm.Step == eSMStep.IDLE)
+ {
+ //Pub.log.Add("대기중에는 [RESET] 버튼이 동작하지 않습니다");
+ }
+ else
+ {
+ //Pub.log.AddE("정의되지 않은 상태에서의 REST 키 버튼 입력 - 대기상태로 전환합니다");
+ PUB.sm.SetNewStep(eSMStep.IDLE);
+ }
+ }
+ }
+}
diff --git a/Handler/Project/Button/START.cs b/Handler/Project/Button/START.cs
new file mode 100644
index 0000000..bb9b835
--- /dev/null
+++ b/Handler/Project/Button/START.cs
@@ -0,0 +1,82 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using AR;
+namespace Project
+{
+ public partial class FMain
+ {
+
+ void _BUTTON_START()
+ {
+ if (PUB.sm.Step == eSMStep.RUN)
+ {
+ //아무것도 하지 않는다
+ PUB.log.Add("동작중에는 START 버튼이 사용되지 않습니다");
+ }
+ else if (PUB.sm.Step == eSMStep.IDLE) //일반대기상태
+ {
+ if (DIO.isVacOKL() > 0)
+ {
+ DIO.SetBuzzer(true);
+ PUB.popup.setMessage("PICKER ITEM DETECT\nPICKER 에서 아이템이 감지되었습니다\n[작업취소] 를 눌러서 아이템을 DROP 한 후 제거해주세요.");
+ return;
+ }
+ else if (DIO.getCartSize(1) == eCartSize.None)
+ {
+ DIO.SetBuzzer(true);
+ PUB.popup.setMessage("로더에 카트가 장착되지 않았습니다");
+ return;
+ }
+ else if (DIO.GetIOInput(eDIName.PORTC_LIM_DN) == true && DIO.GetIOInput(eDIName.PORTC_DET_UP) == true)
+ {
+ //하단리밋과, 자재감지가 동시에 들어오면 overload 이다
+ DIO.SetBuzzer(true);
+ PUB.popup.setMessage("로더에 너무 많은 릴이 적재 되어 있습니다\n" +
+ "하단 리밋 센서와 상단 릴 감지 센서가 동시에 확인 됩니다");
+ return;
+ }
+ //else if (Util_DO.getCartSize(0) == eCartSize.None && Util_DO.getCartSize(2) == eCartSize.None)
+ //{
+ // Util_DO.SetBuzzer(true);
+ // Pub.popup.setMessage("언로더에 카트가 장착되지 않았습니다");
+ // return;
+ //}
+
+ Func_start_job_select();
+
+
+ }
+ else if (PUB.sm.Step == eSMStep.WAITSTART) //시작대기상태
+ {
+
+ DIO.SetRoomLight(true);
+
+ //새로시작하면 포트 얼라인을 해제 해준다
+ PUB.flag.set(eVarBool.FG_RDY_PORT_PL, false, "SW_START");
+ PUB.flag.set(eVarBool.FG_RDY_PORT_PC, false, "SW_START");
+ PUB.flag.set(eVarBool.FG_RDY_PORT_PR, false, "SW_START");
+
+ //얼라인 상태를 모두 초기화 한다
+ //loader1.arVar_Port.ToList().ForEach(t => t.AlignOK = 0);
+
+ //언로더 체크작업은 항상 다시 시작한다
+ if (PUB.Result.UnloaderSeq > 1) PUB.Result.UnloaderSeq = 1;
+
+ //팝업메세지가 사라지도록 한다
+ PUB.popup.needClose = true;
+ PUB.sm.SetNewStep(eSMStep.RUN);
+ PUB.log.Add("[사용자 일시정지] 해제 => 작업이 계속됩니다");
+ }
+ else
+ {
+ //string msg = "SYSTEM {0}\n[RESET] 버튼을 누른 후 다시 시도하세요";
+ //msg = string.Format(msg, PUB.sm.Step);
+ //PUB.popup.setMessage(msg);
+ PUB.log.AddE($"[RESET] 버튼을 누른 후 다시 시도하세요");
+ }
+ }
+ }
+}
diff --git a/Handler/Project/Button/STOP.cs b/Handler/Project/Button/STOP.cs
new file mode 100644
index 0000000..a4bdcff
--- /dev/null
+++ b/Handler/Project/Button/STOP.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using AR;
+namespace Project
+{
+ public partial class FMain
+ {
+ void _BUTTON_STOP()
+ {
+ //매거진 투입모터 멈춤
+ if (DIO.GetIOOutput(eDOName.PORTL_MOT_RUN)) DIO.SetPortMotor(0, eMotDir.CW, false, "Button Stop");
+ if (DIO.GetIOOutput(eDOName.PORTC_MOT_RUN)) DIO.SetPortMotor(1, eMotDir.CW, false, "Button Stop");
+ if (DIO.GetIOOutput(eDOName.PORTR_MOT_RUN)) DIO.SetPortMotor(2, eMotDir.CW, false, "Button Stop");
+
+ //자재가 없고, 센서도 반응안하는데. 진공이 되어잇으면 off한다
+ if (DIO.isVacOKL() == 0 && PUB.flag.get(eVarBool.FG_PK_ITEMON) == false && DIO.GetIOOutput(eDOName.PICK_VAC1) == true)
+ DIO.SetPickerVac(false, true);
+
+ //조명켜기
+ if (AR.SETTING.Data.Disable_RoomLight == false)
+ DIO.SetRoomLight(true);
+
+ //컨베이어 멈춘다 230502
+ DIO.SetOutput(eDOName.LEFT_CONV, false);
+ DIO.SetOutput(eDOName.RIGHT_CONV, false);
+
+ //모든 모터도 멈춘다
+ if (PUB.mot.HasMoving) PUB.mot.MoveStop("Stop Button");
+
+ if (PUB.sm.Step == eSMStep.RUN)
+ {
+ //일시중지상태로 전환한다
+ PUB.Result.SetResultMessage(eResult.OPERATION, eECode.USER_STOP, eNextStep.PAUSE);
+ PUB.log.Add("[사용자 일시정지]");
+ }
+ else if (PUB.sm.Step == eSMStep.HOME_FULL) //홈진행중에는 대기상태로 전환
+ {
+ PUB.sm.SetNewStep(eSMStep.IDLE);
+ }
+
+ //로그 기록
+ PUB.LogFlush();
+ }
+
+ }
+}
diff --git a/Handler/Project/Class/AmkorReelID.cs b/Handler/Project/Class/AmkorReelID.cs
new file mode 100644
index 0000000..c090a88
--- /dev/null
+++ b/Handler/Project/Class/AmkorReelID.cs
@@ -0,0 +1,187 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Project
+{
+ public static class AmkorReelID
+ {
+ ///
+ /// 앰코 ID형태인지 확인합니다.
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Boolean IsValidID(string rid, out string yy, out string m)
+ {
+ yy = string.Empty;
+ m = string.Empty;
+ if (rid.Length != 15) return false;
+ try
+ {
+ var custCost = rid.Substring(2, 4);
+ var site = "K" + rid.Substring(6, 1);
+ var mc = rid.Substring(7, 1);
+ yy = rid.Substring(8, 2);
+ m = rid.Substring(10, 1);
+ var sn = rid.Substring(11, 4);
+ return true;
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ public static string MakeReelID(string customercode, string ym)
+ {
+ if (customercode.Length != 4)
+ {
+ return String.Empty;//
+ //throw new Exception("Customer 코드는 4자리 입니다");
+ }
+ if (ym.Length != 3)
+ {
+ return string.Empty;//
+ //throw new Exception("Ym 코드는 3자리 입니다");
+ }
+ var rid = "RC{CUST}{DEVLOC}{DEVID}{YM}";
+ rid = rid.Replace("{DEVLOC}", AR.SETTING.Data.ReelIdDeviceLoc);
+ rid = rid.Replace("{DEVID}", AR.SETTING.Data.ReelIdDeviceID);
+ rid = rid.Replace("{CUST}", customercode);
+ rid = rid.Replace("{YM}", ym);
+ rid += GetNextSNbyYM(ym);
+ return rid;
+ }
+
+
+ ///
+ /// 입력된 월 기준으로 시리얼 번호를 생성합니다
+ ///
+ /// 21년 1월의 경우 211, 10월의 경우 21A 식으로 표현
+ /// 1,2번 위치에 R기호를 제거 할 것인가?
+ ///
+ public static string GetNextSNbyYM(string ym)
+ {
+ //서버에서 자료를 조회해서 처리한다.
+ var db = new EEEntities();
+ var dr = db.Component_Reel_Result.Where(t => t.PDATE == ym && t.PDATE.Contains("R") == false).OrderByDescending(t => t.RSN).FirstOrDefault();
+ if (dr == null) return "0001"; //처음쓰는 자료인다.
+ var curSN = dr.RSN;
+ return GetNextSNbySN(curSN);
+ }
+
+ ///
+ /// 해당월의 리턴릴의 번호를 생성한다
+ ///
+ ///
+ ///
+ public static string GetNextSNbyYM_Return(string ym)
+ {
+ //서버에서 자료를 조회해서 처리한다.
+ var db = new EEEntities();
+ var dr = db.Component_Reel_Result.Where(t => t.PDATE == ym && t.PDATE.StartsWith("R")).OrderByDescending(t => t.RSN).FirstOrDefault();
+ if (dr == null) return "R001"; //처음쓰는 자료인다.
+ var curSN = dr.RSN;
+ return GetNextSNbySN_Return(curSN);
+ }
+
+ ///
+ /// 중복릴의 다은번호를 생성한다
+ ///
+ ///
+ ///
+ public static string GetNextSNbyYM_Dup(string ym)
+ {
+ //서버에서 자료를 조회해서 처리한다.
+ var db = new EEEntities();
+ var dr = db.Component_Reel_Result.Where(t => t.PDATE == ym && t.PDATE.StartsWith("0R")).OrderByDescending(t => t.RSN).FirstOrDefault();
+ if (dr == null) return "0R01"; //처음쓰는 자료인다.
+ var curSN = dr.RSN;
+ return GetNextSNbySN_Dup(curSN);
+ }
+
+ ///
+ /// 입력한 시리얼 번호 이후의 번호를 생성합니다(0000~ZZZZ) 까지의 데이터를 가지며 2번쨰짜리까지는 R을 사용하지 못한다
+ ///
+ /// 기준 시리얼번호 4자리
+ ///
+ ///
+ public static string GetNextSNbySN(string sn)
+ {
+ //서버에서 자료를 조회해서 처리한다.
+ string curSN = sn;
+ if (sn.Length != 4) throw new Exception("s/n length 4");
+
+ var buffer = curSN.ToCharArray();
+ for (int i = buffer.Length; i > 0; i--)
+ {
+ if (i <= 2)
+ if (buffer[i - 1] == 'Q') buffer[i - 1] = 'R';
+
+ if (buffer[i - 1] == '9') { buffer[i - 1] = 'A'; break; }
+ else if (buffer[i - 1] == 'Z') buffer[i - 1] = '0';
+ else { buffer[i - 1] = (char)((byte)buffer[i - 1] + 1); break; }
+ }
+ return string.Join("", buffer);
+ }
+
+ ///
+ /// 리턴릴의 다음 번호 생성 R로시작하며 000~ZZZ 영역을 가진다(제외문자 없음)
+ ///
+ ///
+ ///
+ public static string GetNextSNbySN_Return(string sn)
+ {
+ //서버에서 자료를 조회해서 처리한다.
+ string curSN = sn;
+ if (sn.Length != 4) throw new Exception("s/n length 4");
+
+ var buffer = curSN.ToCharArray();
+ for (int i = buffer.Length; i > 1; i--)
+ {
+ //if (i <= 2) //1,2번 영역에는 R값이 들어가면 안된다.
+ //{
+ // if (buffer[i - 1] == 'Q') buffer[i - 1] = 'R';
+ //}
+
+ if (buffer[i - 1] == '9') { buffer[i - 1] = 'A'; break; }
+ else if (buffer[i - 1] == 'Z') buffer[i - 1] = '0';
+ else { buffer[i - 1] = (char)((byte)buffer[i - 1] + 1); break; }
+ }
+ buffer[0] = 'R';
+ return string.Join("", buffer);
+ }
+
+ ///
+ /// 중복릴의 다음 번호 생성(0R로 시작하며 00~ZZ의 영역을 가진다)
+ ///
+ ///
+ ///
+ public static string GetNextSNbySN_Dup(string sn)
+ {
+ //서버에서 자료를 조회해서 처리한다.
+ string curSN = sn;
+ if (sn.Length != 4) throw new Exception("s/n length 4");
+
+ var buffer = curSN.ToCharArray();
+ for (int i = buffer.Length; i > 2; i--)
+ {
+ //if (i <= 2) //1,2번 영역에는 R값이 들어가면 안된다.
+ //{
+ // if (buffer[i - 1] == 'Q') buffer[i - 1] = 'R';
+ //}
+
+ if (buffer[i - 1] == '9') { buffer[i - 1] = 'A'; break; }
+ else if (buffer[i - 1] == 'Z') buffer[i - 1] = '0';
+ else { buffer[i - 1] = (char)((byte)buffer[i - 1] + 1); break; }
+ }
+ buffer[0] = '0';
+ buffer[1] = 'R';
+ return string.Join("", buffer);
+ }
+ }
+}
diff --git a/Handler/Project/Class/CHistoryJOB.cs b/Handler/Project/Class/CHistoryJOB.cs
new file mode 100644
index 0000000..3fd3399
--- /dev/null
+++ b/Handler/Project/Class/CHistoryJOB.cs
@@ -0,0 +1,168 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+
+namespace Project.Class
+{
+
+ public class CHistoryJOB : INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler PropertyChanged;
+ List _items;
+ public CHistoryJOB()
+ {
+ _items = new List();
+ }
+ public void Clear()
+ {
+ lock (_items)
+ {
+ _items.Clear();
+ }
+
+ OnPropertyChanged("Clear");
+ }
+ public int Count
+ {
+ get
+ {
+ lock (_items)
+ {
+ return _items.Count;
+ }
+ }
+ }
+ public void SetItems(List value)
+ {
+ lock (_items)
+ {
+ this._items = value;
+ }
+ OnPropertyChanged("REFRESH");
+ }
+
+ public List Items { get { return _items; } }
+ public void Add(JobData data)
+ {
+ lock (_items)
+ {
+ data.No = this._items.Count + 1;
+ _items.Add(data);
+ }
+
+ OnPropertyChanged("Add:" + data.guid);
+ }
+
+ public void Remove(JobData data)
+ {
+ lock (_items)
+ {
+ _items.Remove(data);
+ }
+
+ OnPropertyChanged("Remove:" + data.guid);
+ }
+ public void Remove(string guid)
+ {
+ lock (_items)
+ {
+ var data = Get(guid);
+ _items.Remove(data);
+ }
+ OnPropertyChanged("Remove:" + guid);
+ }
+ public JobData Get(string guid)
+ {
+ lock (_items)
+ {
+ return _items.Where(t => t.guid == guid).FirstOrDefault();
+ }
+ }
+ public void Set(JobData data)
+ {
+ var item = Get(data.guid);
+ if (item == null) throw new Exception("No data guid:" + data.guid.ToString());
+ else
+ {
+ //item.No = data.No;
+ //item.JobStart = data.JobStart;
+ //item.JobEnd = data.JobEnd;
+ //item.VisionData = data.VisionData;
+ //item.error = data.error;
+ //item.Message = data.Message;
+ OnPropertyChanged("Set:" + data.guid);
+ }
+ }
+ public void RaiseSetEvent(string guid)
+ {
+ OnPropertyChanged("Set:" + guid);
+ }
+
+ protected void OnPropertyChanged([CallerMemberName] string name = null)
+ {
+ if (PropertyChanged != null)
+ PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name));
+ }
+ }
+ //[Serializable]
+ //public class JobData
+ //{
+ // //고유식별자
+ // public string guid { get; private set; }
+
+ // //비젼처리값
+ // public Class.VisionData VisionData { get; set; }
+
+ // //언로더포트(L/R)
+ // public string PortPos { get; set; }
+
+ // //프린트위치(U/LO)
+ // public string PrintPos { get; set; }
+
+ // //작업시작시간
+ // public DateTime JobStart { get; set; }
+
+ // //작업종료시간
+ // public DateTime JobEnd { get; set; }
+
+ // ///
+ // /// 이전 출고되는 시점과의 시간차 값
+ // ///
+ // public double TackTime { get { return (JobEnd - JobStart).TotalSeconds; } }
+
+ // //작업순서
+ // public int No { get; set; }
+
+ // //오류상태
+ // public eJobResult error { get; set; }
+
+ // //메세지
+ // public string message { get; set; }
+
+
+ // public TimeSpan JobRun
+ // {
+ // get
+ // {
+ // if (JobEnd.Year == 1982) return new TimeSpan(0);
+ // else return this.JobEnd - this.JobStart;
+ // }
+ // }
+ // public JobData()
+ // {
+ // this.No = 0;
+ // PortPos = string.Empty;
+ // PrintPos = string.Empty;
+ // guid = Guid.NewGuid().ToString();
+ // VisionData = new VisionData();
+ // this.JobStart = new DateTime(1982, 11, 23); // DateTime.Parse("1982-11-23");
+ // this.JobEnd = new DateTime(1982, 11, 23); // DateTime.Parse("1982-11-23");
+ // error = eJobResult.None;
+ // message = string.Empty;
+ // }
+
+ //}
+}
diff --git a/Handler/Project/Class/CHistorySIDRef.cs b/Handler/Project/Class/CHistorySIDRef.cs
new file mode 100644
index 0000000..0f02996
--- /dev/null
+++ b/Handler/Project/Class/CHistorySIDRef.cs
@@ -0,0 +1,134 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+
+namespace Project.Class
+{
+ public class CHistorySIDRef : INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler PropertyChanged;
+ public Boolean JobSIDRecvError
+ {
+ get
+ {
+ //아이템이있어야 정상이다
+ if (_items == null || _items.Count < 1) return true;
+ else if (JobSIDRecvTime.Year == 1982) return true;
+ else return false;
+ }
+ }
+ public DateTime JobSIDRecvTime { get; set; }
+ public string JobSIDRecvMessage { get; set; }
+ List _items;
+
+ public CHistorySIDRef()
+ {
+ Clear();
+ }
+ public void SetItems(List value)
+ {
+ this._items = value;
+ OnPropertyChanged("REFRESH");
+ }
+
+ public List Items { get { return _items; } }
+ public int Count
+ {
+ get
+ {
+ return _items.Count;
+ }
+ }
+ public SIDDataRef Get(string sid_)
+ {
+ return _items.Where(t => t.sid == sid_).FirstOrDefault();
+ }
+ public void Set(SIDDataRef data)
+ {
+ var item = Get(data.sid);
+ if (item == null) throw new Exception("No data sid:" + data.sid.ToString());
+ else
+ {
+ item.kpc = data.kpc;
+ item.unit = data.unit;
+ OnPropertyChanged("Set:" + data.sid);
+ }
+ }
+
+ public void Set(string sid, int kpc, string unit)
+ {
+ var item = Get(sid);
+ if (item == null)
+ {
+ Add(sid, kpc, unit); //없다면 추가해준다
+ }
+ else
+ {
+ item.kpc = kpc;
+ item.unit = unit;
+ OnPropertyChanged("Set:" + sid);
+ }
+ }
+
+ public void Add(SIDDataRef data)
+ {
+ _items.Add(data);
+ OnPropertyChanged("Add:" + data.sid);
+ }
+
+
+ public void Add(string sid, int kpc_, string unit)
+ {
+ if (string.IsNullOrEmpty(sid))
+ {
+ PUB.log.AddAT("SID 추가 실패 SID 값이 입력되지 않았습니다");
+ return;
+ }
+ //if (JobSidList.ContainsKey(sid) == false)
+ _items.Add(new SIDDataRef(sid, kpc_, unit));
+ OnPropertyChanged("Add:" + sid);
+ //else
+ //{
+ //이미 데이터가 있다. 중복이므로 누적한다
+ //JobSidList.TryGetValue()
+ //}
+ }
+ public void Clear()
+ {
+ //JobSIDRecvError = false;
+ JobSIDRecvMessage = string.Empty;
+ JobSIDRecvTime = DateTime.Parse("1982-11-23");
+ if (this._items == null) this._items = new List();
+ else this._items.Clear();
+ OnPropertyChanged("Clear");
+ }
+
+ protected void OnPropertyChanged([CallerMemberName] string name = null)
+ {
+ if (PropertyChanged != null)
+ PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name));
+ }
+ }
+
+ [Serializable]
+ public class SIDDataRef
+ {
+ public string guid { get; set; }
+ public string sid { get; set; }
+ public string unit { get; set; }
+ public int kpc { get; set; }
+
+ public SIDDataRef(string sid_, int kpc_, string unit_)
+ {
+
+ guid = Guid.NewGuid().ToString();
+ sid = sid_;
+ unit = unit_;
+ kpc = kpc_;
+ }
+ public SIDDataRef() : this(string.Empty, 0, string.Empty) { }
+ }
+}
diff --git a/Handler/Project/Class/CResult.cs b/Handler/Project/Class/CResult.cs
new file mode 100644
index 0000000..b118777
--- /dev/null
+++ b/Handler/Project/Class/CResult.cs
@@ -0,0 +1,549 @@
+using AR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+
+namespace Project
+{
+
+ public class CResult
+ {
+ public enum eInspectResult
+ {
+ NG = 0,
+ OK,
+ ERROR,
+ NOTSET = 9,
+ }
+
+ public UInt64 OptionValue = 0;
+ public UInt64 OptionValueData = 0;
+
+ public List BCDPattern;
+ public List BCDIgnorePattern;
+ public List BCDPrintPattern;
+
+ public DateTime ResetButtonDownTime = DateTime.Now;
+ public Boolean ClearAllSID = false;
+ public Class.CHistorySIDRef SIDReference; //SIDLIST받은 내역
+ public List OUTHistory; //출고포트 처리내역
+ public DataSet1.SIDHistoryDataTable SIDHistory; //sID별 rid 전체 목록 차수별로만 저장된다
+
+ public DataSet1.Component_Reel_SID_ConvertDataTable DTSidConvert;
+ public List DTSidConvertEmptyList;
+ public List DTSidConvertMultiList;
+
+ public DSList dsList;
+
+ public ModelInfoM mModel; //모션 모델
+ public ModelInfoV vModel; //작업 모델
+
+ ///
+ /// 아이템의 정보가 담겨있다 (0:왼쪽,1:비젼,2:오른쪽)
+ ///
+ public Class.JobData ItemDataL = new Class.JobData(0);
+ public Class.JobData ItemDataC = new Class.JobData(1);
+ public Class.JobData ItemDataR = new Class.JobData(2);
+
+ public Guid guid = new Guid();
+
+ public string JobType2 = string.Empty;
+ public Boolean JobFirst
+ {
+ get
+ {
+ return VAR.I32[(int)eVarInt32.PickOnCount] == 0;
+ }
+ }
+
+ public Boolean DryRun
+ {
+ get
+ {
+ if (string.IsNullOrEmpty(JobType2)) return false;
+ else return JobType2.ToUpper() == "DRY";
+ }
+ }
+
+ public int OverLoadCountF { get; set; }
+ public int OverLoadCountR { get; set; }
+
+ public UIControl.CItem UnloaderItem = null;
+ public DateTime LastExtInputTime = DateTime.Parse("1982-11-23");
+ public DateTime LastOutTime = DateTime.Parse("1982-11-23");
+
+ public Single[] PortAlignWaitSec = new float[] { 0, 0, 0, 0 };
+ public long[] PortAlignTime = new long[] { 0, 0, 0, 0 };
+
+ public byte UnloaderSeq = 0;
+ public DateTime UnloaderSeqTime;
+ public DateTime UnloaderSendtime = DateTime.Parse("1982-11-23");
+
+ ///
+ /// 로딩에 사용하는 포트번호 (자동 판단됨)
+ ///
+ public int LoadPortIndex = -1;
+
+ ///
+ /// 로딩시에 사용한 포트의 번호(이 값으로 수량기록 위치를 결정)
+ ///
+ public int LoadPickIndex = -1;
+
+ ///
+ /// 최종 할당된 언로딩 포트번호(1~8)
+ ///
+ public int UnloadPortNo = -1;
+ public byte LiveViewseq = 0;
+ public string AcceptBcd = string.Empty;
+ public DateTime AcceptBcdTime = DateTime.Now;
+ public string AcceptSid = string.Empty;
+
+ //작업정보
+ public eInspectResult Result; //작업결과가 저장됨
+ public eResult ResultCode;
+ public eECode ResultErrorCode;
+ public string ResultMessage;
+
+ public string LastSIDFrom = string.Empty;//101 = string.Empty;
+ public string LastSIDTo = string.Empty; // 103 = string.Empty;
+ //public string LastSID103_2 = string.Empty;
+ public string LastVName = string.Empty;
+ public int LastSIDCnt = 0;
+
+ public Dictionary PrintPostionList = null;
+
+ //작업정보(시간)
+ public DateTime JobStartTime = DateTime.Parse("1982-11-23");
+ public DateTime JobEndTime = DateTime.Parse("1982-11-23");
+ public TimeSpan JobRunTime()
+ {
+ if (JobStartTime.Year == 1982) return new TimeSpan(0);
+ if (JobEndTime.Year == 1982) return DateTime.Now - JobStartTime;
+ else return JobEndTime - JobStartTime;
+ }
+
+ ///
+ /// RUN -> Pause(Wait Start)모드 전환시 저장할 모터의 위치값
+ /// 조그모드등으로 좌표를 옴길때의 기준 좌표
+ /// 이 좌표값에서 현재 모션값에 변화가 있으면 프로그램에서는 오류로 처리하게 됨
+ ///
+ public double[] PreventMotionPosition = new double[8];
+
+ #region "SetResultMessage"
+
+ public void SetResultMessage(eResult code, eECode err, eNextStep systempause, params object[] args)
+ {
+
+ var rltMsg = PUB.GetResultCodeMessage(code);
+ var codeMSg = $"[E{(int)err}] ";// + Util.GetResultCodeMessage(code);
+ if (err == eECode.MESSAGE_ERROR)
+ {
+ codeMSg = $"[{rltMsg} ERROR MESSAGE]\n";
+ }
+ else if (err == eECode.MESSAGE_INFO)
+ {
+ codeMSg = $"[{rltMsg} INFORMATION]\n";
+ }
+
+
+
+ var erMsg = PUB.GetErrorMessage(err, args);
+ var msg = codeMSg + erMsg;
+
+ this.ResultCode = code;
+ this.ResultErrorCode = err;
+ this.ResultMessage = msg;
+
+ if (systempause == eNextStep.PAUSENOMESAGE) this.ResultMessage = string.Empty; //210129
+
+ PUB.log.AddE(msg);
+ if (systempause == eNextStep.PAUSE) PUB.sm.SetNewStep(eSMStep.PAUSE);
+ else if (systempause == eNextStep.PAUSENOMESAGE) PUB.sm.SetNewStep(eSMStep.PAUSE);
+ else if (systempause == eNextStep.ERROR) PUB.sm.SetNewStep(eSMStep.ERROR);
+ }
+
+
+ public void SetResultTimeOutMessage(eDOName pinName, Boolean checkState, eNextStep systemPause)
+ {
+ var pindef = DIO.Pin[pinName];
+ if (checkState) SetResultMessage(eResult.SENSOR, eECode.DOON, systemPause, pindef.terminalno, pindef.name);
+ else SetResultMessage(eResult.SENSOR, eECode.DOOFF, systemPause, pindef.terminalno, pindef.name);
+ }
+ public void SetResultTimeOutMessage(eDIName pinName, Boolean checkState, eNextStep systemPause)
+ {
+ var pindef = DIO.Pin[pinName];
+ if (checkState) SetResultMessage(eResult.SENSOR, eECode.DION, systemPause, pindef.terminalno, pindef.name);
+ else SetResultMessage(eResult.SENSOR, eECode.DIOFF, systemPause, pindef.terminalno, pindef.name);
+ }
+ public void SetResultTimeOutMessage(eAxis motAxis, eECode ecode, eNextStep systemPause, string source, double targetpos, string message)
+ {
+ SetResultMessage(eResult.TIMEOUT, ecode, systemPause, motAxis, source, targetpos, message);
+ }
+ public void SetResultTimeOutMessage(eECode ecode, eNextStep systemPause, params object[] args)
+ {
+ SetResultMessage(eResult.TIMEOUT, ecode, systemPause, args);
+ }
+ #endregion
+
+ public DateTime[] diCheckTime = new DateTime[256];
+ public DateTime[] doCheckTime = new DateTime[256];
+
+ public Boolean isError { get; set; }
+ // public Boolean isMarkingMode { get; set; }
+
+ public int retry = 0;
+ public DateTime retryTime;
+ public DateTime[] WaitForVar = new DateTime[255];
+ public int JoystickAxisGroup = 0;
+
+ public int ABCount = 0;
+
+
+ public CResult()
+ {
+ mModel = new ModelInfoM();
+ vModel = new ModelInfoV();
+
+ SIDReference = new Class.CHistorySIDRef();
+ SIDHistory = new DataSet1.SIDHistoryDataTable();
+ BCDPattern = new List();
+ BCDPrintPattern = new List();
+ OUTHistory = new List();
+
+ this.Clear("Result ctor");
+ dsList = new DSList();
+ LoadListDB();
+
+ //230509
+ if(DTSidConvert != null) DTSidConvert.Dispose();
+ DTSidConvert = new DataSet1.Component_Reel_SID_ConvertDataTable();
+ DTSidConvertEmptyList = new List();
+ DTSidConvertMultiList = new List();
+ }
+
+ public void SaveListDB()
+ {
+ var finame = System.IO.Path.Combine(UTIL.CurrentPath, "Data", "SavaedList.xml");
+ var fi = new System.IO.FileInfo(finame);
+ if (fi.Directory.Exists == false) fi.Directory.Create();
+ this.dsList.WriteXml(fi.FullName);
+ PUB.log.Add("사전목록DB를 저장 했습니다" + fi.FullName);
+ }
+
+ public void LoadListDB()
+ {
+ var finame = System.IO.Path.Combine(UTIL.CurrentPath, "Data", "SavaedList.xml");
+ var fi = new System.IO.FileInfo(finame);
+ if (fi.Directory.Exists == false) fi.Directory.Create();
+ if (fi.Exists)
+ {
+ this.dsList.ReadXml(fi.FullName);
+ PUB.log.Add("사전목록DB를 불러왔습니다" + fi.FullName);
+ }
+ }
+
+ /////
+ ///// 입력한 sid 가 원본에 존재하지 않으면 -1을 존재하면 입력된 수량을 반환합니다
+ /////
+ /////
+ /////
+ //public int ExistSIDReferenceCheck(string sid)
+ //{
+ // var dr = PUB.Result.SIDReference.Items.Where(t => t.sid.EndsWith(sid)).FirstOrDefault();
+ // if (dr == null) return -1;
+ // else return dr.kpc;
+ //}
+
+
+ //public void ClearHistory()
+ //{
+
+ // //this.JObHistory.Clear();
+ // this.SIDReference.Clear();
+ // PUB.log.AddI("Clear History");
+ //}
+
+
+ public void ClearOutPort()
+ {
+ OUTHistory.Clear();
+ }
+
+ public void Clear(string Reason)
+ {
+
+ this.guid = Guid.NewGuid();
+
+ //프린트위치를 별도로 저장하고 있는다(나중에 추가 활용한다) 231005
+ if (PrintPostionList == null)
+ PrintPostionList = new Dictionary();
+ else
+ PrintPostionList.Clear();
+
+ ItemDataL.Clear(Reason);
+ ItemDataC.Clear(Reason);
+ ItemDataR.Clear(Reason);
+
+ OverLoadCountF = 0;
+ OverLoadCountR = 0;
+ ClearOutPort();
+
+ LoadPortIndex = -1;
+
+ if (PUB.sm != null)
+ PUB.sm.seq.ClearTime();
+
+ isError = false;
+ ABCount = 0;
+ ///기다림용 변수모듬
+ for (int i = 0; i < WaitForVar.Length; i++)
+ WaitForVar[i] = DateTime.Parse("1982-11-23");
+
+ //조그모드시 모션이동 감지용 저장 변수
+ for (int i = 0; i < 6; i++)
+ PreventMotionPosition[i] = 0.0;
+
+ //JobStartTime = DateTime.Parse("1982-11-23");
+ //JobEndTime = DateTime.Parse("1982-11-23");
+ //LastOutTime = DateTime.Parse("1982-11-23");
+
+ Result = eInspectResult.NOTSET;
+ ResultCode = eResult.NOERROR;
+ ResultMessage = string.Empty;
+
+ //시간정보값을 초기화함
+ for (int i = 0; i < 2; i++)
+ ClearTime(i);
+
+
+
+ PUB.log.Add("Result 데이터 초기화");
+ }
+
+
+ public void ClearTime(int shutIdx)
+ {
+ //JobStartTime = DateTime.Parse("1982-11-23");
+ //JobEndTime = DateTime.Parse("1982-11-23");
+
+ Result = eInspectResult.NOTSET;
+ ResultCode = eResult.NOERROR;
+ ResultMessage = string.Empty;
+
+ PUB.log.Add("Result(Clear Time)");
+ }
+
+ public Boolean isSetmModel
+ {
+ get
+ {
+ if (PUB.Result.mModel == null || PUB.Result.mModel.idx == -1 || PUB.Result.mModel.Title.isEmpty())
+ return false;
+ else return true;
+ }
+
+ }
+ public Boolean isSetvModel
+ {
+ get
+ {
+ if (PUB.Result.vModel == null || PUB.Result.vModel.idx == -1 || PUB.Result.vModel.Title.isEmpty())
+ return false;
+ else return true;
+ }
+
+ }
+ //public string getErrorMessage(eResult rlt, eECode err, params object[] args)
+ //{
+ // switch (err)
+ // {
+ // case eECode.RIDDUPL:
+ // return string.Format(
+ // "좌측 언로더에 사용되었던 REEL ID 입니다\n" +
+ // "바코드 오류 가능성이 있습니다\n" +
+ // "좌측 릴의 바코드를 확인하시기 바랍니다\n" +
+ // "작업을 계속할 수 없습니다. 취소 후 다시 시도하세요\n{0}", args);
+
+ // case eECode.RIDDUPR:
+ // return string.Format(
+ // "우측 언로더에 사용되었던 REEL ID 입니다\n" +
+ // "바코드 오류 가능성이 있습니다\n" +
+ // "우측 릴의 바코드를 확인하시기 바랍니다\n" +
+ // "작업을 계속할 수 없습니다. 취소 후 다시 시도하세요\n{0}", args);
+
+ // case eECode.BARCODEVALIDERR:
+ // return string.Format("바코드 데이터 검증 실패\n" +
+ // "인쇄전 데이터와 인쇄후 데이터가 일치하지 않습니다\n" +
+ // "ID(O) : {1}\n" +
+ // "ID(N) : {2}\n" +
+ // "SID : {5}->{6}\n" +
+ // "QTY : {3}->{4}\n" +
+ // "DATE : {7}->{8}\n" +
+ // "Index : {0}", args);
+
+ // case eECode.MOTX_SAFETY:
+ // return string.Format("PICKER-X 축이 안전위치에 없습니다\n1. 조그를 이용하여 중앙으로 이동 합니다\n2.홈 작업을 다시 실행합니다", args);
+ // case eECode.NOERROR:
+ // return string.Format("오류가 없습니다", args);
+
+ // case eECode.PORTOVERLOAD:
+ // return string.Format("PORT OVERLOAD\n위치 : {0}\n" +
+ // "너무 많은 양이 적재 되었습니다\n" + "상단 LIMIT 센서에 걸리지 않게 적재하세요", args);
+ // case eECode.EMERGENCY:
+ // return string.Format("비상정지 버튼을 확인하세요\n" +
+ // "버튼 : F{0}\n" +
+ // "메인전원이 OFF 된 경우에도 이 메세지가 표시 됩니다\n" +
+ // "메인전원은 모니터 하단 AIR버튼 좌측에 있습니다"
+ // , DIO.GetIOInput(eDIName.BUT_EMGF));
+ // case eECode.NOMODELM:
+ // return "모션모델이 선택되지 않았습니다\n" +
+ // "상단 메뉴 [모션모델]에서 사용할 모델을 선택하세요";
+ // case eECode.NOMODELV:
+ // return "작업모델이 선택되지 않았습니다\n" +
+ // "상단 메뉴 [작업모델]에서 사용할 모델을 선택하세요";
+
+ // case eECode.CARTERROR:
+ // return string.Format("언로더 카트가 없거나 크기 정보가 일치하지 않습니다\n좌측:{0}, 로더:{1}, 우측:{2}", args);
+ // case eECode.CARTL:
+ // return string.Format("왼쪽(UNLOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args);
+ // case eECode.CARTC:
+ // return string.Format("중앙(LOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args);
+ // case eECode.CARTR:
+ // return string.Format("오른쪽(UNLOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args);
+
+ // case eECode.CARTLMATCH:
+ // return string.Format("왼쪽(UNLOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args);
+ // case eECode.CARTCMATCH:
+ // return string.Format("중앙(LOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args);
+ // case eECode.CARTRMATCH:
+ // return string.Format("오른쪽(UNLOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args);
+
+
+ // case eECode.NOREELSIZE:
+ // return string.Format("왼쪽포트에 놓을 릴의 크기정보가 없습니다\n프로그램 오류입니다\n개발자에게 해당 메세지를 전달하세요\n" +
+ // "장치 초기화를 진행 한 후 다시 시도하세요");
+
+ // case eECode.VISION_NOCONN:
+ // return string.Format("카메라({0}) 연결 안됨", args);
+
+ // case eECode.INCOMPLETE_LOADERDATA:
+ // return string.Format("로더 바코드 필수값을 읽지 못했습니다", args);
+ // case eECode.CAM_NOBARCODEU:
+ // return string.Format("언로더({0}) 바코드를 읽지 못했습니다", args);
+ // case eECode.HOME_TIMEOUT:
+ // return string.Format("홈 진행이 완료되지 않고 있습니다\n" +
+ // "오류가 발생했다면 '홈' 작업을 다시 진행하세요\n" +
+ // "대기시간 : {0}초", args);
+
+
+ // case eECode.DOORSAFTY:
+ // return string.Format("포트 안전센서가 감지 되었습니다\n" +
+ // "안전센서를 확인한 후 다시 시도하세요\n", args);
+
+ // case eECode.AIRNOOUT:
+ // return "AIR 공급이 차단 되어 있습니다.\n" +
+ // "전면의 AIR 버튼을 누르세요\n" +
+ // "공급이 되지 않으면 메인 전원 을 확인하세요\n" +
+ // "메인 전원은 AIR 버튼 좌측에 있습니다" +
+ // "메인 전원 공급 실패시 장비 후면의 차단기를 확인하세요";
+
+
+ // case eECode.DOOFF:
+ // var pinoOf = (eDOName)args[0];
+ // return string.Format("출력이 OFF 되지 않았습니다.\n" +
+ // "포트설명 : {0}\n" +
+ // "포트번호 : {1} ({2})", DIO.getPinDescription(pinoOf), (int)pinoOf, Enum.GetName(typeof(eDOPin), pinoOf));
+ // case eECode.DOON:
+ // var pinoOn = (eDOName)args[0];
+ // return string.Format("출력이 ON 되지 않았습니다.\n" +
+ // "포트설명 : {0}\n" +
+ // "포트번호 : {1} ({2})", DIO.getPinDescription(pinoOn), (int)pinoOn, Enum.GetName(typeof(eDOPin), pinoOn));
+ // case eECode.DIOFF:
+ // var piniOf = (eDIName)args[0];
+ // return string.Format("입력이 OFF 되지 않았습니다.\n" +
+ // "포트설명 : {0}\n" +
+ // "포트번호 : {1} ({2})", DIO.getPinDescription(piniOf), (int)piniOf, Enum.GetName(typeof(eDIPin), piniOf));
+ // case eECode.DION:
+ // var piniOn = (eDIName)args[0];
+ // return string.Format("입력이 ON 되지 않았습니다.\n" +
+ // "포트설명 : {0}\n" +
+ // "포트번호 : {1} ({2})", DIO.getPinDescription(piniOn), (int)piniOn, Enum.GetName(typeof(eDIPin), piniOn));
+
+ // case eECode.AZJINIT:
+ // return string.Format("DIO 혹은 모션카드가 초기화 되지 않았습니다.\n" +
+ // "DIO : {0}\n" +
+ // "MOTION : {1}\n" +
+ // "해당 카드는 본체 내부 PCI 슬롯에 장착 된 장비 입니다\n" +
+ // "EzConfig AXT 프로그램으로 카드 상태를 확인하세요",
+ // PUB.dio.IsInit, PUB.mot.IsInit);
+
+ // case eECode.MOT_HSET:
+ // var msg = "모션의 HOME 검색이 완료되지 않았습니다";
+ // for (int i = 0; i < 6; i++)
+ // {
+ // if (PUB.mot.IsUse(i) == false) continue;
+ // var axis = (eAxis)i;
+ // var stat = PUB.mot.IsHomeSet(i);
+ // if (stat == false) msg += string.Format("\n[{0}] {1} : {2}", i, axis, stat);
+ // }
+ // msg += "\n장치 초기화를 실행하세요";
+ // return msg;
+ // case eECode.MOT_SVOFF:
+ // var msgsv = "모션 중 SERVO-OFF 된 축이 있습니다";
+ // for (int i = 0; i < 6; i++)
+ // {
+ // if (PUB.mot.IsUse(i) == false) continue;
+ // var axis = (eAxis)i;
+ // var stat = PUB.mot.IsServOn(i);
+ // if (stat == false) msgsv += string.Format("\n[{0}] {1} : {2}", i, axis, stat);
+ // }
+ // msgsv += "\nRESET을 누른 후 '모션설정' 화면에서 확인합니다";
+ // return msgsv;
+ // case eECode.MOT_HSEARCH:
+ // return string.Format("모션의 홈 검색이 실패되었습니다\n" +
+ // "축 : {0}\n" +
+ // "메세지 : {1}", args);
+
+ // case eECode.MOT_CMD:
+ // var axisNo = (int)((eAxis)args[0]);
+ // var axisSrc = args[1].ToString();
+ // return string.Format("모션축 명령이 실패 되었습니다\n축 : {0}\n" +
+ // "현재위치 : {2}\n" +
+ // "명령위치 : {3}\n" +
+ // "소스 : {1}", axisNo, axisSrc, PUB.mot.GetActPos(axisNo), PUB.mot.GetActPos(axisNo));
+
+
+
+ // //case eECode.timeout_step:
+ // // return string.Format("스텝당 최대 실행 시간이 초과 되었습니다.\n" +
+ // // "스텝 : {0}\n" +
+ // // "최대동작시간 : " + COMM.SETTING.Data.Timeout_StepMaxTime.ToString(), args);
+
+
+ // case eECode.USER_STOP:
+ // return "'일시정지' 버튼 눌림\n" +
+ // "사용자에 의해 작동이 중지 되었습니다\n" +
+ // "'RESET' -> 'START'로 작업을 계속할 수 있습니다";
+
+ // case eECode.CAM_RIGHT:
+ // return "우측카메라가 사용가능한 상태가 아닙니다.\n" +
+ // "신규 실행시에는 초기화 완료까지 기다려 주세요";
+ // case eECode.CAM_LEFT:
+ // return "좌측카메라가 사용가능한 상태가 아닙니다.\n" +
+ // "신규 실행시에는 초기화 완료까지 기다려 주세요";
+ // default:
+ // return err.ToString();
+ // }
+
+ //}
+ //public string getResultCodeMessage(eResult rltCode)
+ //{
+ // //별도 메세지처리없이 그대로 노출한다
+ // return rltCode.ToString().ToUpper();
+ //}
+
+ }
+
+}
diff --git a/Handler/Project/Class/Command.cs b/Handler/Project/Class/Command.cs
new file mode 100644
index 0000000..e7333af
--- /dev/null
+++ b/Handler/Project/Class/Command.cs
@@ -0,0 +1,459 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using AR;
+namespace Project.Commands
+{
+ public class CommandBuffer
+ {
+ public int Idx { get; set; }
+
+ private int REGISTER_VALUE = 0;
+ private Boolean REGISTER_TRUE = false;
+ private Boolean REGISTER_FALSE = false;
+ private Boolean REGISTER_EQUAL = false;
+ private Boolean REGISTER_ABOVE = false;
+ private Boolean REGISTER_BELOW = false;
+
+
+ ///
+ /// 순차실행명령
+ ///
+ public List Commands;
+
+ ///
+ /// 상시실행명령
+ ///
+ public List SPS;
+ public CommandBuffer()
+ {
+ Commands = new List();
+ SPS = new List();
+ }
+ public void AddSeq(Command cmd)
+ {
+ cmd.Idx = this.Commands.Count;
+ this.Commands.Add(cmd);
+ }
+ public void AddSPS(Command cmd)
+ {
+ cmd.Idx = this.SPS.Count;
+ this.SPS.Add(cmd);
+ }
+ public void Clear()
+ {
+ Commands.Clear();
+ SPS.Clear();
+ Idx = 0;
+ }
+ public StepResult Run()
+ {
+ //sps는 모두 실행한다
+ StepResult rlt;
+ foreach (var sps in this.SPS)
+ {
+ rlt = RunCode(sps);
+ if (rlt == StepResult.Wait) return StepResult.Wait; //SPS에서 대기 코드가 있다
+ else if (rlt == StepResult.Error) return StepResult.Error;
+ }
+
+ //sequece 는 현재 것만 실행한다.
+ if (Idx < 0) Idx = 0;
+ var cmd = this.Commands[Idx];
+ rlt = RunCode(cmd);
+ if (rlt == StepResult.Complete) //이 명령이 완료되면 다음으로 진행한다
+ {
+ Idx += 1;
+ if (Idx >= this.Commands.Count) return StepResult.Complete;
+ else return StepResult.Wait;
+ }
+ return rlt;
+ }
+
+ private StepResult RunCode(Command cmd)
+ {
+ switch (cmd.type)
+ {
+ case CType.NOP: return StepResult.Complete;
+ case CType.Wait:
+ var data0 = cmd.Data as CDWait;
+ if (data0.Trigger == false)
+ {
+ //아직 시작을 안했으니 시작시키고 대기한다
+ data0.SetTrigger(true);
+ return StepResult.Wait;
+ }
+ else
+ {
+ //아직 시간을 다 쓰지 않았다면 넘어간다
+ if (data0.TimeOver == false) return StepResult.Wait;
+ }
+ break;
+ case CType.Output:
+ var data1 = cmd.Data as CDOutput;
+ if (data1.PinIndex < 0) return StepResult.Error;
+ if (DIO.SetOutput((eDOName)data1.Pin, data1.Value) == false) return StepResult.Error;
+ break;
+ case CType.Move:
+ var data2 = cmd.Data as CDMove;
+ MOT.Move((eAxis)data2.Axis, data2.Position, data2.Speed, data2.Acc, data2.Relative);
+ break;
+ case CType.MoveForece:
+ var data3 = cmd.Data as CDMove;
+ MOT.Move((eAxis)data3.Axis, data3.Position, data3.Speed, data3.Acc, data3.Relative, false, false);
+ break;
+ case CType.MoveWait:
+ var data4 = cmd.Data as CDMove;
+ var axis = (eAxis)data4.Axis;
+ var mrlt = MOT.CheckMotionPos(axis, new TimeSpan(1), data4.Position, data4.Speed, data4.Acc, data4.Dcc, cmd.description);
+ if (mrlt == false) return StepResult.Wait;
+ break;
+ case CType.GetFlag:
+ var data5 = cmd.Data as CDFlag;
+ data5.Value = PUB.flag.get(data5.Flag);
+ REGISTER_FALSE = data5.Value == false;
+ REGISTER_TRUE = data5.Value == true;
+ break;
+ case CType.SetFlag:
+ var data6 = cmd.Data as CDFlag;
+ PUB.flag.set(data6.Flag, data6.Value, cmd.description);
+ break;
+ case CType.True:
+ var data7 = cmd.Data as CDCommand;
+ if (REGISTER_TRUE) return RunCode(data7.Command);
+ break;
+ case CType.False:
+ var data8 = cmd.Data as CDCommand;
+ if (REGISTER_FALSE) return RunCode(data8.Command);
+ break;
+ case CType.GetVar: //공용변수의값
+ var data10 = cmd.Data as CDGetVar;
+ if (data10.Key == "STEPTIME")
+ {
+ data10.Confirm = true;
+ data10.Value = (int)PUB.sm.StepRunTime.TotalMilliseconds;
+ }
+
+
+ break;
+ case CType.GetSetVar: //공용변수(설정)의 값
+ var data11 = cmd.Data as CDGetVar;
+ if (data11.Key == "TIMEOUT_HOMEFULL")
+ {
+ data11.Confirm = true;
+ data11.Value = 60;// (int)Pub.sm.StepRunTime.TotalMilliseconds;
+ }
+ break;
+
+ case CType.Compare:
+
+ var data9 = cmd.Data as CDCompare;
+ if (data9 != null)
+ {
+ RunCode(data9.Source); //비교값(좌)
+ RunCode(data9.Target); //비교값(우)
+
+ var valS = data9.Source.Data as ICommandValue;
+ var valT = data9.Target.Data as ICommandValue;
+ int ValueS = (int)valS.Value;
+ int ValueT = (int)valT.Value;
+
+ REGISTER_ABOVE = ValueS > ValueT;
+ REGISTER_BELOW = ValueS < ValueT;
+ REGISTER_EQUAL = ValueS == ValueT;
+ REGISTER_TRUE = ValueS == ValueT;
+ REGISTER_FALSE = ValueS != ValueT;
+ REGISTER_VALUE = ValueS - ValueT;
+ }
+ else return StepResult.Error;
+
+
+ break;
+
+ case CType.SetError:
+ var data12 = cmd.Data as CDError;
+ PUB.Result.SetResultMessage(data12.ResultCode, data12.ErrorCode, data12.NextStep);
+ break;
+ }
+
+ return StepResult.Complete;
+ }
+ }
+ public enum CType
+ {
+ NOP = 0,
+ ///
+ /// motion move
+ ///
+ Move,
+ MoveForece,
+
+ ///
+ /// move and wait
+ ///
+ MoveWait,
+
+ ///
+ /// set digital output
+ ///
+ Output,
+ Log,
+ StepChange,
+ ///
+ /// check digital input
+ ///
+ InputCheck,
+
+ ///
+ /// check digital output
+ ///
+ OutputCheck,
+
+ GetFlag,
+ SetFlag,
+
+ Equal,
+ NotEqual,
+ True,
+ False,
+ Zero,
+ NonZero,
+ SetError,
+ Compare,
+ SetVar,
+ GetVar,
+ GetSetVar,
+ Above,
+ Below,
+
+ Wait,
+ Run,
+
+ }
+ public class Command
+ {
+
+ public CType type { get; set; } = CType.NOP;
+ public int Idx { get; set; }
+ public string description { get; set; }
+ public ICommandData Data { get; set; }
+ public Command(CType type, string desc = "")
+ {
+ this.type = type;
+ this.description = desc;
+ }
+ }
+ public interface ICommandData
+ {
+ // string Description { get; set; }
+ }
+ public interface ICommandValue
+ {
+ object Value { get; set; }
+ }
+ public class CDGetVar : ICommandData, ICommandValue
+ {
+ public string Key { get; set; }
+ public object Value { get; set; }
+ public Boolean Confirm { get; set; }
+ public CDGetVar(string key)
+ {
+ this.Key = key;
+ }
+ }
+ public class CDGetSetVar : ICommandData, ICommandValue
+ {
+ public string Key { get; set; }
+ public object Value { get; set; }
+ public Boolean Confirm { get; set; }
+ public CDGetSetVar(string key)
+ {
+ this.Key = key;
+ }
+ }
+ public class CDSetVar : ICommandData
+ {
+ public string Key { get; set; }
+ public int Value { get; set; }
+ public CDSetVar(string key, int value)
+ {
+ this.Key = key;
+ this.Value = Value;
+ }
+ }
+ public class CDFlag : ICommandData
+ {
+ public eVarBool Flag { get; set; }
+ public Boolean Value { get; set; }
+ public CDFlag(eVarBool flag)
+ {
+ this.Flag = flag;
+ Value = false;
+ }
+ }
+
+ public class CDSetValI : ICommandData
+ {
+ public int Value { get; set; }
+ public CDSetValI(int idx, int value)
+ {
+ this.Value = value;
+ }
+ }
+ public class CDSetValB : ICommandData
+ {
+ public bool Value { get; set; }
+ public CDSetValB(int idx, bool value)
+ {
+ this.Value = value;
+ }
+ }
+ public class CDCommand : ICommandData
+ {
+ public Command Command { get; set; }
+ public CDCommand(Command command)
+ {
+ this.Command = command;
+ }
+ }
+ public class CDError : ICommandData
+ {
+ public eResult ResultCode { get; set; }
+ public eECode ErrorCode { get; set; }
+ public eNextStep NextStep { get; set; }
+
+ public CDError(eResult resultCode, eECode errorCode, eNextStep nextStep)
+ {
+ ResultCode = resultCode;
+ ErrorCode = errorCode;
+ NextStep = nextStep;
+ }
+ }
+ //public class CDCompare : ICommandData
+ //{
+ // public T Value { get; set; }
+ // public CDCompare(T value)
+ // {
+ // Value = value;
+ // }
+ // public CDCompare(Command source, Command target)
+ // {
+ // Value = value;
+ // }
+ //}
+ public class CDCompare : ICommandData
+ {
+ public Command Source { get; set; }
+ public Command Target { get; set; }
+ public CDCompare(Command source, Command target)
+ {
+ Source = source;
+ Target = target;
+ }
+ }
+
+ public class CDWait : ICommandData
+ {
+ public int WaitMS { get; set; }
+ public DateTime StartTime { get; set; }
+ public Boolean Trigger { get; set; }
+ private TimeSpan GetTime { get { return DateTime.Now - StartTime; } }
+ public Boolean TimeOver { get { return GetTime.TotalMilliseconds > WaitMS; } }
+ public void SetTrigger(Boolean value)
+ {
+ Trigger = value;
+ StartTime = DateTime.Now;
+ }
+
+ public CDWait() : this(100) { }
+ public CDWait(int ms)
+ {
+ this.WaitMS = ms;
+ }
+ }
+ public class CDMove : ICommandData
+ {
+
+ public int Axis { get; set; }
+ public double Position { get; set; }
+ public double Speed { get; set; }
+ public double Acc { get; set; }
+ public double Dcc { get; set; }
+ public Boolean Relative { get; set; }
+ // public string Description { get; set; }
+ public CDMove(eAxis axis, double pos, double speed) : this((int)axis, pos, speed, 0) { }
+ public CDMove(int axis, double pos, double speed, double acc, double dcc = 0, Boolean relatvie = false)
+ {
+ Axis = axis;
+ Position = pos;
+ Speed = speed;
+ Acc = acc;
+ Dcc = dcc == 0 ? acc : dcc;
+ Relative = relatvie;
+
+ }
+ }
+ public class CDOutput : ICommandData
+ {
+
+ public eDOName Pin { get; set; }
+ public int PinIndex { get; set; }
+ public Boolean Value { get; set; }
+ // public string Description { get; set; }
+ //public CDOutput(eDOName pin) : this(pin, false) { }
+ public CDOutput(eDOName pin, Boolean value)
+ {
+ Pin = pin;
+ PinIndex = (int)pin;
+ Value = value;
+ }
+ public CDOutput(int point, Boolean value)
+ {
+ Pin = (eDOName)point;
+ PinIndex = point;
+ Value = value;
+ }
+ }
+
+ public class CDRun : ICommandData
+ {
+ public Action Target { get; set; }
+ public CDRun(Action target)
+ {
+ Target = target;
+ }
+ }
+ public class CDRunRet : ICommandData
+ {
+ public Func Target { get; set; }
+ public CDRunRet(Func target)
+ {
+ Target = target;
+ }
+ }
+
+ public class CDLog : ICommandData
+ {
+
+ public string Message { get; set; }
+ public Boolean IsError { get; set; }
+ public CDLog(string message, Boolean err = false)
+ {
+ Message = message;
+ IsError = err;
+ }
+ }
+ public class CDStep : ICommandData
+ {
+
+ public eSMStep Step { get; set; }
+ public Boolean Force { get; set; }
+ public CDStep(eSMStep step, Boolean force = false)
+ {
+ Step = step;
+ Force = force;
+ }
+ }
+}
diff --git a/Handler/Project/Class/EEMStatus.cs b/Handler/Project/Class/EEMStatus.cs
new file mode 100644
index 0000000..d8a9ee5
--- /dev/null
+++ b/Handler/Project/Class/EEMStatus.cs
@@ -0,0 +1,390 @@
+using Project;
+using Project.Device;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Management;
+using System.Net;
+using System.Net.NetworkInformation;
+using System.Text;
+using System.Threading.Tasks;
+
+///
+/// ============================================================================
+/// 장비기술 상태 모니터링 관련 클래스
+/// 이 클래스는 SQLfiletoDB 프로그램과 같이 사용하는 것을 권장합니다.
+/// 현재 실행 중인 프로그램의 하위 폴더 Status 에 입력된 상태값을 SQL 파일로 기록합니다.
+/// SQLfiletoDB는 SQL파일을 실제 DB에 기록하는 프로그램입니다.
+/// ============================================================================
+/// 작성자 : chi
+/// 작성일 : 202-06-15
+/// GIT : (none)
+///
+public static partial class EEMStatus
+{
+ static System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(true);
+ static string ip = string.Empty;
+ static string mac = string.Empty;
+ static DateTime StatusChecktime = DateTime.Now;
+ static DateTime MonitorChecktime = DateTime.Now.AddYears(-1);
+ static DateTime FileCheckTime = DateTime.Now;
+ static string monitorfile = string.Empty;
+ ///
+ /// UpdateStatusSQL 명령이 동작하는 간격이며 기본 180초(=3분)로 되어 있습니다.
+ ///
+ public static int UpdateStatusInterval { get; set; } = 180;
+ public static int UpdateFileInterval { get; set; } = 3;
+ static bool queryok = false;
+ static bool UpdateRun = false;
+
+ public static string IP
+ {
+ get
+ {
+ if (queryok == false) GetNetworkInfo();
+ return ip;
+ }
+ set { ip = value; }
+ }
+ public static string MAC
+ {
+ get
+ {
+ if (queryok == false) GetNetworkInfo();
+ return mac;
+ }
+ set
+ {
+ mac = value;
+ }
+ }
+
+ ///
+ /// 현재 시스템의 IP/MAC정보를 취득합니다.
+ ///
+ static void GetNetworkInfo()
+ {
+
+ ip = "";
+ mac = "";
+ // string prgmName = Application.ProductName;
+
+ var nif = NetworkInterface.GetAllNetworkInterfaces();
+ var host = Dns.GetHostEntry(Dns.GetHostName());
+ string fullname = System.Net.Dns.GetHostEntry("").HostName;
+ foreach (IPAddress r in host.AddressList)
+ {
+ string str = r.ToString();
+
+ if (str != "" && str.Substring(0, 3) == "10.")
+ {
+ ip = str;
+ break;
+ }
+ }
+
+ string rtn = string.Empty;
+ ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'");
+ ManagementObjectSearcher query1 = new ManagementObjectSearcher(oq);
+ foreach (ManagementObject mo in query1.Get())
+ {
+ string[] address = (string[])mo["IPAddress"];
+ if (address[0] == ip && mo["MACAddress"] != null)
+ {
+ mac = mo["MACAddress"].ToString();
+ break;
+ }
+ }
+ queryok = true;
+ }
+
+ public static void UpdateStatusSQL(eSMStep status, bool _extrun = false, string remark = "")
+ {
+ var tsrun = DateTime.Now - StatusChecktime;
+ if (tsrun.TotalSeconds >= UpdateStatusInterval)
+ {
+ AddStatusSQL(status, "UPDATE", extrun: _extrun);
+ StatusChecktime = DateTime.Now;
+ }
+
+ //내부실행모드일때에만 파일을 처리한다
+ if (_extrun == false)
+ {
+ var tsfile = DateTime.Now - FileCheckTime;
+ if (tsfile.TotalSeconds >= UpdateFileInterval)
+ {
+ if (UpdateRun == false)
+ {
+ UpdateRun = true;
+ Task.Run(() =>
+ {
+ UpdateFileToDB();
+ UpdateRun = false;
+ });
+ }
+ FileCheckTime = DateTime.Now;
+ }
+ }
+ }
+
+ ///
+ /// 상태모니터링 프로그램의 실행파일 명
+ ///
+ static string StatusMonitorFile
+ {
+ get
+ {
+ if (string.IsNullOrEmpty(monitorfile))
+ monitorfile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Status", "SQLFileToDB.exe");
+ return monitorfile;
+ }
+ }
+
+ static System.Diagnostics.Process CheckMonitor()
+ {
+ if (System.IO.File.Exists(StatusMonitorFile) == false) return null;
+
+ var prcs = System.Diagnostics.Process.GetProcesses();
+ return prcs.Where(t => t.ProcessName.ToLower().StartsWith("sqlfiletodb")).FirstOrDefault();
+ }
+
+ public static bool RunStatusMonitor()
+ {
+ //파일이 없으면 실행 불가
+ if (System.IO.File.Exists(StatusMonitorFile) == false) return false;
+
+ //실행프로세스 검사
+ var prc = CheckMonitor();
+ if (prc == null)
+ {
+ try
+ {
+ prc = new System.Diagnostics.Process();
+ prc.StartInfo = new System.Diagnostics.ProcessStartInfo
+ {
+ Arguments = string.Empty,
+ FileName = StatusMonitorFile,
+ };
+ prc.Start();
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ ///
+ /// 작업수량을 입력합니다
+ ///
+ ///
+ ///
+ public static string AddStatusCount(int cnt, string remark = "")
+ {
+ if (remark.isEmpty()) remark = $"Count Set : {cnt}";
+ return AddStatusSQL(PUB.sm.Step, remark, count: cnt);
+ }
+ ///
+ /// 상태메세지를 status 폴더에 기록합니다.
+ ///
+ /// 상태머신의 상태값
+ /// 비고
+ /// 기록일시
+ /// 오류발생시 오류메세지가 반환 됩니다
+ public static string AddStatusSQL(eSMStep status, string remark = "", DateTime? wdate = null, bool extrun = false, int? count = null)
+ {
+ if (queryok == false || MAC.isEmpty()) GetNetworkInfo();
+ if (status == eSMStep.CLOSEWAIT || status == eSMStep.CLOSED) return string.Empty;
+
+ if (extrun)
+ {
+ //상태모니터링 프로그램을 실행합니다.
+ var tsMon = DateTime.Now - MonitorChecktime;
+ if (tsMon.TotalMinutes > 5) RunStatusMonitor();
+ }
+
+ try
+ {
+ var state = 0;
+ string cntstr = "null";
+ if (count != null) cntstr = count.ToString();
+ var alarmid = string.Empty;
+ var alarmmsg = string.Empty;
+ if (string.IsNullOrEmpty(remark)) remark = $"STS:{status}";
+
+ if (status == eSMStep.RUN) state = 1;
+ else if (status == eSMStep.ERROR || status == eSMStep.EMERGENCY)
+ {
+ state = 2;
+ alarmid = PUB.Result.ResultErrorCode.ToString();
+ alarmmsg = PUB.Result.ResultMessage;
+ }
+ else if (status == eSMStep.PAUSE) //일시중지도 오류코드가 포함된다,
+ {
+ if (PUB.Result.ResultErrorCode == eECode.USER_STEP || PUB.Result.ResultErrorCode == eECode.USER_STOP || PUB.Result.ResultErrorCode.ToString().StartsWith("MESSAGE"))
+ {
+ //사용자에의해 멈추는 것은 오류코드를 넣지 않는다.
+ }
+ else
+ {
+ alarmid = PUB.Result.ResultErrorCode.ToString();
+ alarmmsg = PUB.Result.ResultMessage;
+ }
+ }
+ else if (status == eSMStep.INIT) state = 3; //시작
+ else if (status == eSMStep.CLOSING) state = 4; //종료
+
+ //length check
+ if (alarmid.Length > 10) alarmid = alarmid.Substring(0, 10);
+ if (remark.Length > 99) remark = remark.Substring(0, 99);
+ if (alarmmsg.Length > 250) alarmmsg = alarmmsg.Substring(0, 50);
+
+ var mcid = AR.SETTING.Data.MCID;// Project.PUB.setting.MCID;//.Data.MCID;
+ //var mcid = Project.PUB.setting.MCID;//.Data.MCID;
+ var path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Status");
+ var file = System.IO.Path.Combine(path, $"{DateTime.Now.ToString("HHmmssfff")}_{status}.sql");
+ var sql = "insert into MCMonitor_Rawdata(Model,status,remark,ip,mac,time,alarmid,alarmmsg,count,version) " +
+ " values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',{8},'{9}')";
+
+ var timestr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ if (wdate != null) timestr = ((DateTime)wdate).ToString("yyyy-MM-dd HH:mm:ss");
+ var VersionNumber = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
+ sql = string.Format(sql, mcid, state, remark.Replace("'", "''"), IP, MAC, timestr, alarmid, alarmmsg, cntstr, VersionNumber);
+ System.IO.File.WriteAllText(file, sql, System.Text.Encoding.Default);
+
+ ////만들어진지 3분이 지난 파일은 삭제한다.
+ //var di = new System.IO.DirectoryInfo(path);
+ //var fi = di.GetFiles("*.sql", System.IO.SearchOption.TopDirectoryOnly).Where(t => t.LastWriteTime < DateTime.Now.AddMinutes(-3)).FirstOrDefault();
+ //if (fi != null) fi.Delete();
+ if (state == 4) UpdateFileToDB();
+ return string.Empty;
+ }
+ catch (Exception ex)
+ {
+ return ex.Message;
+ }
+ }
+
+
+
+ static void UpdateFileToDB()
+ {
+ if (mre.WaitOne(1000) == false) return;
+ mre.Reset();
+ var cs = "Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!";
+ var path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Status");
+ var di = new System.IO.DirectoryInfo(path);
+ if (di.Exists == false) return;
+ var file = di.GetFiles("*.sql", System.IO.SearchOption.TopDirectoryOnly)
+ .Where(t => t.LastWriteTime < DateTime.Now.AddSeconds(-3))
+ .OrderByDescending(t => t.LastWriteTime).FirstOrDefault();
+
+ if (file == null)
+ {
+ mre.Set();
+ return;
+ }
+
+ //파일을 찾아야한다
+ // PUB.log.Add($">> {file.FullName}");
+
+
+
+ try
+ {
+ var sql = System.IO.File.ReadAllText(file.FullName, System.Text.Encoding.Default);
+ if (string.IsNullOrEmpty(sql))
+ {
+ //비어잇다면
+ var errpath = System.IO.Path.Combine(di.FullName, "Error");
+ var errfile = System.IO.Path.Combine(errpath, file.Name);
+ if (System.IO.Directory.Exists(errpath) == false) System.IO.Directory.CreateDirectory(errpath);
+ System.IO.File.Move(file.FullName, errfile);// file.MoveTo(errfile);
+ // ecnt += 1;
+ }
+ else
+ {
+ // var csstr = PUB.setting.ConnectionString;
+ // if (string.IsNullOrEmpty(csstr)) csstr = "Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!";
+ var cn = new System.Data.SqlClient.SqlConnection(cs);
+ var cmd = new System.Data.SqlClient.SqlCommand(sql, cn);
+ cn.Open();
+ var cnt = cmd.ExecuteNonQuery();
+ //if (cnt == 0) PUB.log.Add($"Result Empty : {sql}");
+ cn.Close();
+ cnt += 1;
+
+ var errpath = System.IO.Path.Combine(di.FullName, "Complete");
+ var errfile = System.IO.Path.Combine(errpath, file.Name);
+ if (System.IO.Directory.Exists(errpath) == false) System.IO.Directory.CreateDirectory(errpath);
+ //file.MoveTo(errfile);
+ System.IO.File.Move(file.FullName, errfile);
+ }
+
+ }
+ catch (Exception ex)
+ {
+ if(ex.Message.Contains("deadlocked") == false)
+ {
+ var errpath = System.IO.Path.Combine(di.FullName, "Error");
+ var errfile = System.IO.Path.Combine(errpath, file.Name);
+ if (System.IO.Directory.Exists(errpath) == false) System.IO.Directory.CreateDirectory(errpath);
+ try
+ {
+ //file.MoveTo(errfile);
+ System.IO.File.Move(file.FullName, errfile);
+
+ //오류내용도 저장한다..
+ var errfilename = errfile + "_error.txt";
+ System.IO.File.WriteAllText(errfilename, ex.Message, System.Text.Encoding.Default);
+ }
+ catch (Exception ex2)
+ {
+
+ }
+ }
+ else
+ {
+ Console.WriteLine("dead lock 오류는 무시한다");
+ }
+
+ //ecnt += 1;
+ }
+
+ //try
+ //{
+ // //생성된지 10일이 넘은 자료는 삭제한다.
+ // //시간소비를 피해서 1개의 파일만 작업한다
+ // //var sqlfiles = di.GetFiles("*.sql", System.IO.SearchOption.AllDirectories);
+ // //총3번의 데이터를 처리한다
+ // //var files = sqlfiles.Where(t => t.LastWriteTime < DateTime.Now.AddDays(-10)).Select(t => t.FullName);
+ // //int i = 0;
+ // //var dellist = files.TakeWhile(t => i++ < 3);
+ // //foreach (var delfile in dellist)
+ // //System.IO.File.Delete(delfile);
+ //}
+ //catch
+ //{
+
+ //}
+ mre.Set();
+ }
+}
+
+
+/*
+=================================================
+변경내역
+=================================================
+230619 chi UpdateFileToDB 에서 폴더가 없다면 return 하도록 함
+230615 chi UpdateFiletoDB의 ManualResetEvent적용
+ Version 항목 추가
+230612 chi 프로그램 시작/종료 alarmid항목 추가
+ 완료된 파일 10일간 보존하도록 함
+230522 chi extrun 모드 추가(agv용 - SQL파일을 외부 프로그램에서 처리하도록 함)
+230617 chi 파일쓰기함수를 Task 로 처리
+ 3분지난데이터 삭제기능 제거
+230516 chi initial commit
+*/
diff --git a/Handler/Project/Class/EnumData.cs b/Handler/Project/Class/EnumData.cs
new file mode 100644
index 0000000..a5129d4
--- /dev/null
+++ b/Handler/Project/Class/EnumData.cs
@@ -0,0 +1,692 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.ComponentModel;
+
+namespace Project
+{
+
+ public enum StepResult
+ {
+ Wait = 0,
+ Complete,
+ Error,
+ }
+
+ public enum eWorkPort
+ {
+ Left = 0,
+ Right
+ }
+
+ public enum eNormalResult
+ {
+ True = 0,
+ False,
+ Error,
+ }
+
+
+
+
+ public enum eSMStep : byte
+ {
+ NOTSET = 0,
+ INIT = 1,
+ IDLE = 10,
+
+ RUN = 50,
+ RUN_ROOT_SEQUENCE_L,
+ RUN_ROOT_SEQUENCE_R,
+ RUN_KEYENCE_READ_L,
+ RUN_KEYENCE_READ_R,
+ RUN_PICKER_ON_L,
+ RUN_PICKER_ON_R,
+ RUN_PICKER_OFF_L,
+ RUN_PICKER_OFF_R,
+ RUN_PRINTER_F,
+ RUN_PRINTER_R,
+ RUN_PRINTER_ON_F,
+ RUN_PRINTER_ON_R,
+ RUN_PRINTER_OFF_F,
+ RUN_PRINTER_OFF_R,
+ RUN_QRVALID_F,
+ RUN_QRVALID_R,
+
+ RUN_COM_PT0,
+ RUN_COM_PT1,
+ RUN_COM_PT2,
+
+ RUN_PICK_RETRY,
+
+ //이후에 사용자 런 코드용 스텝을 추가한다.
+ EMERGENCY = 200,
+ HOME_FULL = 201,
+ HOME_DELAY,
+ HOME_CONFIRM,
+ HOME_QUICK,
+
+ CLOSING = 250,
+ CLOSEWAIT = 251,
+ CLOSED = 252,
+
+ //사용자영역
+ FINISH = 100,
+ PAUSE,
+ WAITSTART,
+ ERROR,
+ SAFTY,
+ CLEAR,
+ }
+
+
+ public enum eWaitMessage
+ {
+ PX = 0,
+ PZ,
+ LMOVE,
+ LUPDN,
+ RMOVE,
+ RUPDN,
+ LPRINT,
+ RPRINT,
+ VIS0,
+ VIS1,
+ VIS2,
+ }
+ //public enum eJobResult
+ //{
+ // None = 0,
+ // Error,
+ // ErrorOut,
+ // MaxCount,
+ // NotExistSID,
+ // DisableUnloader,
+ // MatchFail,
+ // NoBarcode
+ //}
+ public enum eCartSize
+ {
+ None = 0,
+ Inch7 = 7,
+ Inch13 = 13
+ }
+
+ public enum ePrintPutPos
+ {
+ None = 0,
+ Top,
+ Middle,
+ Bottom,
+ }
+
+ public enum ePrintVac
+ {
+ inhalation = 0,
+ exhaust,
+ off,
+ }
+
+
+
+
+
+ public enum eJobType : byte
+ {
+ Sorter = 0,
+ Dryrun,
+ }
+
+ public enum eHeaderHandler
+ {
+ Ping = 0,
+ RequestData,
+ RequstSeqNo,
+ RequstInputReel,
+ JobEnd,
+ JobDelete,
+ }
+ public struct sVisionDMResult
+ {
+ public Boolean iSystemErr { get; set; }
+ public Boolean isError { get; set; }
+ public string DM { get; set; }
+ public System.Drawing.Rectangle ROS { get; set; }
+
+ public System.Drawing.PointF DMCenter { get; set; }
+ public List DMCorner { get; set; }
+ public string DMMessage { get; set; }
+ }
+ public struct sObjectDetectResult
+ {
+ public string Message { get; set; }
+ public List Rect { get; set; }
+ public List Areas { get; set; }
+ public Boolean OK
+ {
+ get
+ {
+ if (Areas == null || Areas.Count < 1) return false;
+ else return true;
+ }
+ }
+ }
+
+
+
+ public enum eGridValue
+ {
+ ///
+ /// 아직 처리 전(기본 초기화된 상태)
+ ///
+ NotSet = 0,
+
+ ///
+ /// 원점검사에서 오류 발생
+ ///
+ OrientError,
+
+ ///
+ /// 아이템검출에서 실패됨
+ ///
+ NoItem,
+
+ ///
+ /// 아이템검출성공, 데이터매트릭스 검출 실패
+ ///
+ NewItem,
+
+ ///
+ /// 데이터매트릭스 읽기 실패
+ ///
+ DMReadError,
+
+ ///
+ /// 데이터매트릭스 관리 횟수가 기준횟수(10) 미만 (아직 정상)
+ ///
+ DMNotmalCount,
+
+ ///
+ /// 데이터매트릭스 관리 횟수가 기준횟수(10)를 초과한 경우
+ ///
+ DMOverCount,
+
+
+
+ }
+
+ public enum eRoiSeq
+ {
+ Area = 0,
+ DataMatrix,
+ Orient,
+ DetectUnit,
+ DetectDM
+ }
+ public enum eWaitType : byte
+ {
+ TryLock = 0,
+ TryUnLock,
+ AirBlowOn,
+ AirBlowOff,
+ AirBlowDustOn,
+ AirBlowDustOff,
+ PrintPickLOff,
+ PrintPickLOn,
+ PrintPickROff,
+ PrintPickROn,
+ PickOff,
+ PickOn,
+ AirBlowCoverDn,
+ AirBlowCoverUp,
+ UnloaderUp,
+ UnloaderDn,
+ LiftUp,
+ LiftDn,
+ }
+
+ public enum eSensorState : byte
+ {
+ Off = 0,
+ On = 1,
+ InComplete = 2,
+ }
+ public enum eIOCheckResult
+ {
+ Wait = 0,
+ Complete,
+ Timeout
+ }
+
+
+
+ public enum ePort
+ {
+ Left = 0,
+ Right,
+ }
+
+
+ enum eResultStringType
+ {
+ Nomal = 0,
+ Attention,
+ Error,
+ }
+ public enum eMotDir
+ {
+ Stop = 0,
+ CW = 1,
+ CCW = 2
+ }
+
+ ///
+ /// RUN중일 때 사용되는 세부 시퀀스
+ ///
+ public enum eRunStep : byte
+ {
+ NOTSET = 0,
+
+ ///
+ /// 프로그램 체크
+ ///
+ STARTCHKSW,
+ ///
+ /// 하드웨어 체크
+ ///
+ STARTCHKHW,
+
+ ///
+ /// 기계장치를 작업 시작 전 상태로 이동합니다
+ ///
+ INITIALHW,
+
+ ///
+ /// 안전지대(비활성화된경우 발생)
+ ///
+ SAFTYZONE_GO,
+ SAFTYZONE_RDY,
+
+ BEGINLOAD,
+ ///
+ /// 트레이를 로딩하기 위한 로더 이동 및 트레이 추출
+ ///
+ PORTLOAD,
+
+
+ ///
+ /// 비젼촬영을위한 위치로 이동
+ ///
+ BEGINPICK,
+ ENDPICK,
+
+ OVERLOAD,
+ SAVEDATA,
+
+ ///
+ /// 모션 원위치
+ ///
+ BARCODE,
+
+ ///
+ /// AIR/BLOW 위치 이동 및 작업
+ ///
+ AIRBLOW,
+ REELOUT,
+ TRAYOUT,
+
+ ///
+ /// 언로드위치로 셔틀을 이동
+ ///
+ BEGINUNLOADER,
+ ///
+ /// 트레이 언로드 작업
+ ///
+ TRAYUNLOAD,
+
+ ///
+ /// 언로딩하고 다시 로딩존으로 이동하는 시퀀스
+ ///
+ MOVE_TO_LOAD,
+
+ }
+
+
+ public enum ePLCIPin : byte
+ {
+ X00, X01, X02, X03, X04, X05, X06, X07, X08, X09, X0A,
+ X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X1A
+ }
+ public enum ePLCOPin : byte
+ {
+ Y00, Y01, Y02, Y03, Y04, Y05, Y06, Y07, Y08, Y09, Y0A,
+ Y10, Y11, Y12, Y13, Y14, Y15, Y16, Y17, Y18, Y19, Y1A
+ }
+ public enum ePLCITitle : byte
+ {
+ Run, Cart_Status_01, Cart_Status_02, Cart_Status_03, Cart_Status_04,
+ Machine_Confirm = 19
+ }
+ public enum ePLCOTitle : byte
+ {
+ Cart_No_Setting = 0,
+ Handler_Confirm = 19,
+ }
+
+ public enum eResult : byte
+ {
+ NOERROR,
+ EMERGENCY,
+ SAFTY,
+ DEVELOP,
+ SETUP,
+ HARDWARE,
+ SENSOR,
+ MOTION,
+ OPERATION,
+ COMMUNICATION,
+ TIMEOUT,
+ UNLOADER,
+ }
+
+
+ public enum eECode : byte
+ {
+
+ NOTSET = 0,
+ EMERGENCY = 1,
+ NOMODELV = 2,//작업모델
+ NOMODELM = 3,//모션모델
+ DOORSAFTY = 6,
+ AREASAFTY = 7,
+ VIS_LICENSE = 8,
+ HOME_TIMEOUT = 9,
+ AIRNOOUT = 10,
+ NOFUNCTION = 11,
+ AIRNOTDETECT = 12,
+
+ DOOFF = 27,//출력 off
+ DOON = 28,//출력 on
+ DIOFF = 29,//입력off
+ DION = 30,//입력 on
+
+ MESSAGE_INFO = 32,
+ MESSAGE_ERROR = 33,
+
+ VISION_NOTREADY = 34,
+ VISION_NOCONN = 35,
+ VISION_TRIGERROR = 36,
+ VISION_COMMERROR = 37,
+ VISION_NORECV = 38,
+
+ AZJINIT = 39, //DIO 혹은 모션카드 초기화 X
+ MOT_HSET = 41,
+ MOT_SVOFF = 42,
+ MOT_HSEARCH = 43,
+
+ MOT_CMD = 71,
+ USER_STOP = 72,
+ USER_STEP = 73,
+ POSITION_ERROR = 86,
+ MOTIONMODEL_MISSMATCH = 96,
+
+
+ //여기서부터는 전용코드로한다(소켓은 조금 섞여 있음)
+ VISCONF = 100,
+ NEED_AIROFF_L,
+ NEED_AIROFF_R,
+ PORTOVERLOAD,
+ NOPRINTLDATA,
+ NOPRINTRDATA,
+ PRINTL,
+ PRINTR,
+ CAM_LEFT,
+ CAM_RIGHT,
+ INCOMPLETE_LOADERDATA,
+ NOPUTPOSITION,
+ NOREELSIZE,
+ PRINTER,
+ QRDATAMISSMATCHL,
+ QRDATAMISSMATCHR,
+ MOTX_SAFETY,
+
+ NO_PAPER_DETECT_L,
+ NO_PAPER_DETECT_R,
+
+ CART_SIZE_ERROR_L,
+ CART_SIZE_ERROR_R,
+
+ PRE_USE_REELID_L,
+ PRE_USE_REELID_R,
+
+ NEED_JOBCANCEL,
+
+
+
+
+ LCONVER_REEL_DECTECT_ALL =150,
+ RCONVER_REEL_DECTECT_ALL,
+ LCONVER_REEL_DECTECT_IN,
+ RCONVER_REEL_DECTECT_IN,
+ LCONVER_MOVING,
+ RCONVER_MOVING,
+ NOREADY_KEYENCE,
+
+ PRINTER_LPICKER_NOBW,
+ PRINTER_RPICKER_NOBW,
+ NOBYPASSSID,
+
+ CONFIG_KEYENCE,
+
+
+ PRINTER_LPRINTER_NOUP,
+ PRINTER_RPRINTER_NOUP,
+ NOECSDATA,
+ PICKER_LCYL_NODOWN,
+ PICKER_RCYL_NODOWN,
+ PICKER_LCYL_NOUP,
+ PICKER_RCYL_NOUP,
+
+ NOSIDINFOFROMDB,
+ INBOUNDWEBAPIERROR,
+ SIDINFORDUP,
+ NOECSDATAACTIVE,
+ }
+
+ public enum eNextStep : byte
+ {
+ NOTHING = 0,
+ PAUSE,
+ PAUSENOMESAGE,
+ ERROR
+ }
+
+ public enum eILock
+ {
+ EMG = 0,
+ PAUSE,
+ HOMESET,
+ DOOR,
+ SAFTYAREA,
+ DISABLE,
+
+ XMOVE,
+ YMOVE,
+ ZMOVE,
+
+ X_POS,
+ Y_POS,
+ Z_POS,
+
+ PY_POS,
+ PZ_POS,
+ CYL_FORWARD,
+ MPrint,
+ }
+
+
+ //public enum eILockPKX
+ //{
+ // EMG = 0,
+ // PAUSE,
+ // HOMESET,
+ // DOOR,
+ // Disable,
+ // ZL_POS,
+ // ZR_POS,
+ // ZMOVE,
+ // PKZPOS,
+ //}
+
+ //public enum eILockPKZ
+ //{
+ // EMG = 0,
+ // PAUSE,
+ // HOMESET,
+ // DOOR,
+ // Disable,
+ // Y_POS,
+ // YMOVE,
+ // PORTRUN0,
+ // PORTRUN1,
+ // PORTRUN2
+ //}
+
+ //public enum eILockPKT
+ //{
+ // EMG = 0,
+ // PAUSE,
+ // HOMESET,
+ // DOOR,
+ // Disable,
+ // Y_POS,
+ // Y_MOVE,
+ // PortRun
+ //}
+
+
+ /////
+ ///// PRINT MOVE AXIS (L+R)
+ /////
+ //public enum eILockPRM
+ //{
+ // Emergency = 0,
+ // Pause,
+ // HomeSet,
+ // Safty,
+ // Disable,
+ // ZMOVE,
+ // FORWARD,
+ // ITEMON,
+ // PKXPOS,
+ // PRNZPOS,
+ //}
+
+ //public enum eILockPRZ
+ //{
+ // EMG = 0,
+ // PAUSE,
+ // HOMESET,
+ // DOOR,
+ // Disable,
+ // YMOVE,
+ // ITEMON,
+ // PRNYPOS,
+ //}
+
+ public enum eILockPRL
+ {
+ EMG = 0,
+ PAUSE,
+ HOMESET,
+ DOOR,
+ SAFTYAREA,
+ DISABLE,
+
+ PRNYPOS,
+ PRNZPOS,
+ }
+ public enum eILockPRR
+ {
+ EMG = 0,
+ PAUSE,
+ HOMESET,
+ DOOR,
+ SAFTYAREA,
+ DISABLE,
+
+
+ PRNYPOS,
+ PRNZPOS,
+ }
+ public enum eILockVS0
+ {
+ EMG = 0,
+ PAUSE,
+ HOMESET,
+ DOOR,
+ SAFTYAREA,
+ DISABLE,
+
+ PORTRDY,
+ PKXPOS, //피커의 위치
+ PRNYPOS, //프린터Y축 위치
+ }
+ public enum eILockVS1
+ {
+ EMG = 0,
+ PAUSE,
+ HOMESET,
+ DOOR,
+ SAFTYAREA,
+ DISABLE,
+
+ PORTRDY,
+ PKXPOS,
+ }
+ public enum eILockVS2
+ {
+ EMG = 0,
+ PAUSE,
+ HOMESET,
+ DOOR,
+ SAFTYAREA,
+ DISABLE,
+
+ PORTRDY,
+ PKXPOS, //피커의 위치
+ PRNYPOS, //프린터Y축 위치
+ }
+ public enum eILockCV
+ {
+ EMG = 0,
+ PAUSE,
+ HOMESET,
+ DOOR,
+ SAFTYAREA,
+
+ ///
+ /// 포트를 사용하지 않는경우
+ ///
+ DISABLE,
+
+ ///
+ /// 카트모드
+ ///
+ CARTMODE,
+
+ ///
+ /// 업체컨이어의 ready 신호
+ ///
+ EXTBUSY,
+
+ ///
+ /// 나의 작업 신호
+ ///
+ BUSY,
+
+ VISION,
+ }
+}
diff --git a/Handler/Project/Class/Enum_Mot.cs b/Handler/Project/Class/Enum_Mot.cs
new file mode 100644
index 0000000..400f4c8
--- /dev/null
+++ b/Handler/Project/Class/Enum_Mot.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Project
+{
+
+ ///
+ /// 모션 축 정보
+ ///
+ public enum eAxis : byte
+ {
+ PX_PICK = 0,
+ PZ_PICK,
+ PL_MOVE,
+ PL_UPDN,
+ PR_MOVE,
+ PR_UPDN,
+ Z_THETA,
+ }
+
+
+ public enum eAxisName : byte
+ {
+ Picker_X = 0,
+ Picker_Z ,
+ PrinterL_Move,
+ PrinterL_UpDn,
+ PrinterR_Move,
+ PrinterR_UpDn,
+ Spare_00,
+ }
+}
diff --git a/Handler/Project/Class/Enum_MotPosition.cs b/Handler/Project/Class/Enum_MotPosition.cs
new file mode 100644
index 0000000..0821d1a
--- /dev/null
+++ b/Handler/Project/Class/Enum_MotPosition.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.ComponentModel;
+
+namespace Project
+{
+
+ public enum ePXLoc : byte
+ {
+ READYL = 0,
+ READYR,
+ PICKON,
+ PICKOFFL,
+ PICKOFFR,
+ }
+
+ public enum ePZLoc : byte
+ {
+ READY = 0,
+ PICKON,
+ PICKOFFL,
+ PICKOFFR,
+ }
+
+ public enum ePTLoc : byte
+ {
+ READY = 0,
+ }
+
+ public enum eLMLoc : byte
+ {
+ READY = 0,
+ PRINTH07,
+ PRINTL07,
+ PRINTM07,
+ PRINTH13,
+ PRINTL13,
+ PRINTM13,
+ }
+ public enum eLZLoc : byte
+ {
+ READY = 0,
+ PICKON,
+ PICKOFF,
+ }
+ public enum eRMLoc : byte
+ {
+ READY = 0,
+ PRINTH07,
+ PRINTL07,
+ PRINTM07,
+ PRINTH13,
+ PRINTL13,
+ PRINTM13,
+ }
+ public enum eRZLoc : byte
+ {
+ READY = 0,
+ PICKON,
+ PICKOFF,
+ }
+}
diff --git a/Handler/Project/Class/FTP/EventArgs.cs b/Handler/Project/Class/FTP/EventArgs.cs
new file mode 100644
index 0000000..8886c86
--- /dev/null
+++ b/Handler/Project/Class/FTP/EventArgs.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace AR.FTPClient
+{
+ public class MessageEventArgs : EventArgs
+ {
+ protected Boolean _isError = false;
+ public Boolean IsError { get { return _isError; } }
+ protected string _message = string.Empty;
+ public string Message { get { return _message; } }
+ public MessageEventArgs(Boolean isError, string Message)
+ {
+ _isError = isError;
+ _message = Message;
+ }
+ }
+ public class ListProgressEventArgs : EventArgs
+ {
+ //public long Max { get; set; }
+ //public long Value { get; set; }
+ public long TotalRecv { get; set; }
+ public ListProgressEventArgs(long TotalRecv_)
+ {
+ this.TotalRecv = TotalRecv_;
+ }
+ }
+
+}
diff --git a/Handler/Project/Class/FTP/FTPClient.cs b/Handler/Project/Class/FTP/FTPClient.cs
new file mode 100644
index 0000000..4536b00
--- /dev/null
+++ b/Handler/Project/Class/FTP/FTPClient.cs
@@ -0,0 +1,574 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Text;
+
+
+namespace AR.FTPClient
+{
+ public partial class FTPClient : IFTPClient
+ {
+ public string errorMessage { get; set; }
+
+ private int bufferSize = 2048;
+ private int timeout = 20000;
+
+ #region "Contstruct"
+
+ public FTPClient() : this("127.0.0.1", "Anonymous", "") { }
+
+ public FTPClient(string Host, string UserID, string UserPass) :
+ this(Host, UserID, UserPass, 21)
+ { }
+
+ public FTPClient(string Host, string UserID, string UserPass, bool passive) :
+ this(Host, UserID, UserPass, 21, passive)
+ { }
+
+ public FTPClient(string Host, string UserID, string UserPass, int port) :
+ this(Host, UserID, UserPass, port, false)
+ { }
+
+ public FTPClient(string host, string userid, string userpass, int port, bool passive)
+ {
+ Host = host;
+ UserID = userid;
+ UserPassword = userpass;
+ Port = port;
+ PassiveMode = passive;
+ this.TextEncoding = System.Text.Encoding.UTF8;
+ }
+ #endregion
+
+ public event EventHandler Message;
+ public event EventHandler ListPrgress;
+
+ #region "Properties"
+
+ ///
+ /// 접속하려는 FTP서버의 IP혹은 도메인 주소를 입력하세요
+ /// 기본값 : 127.0.0.1
+ ///
+ public string Host { get; set; }
+ ///
+ /// FTP의 사용자 ID
+ /// 기본값 : Anonymous
+ ///
+ public string UserID { get; set; }
+ ///
+ /// FTP 사용자 ID의 암호
+ /// 기본값 : 없음
+ ///
+ public string UserPassword { get; set; }
+ ///
+ /// FTP 접속 포트
+ /// 기본값 : 21
+ ///
+ public int Port { get; set; }
+ ///
+ /// FTP 접속 방식 (능동형/수동형)
+ ///
+ public bool PassiveMode { get; set; }
+
+ ///
+ /// 문자수신시 사용할 인코딩 방식
+ ///
+ public System.Text.Encoding TextEncoding { get; set; }
+
+ #endregion
+ public void Dispose()
+ {
+
+ }
+ ///
+ /// 파일을 다운로드 합니다.
+ ///
+ /// 원격위치의 전체 경로
+ /// 로컬위치의 전체 경로
+ public Boolean Download(string remoteFile, string localFile, bool overwrite = false)
+ {
+ FtpWebRequest ftpRequest = null;
+ FtpWebResponse ftpResponse = null;
+ Stream ftpStream = null;
+
+ //overwrite funcion - 190622 - chi
+ errorMessage = string.Empty;
+ if (overwrite == false && System.IO.File.Exists(localFile))
+ {
+ errorMessage = "Target file alreay exists";
+ return false;
+ }
+ else if (overwrite == true && System.IO.File.Exists(localFile))
+ {
+ try
+ {
+ System.IO.File.Delete(localFile);
+ }
+ catch (Exception ex)
+ {
+ errorMessage = ex.Message;
+ return false;
+ }
+ }
+
+
+
+ bool retval = true;
+ try
+ {
+ long Receive = 0;
+ var url = CombineUrl(remoteFile);
+
+ ftpRequest = (FtpWebRequest)FtpWebRequest.Create(url);
+ ftpRequest.Credentials = new NetworkCredential(this.UserID, this.UserPassword);
+ ftpRequest.UseBinary = true;
+ ftpRequest.UsePassive = this.PassiveMode;
+ ftpRequest.KeepAlive = true;
+ ftpRequest.ReadWriteTimeout = this.timeout;
+ ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
+ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
+ ftpStream = ftpResponse.GetResponseStream();
+ FileStream localFileStream = new FileStream(localFile, FileMode.Create);
+ byte[] byteBuffer = new byte[bufferSize];
+ int bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
+ Receive += bytesRead;
+ if (ListPrgress != null)
+ ListPrgress(this, new ListProgressEventArgs(Receive));
+ try
+ {
+ while (bytesRead > 0)
+ {
+ localFileStream.Write(byteBuffer, 0, bytesRead);
+ bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
+ Receive += bytesRead;
+ if (ListPrgress != null)
+ ListPrgress(this, new ListProgressEventArgs(Receive));
+ }
+ }
+ catch (Exception ex) { retval = false; Console.WriteLine(ex.ToString()); }
+ localFileStream.Close();
+ ftpStream.Close();
+ ftpResponse.Close();
+ ftpRequest = null;
+ }
+ catch (Exception ex) { retval = false; this.errorMessage = ex.Message; Console.WriteLine(ex.ToString()); }
+ return retval;
+ }
+
+ ///
+ /// 파일을 업로드 합니다.
+ ///
+ /// 원격위치의 전체 경로
+ /// 로컬위치의 전체 경로
+ ///
+ public Boolean Upload(string remoteFile, string localFile)
+ {
+ FtpWebRequest ftpRequest = null;
+ FtpWebResponse ftpResponse = null;
+ Stream ftpStream = null;
+ try
+ {
+ var url = CombineUrl(remoteFile);
+ ftpRequest = (FtpWebRequest)FtpWebRequest.Create(url);
+ ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
+ ftpRequest.UseBinary = true;
+ ftpRequest.UsePassive = PassiveMode;
+ ftpRequest.KeepAlive = true;
+ ftpRequest.ReadWriteTimeout = this.timeout;
+ ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
+ ftpStream = ftpRequest.GetRequestStream();
+ FileStream localFileStream = new FileStream(localFile, FileMode.Open);
+ byte[] byteBuffer = new byte[bufferSize];
+ int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
+ Boolean bError = false;
+ try
+ {
+ System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch();
+ wat.Restart();
+ while (bytesSent != 0)
+ {
+ ftpStream.Write(byteBuffer, 0, bytesSent);
+ bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
+ }
+
+ }
+ catch (Exception ex)
+ {
+ bError = true;
+ }
+ localFileStream.Close();
+ ftpStream.Close();
+ ftpRequest = null;
+ if (bError) return false;
+ else return true;
+ }
+ catch (Exception ex)
+ {
+ this.errorMessage = ex.Message;
+ return false;
+ }
+ }
+
+
+ ///
+ /// 원격파일을 삭제 합니다.
+ ///
+ ///
+ public Boolean Delete(string remotefile)
+ {
+ FtpWebRequest ftpRequest = null;
+ FtpWebResponse ftpResponse = null;
+ Stream ftpStream = null;
+ try
+ {
+ var url = CombineUrl(remotefile);
+ ftpRequest = (FtpWebRequest)WebRequest.Create(url);
+ ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
+ ftpRequest.UseBinary = true;
+ ftpRequest.UsePassive = this.PassiveMode;
+ ftpRequest.KeepAlive = true;
+ ftpRequest.ReadWriteTimeout = this.timeout;
+ ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile;
+ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
+ ftpResponse.Close();
+ ftpRequest = null;
+ return true;
+ }
+ catch (Exception ex) { this.errorMessage = ex.Message; return false; }
+ }
+
+ ///
+ /// 원격파일의 이름을 변경 합니다.
+ ///
+ ///
+ ///
+ public Boolean rename(string currentFileNameAndPath, string newFileName)
+ {
+ FtpWebRequest ftpRequest = null;
+ FtpWebResponse ftpResponse = null;
+ Stream ftpStream = null;
+ try
+ {
+ var url = CombineUrl(currentFileNameAndPath);
+ ftpRequest = (FtpWebRequest)WebRequest.Create(url);
+ ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
+ ftpRequest.UsePassive = this.PassiveMode;
+ ftpRequest.ReadWriteTimeout = this.timeout;
+ ftpRequest.UseBinary = true;
+ ftpRequest.KeepAlive = true;
+ ftpRequest.Method = WebRequestMethods.Ftp.Rename;
+ ftpRequest.RenameTo = newFileName;
+ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
+ ftpResponse.Close();
+ ftpRequest = null;
+ return true;
+ }
+ catch (Exception ex) { this.errorMessage = ex.Message; return false; }
+ }
+
+ ///
+ /// 원격위치에 폴더를 생성 합니다.
+ /// 트리구조로 폴더를 생성하지 않습니다. 여러개의 폴더를 생성하려면 각각 호출 해야 합니다.
+ ///
+ ///
+ ///
+ public bool createDirectory(string newDirectory)
+ {
+ FtpWebRequest ftpRequest = null;
+ FtpWebResponse ftpResponse = null;
+ Stream ftpStream = null;
+ try
+ {
+ var url = CombineUrl(newDirectory, false);
+ ftpRequest = (FtpWebRequest)WebRequest.Create(url);
+ ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
+ ftpRequest.UsePassive = this.PassiveMode;
+ ftpRequest.UseBinary = true;
+ ftpRequest.KeepAlive = true;
+ ftpRequest.ReadWriteTimeout = this.timeout;
+ ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;
+ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
+ ftpResponse.Close();
+ ftpRequest = null;
+ return true;
+ }
+ catch (Exception ex) { this.errorMessage = ex.Message; return false; }
+ }
+
+ ///
+ /// 원격위치의 폴더를 삭제합니다. 폴더 삭제 전 대상 폴더는 비어있어야 합니다.
+ ///
+ ///
+ ///
+ public bool RemoveDirectory(string Directory)
+ {
+ FtpWebRequest ftpRequest = null;
+ FtpWebResponse ftpResponse = null;
+ Stream ftpStream = null;
+ try
+ {
+ var url = CombineUrl(Directory, false);
+ ftpRequest = (FtpWebRequest)WebRequest.Create(url);
+ ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
+ ftpRequest.UsePassive = this.PassiveMode;
+ ftpRequest.UseBinary = true;
+ ftpRequest.KeepAlive = true;
+ ftpRequest.ReadWriteTimeout = this.timeout;
+ ftpRequest.Method = WebRequestMethods.Ftp.RemoveDirectory;
+ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
+ ftpResponse.Close();
+ ftpRequest = null;
+ return true;
+ }
+ catch (Exception ex) { this.errorMessage = ex.Message; return false; }
+ }
+
+ ///
+ /// 파일의 생성일자 반환
+ ///
+ ///
+ ///
+ public string getFileCreatedDateTime(string fileName)
+ {
+ FtpWebRequest ftpRequest = null;
+ FtpWebResponse ftpResponse = null;
+ Stream ftpStream = null;
+ try
+ {
+ var url = CombineUrl(fileName);
+ ftpRequest = (FtpWebRequest)WebRequest.Create(url);
+ ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
+ ftpRequest.UsePassive = this.PassiveMode;
+ ftpRequest.UseBinary = true;
+ ftpRequest.KeepAlive = true;
+ ftpRequest.ReadWriteTimeout = this.timeout;
+ ftpRequest.Method = WebRequestMethods.Ftp.GetDateTimestamp;
+ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
+ ftpStream = ftpResponse.GetResponseStream();
+ StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding);
+ string fileInfo = null;
+ try { fileInfo = ftpReader.ReadToEnd(); }
+ catch (Exception ex) { Console.WriteLine(ex.ToString()); }
+ ftpReader.Close();
+ ftpStream.Close();
+ ftpResponse.Close();
+ ftpRequest = null;
+ return fileInfo;
+ }
+ catch (Exception ex) { this.errorMessage = ex.Message; Console.WriteLine(ex.ToString()); }
+ return "";
+ }
+
+
+ ///
+ /// 파일의 크기를 반환
+ ///
+ ///
+ ///
+ public string getFileSize(string fileName)
+ {
+ FtpWebRequest ftpRequest = null;
+ FtpWebResponse ftpResponse = null;
+ Stream ftpStream = null;
+ try
+ {
+ var url = CombineUrl(fileName);
+ ftpRequest = (FtpWebRequest)WebRequest.Create(url);
+ ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
+ ftpRequest.UseBinary = true;
+ ftpRequest.UsePassive = this.PassiveMode;
+ ftpRequest.KeepAlive = true;
+ ftpRequest.ReadWriteTimeout = this.timeout;
+ ftpRequest.Method = WebRequestMethods.Ftp.GetFileSize;
+ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
+ ftpStream = ftpResponse.GetResponseStream();
+ StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding);
+ string fileInfo = null;
+ try { while (ftpReader.Peek() != -1) { fileInfo = ftpReader.ReadToEnd(); } }
+ catch (Exception ex) { Console.WriteLine(ex.ToString()); }
+ ftpReader.Close();
+ ftpStream.Close();
+ ftpResponse.Close();
+ ftpRequest = null;
+ return fileInfo;
+ }
+ catch (Exception ex) { errorMessage = ex.Message; Console.WriteLine(ex.ToString()); }
+ return "";
+ }
+
+
+ ///
+ /// 폴더와 파일의 이름만 반환 합니다.
+ ///
+ ///
+ ///
+ public string[] directoryListSimple(string directory)
+ {
+ FtpWebRequest ftpRequest = null;
+ FtpWebResponse ftpResponse = null;
+ Stream ftpStream = null;
+ errorMessage = string.Empty;
+ try
+ {
+ var url = CombineUrl(directory, false);
+ if (url.EndsWith("/") == false) url += "/";
+ ftpRequest = (FtpWebRequest)WebRequest.Create(url);
+ ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
+ ftpRequest.UseBinary = true;
+ ftpRequest.UsePassive = PassiveMode;
+ ftpRequest.KeepAlive = true;
+ ftpRequest.ReadWriteTimeout = this.timeout;
+ ftpRequest.ReadWriteTimeout = 30000;
+ ftpRequest.Timeout = 30000;
+ ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
+
+ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
+ ftpStream = ftpResponse.GetResponseStream();
+ StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding);
+ string directoryRaw = null;
+ try
+ {
+ while (ftpReader.Peek() != -1)
+ {
+ var dataLIne = ftpReader.ReadLine();
+ if (dataLIne.Trim() != "")
+ {
+ if (directoryRaw != null && directoryRaw != "") directoryRaw += "|";
+ directoryRaw += dataLIne;
+ }
+ }
+ }
+ catch (Exception ex) { errorMessage += "\n" + ex.Message; }
+ ftpReader.Close();
+ ftpStream.Close();
+ ftpResponse.Close();
+ ftpRequest = null;
+ try { string[] directoryList = directoryRaw.Split("|".ToCharArray()); return directoryList; }
+ catch (Exception ex) { errorMessage += "\n" + ex.Message; }
+ }
+ catch (Exception ex) { errorMessage = ex.Message; Console.WriteLine(ex.ToString()); }
+ return new string[] { "" };
+ }
+
+
+ ///
+ /// 폴더 및 파일의 정보를 상세하게 표시합니다.
+ ///
+ ///
+ ///
+ public FTPdirectory ListDirectoryDetail(string directory)
+ {
+ FtpWebRequest ftpRequest = null;
+ FtpWebResponse ftpResponse = null;
+ Stream ftpStream = null;
+ errorMessage = string.Empty;
+ try
+ {
+ var url = CombineUrl(directory, false);
+
+ if (url.EndsWith("/") == false) url += "/";
+ ftpRequest = (FtpWebRequest)WebRequest.Create(url);
+ ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
+ ftpRequest.UsePassive = true;
+ ftpRequest.UseBinary = true;
+ ftpRequest.KeepAlive = false;
+ ftpRequest.ReadWriteTimeout = this.timeout;
+ ftpRequest.ReadWriteTimeout = 30000;
+ ftpRequest.Timeout = 30000;
+ ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
+ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
+ ftpStream = ftpResponse.GetResponseStream();
+
+ StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding);
+ string directoryRaw = null;
+
+ try { while (ftpReader.Peek() != -1) { directoryRaw += ftpReader.ReadLine() + "\r"; } }
+ catch (Exception ex) { errorMessage += "\n" + ex.Message; }
+ ftpReader.Close();
+ ftpStream.Close();
+ ftpResponse.Close();
+ ftpRequest = null;
+ directoryRaw = directoryRaw.Replace("\r\n", "\r").TrimEnd((char)0x0D);
+ return new FTPdirectory(directoryRaw, directory);
+ }
+ catch (Exception ex) { errorMessage += "\n" + ex.Message; }
+ return null;
+ }
+
+ #region "utillity"
+
+ ///
+ /// Url을 Host와 결합하여 생성
+ ///
+ /// 경로명
+ /// 파일인지 여부
+ ///
+ string CombineUrl(string file, bool isfile = true)
+ {
+ file = file.Replace("\\", "/");
+ string url = this.Host;
+ if (this.Host.ToLower().StartsWith("ftp://") == false) url = "ftp://" + url;
+ if (url.Substring(5).LastIndexOf(':') == -1)
+ url += ":" + this.Port.ToString();
+
+ if (this.Host.EndsWith("/")) url = this.Host.Substring(0, Host.Length - 1);
+
+ if (file.StartsWith("/"))
+ url = url + System.Web.HttpUtility.UrlPathEncode(file);
+ else
+ url = url + "/" + System.Web.HttpUtility.UrlPathEncode(file);
+
+ url = url.Replace("#", "%23");
+
+ if (isfile)
+ return url;
+ else
+ return url + "/";
+ }
+ public string PathCombine(string path, string add)
+ {
+ var newpath = string.Empty;
+ if (path.EndsWith("/")) newpath = path + add;
+ else newpath = path + "/" + add;
+ if (!newpath.EndsWith("/")) newpath += '/';
+ return newpath;
+
+ }
+ public string PathFileCombine(string path, string add)
+ {
+ var newpath = string.Empty;
+ if (path.EndsWith("/")) newpath = path + add;
+ else newpath = path + "/" + add;
+ if (newpath.EndsWith("/")) newpath = newpath.Substring(0, newpath.Length - 1);
+ return newpath;
+
+ }
+ public string getParent(string path)
+ {
+ if (path == "/") return path;
+ else if (path == "") return "/";
+ else
+ {
+ //서브폴더를 찾아서 처리해준다.
+ if (path.IndexOf('/') == -1) return "/";
+ else
+ {
+ if (path.EndsWith("/")) path = path.Substring(0, path.Length - 1);
+ var slashindex = path.LastIndexOf('/');
+ var parent = path.Substring(0, slashindex);
+ if (!parent.EndsWith("/")) parent += '/';
+ return parent;
+ }
+ }
+ }
+
+ public void RaiseMessage(Boolean isError, string message)
+ {
+ if (isError) errorMessage = message; //170920
+ if (Message != null) Message(this, new MessageEventArgs(isError, message));
+ }
+ #endregion
+ }
+}
diff --git a/Handler/Project/Class/FTP/FTPdirectory.cs b/Handler/Project/Class/FTP/FTPdirectory.cs
new file mode 100644
index 0000000..f506653
--- /dev/null
+++ b/Handler/Project/Class/FTP/FTPdirectory.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace AR.FTPClient
+{
+
+ ///
+ /// ''' Stores a list of files and directories from an FTP result
+ /// '''
+ /// '''
+ public class FTPdirectory : List
+ {
+ public FTPdirectory()
+ {
+ }
+
+ ///
+ /// ''' Constructor: create list from a (detailed) directory string
+ /// '''
+ /// ''' directory listing string
+ /// '''
+ /// '''
+ public FTPdirectory(string dir, string path)
+ {
+ var lines = dir.Replace("\n","").Split('\r');
+ foreach (var line in lines)
+ {
+ if (line != "")
+ this.Add(new FTPfileInfo(line, path));
+ }
+ }
+
+
+ ///
+ /// ''' Filter out only files from directory listing
+ /// '''
+ /// ''' optional file extension filter
+ /// ''' FTPdirectory listing
+ public FTPdirectory GetFiles(string ext = "")
+ {
+ return this.GetFileOrDir(FTPfileInfo.DirectoryEntryTypes.File, ext);
+ }
+
+ ///
+ /// ''' Returns a list of only subdirectories
+ /// '''
+ /// ''' FTPDirectory list
+ /// '''
+ public FTPdirectory GetDirectories()
+ {
+ return this.GetFileOrDir(FTPfileInfo.DirectoryEntryTypes.Directory);
+ }
+
+ // internal: share use function for GetDirectories/Files
+ private FTPdirectory GetFileOrDir(FTPfileInfo.DirectoryEntryTypes type, string ext = "")
+ {
+ FTPdirectory result = new FTPdirectory();
+ foreach (FTPfileInfo fi in this)
+ {
+ if (fi.FileType == type)
+ {
+ if (ext == "")
+ result.Add(fi);
+ else if (ext == fi.Extension)
+ result.Add(fi);
+ }
+ }
+ return result;
+ }
+
+ public bool FileExists(string filename)
+ {
+ foreach (FTPfileInfo ftpfile in this)
+ {
+ if (ftpfile.Filename == filename)
+ return true;
+ }
+ return false;
+ }
+
+ private const char slash = '/';
+
+ public static string GetParentDirectory(string dir)
+ {
+ string tmp = dir.TrimEnd(slash);
+ int i = tmp.LastIndexOf(slash);
+ if (i > 0)
+ return tmp.Substring(0, i - 1);
+ else
+ throw new ApplicationException("No parent for root");
+ }
+ }
+}
diff --git a/Handler/Project/Class/FTP/FTPfileInfo.cs b/Handler/Project/Class/FTP/FTPfileInfo.cs
new file mode 100644
index 0000000..a3d3c42
--- /dev/null
+++ b/Handler/Project/Class/FTP/FTPfileInfo.cs
@@ -0,0 +1,216 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace AR.FTPClient
+{
+ ///
+ /// ''' Represents a file or directory entry from an FTP listing
+ /// '''
+ /// '''
+ /// ''' This class is used to parse the results from a detailed
+ /// ''' directory list from FTP. It supports most formats of
+ /// '''
+ public class FTPfileInfo
+ {
+ // Stores extended info about FTP file
+
+ public string FullName
+ {
+ get
+ {
+ var retval = Path + "/" + Filename;
+ return retval.Replace("//", "/");
+ }
+ }
+ public string Filename
+ {
+ get
+ {
+ return _filename;
+ }
+ }
+ public string Path
+ {
+ get
+ {
+ return _path;
+ }
+ }
+ public DirectoryEntryTypes FileType
+ {
+ get
+ {
+ return _fileType;
+ }
+ }
+ public long Size
+ {
+ get
+ {
+ return _size;
+ }
+ }
+ public DateTime FileDateTime
+ {
+ get
+ {
+ return _fileDateTime;
+ }
+ }
+ public string Permission
+ {
+ get
+ {
+ return _permission;
+ }
+ }
+ public string Extension
+ {
+ get
+ {
+ int i = this.Filename.LastIndexOf(".");
+ if (i >= 0 & i < (this.Filename.Length - 1))
+ return this.Filename.Substring(i + 1);
+ else
+ return "";
+ }
+ }
+ public string NameOnly
+ {
+ get
+ {
+ int i = this.Filename.LastIndexOf(".");
+ if (i > 0)
+ return this.Filename.Substring(0, i);
+ else
+ return this.Filename;
+ }
+ }
+ private string _filename;
+ private string _path;
+ private DirectoryEntryTypes _fileType;
+ private long _size;
+ private DateTime _fileDateTime;
+ private string _permission;
+
+
+ ///
+ /// ''' Identifies entry as either File or Directory
+ /// '''
+ public enum DirectoryEntryTypes
+ {
+ File,
+ Directory,
+ Link
+ }
+
+ ///
+ /// ''' Constructor taking a directory listing line and path
+ /// '''
+ /// ''' The line returned from the detailed directory list
+ /// ''' Path of the directory
+ /// '''
+ public FTPfileInfo(string line, string path)
+ {
+ // parse line
+
+
+
+ Match m = GetMatchingRegex(line);
+ if (m == null)
+ // failed
+ throw new ApplicationException("Unable to parse line: " + line);
+ else
+ {
+ _filename = m.Groups["name"].Value;
+ _path = path;
+
+
+ _permission = m.Groups["permission"].Value;
+ string _dir = m.Groups["dir"].Value;
+ if ((_dir != "" & (_dir == "d" || _dir == "D")))
+ {
+ _fileType = DirectoryEntryTypes.Directory;
+ _size = 0; // CLng(m.Groups("size").Value)
+ }
+ else if ((_dir != "" & (_dir == "l" || _dir == "L")))
+ {
+ _fileType = DirectoryEntryTypes.Link;
+ _size = 0; // CLng(m.Groups("size").Value)
+ }
+ else
+ {
+ _fileType = DirectoryEntryTypes.File;
+ _size = System.Convert.ToInt64(m.Groups["size"].Value);
+ }
+
+
+ try
+ {
+ var timestamp = m.Groups["timestamp"].Value;
+ if (timestamp.IndexOf(':') == -1)
+ {
+ _fileDateTime = DateTime.Parse(timestamp);
+ }
+ else
+ {
+ _fileDateTime = DateTime.Parse(DateTime.Now.Year + " " + timestamp);
+ }
+
+ }
+ catch
+ {
+ // MsgBox("datetime err=" & Now.Year & Space(1) & "value=" & m.Groups("timestamp").Value & vbCrLf & ex.Message.ToString)
+ _fileDateTime = DateTime.Parse("1982-11-23");
+ }
+ }
+ }
+
+ public FTPfileInfo(string filename, string permission, string dir, int size, DateTime filetime, Boolean isdir, string path)
+ {
+ _filename = filename;// m.Groups["name"].Value;
+ _path = path;
+ _permission = permission; // m.Groups["permission"].Value;
+ string _dir = dir;// m.Groups["dir"].Value;
+ if (isdir == true)
+ {
+ _fileType = DirectoryEntryTypes.Directory;
+ _size = 0; // CLng(m.Groups("size").Value)
+ }
+ else
+ {
+ _fileType = DirectoryEntryTypes.File;
+ _size = size;//
+ }
+
+ _fileDateTime = filetime;
+ }
+
+ private Match GetMatchingRegex(string line)
+ {
+ Regex rx;
+ Match m;
+ for (int i = 0; i <= _ParseFormats.Length - 1; i++)
+ {
+ rx = new Regex(_ParseFormats[i]);
+ m = rx.Match(line);
+ if (m.Success)
+ return m;
+ }
+ return null;
+ }
+
+ ///
+ /// ''' List of REGEX formats for different FTP server listing formats
+ /// '''
+ /// '''
+ /// ''' The first three are various UNIX/LINUX formats, fourth is for MS FTP
+ /// ''' in detailed mode and the last for MS FTP in 'DOS' mode.
+ /// ''' I wish VB.NET had support for Const arrays like C# but there you go
+ /// '''
+ private static string[] _ParseFormats = new[] { @"(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\w+\s+\w+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{4})\s+(?.+)", @"(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\d+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{4})\s+(?.+)", @"(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\d+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{1,2}:\d{2})\s+(?.+)", @"(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\w+\s+\w+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{1,2}:\d{2})\s+(?.+)", @"(?[\-dl])(?([\-r][\-w][\-xs]){3})(\s+)(?(\d+))(\s+)(?(\w+\s\w+))(\s+)(?(\d+))\s+(?\w+\s+\d+\s+\d{2}:\d{2})\s+(?.+)", @"(?\d{2}\-\d{2}\-\d{2}\s+\d{2}:\d{2}[Aa|Pp][mM])\s+(?\<\w+\>){0,1}(?\d+){0,1}\s+(?.+)" };
+ }
+}
diff --git a/Handler/Project/Class/FTP/IFTPClient.cs b/Handler/Project/Class/FTP/IFTPClient.cs
new file mode 100644
index 0000000..11dcf18
--- /dev/null
+++ b/Handler/Project/Class/FTP/IFTPClient.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace AR.FTPClient
+{
+ public interface IFTPClient
+ {
+ void Dispose();
+ string errorMessage { get; set; }
+ //string Host { get; set; }
+ //string UserID { get; set; }
+ //string UserPassword { get; set; }
+ //int Port { get; set; }
+ System.Text.Encoding TextEncoding { get; set; }
+ Boolean Download(string remoteFile, string localFile,bool overwrite=false);
+ Boolean Upload(string remoteFile, string localFile);
+ Boolean Delete(string remotefile);
+ Boolean rename(string currentFileNameAndPath, string newFileName);
+ bool createDirectory(string newDirectory);
+ bool RemoveDirectory(string Directory);
+ string getFileCreatedDateTime(string fileName);
+ string getFileSize(string fileName);
+ string[] directoryListSimple(string directory);
+ FTPdirectory ListDirectoryDetail(string directory);
+ event EventHandler Message;
+ event EventHandler ListPrgress;
+ void RaiseMessage(Boolean isError, string message);
+ string PathCombine(string path, string add);
+ string PathFileCombine(string path, string add);
+ string getParent(string path);
+ }
+}
diff --git a/Handler/Project/Class/ItemData.cs b/Handler/Project/Class/ItemData.cs
new file mode 100644
index 0000000..79908bc
--- /dev/null
+++ b/Handler/Project/Class/ItemData.cs
@@ -0,0 +1,117 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Project.Class
+{
+ public class JobData
+ {
+ public enum ErrorCode
+ {
+ None = 0,
+ BarcodeRead,
+ Print,
+ Camera,
+ }
+ public ErrorCode error = ErrorCode.None;
+ public int No { get; set; }
+ public VisionData VisionData;
+
+ public DateTime JobStart
+ {
+ get
+ {
+ if (this.VisionData == null) return new DateTime(1982, 11, 23);
+ else return VisionData.STime;
+ }
+ }
+ public DateTime JobEnd;
+ public TimeSpan JobRun
+ {
+ get
+ {
+ if (JobEnd.Year == 1982) return new TimeSpan(0);
+ else if (JobStart.Year == 1982) return new TimeSpan(0);
+ else return JobEnd - JobStart;
+ }
+ }
+
+ ///
+ /// 프린터에 명령을 전송한 시간
+ ///
+ public DateTime PrintTime { get; set; }
+
+ ///
+ /// 라벨을 추가한 시간
+ ///
+ public DateTime Attachtime { get; set; }
+
+ //작업데이터의 GUID(자료식별)
+ public string guid { get; private set; }
+
+ //언로더포트위치(L/R)
+ public string PortPos;
+
+
+ //동작관련 메세지
+ public string Message;
+
+ int idx;
+
+
+
+ public JobData(int idx_)
+ {
+ this.idx = idx_;
+ Clear("INIT");
+ }
+
+ public bool PrintAttach { get; set; }
+ public bool PrintQRValid { get; set; }
+ public string PrintQRValidResult { get; set; }
+ public void Clear(string source)
+ {
+
+
+ No = 0;
+ //JobStart = new DateTime(1982, 11, 23);
+ JobEnd = new DateTime(1982, 11, 23);
+ Attachtime = new DateTime(1982, 11, 23);
+ PortPos = string.Empty;
+ guid = Guid.NewGuid().ToString();
+ Message = string.Empty;
+ if (VisionData == null)
+ VisionData = new VisionData(source);
+ else
+ VisionData.Clear(source, false);
+ PrintAttach = false;
+ PrintQRValid = false;
+ PrintQRValidResult = string.Empty;
+ PrintTime = new DateTime(1982, 11, 23);
+ PUB.AddDebugLog($"item data {idx} clear by {source} guid={guid}");
+ }
+
+ public void CopyTo(ref JobData obj)
+ {
+ if (obj == null) return;
+ obj.No = this.No;
+ obj.error = this.error;
+ obj.JobEnd = this.JobEnd;
+ obj.guid = this.guid;
+ obj.PortPos = this.PortPos;
+ obj.Message = this.Message;
+ obj.PrintAttach = this.PrintAttach;
+ obj.PrintQRValid = this.PrintQRValid;
+ obj.PrintQRValidResult = this.PrintQRValidResult;
+ obj.Attachtime = this.Attachtime;
+ obj.PrintTime = this.PrintTime;
+ PUB.AddDebugLog("아이템 복사 전 rid:" + this.VisionData.RID);
+ this.VisionData.CopyTo(ref obj.VisionData);
+ PUB.AddDebugLog($"아이템 복사 후 대상 rid : {obj.VisionData.RID}, guid={obj.guid}");
+ }
+
+ }
+}
diff --git a/Handler/Project/Class/JoystickRaw.cs b/Handler/Project/Class/JoystickRaw.cs
new file mode 100644
index 0000000..f619b25
--- /dev/null
+++ b/Handler/Project/Class/JoystickRaw.cs
@@ -0,0 +1,275 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using HidSharp;
+using HidSharp.Reports;
+using HidSharp.Reports.Encodings;
+
+namespace arDev.Joystick
+{
+ public class JoystickRaw : IDisposable
+ {
+ HidDevice _dev;
+ HidStream _hidStream;
+
+ public Boolean IsOpen { get; private set; }
+ public event EventHandler Disconnected;
+ public event EventHandler Connected;
+ public event EventHandler Changed;
+ public delegate void MessageHandler(string msg);
+ public event MessageHandler Message;
+ public int InputLength { get; private set; }
+ public int OutputLength { get; private set; }
+ public int FeatureLength { get; private set; }
+ public int vid { get; set; }
+ public int pid { get; set; }
+ public Boolean[] Buttons = new bool[64]; //버튼정보를 기록한다
+ Boolean bListUpdate = false;
+
+ public JoystickRaw()
+ {
+ vid = -1;
+ pid = -1;
+ this.InputLength = 0;
+ this.OutputLength = 0;
+ this.FeatureLength = 0;
+ this.IsOpen = false;
+ this._dev = null;
+ this._hidStream = null;
+ DeviceList.Local.Changed += Local_Changed;
+ Job = new Task(JobMain, ct);
+ Job.Start();
+ for (int i = 0; i < Buttons.Length; i++)
+ Buttons[i] = false;
+
+ }
+ CancellationToken ct ;
+ public IEnumerable GetHidDevices()
+ {
+ return DeviceList.Local.GetHidDevices();
+ }
+ public void Connect(int vid, int pid)
+ {
+ this.vid = vid;
+ this.pid = pid;
+ }
+ public void Connect(HidDevice device)
+ {
+ this.vid = device.VendorID;
+ this.pid = device.ProductID;
+ }
+
+ Task Job = null;
+ private bool disposed = false;
+ DateTime LastConnTime = DateTime.Now;
+ void JobMain()
+ {
+ //개체가 소멸하기전까지 진행한다
+ while (this.disposed == false)
+ {
+ if (IsOpen == false)
+ {
+ if (this.vid == -1 || this.pid == -1)
+ {
+ //아직설정되지 않았으니 대기를한다
+ System.Threading.Thread.Sleep(3000);
+ }
+ else
+ {
+ //연결작업을 시작해야한다
+ if (bListUpdate || (DateTime.Now - LastConnTime).TotalMilliseconds >= 3000)
+ {
+ LastConnTime = DateTime.Now;
+
+ //연결작업
+ var list = this.GetHidDevices();
+ this._dev = list.Where(t => t.VendorID == this.vid && t.ProductID == this.pid).FirstOrDefault();
+ if (_dev != null)
+ {
+ try
+ {
+ IsOpen = _dev.TryOpen(out _hidStream);
+ if (IsOpen)
+ {
+ this.InputLength = _dev.GetMaxInputReportLength();
+ this.OutputLength = _dev.GetMaxOutputReportLength();
+ this.FeatureLength = _dev.GetMaxFeatureReportLength();
+ this._hidStream.ReadTimeout = Timeout.Infinite;
+
+ Connected?.Invoke(this, null);
+ var rawReportDescriptor = _dev.GetRawReportDescriptor();
+ var msg = ("Report Descriptor:");
+ msg += string.Format(" {0} ({1} bytes)", string.Join(" ", rawReportDescriptor.Select(d => d.ToString("X2"))), rawReportDescriptor.Length);
+ Message?.Invoke(msg);
+ }
+ else
+ {
+ if (this._hidStream != null) this._hidStream.Dispose();
+ }
+ }
+ catch { System.Threading.Thread.Sleep(1500); }
+ }
+ else System.Threading.Thread.Sleep(1500);
+ }
+ else System.Threading.Thread.Sleep(1500);
+ }
+ }
+ else
+ {
+ //데이터를 가지고 온다
+ using (_hidStream)
+ {
+ try
+ {
+ reportDescriptor = _dev.GetReportDescriptor();
+ deviceItem = reportDescriptor.DeviceItems[0];
+ var inputReportBuffer = new byte[_dev.GetMaxInputReportLength()];
+ var inputReceiver = reportDescriptor.CreateHidDeviceInputReceiver();
+ var inputParser = deviceItem.CreateDeviceItemInputParser();
+
+ inputReceiver.Start(_hidStream);
+
+ while (true)
+ {
+ if (!inputReceiver.IsRunning) { break; } // Disconnected?
+
+ Report report; //
+ while (inputReceiver.TryRead(inputReportBuffer, 0, out report))
+ {
+ if (inputParser.TryParseReport(inputReportBuffer, 0, report))
+ {
+ WriteDeviceItemInputParserResult(inputParser);
+ }
+ }
+ System.Threading.Thread.Sleep(20);
+ }
+
+ inputReceiver = null;
+ IsOpen = false;
+ }
+ catch (Exception ex)
+ {
+
+ Message?.Invoke(ex.Message);
+
+ }
+ finally
+ {
+ Disconnected?.Invoke(this, null);
+ IsOpen = false;
+ }
+ }
+ }
+ }
+ }
+
+ void WriteDeviceItemInputParserResult(HidSharp.Reports.Input.DeviceItemInputParser parser)
+ {
+ while (parser.HasChanged)
+ {
+ int changedIndex = parser.GetNextChangedIndex();
+ var previousDataValue = parser.GetPreviousValue(changedIndex);
+ var dataValue = parser.GetValue(changedIndex);
+
+ var oVal = previousDataValue.GetPhysicalValue();
+ var nVal = dataValue.GetPhysicalValue();
+
+ if (double.IsNaN(oVal)) oVal = 0.0;
+ if (double.IsNaN(nVal)) nVal = 0.0;
+
+ var InputMethod = (Usage)dataValue.Usages.FirstOrDefault();
+ if (InputMethod.ToString().StartsWith("Button"))
+ {
+ var butNo = int.Parse(InputMethod.ToString().Substring(6));
+ this.Buttons[butNo - 1] = nVal > 0; //버튼값은 기록 210107
+ }
+
+ //이벤트발생
+ InputChanged?.Invoke(this, new InputChangedEventHandler(
+ InputMethod, oVal, nVal));
+
+ //메세지도 발생함
+ //var msg = (string.Format(" {0}: {1} -> {2}",
+ // (Usage)dataValue.Usages.FirstOrDefault(),
+ // previousDataValue.GetPhysicalValue(),
+ // dataValue.GetPhysicalValue()));
+ //Message?.Invoke(msg);
+
+ }
+ }
+
+ public event EventHandler InputChanged;
+
+ public class InputChangedEventHandler : EventArgs
+ {
+ public Usage input { get; set; }
+ public double oldValue { get; set; }
+ public double newValue { get; set; }
+ public InputChangedEventHandler(Usage input_, double oValue_, double nValue_)
+ {
+ this.input = input_;
+ this.oldValue = oValue_;
+ this.newValue = nValue_;
+ }
+ }
+
+ ReportDescriptor reportDescriptor;
+ DeviceItem deviceItem;
+ ~JoystickRaw()
+ {
+
+ Dispose(false);
+ }
+
+ public void Dispose()
+ {
+ Dispose(true);
+ // This object will be cleaned up by the Dispose method.
+ // Therefore, you should call GC.SupressFinalize to
+ // take this object off the finalization queue
+ // and prevent finalization code for this object
+ // from executing a second time.
+ GC.SuppressFinalize(this);
+ }
+ protected virtual void Dispose(bool disposing)
+ {
+ // Check to see if Dispose has already been called.
+ if (!this.disposed)
+ {
+ // If disposing equals true, dispose all managed
+ // and unmanaged resources.
+
+ if (disposing)
+ {
+ // Dispose managed resources.
+ this._dev = null;
+ }
+
+
+ Job.Wait();
+ Job.Dispose();
+
+ // Call the appropriate methods to clean up
+ // unmanaged resources here.
+ // If disposing is false,
+ // only the following code is executed.
+ //CloseHandle(handle);
+ //handle = IntPtr.Zero;
+
+ // Note disposing has been done.
+ DeviceList.Local.Changed -= Local_Changed;
+ disposed = true;
+ }
+ }
+
+ private void Local_Changed(object sender, DeviceListChangedEventArgs e)
+ {
+ Changed?.Invoke(sender, e);
+ bListUpdate = true;
+ }
+
+ }
+}
diff --git a/Handler/Project/Class/KeyenceBarcodeData.cs b/Handler/Project/Class/KeyenceBarcodeData.cs
new file mode 100644
index 0000000..ef97978
--- /dev/null
+++ b/Handler/Project/Class/KeyenceBarcodeData.cs
@@ -0,0 +1,105 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Drawing;
+
+namespace Project.Class
+{
+ public class KeyenceBarcodeData
+ {
+ public double Angle { get; set; }
+ public StdLabelPrint.CAmkorSTDBarcode AmkorData { get; set; }
+ public Point[] vertex { get; set; }
+ public string Data { get; set; }
+ public Point CenterPX { get; set; }
+ public bool Ignore { get; set; }
+
+ ///
+ /// 1:QR, 11:Code 128(like 1D)
+ ///
+ public string barcodeSymbol { get; set; }
+ public string barcodeSource { get; set; } //230503
+ public Boolean UserActive { get; set; }
+ public Boolean isSTDBarcode
+ {
+ get
+ {
+ if (AmkorData != null && barcodeSymbol == "1" && AmkorData.isValid) return true;
+ return false;
+ }
+ }
+ public Boolean isNewLen15
+ {
+ get
+ {
+ if (AmkorData != null && barcodeSymbol == "1" && AmkorData.isValid && AmkorData.NewLen15Barcode) return true;
+ return false;
+ }
+ }
+
+ ///
+ /// 라벨의 위치를 표시한다. 8방향이며 키패드 유사하게 설정한다 789/4-6/123
+ ///
+ public byte LabelPosition { get; set; }
+
+ ///
+ /// regex check ok
+ ///
+ public Boolean RegExConfirm { get; set; }
+ public Boolean RefExApply { get; set; }
+
+ public KeyenceBarcodeData()
+ {
+ LabelPosition = 0;
+ Angle = 0.0;
+ Data = string.Empty;
+ CenterPX = Point.Empty;
+ AmkorData = null;
+ vertex = null;
+ barcodeSymbol = string.Empty;
+ UserActive = false;
+ RegExConfirm = false;
+ Ignore = false;
+ barcodeSource = string.Empty;
+
+ }
+
+ public override string ToString()
+ {
+ return string.Format("{0},Deg={1},Center={2}x{3}", Data, Angle, CenterPX.X, CenterPX.Y);
+ }
+
+ ///
+ /// 해당 중심점이 겹치는지 확인합니다.
+ ///
+ ///
+ ///
+ public Boolean CheckIntersect(Point Center, string data)
+ {
+ if (data == null) return false;
+ if (data.Equals(this.Data) == false) return false; //자료가 다르면 다른 자료로 처리한다
+ return getInside(Center, vertex);
+ }
+
+ bool getInside(Point pt, Point[] ptArr)
+ {
+ int crosses = 0;
+ for (int i = 0; i < ptArr.Length; i++)
+ {
+ int j = (i + 1) % ptArr.Length;
+ if ((ptArr[i].Y > pt.Y) != (ptArr[j].Y > pt.Y))
+ {
+ //atX는 점 B를 지나는 수평선과 선분 (p[i], p[j])의 교점
+ double atX = (ptArr[j].X - ptArr[i].X) * (pt.Y - ptArr[i].Y) / (ptArr[j].Y - ptArr[i].Y) + ptArr[i].X;
+ //atX가 오른쪽 반직선과의 교점이 맞으면 교점의 개수를 증가시킨다.
+ if (pt.X < atX)
+ crosses++;
+ }
+ }
+ return crosses % 2 > 0;
+ }
+
+ }
+}
diff --git a/Handler/Project/Class/ModelInfoM.cs b/Handler/Project/Class/ModelInfoM.cs
new file mode 100644
index 0000000..12c376d
--- /dev/null
+++ b/Handler/Project/Class/ModelInfoM.cs
@@ -0,0 +1,131 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Drawing;
+using System.ComponentModel;
+using System.Web.Services.Protocols;
+
+namespace Project
+{
+
+ public class ModelInfoM
+ {
+ //스피드 값과, 위치값을 저장하면 된다.
+ public int idx { get; set; }
+ public string Title { get; set; }
+
+ public Dictionary Position { get; set; }
+
+
+ public ModelInfoM()
+ {
+ idx = -1;
+ Title = string.Empty;
+ ClearDataPosition();
+ }
+ void ClearDataPosition()
+ {
+ Position = new Dictionary();
+ var motCount = Enum.GetNames(typeof(eAxis)).Length;
+ for (int i = 0; i < motCount; i++)
+ {
+ var datas = new PositionData[64];
+ for (int j = 0; j < datas.Length; j++)
+ datas[j] = new PositionData(-1, string.Empty, 0.0);
+
+ Position.Add(i, datas);
+ }
+ }
+
+ public Boolean isSet
+ {
+ get
+ {
+ if (idx == -1) return false;
+ else return !Title.isEmpty();
+ }
+ }
+
+ public void ReadValue(DataSet1.MCModelRow dr)
+ {
+ idx = dr.idx;
+ Title = dr.Title;
+ ReadValuePosition(idx);
+ }
+
+ public void ReadValue(int index)
+ {
+ var dr = PUB.mdm.dataSet.MCModel.Where(t => t.idx == index).FirstOrDefault();
+ if (dr == null)
+ {
+ idx = -1;
+ Title = string.Empty;
+ ClearDataPosition();
+ }
+ else
+ {
+ idx = dr.idx;
+ Title = dr.Title;
+ ReadValuePosition(idx);
+ }
+ }
+ public Boolean ReadValue(string title)
+ {
+ return ReadValue(title, PUB.mdm.dataSet.MCModel);
+ }
+ public Boolean ReadValue(string title, DataSet1.MCModelDataTable dt)
+ {
+ var dr = dt.Where(t => t.Title == title).FirstOrDefault();
+ if (dr == null)
+ {
+ idx = -1;
+ this.Title= string.Empty;
+ ClearDataPosition();
+ return false;
+ }
+ else
+ {
+ idx = dr.idx;
+ this.Title = dr.Title;
+ ReadValuePosition(idx);
+ return true;
+ }
+ }
+ public void ReadValuePosition(int modelidx)
+ {
+ ReadValuePosition(modelidx, PUB.mdm.dataSet.MCModel);
+ }
+ public void ReadValuePosition(int modelidx, DataSet1.MCModelDataTable dt)
+ {
+ ClearDataPosition();
+
+ //각 모터별로 데이터를 가져온다
+ int cnt = 0;
+ foreach (var data in Position)
+ {
+ //해당 모터의 속도값을 가져온다
+ var drows = dt.Where(t => t.pidx == modelidx && t.PosIndex >= 0 && t.MotIndex == data.Key);
+ foreach (DataSet1.MCModelRow dr in drows)
+ {
+ var item = data.Value[dr.PosIndex];
+ item.index = dr.PosIndex;
+ item.title = dr.PosTitle;
+ item.value = dr.Position;
+ item.speed = dr.Speed;
+ item.acc = dr.SpeedAcc;
+ item.dcc = dr.SpeedDcc;
+ data.Value[dr.PosIndex] = item;
+ cnt += 1;
+ }
+ }
+
+ PUB.log.Add(String.Format("Motion({0}) Data Load : {1}", modelidx, cnt));
+ }
+
+ }
+
+
+
+
+}
diff --git a/Handler/Project/Class/ModelInfoV.cs b/Handler/Project/Class/ModelInfoV.cs
new file mode 100644
index 0000000..2d55930
--- /dev/null
+++ b/Handler/Project/Class/ModelInfoV.cs
@@ -0,0 +1,229 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Drawing;
+using System.ComponentModel;
+
+namespace Project
+{
+
+ public class ModelInfoV
+ {
+ [Browsable(false)]
+ public string SPN { get; set; }
+ //[Browsable(false)]
+ //public Boolean SplitSPN { get; set; }
+ [Browsable(false)]
+ public string Title { get; set; }
+ [Browsable(false)]
+ public string Code { get; set; }
+ [Browsable(false)]
+ public int idx { get; set; }
+
+
+ public string Motion { get; set; }
+ public Boolean BCD_1D { get; set; }
+ public Boolean BCD_QR { get; set; }
+ public Boolean BCD_DM { get; set; }
+
+ public UInt16 vOption { get; set; }
+ public UInt16 vSIDInfo { get; set; }
+ public UInt16 vJobInfo { get; set; }
+ public UInt16 vSIDConv1 { get; set; }
+
+ public string Def_Vname { get; set; }
+ public string Def_MFG { get; set; }
+
+ public Boolean IgnoreOtherBarcode { get; set; }
+ public bool DisableCamera { get; set; }
+ public bool DisablePrinter { get; set; }
+ public bool CheckSIDExsit { get; set; }
+ //public string ByPassSID { get; set; }
+
+
+
+ public ModelInfoV()
+ {
+ vOption = vSIDInfo = vJobInfo = vSIDConv1 = 0;
+ }
+
+ public void ReadValue(DataSet1.OPModelRow dr)
+ {
+ this.Title = dr.Title;
+ this.Code = dr.Code;
+ this.idx = dr.idx;
+ this.Motion = dr.Motion;
+ this.BCD_1D = dr.BCD_1D;
+ this.BCD_QR = dr.BCD_QR;
+ this.BCD_DM = dr.BCD_DM;
+ this.vOption = dr.vOption;
+ this.vJobInfo = dr.vJobInfo;
+ this.vSIDInfo = dr.vSIDInfo;
+ this.vSIDConv1 = dr.vSIDConv;
+ this.Def_MFG = dr.Def_MFG;
+ this.Def_Vname = dr.Def_VName;
+ this.IgnoreOtherBarcode = dr.IgnoreOtherBarcode;
+ this.DisableCamera = dr.DisableCamera;
+ this.DisablePrinter = dr.DisablePrinter;
+ this.CheckSIDExsit = dr.CheckSIDExsit;
+ //this.ByPassSID = dr.ByPassSID;
+ }
+ public bool WriteValue()
+ {
+ var model = PUB.mdm.GetDataV(this.Title);
+ return WriteValue(ref model);
+ }
+ public bool WriteValue(ref DataSet1.OPModelRow dr)
+ {
+ try
+ {
+ dr.Title = this.Title;
+ dr.Code = this.Code;
+ dr.Motion = this.Motion;
+ dr.BCD_1D = this.BCD_1D;
+ dr.BCD_QR = this.BCD_QR;
+ dr.BCD_DM = this.BCD_DM;
+ dr.vOption = this.vOption;
+ dr.vSIDInfo = this.vSIDInfo;
+ dr.vJobInfo = this.vJobInfo;
+ dr.vSIDConv = this.vSIDConv1;
+ dr.Def_MFG = this.Def_MFG;
+ dr.Def_VName = this.Def_Vname;
+ dr.IgnoreOtherBarcode = this.IgnoreOtherBarcode;
+ dr.DisableCamera = this.DisableCamera;
+ dr.DisablePrinter = this.DisablePrinter;
+ dr.CheckSIDExsit = this.CheckSIDExsit;
+
+ dr.EndEdit();
+ PUB.mdm.SaveModelV();
+ return true;
+ }
+ catch (Exception ex)
+ {
+ PUB.log.AddE("write model error" + ex.Message);
+ return false;
+ }
+ }
+ }
+
+ [TypeConverterAttribute(typeof(ExpandableObjectConverter))]
+ public class RoiOffset
+ {
+ [DisplayName("Horizon"), Description("수직(Y축) 변화 값(+는 아래쪽,-는 위쪽)")]
+ public double Y { get; set; }
+ [DisplayName("Vertical"), Description("수평(X축) 변화 값(+는 오른쪽,-는 왼쪽)")]
+ public double X { get; set; }
+ [Browsable(false)]
+ public bool IsEmpty { get { if (Y == 0 && X == 0) return true; else return false; } }
+
+ public RoiOffset(double start = 0.0, double end = 0.0)
+ {
+ this.Y = start;
+ this.X = end;
+ }
+ public override string ToString()
+ {
+ return string.Format("{0},{1}", Y, X);
+ }
+ public string toPointStr()
+ {
+ return string.Format("{0};{1}", Y, X);
+ }
+ }
+
+
+ [TypeConverterAttribute(typeof(ExpandableObjectConverter))]
+ public class Range
+ {
+ [DisplayName("시작값")]
+ public uint Start { get; set; }
+ [DisplayName("종료값")]
+ public uint End { get; set; }
+ [Browsable(false)]
+ public bool IsEmpty { get { if (Start == 0 && End == 0) return true; else return false; } }
+
+ public Range(UInt16 start, UInt16 end) : this((uint)start, (uint)end) { }
+ public Range(uint start = 0, uint end = 0)
+ {
+ this.Start = start;
+ this.End = end;
+ }
+ public static implicit operator RangeF(Range p)
+ {
+ return new RangeF((float)p.Start, (float)p.End);
+ }
+ public override string ToString()
+ {
+ return string.Format("{0}~{1}", Start, End);
+ }
+ }
+ [TypeConverterAttribute(typeof(ExpandableObjectConverter))]
+ public class RangeF
+ {
+ [DisplayName("시작값")]
+ public float Start { get; set; }
+ [DisplayName("종료값")]
+ public float End { get; set; }
+ [Browsable(false)]
+ public bool IsEmpty { get { if (Start == 0f && End == 0f) return true; else return false; } }
+ public RangeF(float start = 0f, float end = 0f)
+ {
+ this.Start = start;
+ this.End = end;
+ }
+ public static implicit operator Range(RangeF p)
+ {
+ return new Range((uint)p.Start, (uint)p.End);
+ }
+ public override string ToString()
+ {
+ return string.Format("{0}~{1}", Start, End);
+ }
+ }
+
+ [TypeConverterAttribute(typeof(ExpandableObjectConverter))]
+ public class CVisionProcess
+ {
+
+ [Category("특수설정(개발자용)"), Description("미사용(DOT 인식시에 사용했음)")]
+ public UInt16 halfKernel { get; set; }
+ [Category("특수설정(개발자용)"), Description("미사용(DOT 인식시에 사용했음)")]
+ public UInt16 Constant { get; set; }
+ [Category("특수설정(개발자용)"), DisplayName("MP_Dilate"), Description("미사용(DOT 인식시에 사용했음)")]
+ public UInt16 dilate { get; set; }
+ [Category("특수설정(개발자용)"), DisplayName("MP_Erode"), Description("미사용(DOT 인식시에 사용했음)")]
+ public UInt16 erode { get; set; }
+ [Category("특수설정(개발자용)"), DisplayName("MP_Open"), Description("미사용(DOT 인식시에 사용했음)")]
+ public UInt16 open { get; set; }
+ [Category("특수설정(개발자용)"), DisplayName("MP_Open"), Description("미사용(DOT 인식시에 사용했음)")]
+ public UInt32 segment_threshold { get; set; }
+ [Category("특수설정(개발자용)"), DisplayName("MP_Open"), Description("미사용(DOT 인식시에 사용했음)")]
+ public Boolean isBlack { get; set; }
+ [Category("특수설정(개발자용)"), DisplayName("MP_Open"), Description("미사용(DOT 인식시에 사용했음)")]
+ public UInt32 judg_runcount { get; set; }
+
+
+ [Category("유닛 감지"), DisplayName("밝기 기준값"), Description("입력된 값 이상의 데이터를 취합니다. 이 값이 낮을 수록 검출값이 높아지게 됩니다. 이 기준값으로 검출된 값으로 판정을 합니다. 유닛은 밝은 데이터를 보고 판정 하므로 이 기준값 이상의 데이터가 검출이 됩니다")]
+ public byte detect_threhosld { get; set; }
+ [Category("유닛 감지"), DisplayName("판정 기준값"), Description("판정을 하는 기준 값입니다. 밝기기준값으로 인해 검출된 값이 5000이라면. 이 판정 기준에 입력된 값이 5000보다 크면 유닛이 존재하는 것으로 판정하며, 그 보다 낮을 때에는 유닛이 없는 'Empty' 유닛으로 감지 됩니다")]
+ public UInt16 detect_count { get; set; }
+ [Category("유닛 감지"), DisplayName("*예외영역 판정기준"), Description("빈 유닛(=Empty) 일때 셔틀 프레임의 빛 반사가 심할 경우 해당 반사값에 의해 유닛이 감지됩니다. 그러한 데이터를 제거하기위해 이 값이 사용되며, 유닛검출에 사용하는 흰색영역의 값외에 추가로 검은색 덩어리를 검사합니다. 설정한 값사이의 검은색 덩어리가 검출되면 'Empty' 유닛으로 감지 됩니다")]
+ public Point detect_blobrange { get; set; }
+
+ [Category("2D 감지"), DisplayName("밝기 기준값"), Description("입력된 값 이하의 데이터를 취합니다. 이 값이 낮을 수록 검출값도 낮아지게 됩니다. 이 기준값으로 검출된 값으로 판정을 합니다. 2D는 어두운 데이터를 보고 판정 하므로 이 기준값 이하의 데이터가 검출이 됩니다")]
+ public byte detectDM_threhosld { get; set; }
+ [Category("2D 감지"), DisplayName("판정 기준값"), Description("판정을 하는 기준 값입니다. 밝기기준값으로 인해 검출된 값이 5000이라면. 이 판정 기준에 입력된 값이 5000보다 크면 ID가 존재하는 것으로 판정하며, 그 보다 낮을 때에는 ID가 없는 'New' 유닛으로 감지 됩니다")]
+ public UInt16 detectDM_count { get; set; }
+
+ public CVisionProcess()
+ {
+
+ }
+ public override string ToString()
+ {
+ return "비젼 설정 값";
+ }
+ }
+
+}
diff --git a/Handler/Project/Class/PositionData.cs b/Handler/Project/Class/PositionData.cs
new file mode 100644
index 0000000..112ad8e
--- /dev/null
+++ b/Handler/Project/Class/PositionData.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Project
+{
+ public class PositionData
+ {
+ public int index { get; set; }
+ public string title { get; set; }
+ public double value { get; set; }
+ public double speed { get; set; }
+ public double acc { get; set; }
+ public double dcc { get; set; }
+ public PositionData()
+ {
+ index = -1;
+ title = string.Empty;
+ value = 0.0;
+ this.speed = 0.0;
+ this.acc = 100.0;
+ this.dcc = 0.0;
+ }
+ public PositionData(int idx_, string title_, double value_)
+ {
+ this.index = idx_;
+ this.title = title_;
+ this.value = value_;
+ }
+ }
+
+}
diff --git a/Handler/Project/Class/Reel.cs b/Handler/Project/Class/Reel.cs
new file mode 100644
index 0000000..fe2eb2f
--- /dev/null
+++ b/Handler/Project/Class/Reel.cs
@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Project.Class
+{
+ public class Reel
+ {
+ public string sid { get; set; }
+ public string lot { get; set; }
+ public string mfg { get; set; }
+ public int qty { get; set; }
+ public string id { get; set; }
+ //public string date { get; set; }
+ public string partnum { get; set; }
+ public string manu { get; set; }
+
+ public Reel()
+ {
+ Clear();
+ }
+ public void Clear()
+ {
+ sid = string.Empty;
+ lot = string.Empty;
+ mfg = string.Empty;
+ lot = string.Empty;
+ id = string.Empty;
+ //date = string.Empty;
+ partnum = string.Empty;
+ manu = string.Empty;
+ qty = 0;
+ }
+ public Reel(string _sid, string _lot, string _manu, int _qty, string _id, string _mfgdate, string _partnum)
+ {
+ int sidNum = 0;
+ if (int.TryParse(_sid, out sidNum) && sidNum.ToString().Length == 9)
+ sid = sidNum.ToString();
+ else
+ throw new Exception("SID가 숫자가 아니거나 9자리 숫자가 아닙니다.");
+
+ lot = _lot;
+ mfg = _mfgdate;
+ qty = _qty;
+ id = _id;
+ partnum = _partnum;
+ manu = _manu;
+ }
+ public Reel(string qrbarcodestr)
+ {
+ var spData = qrbarcodestr.Split(';');
+ if (spData.Length < 6)
+ throw new Exception("Barcode Length가 적습니다.");
+
+ sid = spData[0];
+ lot = spData[1];
+ manu = spData[2];
+
+ int _qty = 0;
+
+ if (int.TryParse(spData[3], out _qty))
+ qty = _qty;
+ else
+ throw new Exception("수량란에 숫자 정보가 아닙니다.");
+
+ id = spData[4];
+ mfg = spData[5];
+ if (spData.Length > 6) partnum = spData[6];
+ else partnum = string.Empty;
+ }
+ }
+}
diff --git a/Handler/Project/Class/RegexPattern.cs b/Handler/Project/Class/RegexPattern.cs
new file mode 100644
index 0000000..4849d2b
--- /dev/null
+++ b/Handler/Project/Class/RegexPattern.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Project.Class
+{
+
+ public class RegexPattern
+ {
+ public string Customer { get; set; }
+ public string Pattern { get; set; }
+ public string Description { get; set; }
+ public bool IsTrust { get; set; }
+ public bool IsAmkStd { get; set; }
+ public Boolean IsEnable { get; set; }
+ public RegexGroupMatch[] Groups { get; set; }
+ public string Symbol { get; set; }
+ public int Seq { get; set; }
+ public RegexPattern()
+ {
+ Seq = 0;
+ Groups = null;
+ Pattern = string.Empty;
+ Description = string.Empty;
+ Customer = string.Empty;
+ IsTrust = false;
+ IsAmkStd = false;
+ Symbol = string.Empty;
+ }
+ }
+
+
+ public class RegexGroupMatch
+ {
+ ///
+ /// 1~
+ ///
+ public int GroupNo { get; set; }
+
+ ///
+ /// RID,SID,VLOT,MFG,PART,QTY,CUST,CUSTCODE,VNAME,
+ ///
+ public string TargetPos { get; set; }
+ public RegexGroupMatch()
+ {
+ GroupNo = 0;
+ TargetPos = string.Empty;
+ }
+ }
+}
diff --git a/Handler/Project/Class/StatusMessage.cs b/Handler/Project/Class/StatusMessage.cs
new file mode 100644
index 0000000..adb6835
--- /dev/null
+++ b/Handler/Project/Class/StatusMessage.cs
@@ -0,0 +1,184 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Project.Class
+{
+ public enum eStatusMesage : byte
+ {
+ Front = 0,
+ Rear,
+ TopJig,
+ Main,
+ }
+ public class StatusMessage
+ {
+
+ Dictionary message;
+ public StatusMessage()
+ {
+ this.message = new Dictionary();
+ }
+ public StatusMessageFormat get(eStatusMesage msg)
+ {
+ lock (this.message)
+ {
+ if (this.message.ContainsKey(msg) == false)
+ {
+ var nemsg = new StatusMessageFormat
+ {
+ Message = string.Empty
+ };
+ this.message.Add(msg, nemsg);
+ return nemsg;
+ }
+
+ else
+ return this.message[msg];
+ }
+ }
+
+ public void Clear()
+ {
+
+ }
+
+ public void set(eStatusMesage msg, StatusMessageFormat data)
+ {
+ lock (this.message)
+ {
+ if (this.message.ContainsKey(msg) == false)
+ this.message.Add(msg, data);
+ else
+ this.message[msg] = data;
+ }
+
+ }
+ public void set(eStatusMesage msg, string data, int progval = 0, int progmax = 0)
+ {
+ if (data.StartsWith("[") && data.Contains("]"))
+ {
+ var buf = data.Split(']');
+ var cate = buf[0].Substring(1);
+ var body = string.Join("]", buf, 1, buf.Length - 1);
+ set(msg, cate, body, Color.Black, progval, progmax);
+ }
+ else set(msg, string.Empty, data, Color.Black, progval, progmax);
+
+ }
+ //public void set(eStatusMesage msg, string cate, string data, int progval = 0, int progmax = 0)
+ //{
+ // set(msg, cate, data, Color.Black, progval, progmax);
+
+ //}
+
+ public void set(eStatusMesage msg, string cate, string data, Color fColor, int progval = 0, int progmax = 0)
+ {
+ lock (this.message)
+ {
+ if (this.message.ContainsKey(msg) == false)
+ {
+ var nemsg = new StatusMessageFormat
+ {
+ Category = cate,
+ Message = data,
+ fColor = fColor,
+ ProgressMax = progmax,
+ ProgressValue = progval
+ };
+ this.message.Add(msg, nemsg);
+ }
+ else
+ {
+ var m = this.message[msg];
+ m.Category = cate;
+ m.Message = data;
+ m.fColor = fColor;
+ if (progval != 0 || progmax != 0)
+ {
+ m.ProgressValue = progval;
+ m.ProgressMax = progmax;
+ }
+ }
+ }
+
+
+ }
+ public void set(eStatusMesage msg, string data, Color fColor, Color bColor1, Color bColor2)
+ {
+ lock (this.message)
+ {
+ if (this.message.ContainsKey(msg) == false)
+ {
+ var nemsg = new StatusMessageFormat
+ {
+ Message = data,
+ fColor = fColor,
+ bColor1 = bColor1,
+ bColor2 = bColor2
+ };
+ this.message.Add(msg, nemsg);
+ }
+ else
+ {
+ var m = this.message[msg];
+ m.Message = data;
+ m.fColor = fColor;
+ m.bColor2 = bColor2;
+ m.bColor1 = bColor1;
+ }
+ }
+
+
+ }
+ }
+ public class StatusMessageFormat
+ {
+ public string Category { get; set; }
+ public string Message { get; set; }
+ public Color fColor { get; set; }
+ public Color bColor1 { get; set; }
+ public Color bColor2 { get; set; }
+ public int ProgressValue { get; set; }
+ public int ProgressMax { get; set; }
+ public int ProgressPerc
+ {
+ get
+ {
+ if (ProgressMax == 0 || ProgressValue == 0) return 0;
+ return (int)(ProgressValue / (ProgressMax * 1.0));
+ }
+ }
+ public StatusMessageFormat()
+ {
+ Clear();
+ }
+ void setMessage(string t, string m, Color c)
+ {
+ this.Category = t;
+ this.Message = m;
+ this.fColor = c;
+
+ }
+ void setMessage(string m, Color c)
+ {
+ this.Category = string.Empty;
+ this.Message = m;
+ this.fColor = c;
+
+ }
+ public void Clear()
+ {
+ ProgressValue = 0;
+ ProgressMax = 0;
+ Category = string.Empty;
+ Message = string.Empty;
+ fColor = Color.Black;
+ bColor1 = Color.White;
+ bColor2 = Color.White;
+ }
+ }
+}
diff --git a/Handler/Project/Class/VisionData.cs b/Handler/Project/Class/VisionData.cs
new file mode 100644
index 0000000..2039100
--- /dev/null
+++ b/Handler/Project/Class/VisionData.cs
@@ -0,0 +1,935 @@
+using Emgu.CV.Structure;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Drawing;
+using System.Collections.Concurrent;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+
+namespace Project.Class
+{
+ public class VisionData : INotifyPropertyChanged
+ {
+ public int RetryLoader { get; set; }
+ public List bcdMessage { get; set; }
+ public Boolean LightOn { get; set; }
+ public DateTime STime; //비젼시작시간
+ public DateTime ETime; //비젼종료시간
+ public TimeSpan RunTime { get { return ETime - STime; } } //비젼동작시간
+ public DateTime GTime; //이미지수집시간
+ public string FileNameL; //로딩존 촬영
+ public string FileNameU; //언로딩존 촬영
+ public Boolean Complete;
+
+ //public Boolean AngleQR { get; set; }
+ //public Boolean AngleSTD { get; set; }
+ //public double Angle { get; set; }
+
+ //public Boolean IsAngleSet
+ //{
+ // get
+ // {
+ // if (AngleQR == false && AngleSTD == false && Angle == 0.0) return true;
+ // else return false;
+ // }
+ //}
+
+ ///
+ /// 부착위치에따른 추가회전
+ ///
+ public double PositionAngle { get; set; }
+ public double ApplyAngle { get; set; } //적용된 회전 각도
+ public Boolean NeedCylinderForward { get; set; } //부착시 실린더를 올려야하는가
+ public Boolean ApplyOffset { get; set; }
+ public Boolean BaseAngle(out string msg, out KeyenceBarcodeData bcd)
+ {
+
+ msg = string.Empty;
+ bcd = null;
+
+ //데이터없다면 회전하지 못한다.
+ if (this.barcodelist == null || this.barcodelist.Count < 1)
+ {
+ msg = "No barcode data";
+ return false;
+ }
+
+ //사용자가 확정한 코드를 우선으로 한다
+ KeyValuePair bcddata;
+
+ var bcdCanList = barcodelist.Where(t => t.Value.Ignore == false).ToList();
+ bcddata = bcdCanList.Where(t => t.Value.UserActive).FirstOrDefault();
+ if (bcddata.Value != null)
+ {
+ bcd = bcddata.Value;
+ msg = "User Active";
+ return true;
+ }
+
+ //표준바코드를 최우선 으로 사용
+ //15자리 기존 바코드는 angle 로 사용하지 않는다.
+ //이것은 각도가 일정치 않게 붙어지기 때문이다
+ bcddata = bcdCanList.Where(t => t.Value.isSTDBarcode && t.Value.isNewLen15 == false).FirstOrDefault();
+ if (bcddata.Value != null)
+ {
+ bcd = bcddata.Value;
+ msg = "STD Barcode";
+ return true;
+ }
+
+ //QR코드를 우선으로 사용 - return 릴은 적용하지 안게한다.
+ //RQ코드가 적용되지 않게한다 210824
+ bcddata = bcdCanList.Where(t => t.Value.barcodeSymbol == "1" && t.Value.isNewLen15 == false && t.Value.Data.EndsWith(";;;") == false && t.Value.Data.StartsWith("RQ") == false).FirstOrDefault();
+ if (bcddata.Value != null)
+ {
+ bcd = bcddata.Value;
+ msg = "QR Code";
+ return true;
+ }
+
+ //datamatrix, pdf417
+ bcddata = bcdCanList.Where(t => t.Value.barcodeSymbol != "11" && t.Value.barcodeSymbol != "6" && t.Value.Data.StartsWith("RQ") == false).FirstOrDefault();
+ if (bcddata.Value != null)
+ {
+ bcd = bcddata.Value;
+ return true;
+ }
+
+ //첫번쨰 아이템을 우선으로 사용
+ if (bcdCanList.Count == 1)
+ {
+ bcd = bcdCanList.First().Value;
+ msg = "Only One Barcode = " + bcd.Data;
+ return true;
+ }
+ else if (bcdCanList.Count > 1)
+ {
+ //여러개가 있음
+ bcddata = bcdCanList.Where(t => t.Value.barcodeSymbol == "0").FirstOrDefault();
+ if (bcd != null)
+ {
+ bcd = bcddata.Value;
+ msg = "1D Data";
+ return true;
+ }
+ else
+ {
+ bcd = bcdCanList.First().Value;//[0];
+ msg = $"first({bcd.barcodeSymbol}:{bcd.Data})";
+ return true;
+ }
+ }
+ else
+ {
+ bcd = null;
+ msg = "no data";
+ return false;
+ }
+
+ // angle = bcd.Angle;
+ //return true;
+ } //모션회전각도
+ public Boolean Ready { get; set; }
+ public Boolean ServerUpdate { get; set; }
+
+ public Boolean Confirm
+ {
+ get
+ {
+ return ConfirmAuto || ConfirmUser || ConfirmBypass;
+ }
+ }
+ public Boolean ConfirmUser { get; set; }
+ public Boolean ConfirmAuto { get; set; }
+ public bool ConfirmBypass { get; set; }
+
+ public Boolean ValidSkipbyUser { get; set; }
+
+ private string _rid = string.Empty;
+ private string _qty = string.Empty;
+ private string _qty0 = string.Empty;
+ private string _sid0 = string.Empty;
+ private string _sid = string.Empty;
+ private string _rid0 = string.Empty;
+ private string _vlot = string.Empty;
+ private string _vname = string.Empty;
+ private string _mfgdate = string.Empty;
+ private string _partno = string.Empty;
+ private string _custcode = string.Empty;
+ private string _custname = string.Empty;
+ private string _batch = string.Empty;
+ private string _qtymax = string.Empty;
+ private string _mcn = string.Empty;
+
+ public bool SID_Trust { get; set; }
+ public bool RID_Trust { get; set; }
+ public bool VLOT_Trust { get; set; }
+ public bool MFGDATE_Trust { get; set; }
+ public bool QTY_Trust { get; set; }
+ public bool PARTNO_Trust { get; set; }
+ public bool VNAME_Trust { get; set; }
+ public string Target { get; set; }
+
+ public string MCN
+ {
+ get { return _mcn; }
+ set { _mcn = value; OnPropertyChanged(); }
+ }
+
+
+ ///
+ /// Original QTY
+ ///
+ public string QTY0
+ {
+ get { return _qty0; }
+ set { _qty0 = value; OnPropertyChanged(); }
+ }
+
+ ///
+ /// Qty
+ ///
+ public string QTY
+ {
+ get { return _qty; }
+ set { _qty = value; OnPropertyChanged(); }
+ }
+
+ ///
+ /// QTY값이 RQ에서 입력된 데이터인가?
+ ///
+ public Boolean QTYRQ { get; set; }
+
+ public string RID0
+ {
+ get { return _rid0; }
+ set { _rid0 = value; OnPropertyChanged(); }
+ }
+ public string VLOT
+ {
+ get { return _vlot; }
+ set { _vlot = value; OnPropertyChanged(); }
+ }
+ public string VNAME
+ {
+ get { return _vname; }
+ set { _vname = value; OnPropertyChanged(); }
+ }
+ public string MFGDATE
+ {
+ get { return _mfgdate; }
+ set { _mfgdate = value; OnPropertyChanged(); }
+ }
+ public string PARTNO
+ {
+ get { return _partno; }
+ set { _partno = value; OnPropertyChanged(); }
+ }
+
+
+ ///
+ /// Original SID
+ ///
+ public string SID0
+ {
+ get { return _sid0; }
+ set { _sid0 = value; OnPropertyChanged(); }
+ }
+
+ public string BATCH
+ {
+ get
+ {
+ return _batch;
+ }
+ set
+ {
+ _batch = value; OnPropertyChanged();
+ }
+ }
+
+ public string QTYMAX
+ {
+ get
+ {
+ return _qtymax;
+ }
+ set
+ {
+ _qtymax = value; OnPropertyChanged();
+ }
+ }
+
+
+ public string SID
+ {
+ get { return _sid; }
+ set { _sid = value; OnPropertyChanged(); }
+ }
+
+ private void OnPropertyChanged([CallerMemberName] string caller = "")
+ {
+ PropertyChanged?.Invoke(this,
+ new PropertyChangedEventArgs(caller));
+ }
+
+
+ ///
+ /// Reel ID
+ ///
+ public string RID
+ {
+ get { return _rid; }
+ private set { _rid = value; OnPropertyChanged(); }
+ }
+
+ ///
+ /// 릴 ID를 설정합니다.trust 상태를 자동으로 true 값으로 전환합니다
+ ///
+ ///
+ ///
+ public void SetRID(string value, string reason)
+ {
+ //값이 변경될때 로그에 변경
+ if (_rid.Equals(value) == false)
+ {
+ PUB.AddDebugLog(string.Format("RID 변경 {0} -> {1} by {2}", _rid, value, reason));
+ }
+ RID = value;
+ RID_Trust = true;
+ }
+
+ public Boolean RIDNew { get; set; }
+ public Boolean HASHEADER { get; set; }
+
+
+
+ public string CUSTCODE
+ {
+ get { return _custcode; }
+ set { _custcode = value; OnPropertyChanged(); }
+ }
+ public string CUSTNAME
+ {
+ get { return _custname; }
+ set { _custname = value; OnPropertyChanged(); }
+ }
+
+ ///
+ /// 데이터가 모두존재하는지 확인
+ ///
+ public Boolean DataValid
+ {
+ get
+ {
+ if (Confirm == false) return false;
+ return QTY.isEmpty() == false &&
+ SID.isEmpty() == false &&
+ RID.isEmpty() == false &&
+ VLOT.isEmpty() == false &&
+ VNAME.isEmpty() == false &&
+ MFGDATE.isEmpty() == false &&
+ PARTNO.isEmpty();
+ }
+ }
+
+
+ public Boolean PrintPositionCheck { get; set; }
+ public string PrintPositionData { get; set; }
+
+ //상단위치에 프린트를 할것인가?
+ //프린트위치에 따른다
+ public ePrintPutPos GetPrintPutPosition()
+ {
+ //하단에 찍는경우이다
+ if (PrintPositionData == "1" ||
+ PrintPositionData == "2" ||
+ PrintPositionData == "3")
+ {
+ return ePrintPutPos.Bottom;
+ }
+ else if (PrintPositionData == "7" ||
+ PrintPositionData == "8" ||
+ PrintPositionData == "9")
+ {
+ return ePrintPutPos.Top;
+ }
+ else if (PrintPositionData == "4") //왼쪽
+ {
+ if (ReelSize == eCartSize.Inch7)
+ return ePrintPutPos.Top;
+ else
+ return ePrintPutPos.Middle;
+ }
+ else if (PrintPositionData == "6") //오른쪽
+ {
+ if (ReelSize == eCartSize.Inch7)
+ return ePrintPutPos.Top;
+ else
+ return ePrintPutPos.Middle;
+ }
+ else return ePrintPutPos.None;
+
+ }
+ //public string LabelPos { get; set; }
+ //public Boolean PrintForce { get; set; }
+
+ public eCartSize ReelSize { get; set; }
+
+ public string QTY2 { get; set; } //바코드수량
+ public string SID2 { get; set; } //바코드
+ public string RID2 { get; set; } //바코드
+ public string VLOT2 { get; set; }
+ public string VNAME2 { get; set; }
+ public string MFGDATE2 { get; set; }
+ public string PARTNO2 { get; set; }
+
+ public Emgu.CV.Mat imageF { get; private set; } //최종수집된 이미지
+ public Emgu.CV.Mat imageR { get; private set; } //최종수집된 이미지
+
+ public void SetImage(Emgu.CV.Mat imgF_, Emgu.CV.Mat imgR_)
+ {
+ if (this.imageF != null)
+ {
+ this.imageF.Dispose();
+ this.imageF = null;
+ }
+
+ //이미지를 신규로 해석하고 데이터를 복사한다 210121
+ this.imageF = new Emgu.CV.Mat(imgF_.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
+ imgF_.CopyTo(this.imageF);
+
+ if (this.imageR != null)
+ {
+ this.imageR.Dispose();
+ this.imageR = null;
+ }
+
+ //이미지를 신규로 해석하고 데이터를 복사한다 210121
+ this.imageR = new Emgu.CV.Mat(imgF_.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
+ imgR_.CopyTo(this.imageR);
+
+ }
+
+ public void SetImage(Emgu.CV.Mat img_)
+ {
+ if (this.imageF != null)
+ {
+ this.imageF.Dispose();
+ this.imageF = null;
+ }
+
+
+ if (this.imageR != null)
+ {
+ this.imageR.Dispose();
+ this.imageR = null;
+ }
+
+ //이미지를 신규로 해석하고 데이터를 복사한다 210121
+ this.imageF = new Emgu.CV.Mat(img_.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
+ img_.CopyTo(this.imageF);
+
+ }
+
+
+ public System.Drawing.Color GetColorByBarcodeCount(int idx)
+ {
+ if (QRPositionData[idx] > 0) return Color.Gold; //QR데이터가있다면 금색으로 한다
+
+ var Cnt = LabelPositionData[idx];
+ if (Cnt == MaxBarcodePosData) return Color.Purple;
+ else if (Cnt == 0) return Color.FromArgb(32, 32, 32);
+ {
+ //나머진 숫자별로 데이터를 표시한다 (
+ var GValue = Cnt * 10;
+ if (GValue > 255) GValue = 255;
+ return Color.FromArgb(32, 32, GValue);
+ }
+
+ }
+ public Boolean isMaxBarcodePosition(int idx)
+ {
+ return LabelPositionData[idx] == MaxBarcodePosData;
+ }
+
+ public byte[] QRPositionData { get; private set; }
+ public byte[] LabelPositionData { get; private set; }
+
+ public ConcurrentDictionary barcodelist;
+ public Boolean BarcodeTouched = false;
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ //리더기로부터 읽은 자료 모두가 들어잇다
+ //public List barcodelist
+ //{
+ // get { return _barcodelist; }
+ // set
+ // {
+ // this._barcodelist = value;
+ // UpdateBarcodePositionData();
+ // }
+ //}
+
+
+
+ public byte MaxBarcodePosData { get; private set; }
+ ///
+ /// 바코드목록을 이용해서 라벨위치 분포값을 변경합낟.
+ /// 해당 위치값은 labelposdata로 접근가능함
+ ///
+ public void UpdateBarcodePositionData()
+ {
+ LabelPositionData[0] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 1).Count();
+ LabelPositionData[1] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 2).Count();
+ LabelPositionData[2] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 3).Count();
+
+ LabelPositionData[3] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 4).Count();
+ LabelPositionData[4] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 6).Count();
+
+ LabelPositionData[5] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 7).Count();
+ LabelPositionData[6] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 8).Count();
+ LabelPositionData[7] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 9).Count();
+
+ QRPositionData[0] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 1 && t.Value.AmkorData.isValid).Count();
+ QRPositionData[1] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 2 && t.Value.AmkorData.isValid).Count();
+ QRPositionData[2] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 3 && t.Value.AmkorData.isValid).Count();
+
+ QRPositionData[3] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 4 && t.Value.AmkorData.isValid).Count();
+ QRPositionData[4] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 6 && t.Value.AmkorData.isValid).Count();
+
+ QRPositionData[5] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 7 && t.Value.AmkorData.isValid).Count();
+ QRPositionData[6] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 8 && t.Value.AmkorData.isValid).Count();
+ QRPositionData[7] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 9 && t.Value.AmkorData.isValid).Count();
+
+ MaxBarcodePosData = LabelPositionData.Max(t => t);
+ }
+
+ ///
+ /// Data1(인쇄전 인식데이터) 과 Data2(QR)가 동일한지 비교합니다.
+ ///
+ public Boolean MatchValidation
+ {
+ get
+ {
+ if (PARTNO == null) this.PARTNO = string.Empty;
+ if (PARTNO2 == null) this.PARTNO2 = string.Empty;
+ if (QTY == null) QTY = string.Empty;
+ if (QTY2 == null) QTY2 = string.Empty;
+ if (SID == null) SID = string.Empty;
+ if (SID2 == null) SID2 = string.Empty;
+ if (VLOT == null) VLOT = string.Empty;
+ if (VLOT2 == null) VLOT2 = string.Empty;
+ if (PARTNO == null) PARTNO = string.Empty;
+ if (PARTNO2 == null) PARTNO2 = string.Empty;
+
+ if (QTY.Equals(QTY2) == false)
+ {
+ PUB.log.AddE(string.Format("QR검증실패 수량:{0} != {1}", QTY, QTY2));
+ return false;
+ }
+ if (RID.Equals(RID2) == false)
+ {
+ PUB.log.AddE(string.Format("QR검증실패 RID:{0} != {1}", RID, RID2));
+ return false;
+ }
+ if (VLOT.Equals(VLOT2) == false)
+ {
+ PUB.log.AddE(string.Format("QR검증실패 VLOT:{0} != {1}", VLOT, VLOT2));
+ return false;
+ }
+ if (PARTNO.Equals(PARTNO2) == false)
+ {
+ PUB.log.AddE(string.Format("QR검증실패 PARTNO:{0} != {1}", PARTNO, PARTNO2));
+ return false;
+ }
+ if (SID.Equals(SID2) == false)
+ {
+ PUB.log.AddE(string.Format("QR검증실패 SID:{0} != {1}", SID, SID2));
+ return false;
+ }
+
+ return true;
+ }
+ }
+
+ public string QRInputRaw { get; set; } //입력에 사용한 RAW
+ public string QROutRaw { get; set; } //부착된 QR코드의 값
+ public string ZPL { get; set; } //출력시 사용한 ZPL
+ public string PrintQRData { get; set; } //출력시 사용한 ZPL에 포함된 QR데이터
+ public string LastQueryString = string.Empty;
+
+ public VisionData(string reason)
+ {
+ Clear(reason, false);
+ }
+ public Boolean isEmpty()
+ {
+ return RID.isEmpty();
+ }
+ public void Clear(string reason, Boolean timeBackup)
+ {
+ LastQueryString = string.Empty;
+ RetryLoader = 0;
+ ApplyOffset = false;
+ var baktime = new DateTime(1982, 11, 23);
+ if (timeBackup) baktime = this.STime;
+ bcdMessage = new List();
+
+ PositionAngle = 0;
+ HASHEADER = false;
+ CUSTCODE = string.Empty;
+ CUSTNAME = string.Empty;
+ RID0 = string.Empty;
+ RIDNew = false;
+ LightOn = false;
+ //SCODE = string.Empty;
+ ValidSkipbyUser = false;
+ NeedCylinderForward = false;
+ ApplyAngle = 0;
+ MaxBarcodePosData = 0;
+ PrintPositionCheck = false;
+ LabelPositionData = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
+ QRPositionData = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
+ ReelSize = eCartSize.None;
+ // PrintForce = false;
+ ConfirmAuto = false;
+ ConfirmUser = false;
+ ConfirmBypass = false;
+ if (imageF != null)
+ {
+ imageF.Dispose();
+ imageF = null;
+ }
+ if (imageR != null)
+ {
+ imageR.Dispose();
+ imageR = null;
+ }
+ ServerUpdate = false;
+ PrintPositionData = "";
+ //LabelPos = "";
+ if (barcodelist != null) barcodelist.Clear();
+ else barcodelist = new ConcurrentDictionary();
+
+ QRInputRaw = string.Empty;
+ QROutRaw = string.Empty;
+ ZPL = string.Empty;
+ PrintQRData = string.Empty;
+
+ STime = baktime;// DateTime.Parse("1982-11-23");
+ ETime = DateTime.Parse("1982-11-23");
+ GTime = DateTime.Parse("1982-11-23");
+ Complete = false;
+ //Angle = 0.0;
+ //AngleQR = false;
+ //AngleSTD = false;
+ MCN = string.Empty;
+ Target = string.Empty;
+ Ready = false;
+ QTY0 = string.Empty;
+ QTY = string.Empty;// string.Empty;
+ QTYRQ = false;
+ //PUB.log.AddI($"비젼개체 CLEAR 로 RQ 상태 초기화(false)");
+
+ BATCH = string.Empty;
+ QTYMAX = string.Empty;
+
+ SID0 = string.Empty;
+ SID = string.Empty;
+ //RID = string.Empty;
+ SetRID(string.Empty, reason);
+ VLOT = string.Empty;
+ MFGDATE = string.Empty;
+ VNAME = string.Empty;
+ PARTNO = string.Empty;
+
+ QTY2 = "0";// string.Empty;
+ SID2 = string.Empty;
+ RID2 = string.Empty;
+ VLOT2 = string.Empty;
+ MFGDATE2 = string.Empty;
+ VNAME2 = string.Empty;
+ PARTNO2 = string.Empty;
+
+ FileNameL = string.Empty;
+ FileNameU = string.Empty;
+
+ MFGDATE_Trust = false;
+ PARTNO_Trust = false;
+ QTY_Trust = false;
+ SID_Trust = false;
+ RID_Trust = false;
+ VLOT_Trust = false;
+ VNAME_Trust = false;
+
+ BarcodeTouched = false;
+ MCN = string.Empty;
+ Target = string.Empty;
+
+ PUB.log.Add($"비젼데이터삭제({reason})");
+ }
+
+ public void CopyTo(ref VisionData obj)
+ {
+ //바코드메세지 복사
+ obj.bcdMessage = new List();
+ foreach (var item in this.bcdMessage)
+ obj.bcdMessage.Add(item);
+
+ obj.ApplyOffset = this.ApplyOffset;
+ obj.ConfirmAuto = this.ConfirmAuto;
+ obj.ConfirmUser = this.ConfirmUser;
+ obj.CUSTCODE = this.CUSTCODE;
+ obj.CUSTNAME = this.CUSTNAME;
+ obj.LightOn = this.LightOn;
+
+ //obj.SCODE = this.SCODE;
+ obj.ValidSkipbyUser = this.ValidSkipbyUser;
+ obj.NeedCylinderForward = this.NeedCylinderForward; //210207
+ obj.ApplyAngle = this.ApplyAngle; //210207
+ obj.STime = this.STime;
+ obj.ETime = this.ETime;
+ obj.GTime = this.GTime;
+ obj.FileNameL = this.FileNameL;
+ obj.FileNameU = this.FileNameU;
+ obj.Complete = this.Complete;
+ //obj.Angle = this.Angle;
+ //obj.AngleQR = this.AngleQR;
+ //obj.AngleSTD = this.AngleSTD;
+ obj.BATCH = this.BATCH;
+ obj.QTYMAX = this.QTYMAX;
+ obj.Ready = this.Ready;
+ obj.QTY = this.QTY;
+ obj.QTYRQ = this.QTYRQ;
+ obj.SID = this.SID;
+ obj.SID0 = this.SID0; //210331
+ obj.SetRID(this.RID, "copy");// obj.RID = this.RID;
+ obj.RID0 = this.RID0;
+ obj.RIDNew = this.RIDNew;
+ obj.VLOT = this.VLOT;
+ obj.VNAME = this.VNAME;
+ obj.MFGDATE = this.MFGDATE;
+ obj.PARTNO = this.PARTNO;
+ obj.MCN = this.MCN;
+ obj.Target = this.Target;
+
+ obj.QTY2 = this.QTY2;
+ obj.SID2 = this.SID2;
+ obj.RID2 = this.RID2;
+ obj.VLOT2 = this.VLOT2;
+ obj.VNAME2 = this.VNAME2;
+ obj.MFGDATE2 = this.MFGDATE;
+ obj.PARTNO2 = this.PARTNO2;
+
+ obj.QRInputRaw = this.QRInputRaw;
+ obj.QROutRaw = this.QROutRaw;
+ obj.ZPL = this.ZPL;
+ obj.PrintQRData = this.PrintQRData;
+ obj.PrintPositionData = this.PrintPositionData;
+ //obj.PrintForce = this.PrintForce;
+ obj.ReelSize = this.ReelSize;
+ obj.PrintPositionCheck = this.PrintPositionCheck;
+ obj.BarcodeTouched = this.BarcodeTouched;
+
+ //라벨위치값 복사
+ for (int i = 0; i < obj.LabelPositionData.Length; i++)
+ obj.LabelPositionData[i] = this.LabelPositionData[i];
+ for (int i = 0; i < obj.QRPositionData.Length; i++)
+ obj.QRPositionData[i] = this.QRPositionData[i];
+ if (obj.imageF != null)
+ {
+ obj.imageF.Dispose();
+ obj.imageF = null;
+ }
+ if (obj.imageR != null)
+ {
+ obj.imageR.Dispose();
+ obj.imageR = null;
+ }
+ //이미지를 복사해준다. 210121
+ if (this.imageF != null)
+ {
+ obj.imageF = new Emgu.CV.Mat(this.imageF.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
+ this.imageF.CopyTo(obj.imageF);
+ }
+ if (this.imageR != null)
+ {
+ obj.imageR = new Emgu.CV.Mat(this.imageR.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
+ this.imageR.CopyTo(obj.imageR);
+ }
+
+ //바코드 데이터를 복사해준다.
+ if (obj.barcodelist == null)
+ obj.barcodelist = new ConcurrentDictionary();// List();
+ else
+ obj.barcodelist.Clear();
+
+ foreach (var item in this.barcodelist)
+ {
+ var bcd = item.Value;
+ var newitema = new KeyenceBarcodeData
+ {
+ Angle = bcd.Angle,
+ CenterPX = new Point(bcd.CenterPX.X, bcd.CenterPX.Y),
+ Data = bcd.Data,
+ LabelPosition = bcd.LabelPosition,
+ UserActive = bcd.UserActive,
+ barcodeSymbol = bcd.barcodeSymbol,
+ };
+
+ newitema.vertex = new Point[bcd.vertex.Length];
+ bcd.vertex.CopyTo(newitema.vertex, 0);
+
+ if (bcd.AmkorData != null) //231006 null error fix
+ bcd.AmkorData.CopyTo(newitema.AmkorData);
+
+ obj.barcodelist.AddOrUpdate(item.Key, newitema,
+ (key, data) =>
+ {
+ data.Angle = newitema.Angle;
+ data.CenterPX = newitema.CenterPX;
+ data.Data = newitema.Data;
+ data.LabelPosition = newitema.LabelPosition;
+ data.UserActive = newitema.UserActive;
+ data.barcodeSymbol = newitema.barcodeSymbol;
+ data.RegExConfirm = newitema.RegExConfirm;
+ return data;
+ });
+ }
+
+
+ }
+
+ public void UpdateTo(ref VisionData obj)
+ {
+ //바코드메세지 복사
+ obj.bcdMessage = new List();
+ foreach (var item in this.bcdMessage)
+ obj.bcdMessage.Add(item);
+
+ obj.ApplyOffset = this.ApplyOffset;
+ obj.ConfirmAuto = this.ConfirmAuto;
+ obj.ConfirmUser = this.ConfirmUser;
+ obj.CUSTCODE = this.CUSTCODE;
+ obj.CUSTNAME = this.CUSTNAME;
+ obj.LightOn = this.LightOn;
+
+ //obj.SCODE = this.SCODE;
+ obj.ValidSkipbyUser = this.ValidSkipbyUser;
+ obj.NeedCylinderForward = this.NeedCylinderForward; //210207
+ obj.ApplyAngle = this.ApplyAngle; //210207
+ obj.STime = this.STime;
+ obj.ETime = this.ETime;
+ obj.GTime = this.GTime;
+ obj.FileNameL = this.FileNameL;
+ obj.FileNameU = this.FileNameU;
+ obj.Complete = this.Complete;
+ //obj.Angle = this.Angle;
+ //obj.AngleQR = this.AngleQR;
+ //obj.AngleSTD = this.AngleSTD;
+ obj.Ready = this.Ready;
+ obj.QTY = this.QTY;
+ obj.QTYRQ = this.QTYRQ;
+ obj.SID = this.SID;
+ obj.SID0 = this.SID0; //210331
+ obj.SetRID(this.RID, "copy");// obj.RID = this.RID;
+ obj.RID0 = this.RID0;
+ obj.RIDNew = this.RIDNew;
+ obj.VLOT = this.VLOT;
+ obj.VNAME = this.VNAME;
+ obj.MFGDATE = this.MFGDATE;
+ obj.PARTNO = this.PARTNO;
+ obj.MCN = this.MCN;
+ obj.Target = this.Target;
+
+ obj.BATCH = this.BATCH;
+ obj.QTYMAX = this.QTYMAX;
+ obj.QTY2 = this.QTY2;
+ obj.SID2 = this.SID2;
+ obj.RID2 = this.RID2;
+ obj.VLOT2 = this.VLOT2;
+ obj.VNAME2 = this.VNAME2;
+ obj.MFGDATE2 = this.MFGDATE;
+ obj.PARTNO2 = this.PARTNO2;
+
+ obj.QRInputRaw = this.QRInputRaw;
+ obj.QROutRaw = this.QROutRaw;
+ obj.ZPL = this.ZPL;
+ obj.PrintQRData = this.PrintQRData;
+ obj.PrintPositionData = this.PrintPositionData;
+ //obj.PrintForce = this.PrintForce;
+ obj.ReelSize = this.ReelSize;
+ obj.PrintPositionCheck = this.PrintPositionCheck;
+ obj.BarcodeTouched = this.BarcodeTouched;
+
+ //라벨위치값 복사
+ for (int i = 0; i < obj.LabelPositionData.Length; i++)
+ obj.LabelPositionData[i] = this.LabelPositionData[i];
+ for (int i = 0; i < obj.QRPositionData.Length; i++)
+ obj.QRPositionData[i] = this.QRPositionData[i];
+ if (obj.imageF != null)
+ {
+ obj.imageF.Dispose();
+ obj.imageF = null;
+ }
+ if (obj.imageR != null)
+ {
+ obj.imageR.Dispose();
+ obj.imageR = null;
+ }
+ //이미지를 복사해준다. 210121
+ if (this.imageF != null)
+ {
+ obj.imageF = new Emgu.CV.Mat(this.imageF.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
+ this.imageF.CopyTo(obj.imageF);
+ }
+ if (this.imageR != null)
+ {
+ obj.imageR = new Emgu.CV.Mat(this.imageR.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
+ this.imageR.CopyTo(obj.imageR);
+ }
+ //바코드 데이터를 복사해준다.
+ if (obj.barcodelist == null)
+ obj.barcodelist = new ConcurrentDictionary();// List();
+ else
+ obj.barcodelist.Clear();
+
+ foreach (var item in this.barcodelist)
+ {
+ var bcd = item.Value;
+ var newitema = new KeyenceBarcodeData
+ {
+ Angle = bcd.Angle,
+ CenterPX = new Point(bcd.CenterPX.X, bcd.CenterPX.Y),
+ Data = bcd.Data,
+ LabelPosition = bcd.LabelPosition,
+ UserActive = bcd.UserActive,
+ barcodeSymbol = bcd.barcodeSymbol,
+ };
+
+ newitema.vertex = new Point[bcd.vertex.Length];
+ bcd.vertex.CopyTo(newitema.vertex, 0);
+ bcd.AmkorData.CopyTo(newitema.AmkorData);
+ obj.barcodelist.AddOrUpdate(item.Key, newitema,
+ (key, data) =>
+ {
+ data.Angle = newitema.Angle;
+ data.CenterPX = newitema.CenterPX;
+ data.Data = newitema.Data;
+ data.LabelPosition = newitema.LabelPosition;
+ data.UserActive = newitema.UserActive;
+ data.barcodeSymbol = newitema.barcodeSymbol;
+ data.RegExConfirm = newitema.RegExConfirm;
+ return data;
+ });
+ }
+
+
+ }
+ }
+}
diff --git a/Handler/Project/Class/sPositionData.cs b/Handler/Project/Class/sPositionData.cs
new file mode 100644
index 0000000..b0f3698
--- /dev/null
+++ b/Handler/Project/Class/sPositionData.cs
@@ -0,0 +1,86 @@
+using System;
+
+namespace Project
+{
+ [Serializable]
+ public class sPositionData
+ {
+ public float inpositionrange { get; set; }
+ public int Axis;
+ public double Position { get; set; }
+ public double Acc;
+ public double _dcc;
+ public double Dcc
+ {
+ get
+ {
+ if (_dcc == 0) return Acc;
+ else return _dcc;
+ }
+ set
+ {
+ _dcc = value;
+ }
+ }
+ public double Speed;
+ public Boolean isError { get { return Speed == 0; } }
+ public string Message;
+
+ public sPositionData(sPositionData baseData)
+ {
+ this.Clear();
+ this.Position = baseData.Position;
+ this.Acc = baseData.Acc;
+ this.Dcc = baseData.Dcc;
+ this._dcc = baseData._dcc;
+ this.Speed = baseData.Speed;
+ this.Axis = baseData.Axis;
+ this.Message = baseData.Message;
+ this.inpositionrange = baseData.inpositionrange;
+ }
+
+ public sPositionData Clone()
+ {
+ return new sPositionData
+ {
+ Position = this.Position,
+ Acc = this.Acc,
+ Dcc = this.Dcc,
+ //isError = this.isError,
+ Message = this.Message,
+ Speed = this.Speed,
+ _dcc = this.Dcc,
+ Axis = this.Axis,
+ inpositionrange = this.inpositionrange,
+ };
+ }
+
+ public sPositionData()
+ {
+ Clear();
+ }
+ public sPositionData(double pos)
+ {
+ Clear();
+ this.Position = pos;
+ }
+
+ //public void SetPosition(double pos) { this.Position = pos; }
+
+ public void Clear()
+ {
+ Axis = -1;
+ inpositionrange = 0f;
+ Position = 0;
+ Acc = 500;
+ _dcc = 0;
+ Speed = 0;
+ Message = "Not Set";
+ }
+ public override string ToString()
+ {
+ return $"Pos:{Position},Spd:{Speed}";
+ }
+ }
+
+}
diff --git a/Handler/Project/Component_Reel_Info.cs b/Handler/Project/Component_Reel_Info.cs
new file mode 100644
index 0000000..8ac8a1c
--- /dev/null
+++ b/Handler/Project/Component_Reel_Info.cs
@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+//
+// 이 코드는 템플릿에서 생성되었습니다.
+//
+// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
+// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
+//
+//------------------------------------------------------------------------------
+
+namespace Project
+{
+ using System;
+ using System.Collections.Generic;
+
+ public partial class Component_Reel_Info
+ {
+ public int idx { get; set; }
+ public string CUST { get; set; }
+ public string AMKSID { get; set; }
+ public string CUST_PARTNO { get; set; }
+ public string MFG_PARTNO { get; set; }
+ }
+}
diff --git a/Handler/Project/Component_Reel_Result.cs b/Handler/Project/Component_Reel_Result.cs
new file mode 100644
index 0000000..42e2ca3
--- /dev/null
+++ b/Handler/Project/Component_Reel_Result.cs
@@ -0,0 +1,53 @@
+//------------------------------------------------------------------------------
+//
+// 이 코드는 템플릿에서 생성되었습니다.
+//
+// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
+// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
+//
+//------------------------------------------------------------------------------
+
+namespace Project
+{
+ using System;
+ using System.Collections.Generic;
+
+ public partial class Component_Reel_Result
+ {
+ public int idx { get; set; }
+ public System.DateTime STIME { get; set; }
+ public Nullable ETIME { get; set; }
+ public Nullable PTIME { get; set; }
+ public string PDATE { get; set; }
+ public string JTYPE { get; set; }
+ public string JGUID { get; set; }
+ public string SID { get; set; }
+ public string SID0 { get; set; }
+ public string RID { get; set; }
+ public string RID0 { get; set; }
+ public string RSN { get; set; }
+ public string QR { get; set; }
+ public string ZPL { get; set; }
+ public string POS { get; set; }
+ public string LOC { get; set; }
+ public Nullable ANGLE { get; set; }
+ public Nullable QTY { get; set; }
+ public Nullable QTY0 { get; set; }
+ public string VLOT { get; set; }
+ public string VNAME { get; set; }
+ public string MFGDATE { get; set; }
+ public Nullable PRNATTACH { get; set; }
+ public Nullable PRNVALID { get; set; }
+ public string REMARK { get; set; }
+ public System.DateTime wdate { get; set; }
+ public string MC { get; set; }
+ public Nullable GUID { get; set; }
+ public Nullable ATIME { get; set; }
+ public Nullable OPT { get; set; }
+ public Nullable OPT_DATA { get; set; }
+ public string PARTNO { get; set; }
+ public string CUSTCODE { get; set; }
+ public string BATCH { get; set; }
+ public Nullable qtymax { get; set; }
+ }
+}
diff --git a/Handler/Project/Component_Reel_SID_Convert.cs b/Handler/Project/Component_Reel_SID_Convert.cs
new file mode 100644
index 0000000..964510f
--- /dev/null
+++ b/Handler/Project/Component_Reel_SID_Convert.cs
@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+//
+// 이 코드는 템플릿에서 생성되었습니다.
+//
+// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
+// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
+//
+//------------------------------------------------------------------------------
+
+namespace Project
+{
+ using System;
+ using System.Collections.Generic;
+
+ public partial class Component_Reel_SID_Convert
+ {
+ public int idx { get; set; }
+ public Nullable Chk { get; set; }
+ public string SIDFrom { get; set; }
+ public string SIDTo { get; set; }
+ public string Remark { get; set; }
+ public Nullable wdate { get; set; }
+ public string MC { get; set; }
+ }
+}
diff --git a/Handler/Project/Controller/ModelController.cs b/Handler/Project/Controller/ModelController.cs
new file mode 100644
index 0000000..5a1f0a2
--- /dev/null
+++ b/Handler/Project/Controller/ModelController.cs
@@ -0,0 +1,109 @@
+using AR;
+using Microsoft.SqlServer.Server;
+using Newtonsoft.Json.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web.Http;
+
+namespace Project.Controller
+{
+ public class ModelController : ApiController
+ {
+ //private static List- _values = new List
- {
+ // new Item { Id = 1, Name = "USB2.0 연장선" },
+ // new Item { Id = 2, Name = "USB3.0 연장선" },
+ // new Item { Id =3, Name = "USB3.1 연장선" }
+ //};
+
+ // GET api/values
+ public IHttpActionResult Get()
+ {
+ HttpResponseMessage responsem = new HttpResponseMessage(HttpStatusCode.OK);
+ var data = new
+ {
+ model = PUB.Result.vModel.Title,
+ };
+ return Ok(data);
+ }
+
+ // GET api/values/5
+ public IHttpActionResult Get(int id)
+ {
+ //var value = DataManager.Items?.Find(v => v.Id == id) ?? null;
+ //if (value == null)
+ //{
+ // return NotFound();
+ //}
+ return Ok();
+ }
+
+ // POST api/values
+ [HttpGet]
+ public IHttpActionResult Set(string id)
+ {
+ //지정된 모델로 변경한다.
+ var msg = "";
+
+ if (id.isEmpty()) msg = "NO MODELNAME";
+ if (msg.isEmpty())
+ {
+ if (PUB.sm.Step == eSMStep.IDLE || PUB.sm.Step == eSMStep.FINISH)
+ {
+ var buf = id.Split(new char[] { '|' }, System.StringSplitOptions.RemoveEmptyEntries);
+ var modelname = buf[0];
+ var conv = true;
+ if (buf.Length == 2) conv = buf[1] == "1";
+
+ var modelVision = PUB.mdm.GetDataV(modelname);
+ if (modelVision == null)
+ {
+ msg = "NO MODELDATA";
+ }
+ else
+ {
+ VAR.BOOL[eVarBool.Use_Conveyor] = conv;
+ var rlt = PUB.SelectModelV(modelname, false);
+ if (rlt == false)
+ {
+ msg = "[OP]LOAD FAIL";
+ }
+ else
+ {
+ var motion = conv ? "Conveyor" : "Default";
+ rlt = PUB.SelectModelM("Conveyor");
+ if(rlt ==false)
+ {
+ msg = "[MT]LOAD FAIL";
+ }
+ }
+
+
+ }
+ }
+ else
+ {
+ msg = "NOT IDLE";
+ }
+ }
+
+ var data = new
+ {
+ Message = msg,
+ Result = (msg.isEmpty() ? true : false),
+ };
+ return Ok(data);
+ }
+
+ // PUT api/values/5
+ public IHttpActionResult Put(int id, [FromBody] JObject value)
+ {
+ return Ok();
+ }
+
+ // DELETE api/values/5
+ public IHttpActionResult Delete(int id)
+ {
+ return Ok();
+ }
+ }
+}
diff --git a/Handler/Project/Controller/StateController.cs b/Handler/Project/Controller/StateController.cs
new file mode 100644
index 0000000..ee7ccd5
--- /dev/null
+++ b/Handler/Project/Controller/StateController.cs
@@ -0,0 +1,88 @@
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Runtime.Remoting.Contexts;
+using System.Security.Principal;
+using System.Text;
+using System.Threading.Tasks;
+using System.Web;
+using System.Web.Http;
+using System.Web.Http.Results;
+
+namespace Project.Controller
+{
+ public class StateController : ApiController
+ {
+ //private static List
- _values = new List
- {
+ // new Item { Id = 1, Name = "USB2.0 연장선" },
+ // new Item { Id = 2, Name = "USB3.0 연장선" },
+ // new Item { Id =3, Name = "USB3.1 연장선" }
+ //};
+
+ // GET api/values
+ public IHttpActionResult Get()
+ {
+ HttpResponseMessage responsem = new HttpResponseMessage(HttpStatusCode.OK);
+ //responsem.Headers.Add("Content-Type", "application/json");
+ //ResponseMessageResult response = new ResponseMessageResult(responsem);
+ //return response;
+
+ //return this.Content(HttpStatusCode.OK, _values, mediaType)
+ return Ok();
+ //string json = JsonConvert.SerializeObject(_values, Formatting.Indented);
+ //return Ok(json);
+ }
+
+ // GET api/values/5
+ public IHttpActionResult Get(int id)
+ {
+ //var value = DataManager.Items?.Find(v => v.Id == id) ?? null;
+ //if (value == null)
+ //{
+ // return NotFound();
+ //}
+ return Ok();
+ }
+
+ // POST api/values
+ public IHttpActionResult Post([FromBody] JObject value)
+ {
+ //value.Id = DataManager.Items?.Count ?? 0;
+ //DataManager.Items.Add(value);
+ //DataManager.Save();
+ return CreatedAtRoute("DefaultApi", new { id = value }, value);
+ }
+
+ // PUT api/values/5
+ public IHttpActionResult Put(int id, [FromBody] JObject value)
+ {
+ //var index = DataManager.Items.FindIndex(v => v.Id == id);
+ //if (index == -1)
+ //{
+ // return NotFound();
+ //}
+
+ //DataManager.Items[index] = value;
+ //DataManager.Save();
+ return Ok();
+ }
+
+ // DELETE api/values/5
+ public IHttpActionResult Delete(int id)
+ {
+ //var index = DataManager.Items.FindIndex(v => v.Id == id);
+ //if (index == -1)
+ //{
+ // return NotFound();
+ //}
+
+ //DataManager.Items.RemoveAt(index);
+ //DataManager.Save();
+ return Ok();
+ }
+ }
+}
diff --git a/Handler/Project/DSList.Designer.cs b/Handler/Project/DSList.Designer.cs
new file mode 100644
index 0000000..16587b2
--- /dev/null
+++ b/Handler/Project/DSList.Designer.cs
@@ -0,0 +1,5133 @@
+//------------------------------------------------------------------------------
+//
+// 이 코드는 도구를 사용하여 생성되었습니다.
+// 런타임 버전:4.0.30319.42000
+//
+// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
+// 이러한 변경 내용이 손실됩니다.
+//
+//------------------------------------------------------------------------------
+
+#pragma warning disable 1591
+
+namespace Project {
+
+
+ ///
+ ///Represents a strongly typed in-memory cache of data.
+ ///
+ [global::System.Serializable()]
+ [global::System.ComponentModel.DesignerCategoryAttribute("code")]
+ [global::System.ComponentModel.ToolboxItem(true)]
+ [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")]
+ [global::System.Xml.Serialization.XmlRootAttribute("DSList")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")]
+ public partial class DSList : global::System.Data.DataSet {
+
+ private Component_Reel_CustRuleDataTable tableComponent_Reel_CustRule;
+
+ private Component_Reel_SIDInfoDataTable tableComponent_Reel_SIDInfo;
+
+ private Component_Reel_SIDConvDataTable tableComponent_Reel_SIDConv;
+
+ private SupplyDataTable tableSupply;
+
+ private SIDConvertDataTable tableSIDConvert;
+
+ private global::System.Data.SchemaSerializationMode _schemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public DSList() {
+ this.BeginInit();
+ this.InitClass();
+ global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
+ base.Tables.CollectionChanged += schemaChangedHandler;
+ base.Relations.CollectionChanged += schemaChangedHandler;
+ this.EndInit();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected DSList(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
+ base(info, context, false) {
+ if ((this.IsBinarySerialized(info, context) == true)) {
+ this.InitVars(false);
+ global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
+ this.Tables.CollectionChanged += schemaChangedHandler1;
+ this.Relations.CollectionChanged += schemaChangedHandler1;
+ return;
+ }
+ string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));
+ if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) {
+ global::System.Data.DataSet ds = new global::System.Data.DataSet();
+ ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema)));
+ if ((ds.Tables["Component_Reel_CustRule"] != null)) {
+ base.Tables.Add(new Component_Reel_CustRuleDataTable(ds.Tables["Component_Reel_CustRule"]));
+ }
+ if ((ds.Tables["Component_Reel_SIDInfo"] != null)) {
+ base.Tables.Add(new Component_Reel_SIDInfoDataTable(ds.Tables["Component_Reel_SIDInfo"]));
+ }
+ if ((ds.Tables["Component_Reel_SIDConv"] != null)) {
+ base.Tables.Add(new Component_Reel_SIDConvDataTable(ds.Tables["Component_Reel_SIDConv"]));
+ }
+ if ((ds.Tables["Supply"] != null)) {
+ base.Tables.Add(new SupplyDataTable(ds.Tables["Supply"]));
+ }
+ if ((ds.Tables["SIDConvert"] != null)) {
+ base.Tables.Add(new SIDConvertDataTable(ds.Tables["SIDConvert"]));
+ }
+ this.DataSetName = ds.DataSetName;
+ this.Prefix = ds.Prefix;
+ this.Namespace = ds.Namespace;
+ this.Locale = ds.Locale;
+ this.CaseSensitive = ds.CaseSensitive;
+ this.EnforceConstraints = ds.EnforceConstraints;
+ this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add);
+ this.InitVars();
+ }
+ else {
+ this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema)));
+ }
+ this.GetSerializationData(info, context);
+ global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
+ base.Tables.CollectionChanged += schemaChangedHandler;
+ this.Relations.CollectionChanged += schemaChangedHandler;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
+ public Component_Reel_CustRuleDataTable Component_Reel_CustRule {
+ get {
+ return this.tableComponent_Reel_CustRule;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
+ public Component_Reel_SIDInfoDataTable Component_Reel_SIDInfo {
+ get {
+ return this.tableComponent_Reel_SIDInfo;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
+ public Component_Reel_SIDConvDataTable Component_Reel_SIDConv {
+ get {
+ return this.tableComponent_Reel_SIDConv;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
+ public SupplyDataTable Supply {
+ get {
+ return this.tableSupply;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
+ public SIDConvertDataTable SIDConvert {
+ get {
+ return this.tableSIDConvert;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.BrowsableAttribute(true)]
+ [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)]
+ public override global::System.Data.SchemaSerializationMode SchemaSerializationMode {
+ get {
+ return this._schemaSerializationMode;
+ }
+ set {
+ this._schemaSerializationMode = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)]
+ public new global::System.Data.DataTableCollection Tables {
+ get {
+ return base.Tables;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)]
+ public new global::System.Data.DataRelationCollection Relations {
+ get {
+ return base.Relations;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void InitializeDerivedDataSet() {
+ this.BeginInit();
+ this.InitClass();
+ this.EndInit();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public override global::System.Data.DataSet Clone() {
+ DSList cln = ((DSList)(base.Clone()));
+ cln.InitVars();
+ cln.SchemaSerializationMode = this.SchemaSerializationMode;
+ return cln;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override bool ShouldSerializeTables() {
+ return false;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override bool ShouldSerializeRelations() {
+ return false;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) {
+ if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) {
+ this.Reset();
+ global::System.Data.DataSet ds = new global::System.Data.DataSet();
+ ds.ReadXml(reader);
+ if ((ds.Tables["Component_Reel_CustRule"] != null)) {
+ base.Tables.Add(new Component_Reel_CustRuleDataTable(ds.Tables["Component_Reel_CustRule"]));
+ }
+ if ((ds.Tables["Component_Reel_SIDInfo"] != null)) {
+ base.Tables.Add(new Component_Reel_SIDInfoDataTable(ds.Tables["Component_Reel_SIDInfo"]));
+ }
+ if ((ds.Tables["Component_Reel_SIDConv"] != null)) {
+ base.Tables.Add(new Component_Reel_SIDConvDataTable(ds.Tables["Component_Reel_SIDConv"]));
+ }
+ if ((ds.Tables["Supply"] != null)) {
+ base.Tables.Add(new SupplyDataTable(ds.Tables["Supply"]));
+ }
+ if ((ds.Tables["SIDConvert"] != null)) {
+ base.Tables.Add(new SIDConvertDataTable(ds.Tables["SIDConvert"]));
+ }
+ this.DataSetName = ds.DataSetName;
+ this.Prefix = ds.Prefix;
+ this.Namespace = ds.Namespace;
+ this.Locale = ds.Locale;
+ this.CaseSensitive = ds.CaseSensitive;
+ this.EnforceConstraints = ds.EnforceConstraints;
+ this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add);
+ this.InitVars();
+ }
+ else {
+ this.ReadXml(reader);
+ this.InitVars();
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() {
+ global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream();
+ this.WriteXmlSchema(new global::System.Xml.XmlTextWriter(stream, null));
+ stream.Position = 0;
+ return global::System.Xml.Schema.XmlSchema.Read(new global::System.Xml.XmlTextReader(stream), null);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal void InitVars() {
+ this.InitVars(true);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal void InitVars(bool initTable) {
+ this.tableComponent_Reel_CustRule = ((Component_Reel_CustRuleDataTable)(base.Tables["Component_Reel_CustRule"]));
+ if ((initTable == true)) {
+ if ((this.tableComponent_Reel_CustRule != null)) {
+ this.tableComponent_Reel_CustRule.InitVars();
+ }
+ }
+ this.tableComponent_Reel_SIDInfo = ((Component_Reel_SIDInfoDataTable)(base.Tables["Component_Reel_SIDInfo"]));
+ if ((initTable == true)) {
+ if ((this.tableComponent_Reel_SIDInfo != null)) {
+ this.tableComponent_Reel_SIDInfo.InitVars();
+ }
+ }
+ this.tableComponent_Reel_SIDConv = ((Component_Reel_SIDConvDataTable)(base.Tables["Component_Reel_SIDConv"]));
+ if ((initTable == true)) {
+ if ((this.tableComponent_Reel_SIDConv != null)) {
+ this.tableComponent_Reel_SIDConv.InitVars();
+ }
+ }
+ this.tableSupply = ((SupplyDataTable)(base.Tables["Supply"]));
+ if ((initTable == true)) {
+ if ((this.tableSupply != null)) {
+ this.tableSupply.InitVars();
+ }
+ }
+ this.tableSIDConvert = ((SIDConvertDataTable)(base.Tables["SIDConvert"]));
+ if ((initTable == true)) {
+ if ((this.tableSIDConvert != null)) {
+ this.tableSIDConvert.InitVars();
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitClass() {
+ this.DataSetName = "DSList";
+ this.Prefix = "";
+ this.Namespace = "http://tempuri.org/DSList.xsd";
+ this.EnforceConstraints = true;
+ this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema;
+ this.tableComponent_Reel_CustRule = new Component_Reel_CustRuleDataTable();
+ base.Tables.Add(this.tableComponent_Reel_CustRule);
+ this.tableComponent_Reel_SIDInfo = new Component_Reel_SIDInfoDataTable();
+ base.Tables.Add(this.tableComponent_Reel_SIDInfo);
+ this.tableComponent_Reel_SIDConv = new Component_Reel_SIDConvDataTable();
+ base.Tables.Add(this.tableComponent_Reel_SIDConv);
+ this.tableSupply = new SupplyDataTable();
+ base.Tables.Add(this.tableSupply);
+ this.tableSIDConvert = new SIDConvertDataTable();
+ base.Tables.Add(this.tableSIDConvert);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private bool ShouldSerializeComponent_Reel_CustRule() {
+ return false;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private bool ShouldSerializeComponent_Reel_SIDInfo() {
+ return false;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private bool ShouldSerializeComponent_Reel_SIDConv() {
+ return false;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private bool ShouldSerializeSupply() {
+ return false;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private bool ShouldSerializeSIDConvert() {
+ return false;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) {
+ if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) {
+ this.InitVars();
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
+ DSList ds = new DSList();
+ global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
+ global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence();
+ global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny();
+ any.Namespace = ds.Namespace;
+ sequence.Items.Add(any);
+ type.Particle = sequence;
+ global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable();
+ if (xs.Contains(dsSchema.TargetNamespace)) {
+ global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream();
+ global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream();
+ try {
+ global::System.Xml.Schema.XmlSchema schema = null;
+ dsSchema.Write(s1);
+ for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) {
+ schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current));
+ s2.SetLength(0);
+ schema.Write(s2);
+ if ((s1.Length == s2.Length)) {
+ s1.Position = 0;
+ s2.Position = 0;
+ for (; ((s1.Position != s1.Length)
+ && (s1.ReadByte() == s2.ReadByte())); ) {
+ ;
+ }
+ if ((s1.Position == s1.Length)) {
+ return type;
+ }
+ }
+ }
+ }
+ finally {
+ if ((s1 != null)) {
+ s1.Close();
+ }
+ if ((s2 != null)) {
+ s2.Close();
+ }
+ }
+ }
+ xs.Add(dsSchema);
+ return type;
+ }
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public delegate void Component_Reel_CustRuleRowChangeEventHandler(object sender, Component_Reel_CustRuleRowChangeEvent e);
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public delegate void Component_Reel_SIDInfoRowChangeEventHandler(object sender, Component_Reel_SIDInfoRowChangeEvent e);
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public delegate void Component_Reel_SIDConvRowChangeEventHandler(object sender, Component_Reel_SIDConvRowChangeEvent e);
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public delegate void SupplyRowChangeEventHandler(object sender, SupplyRowChangeEvent e);
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public delegate void SIDConvertRowChangeEventHandler(object sender, SIDConvertRowChangeEvent e);
+
+ ///
+ ///Represents the strongly named DataTable class.
+ ///
+ [global::System.Serializable()]
+ [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
+ public partial class Component_Reel_CustRuleDataTable : global::System.Data.TypedTableBase {
+
+ private global::System.Data.DataColumn columncode;
+
+ private global::System.Data.DataColumn columnpre;
+
+ private global::System.Data.DataColumn columnpos;
+
+ private global::System.Data.DataColumn columnlen;
+
+ private global::System.Data.DataColumn columnexp;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_CustRuleDataTable() {
+ this.TableName = "Component_Reel_CustRule";
+ this.BeginInit();
+ this.InitClass();
+ this.EndInit();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal Component_Reel_CustRuleDataTable(global::System.Data.DataTable table) {
+ this.TableName = table.TableName;
+ if ((table.CaseSensitive != table.DataSet.CaseSensitive)) {
+ this.CaseSensitive = table.CaseSensitive;
+ }
+ if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) {
+ this.Locale = table.Locale;
+ }
+ if ((table.Namespace != table.DataSet.Namespace)) {
+ this.Namespace = table.Namespace;
+ }
+ this.Prefix = table.Prefix;
+ this.MinimumCapacity = table.MinimumCapacity;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected Component_Reel_CustRuleDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
+ base(info, context) {
+ this.InitVars();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn codeColumn {
+ get {
+ return this.columncode;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn preColumn {
+ get {
+ return this.columnpre;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn posColumn {
+ get {
+ return this.columnpos;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn lenColumn {
+ get {
+ return this.columnlen;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn expColumn {
+ get {
+ return this.columnexp;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ public int Count {
+ get {
+ return this.Rows.Count;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_CustRuleRow this[int index] {
+ get {
+ return ((Component_Reel_CustRuleRow)(this.Rows[index]));
+ }
+ }
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_CustRuleRowChangeEventHandler Component_Reel_CustRuleRowChanging;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_CustRuleRowChangeEventHandler Component_Reel_CustRuleRowChanged;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_CustRuleRowChangeEventHandler Component_Reel_CustRuleRowDeleting;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_CustRuleRowChangeEventHandler Component_Reel_CustRuleRowDeleted;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void AddComponent_Reel_CustRuleRow(Component_Reel_CustRuleRow row) {
+ this.Rows.Add(row);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_CustRuleRow AddComponent_Reel_CustRuleRow(string code, string pre, string pos, int len, string exp) {
+ Component_Reel_CustRuleRow rowComponent_Reel_CustRuleRow = ((Component_Reel_CustRuleRow)(this.NewRow()));
+ object[] columnValuesArray = new object[] {
+ code,
+ pre,
+ pos,
+ len,
+ exp};
+ rowComponent_Reel_CustRuleRow.ItemArray = columnValuesArray;
+ this.Rows.Add(rowComponent_Reel_CustRuleRow);
+ return rowComponent_Reel_CustRuleRow;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_CustRuleRow FindBycode(string code) {
+ return ((Component_Reel_CustRuleRow)(this.Rows.Find(new object[] {
+ code})));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public override global::System.Data.DataTable Clone() {
+ Component_Reel_CustRuleDataTable cln = ((Component_Reel_CustRuleDataTable)(base.Clone()));
+ cln.InitVars();
+ return cln;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Data.DataTable CreateInstance() {
+ return new Component_Reel_CustRuleDataTable();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal void InitVars() {
+ this.columncode = base.Columns["code"];
+ this.columnpre = base.Columns["pre"];
+ this.columnpos = base.Columns["pos"];
+ this.columnlen = base.Columns["len"];
+ this.columnexp = base.Columns["exp"];
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitClass() {
+ this.columncode = new global::System.Data.DataColumn("code", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columncode);
+ this.columnpre = new global::System.Data.DataColumn("pre", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnpre);
+ this.columnpos = new global::System.Data.DataColumn("pos", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnpos);
+ this.columnlen = new global::System.Data.DataColumn("len", typeof(int), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnlen);
+ this.columnexp = new global::System.Data.DataColumn("exp", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnexp);
+ this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] {
+ this.columncode}, true));
+ this.columncode.AllowDBNull = false;
+ this.columncode.Unique = true;
+ this.columncode.MaxLength = 10;
+ this.columnpre.MaxLength = 20;
+ this.columnpos.MaxLength = 20;
+ this.columnexp.MaxLength = 100;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_CustRuleRow NewComponent_Reel_CustRuleRow() {
+ return ((Component_Reel_CustRuleRow)(this.NewRow()));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
+ return new Component_Reel_CustRuleRow(builder);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Type GetRowType() {
+ return typeof(Component_Reel_CustRuleRow);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowChanged(e);
+ if ((this.Component_Reel_CustRuleRowChanged != null)) {
+ this.Component_Reel_CustRuleRowChanged(this, new Component_Reel_CustRuleRowChangeEvent(((Component_Reel_CustRuleRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowChanging(e);
+ if ((this.Component_Reel_CustRuleRowChanging != null)) {
+ this.Component_Reel_CustRuleRowChanging(this, new Component_Reel_CustRuleRowChangeEvent(((Component_Reel_CustRuleRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowDeleted(e);
+ if ((this.Component_Reel_CustRuleRowDeleted != null)) {
+ this.Component_Reel_CustRuleRowDeleted(this, new Component_Reel_CustRuleRowChangeEvent(((Component_Reel_CustRuleRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowDeleting(e);
+ if ((this.Component_Reel_CustRuleRowDeleting != null)) {
+ this.Component_Reel_CustRuleRowDeleting(this, new Component_Reel_CustRuleRowChangeEvent(((Component_Reel_CustRuleRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void RemoveComponent_Reel_CustRuleRow(Component_Reel_CustRuleRow row) {
+ this.Rows.Remove(row);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
+ global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
+ global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence();
+ DSList ds = new DSList();
+ global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny();
+ any1.Namespace = "http://www.w3.org/2001/XMLSchema";
+ any1.MinOccurs = new decimal(0);
+ any1.MaxOccurs = decimal.MaxValue;
+ any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+ sequence.Items.Add(any1);
+ global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny();
+ any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1";
+ any2.MinOccurs = new decimal(1);
+ any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+ sequence.Items.Add(any2);
+ global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute();
+ attribute1.Name = "namespace";
+ attribute1.FixedValue = ds.Namespace;
+ type.Attributes.Add(attribute1);
+ global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute();
+ attribute2.Name = "tableTypeName";
+ attribute2.FixedValue = "Component_Reel_CustRuleDataTable";
+ type.Attributes.Add(attribute2);
+ type.Particle = sequence;
+ global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable();
+ if (xs.Contains(dsSchema.TargetNamespace)) {
+ global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream();
+ global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream();
+ try {
+ global::System.Xml.Schema.XmlSchema schema = null;
+ dsSchema.Write(s1);
+ for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) {
+ schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current));
+ s2.SetLength(0);
+ schema.Write(s2);
+ if ((s1.Length == s2.Length)) {
+ s1.Position = 0;
+ s2.Position = 0;
+ for (; ((s1.Position != s1.Length)
+ && (s1.ReadByte() == s2.ReadByte())); ) {
+ ;
+ }
+ if ((s1.Position == s1.Length)) {
+ return type;
+ }
+ }
+ }
+ }
+ finally {
+ if ((s1 != null)) {
+ s1.Close();
+ }
+ if ((s2 != null)) {
+ s2.Close();
+ }
+ }
+ }
+ xs.Add(dsSchema);
+ return type;
+ }
+ }
+
+ ///
+ ///Represents the strongly named DataTable class.
+ ///
+ [global::System.Serializable()]
+ [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
+ public partial class Component_Reel_SIDInfoDataTable : global::System.Data.TypedTableBase {
+
+ private global::System.Data.DataColumn columnSID;
+
+ private global::System.Data.DataColumn columnCustCode;
+
+ private global::System.Data.DataColumn columnCustName;
+
+ private global::System.Data.DataColumn columnVenderName;
+
+ private global::System.Data.DataColumn columnPartNo;
+
+ private global::System.Data.DataColumn columnPrintPosition;
+
+ private global::System.Data.DataColumn columnRemark;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDInfoDataTable() {
+ this.TableName = "Component_Reel_SIDInfo";
+ this.BeginInit();
+ this.InitClass();
+ this.EndInit();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal Component_Reel_SIDInfoDataTable(global::System.Data.DataTable table) {
+ this.TableName = table.TableName;
+ if ((table.CaseSensitive != table.DataSet.CaseSensitive)) {
+ this.CaseSensitive = table.CaseSensitive;
+ }
+ if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) {
+ this.Locale = table.Locale;
+ }
+ if ((table.Namespace != table.DataSet.Namespace)) {
+ this.Namespace = table.Namespace;
+ }
+ this.Prefix = table.Prefix;
+ this.MinimumCapacity = table.MinimumCapacity;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected Component_Reel_SIDInfoDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
+ base(info, context) {
+ this.InitVars();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn SIDColumn {
+ get {
+ return this.columnSID;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn CustCodeColumn {
+ get {
+ return this.columnCustCode;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn CustNameColumn {
+ get {
+ return this.columnCustName;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn VenderNameColumn {
+ get {
+ return this.columnVenderName;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn PartNoColumn {
+ get {
+ return this.columnPartNo;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn PrintPositionColumn {
+ get {
+ return this.columnPrintPosition;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn RemarkColumn {
+ get {
+ return this.columnRemark;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ public int Count {
+ get {
+ return this.Rows.Count;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDInfoRow this[int index] {
+ get {
+ return ((Component_Reel_SIDInfoRow)(this.Rows[index]));
+ }
+ }
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_SIDInfoRowChangeEventHandler Component_Reel_SIDInfoRowChanging;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_SIDInfoRowChangeEventHandler Component_Reel_SIDInfoRowChanged;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_SIDInfoRowChangeEventHandler Component_Reel_SIDInfoRowDeleting;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_SIDInfoRowChangeEventHandler Component_Reel_SIDInfoRowDeleted;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void AddComponent_Reel_SIDInfoRow(Component_Reel_SIDInfoRow row) {
+ this.Rows.Add(row);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDInfoRow AddComponent_Reel_SIDInfoRow(string SID, string CustCode, string CustName, string VenderName, string PartNo, string PrintPosition, string Remark) {
+ Component_Reel_SIDInfoRow rowComponent_Reel_SIDInfoRow = ((Component_Reel_SIDInfoRow)(this.NewRow()));
+ object[] columnValuesArray = new object[] {
+ SID,
+ CustCode,
+ CustName,
+ VenderName,
+ PartNo,
+ PrintPosition,
+ Remark};
+ rowComponent_Reel_SIDInfoRow.ItemArray = columnValuesArray;
+ this.Rows.Add(rowComponent_Reel_SIDInfoRow);
+ return rowComponent_Reel_SIDInfoRow;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDInfoRow FindBySIDCustCodePartNo(string SID, string CustCode, string PartNo) {
+ return ((Component_Reel_SIDInfoRow)(this.Rows.Find(new object[] {
+ SID,
+ CustCode,
+ PartNo})));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public override global::System.Data.DataTable Clone() {
+ Component_Reel_SIDInfoDataTable cln = ((Component_Reel_SIDInfoDataTable)(base.Clone()));
+ cln.InitVars();
+ return cln;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Data.DataTable CreateInstance() {
+ return new Component_Reel_SIDInfoDataTable();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal void InitVars() {
+ this.columnSID = base.Columns["SID"];
+ this.columnCustCode = base.Columns["CustCode"];
+ this.columnCustName = base.Columns["CustName"];
+ this.columnVenderName = base.Columns["VenderName"];
+ this.columnPartNo = base.Columns["PartNo"];
+ this.columnPrintPosition = base.Columns["PrintPosition"];
+ this.columnRemark = base.Columns["Remark"];
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitClass() {
+ this.columnSID = new global::System.Data.DataColumn("SID", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnSID);
+ this.columnCustCode = new global::System.Data.DataColumn("CustCode", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnCustCode);
+ this.columnCustName = new global::System.Data.DataColumn("CustName", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnCustName);
+ this.columnVenderName = new global::System.Data.DataColumn("VenderName", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnVenderName);
+ this.columnPartNo = new global::System.Data.DataColumn("PartNo", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnPartNo);
+ this.columnPrintPosition = new global::System.Data.DataColumn("PrintPosition", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnPrintPosition);
+ this.columnRemark = new global::System.Data.DataColumn("Remark", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnRemark);
+ this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] {
+ this.columnSID,
+ this.columnCustCode,
+ this.columnPartNo}, true));
+ this.columnSID.AllowDBNull = false;
+ this.columnSID.MaxLength = 50;
+ this.columnCustCode.AllowDBNull = false;
+ this.columnCustCode.MaxLength = 10;
+ this.columnCustName.MaxLength = 100;
+ this.columnVenderName.MaxLength = 100;
+ this.columnPartNo.AllowDBNull = false;
+ this.columnPartNo.MaxLength = 100;
+ this.columnPrintPosition.MaxLength = 10;
+ this.columnRemark.MaxLength = 100;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDInfoRow NewComponent_Reel_SIDInfoRow() {
+ return ((Component_Reel_SIDInfoRow)(this.NewRow()));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
+ return new Component_Reel_SIDInfoRow(builder);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Type GetRowType() {
+ return typeof(Component_Reel_SIDInfoRow);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowChanged(e);
+ if ((this.Component_Reel_SIDInfoRowChanged != null)) {
+ this.Component_Reel_SIDInfoRowChanged(this, new Component_Reel_SIDInfoRowChangeEvent(((Component_Reel_SIDInfoRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowChanging(e);
+ if ((this.Component_Reel_SIDInfoRowChanging != null)) {
+ this.Component_Reel_SIDInfoRowChanging(this, new Component_Reel_SIDInfoRowChangeEvent(((Component_Reel_SIDInfoRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowDeleted(e);
+ if ((this.Component_Reel_SIDInfoRowDeleted != null)) {
+ this.Component_Reel_SIDInfoRowDeleted(this, new Component_Reel_SIDInfoRowChangeEvent(((Component_Reel_SIDInfoRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowDeleting(e);
+ if ((this.Component_Reel_SIDInfoRowDeleting != null)) {
+ this.Component_Reel_SIDInfoRowDeleting(this, new Component_Reel_SIDInfoRowChangeEvent(((Component_Reel_SIDInfoRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void RemoveComponent_Reel_SIDInfoRow(Component_Reel_SIDInfoRow row) {
+ this.Rows.Remove(row);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
+ global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
+ global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence();
+ DSList ds = new DSList();
+ global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny();
+ any1.Namespace = "http://www.w3.org/2001/XMLSchema";
+ any1.MinOccurs = new decimal(0);
+ any1.MaxOccurs = decimal.MaxValue;
+ any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+ sequence.Items.Add(any1);
+ global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny();
+ any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1";
+ any2.MinOccurs = new decimal(1);
+ any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+ sequence.Items.Add(any2);
+ global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute();
+ attribute1.Name = "namespace";
+ attribute1.FixedValue = ds.Namespace;
+ type.Attributes.Add(attribute1);
+ global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute();
+ attribute2.Name = "tableTypeName";
+ attribute2.FixedValue = "Component_Reel_SIDInfoDataTable";
+ type.Attributes.Add(attribute2);
+ type.Particle = sequence;
+ global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable();
+ if (xs.Contains(dsSchema.TargetNamespace)) {
+ global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream();
+ global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream();
+ try {
+ global::System.Xml.Schema.XmlSchema schema = null;
+ dsSchema.Write(s1);
+ for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) {
+ schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current));
+ s2.SetLength(0);
+ schema.Write(s2);
+ if ((s1.Length == s2.Length)) {
+ s1.Position = 0;
+ s2.Position = 0;
+ for (; ((s1.Position != s1.Length)
+ && (s1.ReadByte() == s2.ReadByte())); ) {
+ ;
+ }
+ if ((s1.Position == s1.Length)) {
+ return type;
+ }
+ }
+ }
+ }
+ finally {
+ if ((s1 != null)) {
+ s1.Close();
+ }
+ if ((s2 != null)) {
+ s2.Close();
+ }
+ }
+ }
+ xs.Add(dsSchema);
+ return type;
+ }
+ }
+
+ ///
+ ///Represents the strongly named DataTable class.
+ ///
+ [global::System.Serializable()]
+ [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
+ public partial class Component_Reel_SIDConvDataTable : global::System.Data.TypedTableBase {
+
+ private global::System.Data.DataColumn columnidx;
+
+ private global::System.Data.DataColumn columnM101;
+
+ private global::System.Data.DataColumn columnM103;
+
+ private global::System.Data.DataColumn columnM106;
+
+ private global::System.Data.DataColumn columnM108;
+
+ private global::System.Data.DataColumn columnM103_2;
+
+ private global::System.Data.DataColumn columnM101_2;
+
+ private global::System.Data.DataColumn columnChk;
+
+ private global::System.Data.DataColumn columnSIDFrom;
+
+ private global::System.Data.DataColumn columnSIDTo;
+
+ private global::System.Data.DataColumn columnRemark;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDConvDataTable() {
+ this.TableName = "Component_Reel_SIDConv";
+ this.BeginInit();
+ this.InitClass();
+ this.EndInit();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal Component_Reel_SIDConvDataTable(global::System.Data.DataTable table) {
+ this.TableName = table.TableName;
+ if ((table.CaseSensitive != table.DataSet.CaseSensitive)) {
+ this.CaseSensitive = table.CaseSensitive;
+ }
+ if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) {
+ this.Locale = table.Locale;
+ }
+ if ((table.Namespace != table.DataSet.Namespace)) {
+ this.Namespace = table.Namespace;
+ }
+ this.Prefix = table.Prefix;
+ this.MinimumCapacity = table.MinimumCapacity;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected Component_Reel_SIDConvDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
+ base(info, context) {
+ this.InitVars();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn idxColumn {
+ get {
+ return this.columnidx;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn M101Column {
+ get {
+ return this.columnM101;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn M103Column {
+ get {
+ return this.columnM103;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn M106Column {
+ get {
+ return this.columnM106;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn M108Column {
+ get {
+ return this.columnM108;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn M103_2Column {
+ get {
+ return this.columnM103_2;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn M101_2Column {
+ get {
+ return this.columnM101_2;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn ChkColumn {
+ get {
+ return this.columnChk;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn SIDFromColumn {
+ get {
+ return this.columnSIDFrom;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn SIDToColumn {
+ get {
+ return this.columnSIDTo;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn RemarkColumn {
+ get {
+ return this.columnRemark;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ public int Count {
+ get {
+ return this.Rows.Count;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDConvRow this[int index] {
+ get {
+ return ((Component_Reel_SIDConvRow)(this.Rows[index]));
+ }
+ }
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_SIDConvRowChangeEventHandler Component_Reel_SIDConvRowChanging;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_SIDConvRowChangeEventHandler Component_Reel_SIDConvRowChanged;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_SIDConvRowChangeEventHandler Component_Reel_SIDConvRowDeleting;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event Component_Reel_SIDConvRowChangeEventHandler Component_Reel_SIDConvRowDeleted;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void AddComponent_Reel_SIDConvRow(Component_Reel_SIDConvRow row) {
+ this.Rows.Add(row);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDConvRow AddComponent_Reel_SIDConvRow(string M101, string M103, string M106, string M108, string M103_2, string M101_2, bool Chk, string SIDFrom, string SIDTo, string Remark) {
+ Component_Reel_SIDConvRow rowComponent_Reel_SIDConvRow = ((Component_Reel_SIDConvRow)(this.NewRow()));
+ object[] columnValuesArray = new object[] {
+ null,
+ M101,
+ M103,
+ M106,
+ M108,
+ M103_2,
+ M101_2,
+ Chk,
+ SIDFrom,
+ SIDTo,
+ Remark};
+ rowComponent_Reel_SIDConvRow.ItemArray = columnValuesArray;
+ this.Rows.Add(rowComponent_Reel_SIDConvRow);
+ return rowComponent_Reel_SIDConvRow;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDConvRow FindByidx(int idx) {
+ return ((Component_Reel_SIDConvRow)(this.Rows.Find(new object[] {
+ idx})));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public override global::System.Data.DataTable Clone() {
+ Component_Reel_SIDConvDataTable cln = ((Component_Reel_SIDConvDataTable)(base.Clone()));
+ cln.InitVars();
+ return cln;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Data.DataTable CreateInstance() {
+ return new Component_Reel_SIDConvDataTable();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal void InitVars() {
+ this.columnidx = base.Columns["idx"];
+ this.columnM101 = base.Columns["M101"];
+ this.columnM103 = base.Columns["M103"];
+ this.columnM106 = base.Columns["M106"];
+ this.columnM108 = base.Columns["M108"];
+ this.columnM103_2 = base.Columns["M103_2"];
+ this.columnM101_2 = base.Columns["M101_2"];
+ this.columnChk = base.Columns["Chk"];
+ this.columnSIDFrom = base.Columns["SIDFrom"];
+ this.columnSIDTo = base.Columns["SIDTo"];
+ this.columnRemark = base.Columns["Remark"];
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitClass() {
+ this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnidx);
+ this.columnM101 = new global::System.Data.DataColumn("M101", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnM101);
+ this.columnM103 = new global::System.Data.DataColumn("M103", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnM103);
+ this.columnM106 = new global::System.Data.DataColumn("M106", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnM106);
+ this.columnM108 = new global::System.Data.DataColumn("M108", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnM108);
+ this.columnM103_2 = new global::System.Data.DataColumn("M103_2", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnM103_2);
+ this.columnM101_2 = new global::System.Data.DataColumn("M101_2", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnM101_2);
+ this.columnChk = new global::System.Data.DataColumn("Chk", typeof(bool), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnChk);
+ this.columnSIDFrom = new global::System.Data.DataColumn("SIDFrom", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnSIDFrom);
+ this.columnSIDTo = new global::System.Data.DataColumn("SIDTo", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnSIDTo);
+ this.columnRemark = new global::System.Data.DataColumn("Remark", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnRemark);
+ this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] {
+ this.columnidx}, true));
+ this.columnidx.AutoIncrement = true;
+ this.columnidx.AutoIncrementSeed = -1;
+ this.columnidx.AutoIncrementStep = -1;
+ this.columnidx.AllowDBNull = false;
+ this.columnidx.ReadOnly = true;
+ this.columnidx.Unique = true;
+ this.columnM101.MaxLength = 20;
+ this.columnM103.MaxLength = 20;
+ this.columnM106.MaxLength = 20;
+ this.columnM108.MaxLength = 20;
+ this.columnM103_2.MaxLength = 20;
+ this.columnM101_2.MaxLength = 20;
+ this.columnSIDFrom.MaxLength = 20;
+ this.columnSIDTo.MaxLength = 20;
+ this.columnRemark.MaxLength = 100;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDConvRow NewComponent_Reel_SIDConvRow() {
+ return ((Component_Reel_SIDConvRow)(this.NewRow()));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
+ return new Component_Reel_SIDConvRow(builder);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Type GetRowType() {
+ return typeof(Component_Reel_SIDConvRow);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowChanged(e);
+ if ((this.Component_Reel_SIDConvRowChanged != null)) {
+ this.Component_Reel_SIDConvRowChanged(this, new Component_Reel_SIDConvRowChangeEvent(((Component_Reel_SIDConvRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowChanging(e);
+ if ((this.Component_Reel_SIDConvRowChanging != null)) {
+ this.Component_Reel_SIDConvRowChanging(this, new Component_Reel_SIDConvRowChangeEvent(((Component_Reel_SIDConvRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowDeleted(e);
+ if ((this.Component_Reel_SIDConvRowDeleted != null)) {
+ this.Component_Reel_SIDConvRowDeleted(this, new Component_Reel_SIDConvRowChangeEvent(((Component_Reel_SIDConvRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowDeleting(e);
+ if ((this.Component_Reel_SIDConvRowDeleting != null)) {
+ this.Component_Reel_SIDConvRowDeleting(this, new Component_Reel_SIDConvRowChangeEvent(((Component_Reel_SIDConvRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void RemoveComponent_Reel_SIDConvRow(Component_Reel_SIDConvRow row) {
+ this.Rows.Remove(row);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
+ global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
+ global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence();
+ DSList ds = new DSList();
+ global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny();
+ any1.Namespace = "http://www.w3.org/2001/XMLSchema";
+ any1.MinOccurs = new decimal(0);
+ any1.MaxOccurs = decimal.MaxValue;
+ any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+ sequence.Items.Add(any1);
+ global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny();
+ any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1";
+ any2.MinOccurs = new decimal(1);
+ any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+ sequence.Items.Add(any2);
+ global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute();
+ attribute1.Name = "namespace";
+ attribute1.FixedValue = ds.Namespace;
+ type.Attributes.Add(attribute1);
+ global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute();
+ attribute2.Name = "tableTypeName";
+ attribute2.FixedValue = "Component_Reel_SIDConvDataTable";
+ type.Attributes.Add(attribute2);
+ type.Particle = sequence;
+ global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable();
+ if (xs.Contains(dsSchema.TargetNamespace)) {
+ global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream();
+ global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream();
+ try {
+ global::System.Xml.Schema.XmlSchema schema = null;
+ dsSchema.Write(s1);
+ for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) {
+ schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current));
+ s2.SetLength(0);
+ schema.Write(s2);
+ if ((s1.Length == s2.Length)) {
+ s1.Position = 0;
+ s2.Position = 0;
+ for (; ((s1.Position != s1.Length)
+ && (s1.ReadByte() == s2.ReadByte())); ) {
+ ;
+ }
+ if ((s1.Position == s1.Length)) {
+ return type;
+ }
+ }
+ }
+ }
+ finally {
+ if ((s1 != null)) {
+ s1.Close();
+ }
+ if ((s2 != null)) {
+ s2.Close();
+ }
+ }
+ }
+ xs.Add(dsSchema);
+ return type;
+ }
+ }
+
+ ///
+ ///Represents the strongly named DataTable class.
+ ///
+ [global::System.Serializable()]
+ [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
+ public partial class SupplyDataTable : global::System.Data.TypedTableBase {
+
+ private global::System.Data.DataColumn columnTITLE;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SupplyDataTable() {
+ this.TableName = "Supply";
+ this.BeginInit();
+ this.InitClass();
+ this.EndInit();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal SupplyDataTable(global::System.Data.DataTable table) {
+ this.TableName = table.TableName;
+ if ((table.CaseSensitive != table.DataSet.CaseSensitive)) {
+ this.CaseSensitive = table.CaseSensitive;
+ }
+ if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) {
+ this.Locale = table.Locale;
+ }
+ if ((table.Namespace != table.DataSet.Namespace)) {
+ this.Namespace = table.Namespace;
+ }
+ this.Prefix = table.Prefix;
+ this.MinimumCapacity = table.MinimumCapacity;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected SupplyDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
+ base(info, context) {
+ this.InitVars();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn TITLEColumn {
+ get {
+ return this.columnTITLE;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ public int Count {
+ get {
+ return this.Rows.Count;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SupplyRow this[int index] {
+ get {
+ return ((SupplyRow)(this.Rows[index]));
+ }
+ }
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event SupplyRowChangeEventHandler SupplyRowChanging;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event SupplyRowChangeEventHandler SupplyRowChanged;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event SupplyRowChangeEventHandler SupplyRowDeleting;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event SupplyRowChangeEventHandler SupplyRowDeleted;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void AddSupplyRow(SupplyRow row) {
+ this.Rows.Add(row);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SupplyRow AddSupplyRow(string TITLE) {
+ SupplyRow rowSupplyRow = ((SupplyRow)(this.NewRow()));
+ object[] columnValuesArray = new object[] {
+ TITLE};
+ rowSupplyRow.ItemArray = columnValuesArray;
+ this.Rows.Add(rowSupplyRow);
+ return rowSupplyRow;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SupplyRow FindByTITLE(string TITLE) {
+ return ((SupplyRow)(this.Rows.Find(new object[] {
+ TITLE})));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public override global::System.Data.DataTable Clone() {
+ SupplyDataTable cln = ((SupplyDataTable)(base.Clone()));
+ cln.InitVars();
+ return cln;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Data.DataTable CreateInstance() {
+ return new SupplyDataTable();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal void InitVars() {
+ this.columnTITLE = base.Columns["TITLE"];
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitClass() {
+ this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnTITLE);
+ this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] {
+ this.columnTITLE}, true));
+ this.columnTITLE.AllowDBNull = false;
+ this.columnTITLE.Unique = true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SupplyRow NewSupplyRow() {
+ return ((SupplyRow)(this.NewRow()));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
+ return new SupplyRow(builder);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Type GetRowType() {
+ return typeof(SupplyRow);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowChanged(e);
+ if ((this.SupplyRowChanged != null)) {
+ this.SupplyRowChanged(this, new SupplyRowChangeEvent(((SupplyRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowChanging(e);
+ if ((this.SupplyRowChanging != null)) {
+ this.SupplyRowChanging(this, new SupplyRowChangeEvent(((SupplyRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowDeleted(e);
+ if ((this.SupplyRowDeleted != null)) {
+ this.SupplyRowDeleted(this, new SupplyRowChangeEvent(((SupplyRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowDeleting(e);
+ if ((this.SupplyRowDeleting != null)) {
+ this.SupplyRowDeleting(this, new SupplyRowChangeEvent(((SupplyRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void RemoveSupplyRow(SupplyRow row) {
+ this.Rows.Remove(row);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
+ global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
+ global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence();
+ DSList ds = new DSList();
+ global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny();
+ any1.Namespace = "http://www.w3.org/2001/XMLSchema";
+ any1.MinOccurs = new decimal(0);
+ any1.MaxOccurs = decimal.MaxValue;
+ any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+ sequence.Items.Add(any1);
+ global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny();
+ any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1";
+ any2.MinOccurs = new decimal(1);
+ any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+ sequence.Items.Add(any2);
+ global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute();
+ attribute1.Name = "namespace";
+ attribute1.FixedValue = ds.Namespace;
+ type.Attributes.Add(attribute1);
+ global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute();
+ attribute2.Name = "tableTypeName";
+ attribute2.FixedValue = "SupplyDataTable";
+ type.Attributes.Add(attribute2);
+ type.Particle = sequence;
+ global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable();
+ if (xs.Contains(dsSchema.TargetNamespace)) {
+ global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream();
+ global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream();
+ try {
+ global::System.Xml.Schema.XmlSchema schema = null;
+ dsSchema.Write(s1);
+ for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) {
+ schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current));
+ s2.SetLength(0);
+ schema.Write(s2);
+ if ((s1.Length == s2.Length)) {
+ s1.Position = 0;
+ s2.Position = 0;
+ for (; ((s1.Position != s1.Length)
+ && (s1.ReadByte() == s2.ReadByte())); ) {
+ ;
+ }
+ if ((s1.Position == s1.Length)) {
+ return type;
+ }
+ }
+ }
+ }
+ finally {
+ if ((s1 != null)) {
+ s1.Close();
+ }
+ if ((s2 != null)) {
+ s2.Close();
+ }
+ }
+ }
+ xs.Add(dsSchema);
+ return type;
+ }
+ }
+
+ ///
+ ///Represents the strongly named DataTable class.
+ ///
+ [global::System.Serializable()]
+ [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
+ public partial class SIDConvertDataTable : global::System.Data.TypedTableBase {
+
+ private global::System.Data.DataColumn columnSID101;
+
+ private global::System.Data.DataColumn columnSID103;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SIDConvertDataTable() {
+ this.TableName = "SIDConvert";
+ this.BeginInit();
+ this.InitClass();
+ this.EndInit();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal SIDConvertDataTable(global::System.Data.DataTable table) {
+ this.TableName = table.TableName;
+ if ((table.CaseSensitive != table.DataSet.CaseSensitive)) {
+ this.CaseSensitive = table.CaseSensitive;
+ }
+ if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) {
+ this.Locale = table.Locale;
+ }
+ if ((table.Namespace != table.DataSet.Namespace)) {
+ this.Namespace = table.Namespace;
+ }
+ this.Prefix = table.Prefix;
+ this.MinimumCapacity = table.MinimumCapacity;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected SIDConvertDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) :
+ base(info, context) {
+ this.InitVars();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn SID101Column {
+ get {
+ return this.columnSID101;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataColumn SID103Column {
+ get {
+ return this.columnSID103;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ public int Count {
+ get {
+ return this.Rows.Count;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SIDConvertRow this[int index] {
+ get {
+ return ((SIDConvertRow)(this.Rows[index]));
+ }
+ }
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event SIDConvertRowChangeEventHandler SIDConvertRowChanging;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event SIDConvertRowChangeEventHandler SIDConvertRowChanged;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event SIDConvertRowChangeEventHandler SIDConvertRowDeleting;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public event SIDConvertRowChangeEventHandler SIDConvertRowDeleted;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void AddSIDConvertRow(SIDConvertRow row) {
+ this.Rows.Add(row);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SIDConvertRow AddSIDConvertRow(string SID101, string SID103) {
+ SIDConvertRow rowSIDConvertRow = ((SIDConvertRow)(this.NewRow()));
+ object[] columnValuesArray = new object[] {
+ SID101,
+ SID103};
+ rowSIDConvertRow.ItemArray = columnValuesArray;
+ this.Rows.Add(rowSIDConvertRow);
+ return rowSIDConvertRow;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SIDConvertRow FindBySID101SID103(string SID101, string SID103) {
+ return ((SIDConvertRow)(this.Rows.Find(new object[] {
+ SID101,
+ SID103})));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public override global::System.Data.DataTable Clone() {
+ SIDConvertDataTable cln = ((SIDConvertDataTable)(base.Clone()));
+ cln.InitVars();
+ return cln;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Data.DataTable CreateInstance() {
+ return new SIDConvertDataTable();
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal void InitVars() {
+ this.columnSID101 = base.Columns["SID101"];
+ this.columnSID103 = base.Columns["SID103"];
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitClass() {
+ this.columnSID101 = new global::System.Data.DataColumn("SID101", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnSID101);
+ this.columnSID103 = new global::System.Data.DataColumn("SID103", typeof(string), null, global::System.Data.MappingType.Element);
+ base.Columns.Add(this.columnSID103);
+ this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] {
+ this.columnSID101,
+ this.columnSID103}, true));
+ this.columnSID101.AllowDBNull = false;
+ this.columnSID103.AllowDBNull = false;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SIDConvertRow NewSIDConvertRow() {
+ return ((SIDConvertRow)(this.NewRow()));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
+ return new SIDConvertRow(builder);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override global::System.Type GetRowType() {
+ return typeof(SIDConvertRow);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowChanged(e);
+ if ((this.SIDConvertRowChanged != null)) {
+ this.SIDConvertRowChanged(this, new SIDConvertRowChangeEvent(((SIDConvertRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowChanging(e);
+ if ((this.SIDConvertRowChanging != null)) {
+ this.SIDConvertRowChanging(this, new SIDConvertRowChangeEvent(((SIDConvertRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowDeleted(e);
+ if ((this.SIDConvertRowDeleted != null)) {
+ this.SIDConvertRowDeleted(this, new SIDConvertRowChangeEvent(((SIDConvertRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
+ base.OnRowDeleting(e);
+ if ((this.SIDConvertRowDeleting != null)) {
+ this.SIDConvertRowDeleting(this, new SIDConvertRowChangeEvent(((SIDConvertRow)(e.Row)), e.Action));
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void RemoveSIDConvertRow(SIDConvertRow row) {
+ this.Rows.Remove(row);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
+ global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
+ global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence();
+ DSList ds = new DSList();
+ global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny();
+ any1.Namespace = "http://www.w3.org/2001/XMLSchema";
+ any1.MinOccurs = new decimal(0);
+ any1.MaxOccurs = decimal.MaxValue;
+ any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+ sequence.Items.Add(any1);
+ global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny();
+ any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1";
+ any2.MinOccurs = new decimal(1);
+ any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax;
+ sequence.Items.Add(any2);
+ global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute();
+ attribute1.Name = "namespace";
+ attribute1.FixedValue = ds.Namespace;
+ type.Attributes.Add(attribute1);
+ global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute();
+ attribute2.Name = "tableTypeName";
+ attribute2.FixedValue = "SIDConvertDataTable";
+ type.Attributes.Add(attribute2);
+ type.Particle = sequence;
+ global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable();
+ if (xs.Contains(dsSchema.TargetNamespace)) {
+ global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream();
+ global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream();
+ try {
+ global::System.Xml.Schema.XmlSchema schema = null;
+ dsSchema.Write(s1);
+ for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) {
+ schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current));
+ s2.SetLength(0);
+ schema.Write(s2);
+ if ((s1.Length == s2.Length)) {
+ s1.Position = 0;
+ s2.Position = 0;
+ for (; ((s1.Position != s1.Length)
+ && (s1.ReadByte() == s2.ReadByte())); ) {
+ ;
+ }
+ if ((s1.Position == s1.Length)) {
+ return type;
+ }
+ }
+ }
+ }
+ finally {
+ if ((s1 != null)) {
+ s1.Close();
+ }
+ if ((s2 != null)) {
+ s2.Close();
+ }
+ }
+ }
+ xs.Add(dsSchema);
+ return type;
+ }
+ }
+
+ ///
+ ///Represents strongly named DataRow class.
+ ///
+ public partial class Component_Reel_CustRuleRow : global::System.Data.DataRow {
+
+ private Component_Reel_CustRuleDataTable tableComponent_Reel_CustRule;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal Component_Reel_CustRuleRow(global::System.Data.DataRowBuilder rb) :
+ base(rb) {
+ this.tableComponent_Reel_CustRule = ((Component_Reel_CustRuleDataTable)(this.Table));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string code {
+ get {
+ return ((string)(this[this.tableComponent_Reel_CustRule.codeColumn]));
+ }
+ set {
+ this[this.tableComponent_Reel_CustRule.codeColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string pre {
+ get {
+ if (this.IspreNull()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_CustRule.preColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_CustRule.preColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string pos {
+ get {
+ if (this.IsposNull()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_CustRule.posColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_CustRule.posColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public int len {
+ get {
+ if (this.IslenNull()) {
+ return 0;
+ }
+ else {
+ return ((int)(this[this.tableComponent_Reel_CustRule.lenColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_CustRule.lenColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string exp {
+ get {
+ if (this.IsexpNull()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_CustRule.expColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_CustRule.expColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IspreNull() {
+ return this.IsNull(this.tableComponent_Reel_CustRule.preColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetpreNull() {
+ this[this.tableComponent_Reel_CustRule.preColumn] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsposNull() {
+ return this.IsNull(this.tableComponent_Reel_CustRule.posColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetposNull() {
+ this[this.tableComponent_Reel_CustRule.posColumn] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IslenNull() {
+ return this.IsNull(this.tableComponent_Reel_CustRule.lenColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetlenNull() {
+ this[this.tableComponent_Reel_CustRule.lenColumn] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsexpNull() {
+ return this.IsNull(this.tableComponent_Reel_CustRule.expColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetexpNull() {
+ this[this.tableComponent_Reel_CustRule.expColumn] = global::System.Convert.DBNull;
+ }
+ }
+
+ ///
+ ///Represents strongly named DataRow class.
+ ///
+ public partial class Component_Reel_SIDInfoRow : global::System.Data.DataRow {
+
+ private Component_Reel_SIDInfoDataTable tableComponent_Reel_SIDInfo;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal Component_Reel_SIDInfoRow(global::System.Data.DataRowBuilder rb) :
+ base(rb) {
+ this.tableComponent_Reel_SIDInfo = ((Component_Reel_SIDInfoDataTable)(this.Table));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string SID {
+ get {
+ return ((string)(this[this.tableComponent_Reel_SIDInfo.SIDColumn]));
+ }
+ set {
+ this[this.tableComponent_Reel_SIDInfo.SIDColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string CustCode {
+ get {
+ return ((string)(this[this.tableComponent_Reel_SIDInfo.CustCodeColumn]));
+ }
+ set {
+ this[this.tableComponent_Reel_SIDInfo.CustCodeColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string CustName {
+ get {
+ if (this.IsCustNameNull()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDInfo.CustNameColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDInfo.CustNameColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string VenderName {
+ get {
+ if (this.IsVenderNameNull()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDInfo.VenderNameColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDInfo.VenderNameColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string PartNo {
+ get {
+ return ((string)(this[this.tableComponent_Reel_SIDInfo.PartNoColumn]));
+ }
+ set {
+ this[this.tableComponent_Reel_SIDInfo.PartNoColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string PrintPosition {
+ get {
+ if (this.IsPrintPositionNull()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDInfo.PrintPositionColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDInfo.PrintPositionColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string Remark {
+ get {
+ if (this.IsRemarkNull()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDInfo.RemarkColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDInfo.RemarkColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsCustNameNull() {
+ return this.IsNull(this.tableComponent_Reel_SIDInfo.CustNameColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetCustNameNull() {
+ this[this.tableComponent_Reel_SIDInfo.CustNameColumn] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsVenderNameNull() {
+ return this.IsNull(this.tableComponent_Reel_SIDInfo.VenderNameColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetVenderNameNull() {
+ this[this.tableComponent_Reel_SIDInfo.VenderNameColumn] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsPrintPositionNull() {
+ return this.IsNull(this.tableComponent_Reel_SIDInfo.PrintPositionColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetPrintPositionNull() {
+ this[this.tableComponent_Reel_SIDInfo.PrintPositionColumn] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsRemarkNull() {
+ return this.IsNull(this.tableComponent_Reel_SIDInfo.RemarkColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetRemarkNull() {
+ this[this.tableComponent_Reel_SIDInfo.RemarkColumn] = global::System.Convert.DBNull;
+ }
+ }
+
+ ///
+ ///Represents strongly named DataRow class.
+ ///
+ public partial class Component_Reel_SIDConvRow : global::System.Data.DataRow {
+
+ private Component_Reel_SIDConvDataTable tableComponent_Reel_SIDConv;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal Component_Reel_SIDConvRow(global::System.Data.DataRowBuilder rb) :
+ base(rb) {
+ this.tableComponent_Reel_SIDConv = ((Component_Reel_SIDConvDataTable)(this.Table));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public int idx {
+ get {
+ return ((int)(this[this.tableComponent_Reel_SIDConv.idxColumn]));
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.idxColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string M101 {
+ get {
+ if (this.IsM101Null()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDConv.M101Column]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.M101Column] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string M103 {
+ get {
+ if (this.IsM103Null()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDConv.M103Column]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.M103Column] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string M106 {
+ get {
+ if (this.IsM106Null()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDConv.M106Column]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.M106Column] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string M108 {
+ get {
+ if (this.IsM108Null()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDConv.M108Column]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.M108Column] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string M103_2 {
+ get {
+ if (this.IsM103_2Null()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDConv.M103_2Column]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.M103_2Column] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string M101_2 {
+ get {
+ if (this.IsM101_2Null()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDConv.M101_2Column]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.M101_2Column] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool Chk {
+ get {
+ try {
+ return ((bool)(this[this.tableComponent_Reel_SIDConv.ChkColumn]));
+ }
+ catch (global::System.InvalidCastException e) {
+ throw new global::System.Data.StrongTypingException("\'Component_Reel_SIDConv\' 테이블의 \'Chk\' 열의 값이 DBNull입니다.", e);
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.ChkColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string SIDFrom {
+ get {
+ if (this.IsSIDFromNull()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDConv.SIDFromColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.SIDFromColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string SIDTo {
+ get {
+ if (this.IsSIDToNull()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDConv.SIDToColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.SIDToColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string Remark {
+ get {
+ if (this.IsRemarkNull()) {
+ return string.Empty;
+ }
+ else {
+ return ((string)(this[this.tableComponent_Reel_SIDConv.RemarkColumn]));
+ }
+ }
+ set {
+ this[this.tableComponent_Reel_SIDConv.RemarkColumn] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsM101Null() {
+ return this.IsNull(this.tableComponent_Reel_SIDConv.M101Column);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetM101Null() {
+ this[this.tableComponent_Reel_SIDConv.M101Column] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsM103Null() {
+ return this.IsNull(this.tableComponent_Reel_SIDConv.M103Column);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetM103Null() {
+ this[this.tableComponent_Reel_SIDConv.M103Column] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsM106Null() {
+ return this.IsNull(this.tableComponent_Reel_SIDConv.M106Column);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetM106Null() {
+ this[this.tableComponent_Reel_SIDConv.M106Column] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsM108Null() {
+ return this.IsNull(this.tableComponent_Reel_SIDConv.M108Column);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetM108Null() {
+ this[this.tableComponent_Reel_SIDConv.M108Column] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsM103_2Null() {
+ return this.IsNull(this.tableComponent_Reel_SIDConv.M103_2Column);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetM103_2Null() {
+ this[this.tableComponent_Reel_SIDConv.M103_2Column] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsM101_2Null() {
+ return this.IsNull(this.tableComponent_Reel_SIDConv.M101_2Column);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetM101_2Null() {
+ this[this.tableComponent_Reel_SIDConv.M101_2Column] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsChkNull() {
+ return this.IsNull(this.tableComponent_Reel_SIDConv.ChkColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetChkNull() {
+ this[this.tableComponent_Reel_SIDConv.ChkColumn] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsSIDFromNull() {
+ return this.IsNull(this.tableComponent_Reel_SIDConv.SIDFromColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetSIDFromNull() {
+ this[this.tableComponent_Reel_SIDConv.SIDFromColumn] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsSIDToNull() {
+ return this.IsNull(this.tableComponent_Reel_SIDConv.SIDToColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetSIDToNull() {
+ this[this.tableComponent_Reel_SIDConv.SIDToColumn] = global::System.Convert.DBNull;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool IsRemarkNull() {
+ return this.IsNull(this.tableComponent_Reel_SIDConv.RemarkColumn);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public void SetRemarkNull() {
+ this[this.tableComponent_Reel_SIDConv.RemarkColumn] = global::System.Convert.DBNull;
+ }
+ }
+
+ ///
+ ///Represents strongly named DataRow class.
+ ///
+ public partial class SupplyRow : global::System.Data.DataRow {
+
+ private SupplyDataTable tableSupply;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal SupplyRow(global::System.Data.DataRowBuilder rb) :
+ base(rb) {
+ this.tableSupply = ((SupplyDataTable)(this.Table));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string TITLE {
+ get {
+ return ((string)(this[this.tableSupply.TITLEColumn]));
+ }
+ set {
+ this[this.tableSupply.TITLEColumn] = value;
+ }
+ }
+ }
+
+ ///
+ ///Represents strongly named DataRow class.
+ ///
+ public partial class SIDConvertRow : global::System.Data.DataRow {
+
+ private SIDConvertDataTable tableSIDConvert;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal SIDConvertRow(global::System.Data.DataRowBuilder rb) :
+ base(rb) {
+ this.tableSIDConvert = ((SIDConvertDataTable)(this.Table));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string SID101 {
+ get {
+ return ((string)(this[this.tableSIDConvert.SID101Column]));
+ }
+ set {
+ this[this.tableSIDConvert.SID101Column] = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public string SID103 {
+ get {
+ return ((string)(this[this.tableSIDConvert.SID103Column]));
+ }
+ set {
+ this[this.tableSIDConvert.SID103Column] = value;
+ }
+ }
+ }
+
+ ///
+ ///Row event argument class
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public class Component_Reel_CustRuleRowChangeEvent : global::System.EventArgs {
+
+ private Component_Reel_CustRuleRow eventRow;
+
+ private global::System.Data.DataRowAction eventAction;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_CustRuleRowChangeEvent(Component_Reel_CustRuleRow row, global::System.Data.DataRowAction action) {
+ this.eventRow = row;
+ this.eventAction = action;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_CustRuleRow Row {
+ get {
+ return this.eventRow;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataRowAction Action {
+ get {
+ return this.eventAction;
+ }
+ }
+ }
+
+ ///
+ ///Row event argument class
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public class Component_Reel_SIDInfoRowChangeEvent : global::System.EventArgs {
+
+ private Component_Reel_SIDInfoRow eventRow;
+
+ private global::System.Data.DataRowAction eventAction;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDInfoRowChangeEvent(Component_Reel_SIDInfoRow row, global::System.Data.DataRowAction action) {
+ this.eventRow = row;
+ this.eventAction = action;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDInfoRow Row {
+ get {
+ return this.eventRow;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataRowAction Action {
+ get {
+ return this.eventAction;
+ }
+ }
+ }
+
+ ///
+ ///Row event argument class
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public class Component_Reel_SIDConvRowChangeEvent : global::System.EventArgs {
+
+ private Component_Reel_SIDConvRow eventRow;
+
+ private global::System.Data.DataRowAction eventAction;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDConvRowChangeEvent(Component_Reel_SIDConvRow row, global::System.Data.DataRowAction action) {
+ this.eventRow = row;
+ this.eventAction = action;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDConvRow Row {
+ get {
+ return this.eventRow;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataRowAction Action {
+ get {
+ return this.eventAction;
+ }
+ }
+ }
+
+ ///
+ ///Row event argument class
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public class SupplyRowChangeEvent : global::System.EventArgs {
+
+ private SupplyRow eventRow;
+
+ private global::System.Data.DataRowAction eventAction;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SupplyRowChangeEvent(SupplyRow row, global::System.Data.DataRowAction action) {
+ this.eventRow = row;
+ this.eventAction = action;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SupplyRow Row {
+ get {
+ return this.eventRow;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataRowAction Action {
+ get {
+ return this.eventAction;
+ }
+ }
+ }
+
+ ///
+ ///Row event argument class
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public class SIDConvertRowChangeEvent : global::System.EventArgs {
+
+ private SIDConvertRow eventRow;
+
+ private global::System.Data.DataRowAction eventAction;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SIDConvertRowChangeEvent(SIDConvertRow row, global::System.Data.DataRowAction action) {
+ this.eventRow = row;
+ this.eventAction = action;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public SIDConvertRow Row {
+ get {
+ return this.eventRow;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public global::System.Data.DataRowAction Action {
+ get {
+ return this.eventAction;
+ }
+ }
+ }
+ }
+}
+namespace Project.DSListTableAdapters {
+
+
+ ///
+ ///Represents the connection and commands used to retrieve and save data.
+ ///
+ [global::System.ComponentModel.DesignerCategoryAttribute("code")]
+ [global::System.ComponentModel.ToolboxItem(true)]
+ [global::System.ComponentModel.DataObjectAttribute(true)]
+ [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
+ ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public partial class Component_Reel_CustRuleTableAdapter : global::System.ComponentModel.Component {
+
+ private global::System.Data.SqlClient.SqlDataAdapter _adapter;
+
+ private global::System.Data.SqlClient.SqlConnection _connection;
+
+ private global::System.Data.SqlClient.SqlTransaction _transaction;
+
+ private global::System.Data.SqlClient.SqlCommand[] _commandCollection;
+
+ private bool _clearBeforeFill;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_CustRuleTableAdapter() {
+ this.ClearBeforeFill = true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter {
+ get {
+ if ((this._adapter == null)) {
+ this.InitAdapter();
+ }
+ return this._adapter;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal global::System.Data.SqlClient.SqlConnection Connection {
+ get {
+ if ((this._connection == null)) {
+ this.InitConnection();
+ }
+ return this._connection;
+ }
+ set {
+ this._connection = value;
+ if ((this.Adapter.InsertCommand != null)) {
+ this.Adapter.InsertCommand.Connection = value;
+ }
+ if ((this.Adapter.DeleteCommand != null)) {
+ this.Adapter.DeleteCommand.Connection = value;
+ }
+ if ((this.Adapter.UpdateCommand != null)) {
+ this.Adapter.UpdateCommand.Connection = value;
+ }
+ for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) {
+ if ((this.CommandCollection[i] != null)) {
+ ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value;
+ }
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal global::System.Data.SqlClient.SqlTransaction Transaction {
+ get {
+ return this._transaction;
+ }
+ set {
+ this._transaction = value;
+ for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) {
+ this.CommandCollection[i].Transaction = this._transaction;
+ }
+ if (((this.Adapter != null)
+ && (this.Adapter.DeleteCommand != null))) {
+ this.Adapter.DeleteCommand.Transaction = this._transaction;
+ }
+ if (((this.Adapter != null)
+ && (this.Adapter.InsertCommand != null))) {
+ this.Adapter.InsertCommand.Transaction = this._transaction;
+ }
+ if (((this.Adapter != null)
+ && (this.Adapter.UpdateCommand != null))) {
+ this.Adapter.UpdateCommand.Transaction = this._transaction;
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected global::System.Data.SqlClient.SqlCommand[] CommandCollection {
+ get {
+ if ((this._commandCollection == null)) {
+ this.InitCommandCollection();
+ }
+ return this._commandCollection;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool ClearBeforeFill {
+ get {
+ return this._clearBeforeFill;
+ }
+ set {
+ this._clearBeforeFill = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitAdapter() {
+ this._adapter = new global::System.Data.SqlClient.SqlDataAdapter();
+ global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping();
+ tableMapping.SourceTable = "Table";
+ tableMapping.DataSetTable = "Component_Reel_CustRule";
+ tableMapping.ColumnMappings.Add("code", "code");
+ tableMapping.ColumnMappings.Add("pre", "pre");
+ tableMapping.ColumnMappings.Add("pos", "pos");
+ tableMapping.ColumnMappings.Add("len", "len");
+ tableMapping.ColumnMappings.Add("exp", "exp");
+ this._adapter.TableMappings.Add(tableMapping);
+ this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand();
+ this._adapter.DeleteCommand.Connection = this.Connection;
+ this._adapter.DeleteCommand.CommandText = @"DELETE FROM [Component_Reel_CustRule] WHERE (([code] = @Original_code) AND ((@IsNull_pre = 1 AND [pre] IS NULL) OR ([pre] = @Original_pre)) AND ((@IsNull_pos = 1 AND [pos] IS NULL) OR ([pos] = @Original_pos)) AND ((@IsNull_len = 1 AND [len] IS NULL) OR ([len] = @Original_len)) AND ((@IsNull_exp = 1 AND [exp] IS NULL) OR ([exp] = @Original_exp)))";
+ this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text;
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_code", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_pre", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pre", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_pre", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pre", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_pos", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pos", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_pos", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pos", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_len", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "len", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_len", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "len", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_exp", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "exp", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_exp", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "exp", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand();
+ this._adapter.InsertCommand.Connection = this.Connection;
+ this._adapter.InsertCommand.CommandText = "INSERT INTO [Component_Reel_CustRule] ([code], [pre], [pos], [len], [exp]) VALUES" +
+ " (@code, @pre, @pos, @len, @exp);\r\nSELECT code, pre, pos, len, exp FROM Componen" +
+ "t_Reel_CustRule WHERE (code = @code)";
+ this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text;
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@code", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@pre", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pre", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@pos", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pos", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@len", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "len", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@exp", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "exp", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand();
+ this._adapter.UpdateCommand.Connection = this.Connection;
+ this._adapter.UpdateCommand.CommandText = @"UPDATE [Component_Reel_CustRule] SET [code] = @code, [pre] = @pre, [pos] = @pos, [len] = @len, [exp] = @exp WHERE (([code] = @Original_code) AND ((@IsNull_pre = 1 AND [pre] IS NULL) OR ([pre] = @Original_pre)) AND ((@IsNull_pos = 1 AND [pos] IS NULL) OR ([pos] = @Original_pos)) AND ((@IsNull_len = 1 AND [len] IS NULL) OR ([len] = @Original_len)) AND ((@IsNull_exp = 1 AND [exp] IS NULL) OR ([exp] = @Original_exp)));
+SELECT code, pre, pos, len, exp FROM Component_Reel_CustRule WHERE (code = @code)";
+ this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text;
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@code", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@pre", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pre", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@pos", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pos", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@len", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "len", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@exp", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "exp", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_code", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_pre", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pre", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_pre", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pre", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_pos", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pos", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_pos", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pos", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_len", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "len", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_len", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "len", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_exp", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "exp", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_exp", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "exp", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitConnection() {
+ this._connection = new global::System.Data.SqlClient.SqlConnection();
+ this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitCommandCollection() {
+ this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1];
+ this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
+ this._commandCollection[0].Connection = this.Connection;
+ this._commandCollection[0].CommandText = "SELECT Component_Reel_CustRule.*\r\nFROM Component_Reel_CustRule";
+ this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
+ public virtual int Fill(DSList.Component_Reel_CustRuleDataTable dataTable) {
+ this.Adapter.SelectCommand = this.CommandCollection[0];
+ if ((this.ClearBeforeFill == true)) {
+ dataTable.Clear();
+ }
+ int returnValue = this.Adapter.Fill(dataTable);
+ return returnValue;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)]
+ public virtual DSList.Component_Reel_CustRuleDataTable GetData() {
+ this.Adapter.SelectCommand = this.CommandCollection[0];
+ DSList.Component_Reel_CustRuleDataTable dataTable = new DSList.Component_Reel_CustRuleDataTable();
+ this.Adapter.Fill(dataTable);
+ return dataTable;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(DSList.Component_Reel_CustRuleDataTable dataTable) {
+ return this.Adapter.Update(dataTable);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(DSList dataSet) {
+ return this.Adapter.Update(dataSet, "Component_Reel_CustRule");
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(global::System.Data.DataRow dataRow) {
+ return this.Adapter.Update(new global::System.Data.DataRow[] {
+ dataRow});
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(global::System.Data.DataRow[] dataRows) {
+ return this.Adapter.Update(dataRows);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)]
+ public virtual int Delete(string Original_code, string Original_pre, string Original_pos, global::System.Nullable Original_len, string Original_exp) {
+ if ((Original_code == null)) {
+ throw new global::System.ArgumentNullException("Original_code");
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[0].Value = ((string)(Original_code));
+ }
+ if ((Original_pre == null)) {
+ this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[2].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[2].Value = ((string)(Original_pre));
+ }
+ if ((Original_pos == null)) {
+ this.Adapter.DeleteCommand.Parameters[3].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[4].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[3].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[4].Value = ((string)(Original_pos));
+ }
+ if ((Original_len.HasValue == true)) {
+ this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[6].Value = ((int)(Original_len.Value));
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[6].Value = global::System.DBNull.Value;
+ }
+ if ((Original_exp == null)) {
+ this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[8].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[8].Value = ((string)(Original_exp));
+ }
+ global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State;
+ if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open)
+ != global::System.Data.ConnectionState.Open)) {
+ this.Adapter.DeleteCommand.Connection.Open();
+ }
+ try {
+ int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery();
+ return returnValue;
+ }
+ finally {
+ if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+ this.Adapter.DeleteCommand.Connection.Close();
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
+ public virtual int Insert(string code, string pre, string pos, global::System.Nullable len, string exp) {
+ if ((code == null)) {
+ throw new global::System.ArgumentNullException("code");
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[0].Value = ((string)(code));
+ }
+ if ((pre == null)) {
+ this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[1].Value = ((string)(pre));
+ }
+ if ((pos == null)) {
+ this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[2].Value = ((string)(pos));
+ }
+ if ((len.HasValue == true)) {
+ this.Adapter.InsertCommand.Parameters[3].Value = ((int)(len.Value));
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value;
+ }
+ if ((exp == null)) {
+ this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[4].Value = ((string)(exp));
+ }
+ global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State;
+ if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open)
+ != global::System.Data.ConnectionState.Open)) {
+ this.Adapter.InsertCommand.Connection.Open();
+ }
+ try {
+ int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery();
+ return returnValue;
+ }
+ finally {
+ if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+ this.Adapter.InsertCommand.Connection.Close();
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
+ public virtual int Update(string code, string pre, string pos, global::System.Nullable len, string exp, string Original_code, string Original_pre, string Original_pos, global::System.Nullable Original_len, string Original_exp) {
+ if ((code == null)) {
+ throw new global::System.ArgumentNullException("code");
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(code));
+ }
+ if ((pre == null)) {
+ this.Adapter.UpdateCommand.Parameters[1].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(pre));
+ }
+ if ((pos == null)) {
+ this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(pos));
+ }
+ if ((len.HasValue == true)) {
+ this.Adapter.UpdateCommand.Parameters[3].Value = ((int)(len.Value));
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value;
+ }
+ if ((exp == null)) {
+ this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[4].Value = ((string)(exp));
+ }
+ if ((Original_code == null)) {
+ throw new global::System.ArgumentNullException("Original_code");
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[5].Value = ((string)(Original_code));
+ }
+ if ((Original_pre == null)) {
+ this.Adapter.UpdateCommand.Parameters[6].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[7].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[6].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[7].Value = ((string)(Original_pre));
+ }
+ if ((Original_pos == null)) {
+ this.Adapter.UpdateCommand.Parameters[8].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[9].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[8].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[9].Value = ((string)(Original_pos));
+ }
+ if ((Original_len.HasValue == true)) {
+ this.Adapter.UpdateCommand.Parameters[10].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[11].Value = ((int)(Original_len.Value));
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[10].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[11].Value = global::System.DBNull.Value;
+ }
+ if ((Original_exp == null)) {
+ this.Adapter.UpdateCommand.Parameters[12].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[13].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[12].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[13].Value = ((string)(Original_exp));
+ }
+ global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State;
+ if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open)
+ != global::System.Data.ConnectionState.Open)) {
+ this.Adapter.UpdateCommand.Connection.Open();
+ }
+ try {
+ int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery();
+ return returnValue;
+ }
+ finally {
+ if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+ this.Adapter.UpdateCommand.Connection.Close();
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
+ public virtual int Update(string pre, string pos, global::System.Nullable len, string exp, string Original_code, string Original_pre, string Original_pos, global::System.Nullable Original_len, string Original_exp) {
+ return this.Update(Original_code, pre, pos, len, exp, Original_code, Original_pre, Original_pos, Original_len, Original_exp);
+ }
+ }
+
+ ///
+ ///Represents the connection and commands used to retrieve and save data.
+ ///
+ [global::System.ComponentModel.DesignerCategoryAttribute("code")]
+ [global::System.ComponentModel.ToolboxItem(true)]
+ [global::System.ComponentModel.DataObjectAttribute(true)]
+ [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
+ ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public partial class Component_Reel_SIDInfoTableAdapter : global::System.ComponentModel.Component {
+
+ private global::System.Data.SqlClient.SqlDataAdapter _adapter;
+
+ private global::System.Data.SqlClient.SqlConnection _connection;
+
+ private global::System.Data.SqlClient.SqlTransaction _transaction;
+
+ private global::System.Data.SqlClient.SqlCommand[] _commandCollection;
+
+ private bool _clearBeforeFill;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDInfoTableAdapter() {
+ this.ClearBeforeFill = true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter {
+ get {
+ if ((this._adapter == null)) {
+ this.InitAdapter();
+ }
+ return this._adapter;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal global::System.Data.SqlClient.SqlConnection Connection {
+ get {
+ if ((this._connection == null)) {
+ this.InitConnection();
+ }
+ return this._connection;
+ }
+ set {
+ this._connection = value;
+ if ((this.Adapter.InsertCommand != null)) {
+ this.Adapter.InsertCommand.Connection = value;
+ }
+ if ((this.Adapter.DeleteCommand != null)) {
+ this.Adapter.DeleteCommand.Connection = value;
+ }
+ if ((this.Adapter.UpdateCommand != null)) {
+ this.Adapter.UpdateCommand.Connection = value;
+ }
+ for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) {
+ if ((this.CommandCollection[i] != null)) {
+ ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value;
+ }
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal global::System.Data.SqlClient.SqlTransaction Transaction {
+ get {
+ return this._transaction;
+ }
+ set {
+ this._transaction = value;
+ for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) {
+ this.CommandCollection[i].Transaction = this._transaction;
+ }
+ if (((this.Adapter != null)
+ && (this.Adapter.DeleteCommand != null))) {
+ this.Adapter.DeleteCommand.Transaction = this._transaction;
+ }
+ if (((this.Adapter != null)
+ && (this.Adapter.InsertCommand != null))) {
+ this.Adapter.InsertCommand.Transaction = this._transaction;
+ }
+ if (((this.Adapter != null)
+ && (this.Adapter.UpdateCommand != null))) {
+ this.Adapter.UpdateCommand.Transaction = this._transaction;
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected global::System.Data.SqlClient.SqlCommand[] CommandCollection {
+ get {
+ if ((this._commandCollection == null)) {
+ this.InitCommandCollection();
+ }
+ return this._commandCollection;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool ClearBeforeFill {
+ get {
+ return this._clearBeforeFill;
+ }
+ set {
+ this._clearBeforeFill = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitAdapter() {
+ this._adapter = new global::System.Data.SqlClient.SqlDataAdapter();
+ global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping();
+ tableMapping.SourceTable = "Table";
+ tableMapping.DataSetTable = "Component_Reel_SIDInfo";
+ tableMapping.ColumnMappings.Add("SID", "SID");
+ tableMapping.ColumnMappings.Add("CustCode", "CustCode");
+ tableMapping.ColumnMappings.Add("CustName", "CustName");
+ tableMapping.ColumnMappings.Add("VenderName", "VenderName");
+ tableMapping.ColumnMappings.Add("PartNo", "PartNo");
+ tableMapping.ColumnMappings.Add("PrintPosition", "PrintPosition");
+ tableMapping.ColumnMappings.Add("Remark", "Remark");
+ this._adapter.TableMappings.Add(tableMapping);
+ this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand();
+ this._adapter.DeleteCommand.Connection = this.Connection;
+ this._adapter.DeleteCommand.CommandText = @"DELETE FROM [Component_Reel_SIDInfo] WHERE (([SID] = @Original_SID) AND ([CustCode] = @Original_CustCode) AND ((@IsNull_CustName = 1 AND [CustName] IS NULL) OR ([CustName] = @Original_CustName)) AND ((@IsNull_VenderName = 1 AND [VenderName] IS NULL) OR ([VenderName] = @Original_VenderName)) AND ([PartNo] = @Original_PartNo) AND ((@IsNull_PrintPosition = 1 AND [PrintPosition] IS NULL) OR ([PrintPosition] = @Original_PrintPosition)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)))";
+ this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text;
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CustCode", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_CustName", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CustName", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VenderName", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VenderName", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PartNo", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PartNo", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PrintPosition", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PrintPosition", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand();
+ this._adapter.InsertCommand.Connection = this.Connection;
+ this._adapter.InsertCommand.CommandText = @"INSERT INTO [Component_Reel_SIDInfo] ([SID], [CustCode], [CustName], [VenderName], [PartNo], [PrintPosition], [Remark]) VALUES (@SID, @CustCode, @CustName, @VenderName, @PartNo, @PrintPosition, @Remark);
+SELECT SID, CustCode, CustName, VenderName, PartNo, PrintPosition, Remark FROM Component_Reel_SIDInfo WHERE (CustCode = @CustCode) AND (PartNo = @PartNo) AND (SID = @SID)";
+ this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text;
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CustCode", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CustName", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VenderName", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PartNo", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PartNo", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PrintPosition", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand();
+ this._adapter.UpdateCommand.Connection = this.Connection;
+ this._adapter.UpdateCommand.CommandText = @"UPDATE [Component_Reel_SIDInfo] SET [SID] = @SID, [CustCode] = @CustCode, [CustName] = @CustName, [VenderName] = @VenderName, [PartNo] = @PartNo, [PrintPosition] = @PrintPosition, [Remark] = @Remark WHERE (([SID] = @Original_SID) AND ([CustCode] = @Original_CustCode) AND ((@IsNull_CustName = 1 AND [CustName] IS NULL) OR ([CustName] = @Original_CustName)) AND ((@IsNull_VenderName = 1 AND [VenderName] IS NULL) OR ([VenderName] = @Original_VenderName)) AND ([PartNo] = @Original_PartNo) AND ((@IsNull_PrintPosition = 1 AND [PrintPosition] IS NULL) OR ([PrintPosition] = @Original_PrintPosition)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)));
+SELECT SID, CustCode, CustName, VenderName, PartNo, PrintPosition, Remark FROM Component_Reel_SIDInfo WHERE (CustCode = @CustCode) AND (PartNo = @PartNo) AND (SID = @SID)";
+ this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text;
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CustCode", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CustName", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VenderName", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PartNo", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PartNo", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PrintPosition", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CustCode", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_CustName", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CustName", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VenderName", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VenderName", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PartNo", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PartNo", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PrintPosition", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PrintPosition", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitConnection() {
+ this._connection = new global::System.Data.SqlClient.SqlConnection();
+ this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitCommandCollection() {
+ this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1];
+ this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
+ this._commandCollection[0].Connection = this.Connection;
+ this._commandCollection[0].CommandText = "SELECT SID, CustCode, CustName, VenderName, PartNo, PrintPosition, Remark\r\nFROM " +
+ " Component_Reel_SIDInfo\r\nWHERE (SID = @sid) AND (CustCode = @custcode) AND (" +
+ "PartNo = @partno)";
+ this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
+ this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sid", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@custcode", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@partno", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "PartNo", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
+ public virtual int Fill(DSList.Component_Reel_SIDInfoDataTable dataTable, string sid, string custcode, string partno) {
+ this.Adapter.SelectCommand = this.CommandCollection[0];
+ if ((sid == null)) {
+ throw new global::System.ArgumentNullException("sid");
+ }
+ else {
+ this.Adapter.SelectCommand.Parameters[0].Value = ((string)(sid));
+ }
+ if ((custcode == null)) {
+ throw new global::System.ArgumentNullException("custcode");
+ }
+ else {
+ this.Adapter.SelectCommand.Parameters[1].Value = ((string)(custcode));
+ }
+ if ((partno == null)) {
+ throw new global::System.ArgumentNullException("partno");
+ }
+ else {
+ this.Adapter.SelectCommand.Parameters[2].Value = ((string)(partno));
+ }
+ if ((this.ClearBeforeFill == true)) {
+ dataTable.Clear();
+ }
+ int returnValue = this.Adapter.Fill(dataTable);
+ return returnValue;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)]
+ public virtual DSList.Component_Reel_SIDInfoDataTable GetData(string sid, string custcode, string partno) {
+ this.Adapter.SelectCommand = this.CommandCollection[0];
+ if ((sid == null)) {
+ throw new global::System.ArgumentNullException("sid");
+ }
+ else {
+ this.Adapter.SelectCommand.Parameters[0].Value = ((string)(sid));
+ }
+ if ((custcode == null)) {
+ throw new global::System.ArgumentNullException("custcode");
+ }
+ else {
+ this.Adapter.SelectCommand.Parameters[1].Value = ((string)(custcode));
+ }
+ if ((partno == null)) {
+ throw new global::System.ArgumentNullException("partno");
+ }
+ else {
+ this.Adapter.SelectCommand.Parameters[2].Value = ((string)(partno));
+ }
+ DSList.Component_Reel_SIDInfoDataTable dataTable = new DSList.Component_Reel_SIDInfoDataTable();
+ this.Adapter.Fill(dataTable);
+ return dataTable;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(DSList.Component_Reel_SIDInfoDataTable dataTable) {
+ return this.Adapter.Update(dataTable);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(DSList dataSet) {
+ return this.Adapter.Update(dataSet, "Component_Reel_SIDInfo");
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(global::System.Data.DataRow dataRow) {
+ return this.Adapter.Update(new global::System.Data.DataRow[] {
+ dataRow});
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(global::System.Data.DataRow[] dataRows) {
+ return this.Adapter.Update(dataRows);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)]
+ public virtual int Delete(string Original_SID, string Original_CustCode, string Original_CustName, string Original_VenderName, string Original_PartNo, string Original_PrintPosition, string Original_Remark) {
+ if ((Original_SID == null)) {
+ throw new global::System.ArgumentNullException("Original_SID");
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[0].Value = ((string)(Original_SID));
+ }
+ if ((Original_CustCode == null)) {
+ throw new global::System.ArgumentNullException("Original_CustCode");
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[1].Value = ((string)(Original_CustCode));
+ }
+ if ((Original_CustName == null)) {
+ this.Adapter.DeleteCommand.Parameters[2].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[3].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[2].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[3].Value = ((string)(Original_CustName));
+ }
+ if ((Original_VenderName == null)) {
+ this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[5].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[5].Value = ((string)(Original_VenderName));
+ }
+ if ((Original_PartNo == null)) {
+ throw new global::System.ArgumentNullException("Original_PartNo");
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[6].Value = ((string)(Original_PartNo));
+ }
+ if ((Original_PrintPosition == null)) {
+ this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[8].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[8].Value = ((string)(Original_PrintPosition));
+ }
+ if ((Original_Remark == null)) {
+ this.Adapter.DeleteCommand.Parameters[9].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[10].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[9].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[10].Value = ((string)(Original_Remark));
+ }
+ global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State;
+ if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open)
+ != global::System.Data.ConnectionState.Open)) {
+ this.Adapter.DeleteCommand.Connection.Open();
+ }
+ try {
+ int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery();
+ return returnValue;
+ }
+ finally {
+ if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+ this.Adapter.DeleteCommand.Connection.Close();
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
+ public virtual int Insert(string SID, string CustCode, string CustName, string VenderName, string PartNo, string PrintPosition, string Remark) {
+ if ((SID == null)) {
+ throw new global::System.ArgumentNullException("SID");
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[0].Value = ((string)(SID));
+ }
+ if ((CustCode == null)) {
+ throw new global::System.ArgumentNullException("CustCode");
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[1].Value = ((string)(CustCode));
+ }
+ if ((CustName == null)) {
+ this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[2].Value = ((string)(CustName));
+ }
+ if ((VenderName == null)) {
+ this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[3].Value = ((string)(VenderName));
+ }
+ if ((PartNo == null)) {
+ throw new global::System.ArgumentNullException("PartNo");
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[4].Value = ((string)(PartNo));
+ }
+ if ((PrintPosition == null)) {
+ this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[5].Value = ((string)(PrintPosition));
+ }
+ if ((Remark == null)) {
+ this.Adapter.InsertCommand.Parameters[6].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[6].Value = ((string)(Remark));
+ }
+ global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State;
+ if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open)
+ != global::System.Data.ConnectionState.Open)) {
+ this.Adapter.InsertCommand.Connection.Open();
+ }
+ try {
+ int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery();
+ return returnValue;
+ }
+ finally {
+ if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+ this.Adapter.InsertCommand.Connection.Close();
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
+ public virtual int Update(string SID, string CustCode, string CustName, string VenderName, string PartNo, string PrintPosition, string Remark, string Original_SID, string Original_CustCode, string Original_CustName, string Original_VenderName, string Original_PartNo, string Original_PrintPosition, string Original_Remark) {
+ if ((SID == null)) {
+ throw new global::System.ArgumentNullException("SID");
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(SID));
+ }
+ if ((CustCode == null)) {
+ throw new global::System.ArgumentNullException("CustCode");
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(CustCode));
+ }
+ if ((CustName == null)) {
+ this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(CustName));
+ }
+ if ((VenderName == null)) {
+ this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(VenderName));
+ }
+ if ((PartNo == null)) {
+ throw new global::System.ArgumentNullException("PartNo");
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[4].Value = ((string)(PartNo));
+ }
+ if ((PrintPosition == null)) {
+ this.Adapter.UpdateCommand.Parameters[5].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[5].Value = ((string)(PrintPosition));
+ }
+ if ((Remark == null)) {
+ this.Adapter.UpdateCommand.Parameters[6].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[6].Value = ((string)(Remark));
+ }
+ if ((Original_SID == null)) {
+ throw new global::System.ArgumentNullException("Original_SID");
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[7].Value = ((string)(Original_SID));
+ }
+ if ((Original_CustCode == null)) {
+ throw new global::System.ArgumentNullException("Original_CustCode");
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[8].Value = ((string)(Original_CustCode));
+ }
+ if ((Original_CustName == null)) {
+ this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[10].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[10].Value = ((string)(Original_CustName));
+ }
+ if ((Original_VenderName == null)) {
+ this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[12].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[12].Value = ((string)(Original_VenderName));
+ }
+ if ((Original_PartNo == null)) {
+ throw new global::System.ArgumentNullException("Original_PartNo");
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[13].Value = ((string)(Original_PartNo));
+ }
+ if ((Original_PrintPosition == null)) {
+ this.Adapter.UpdateCommand.Parameters[14].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[15].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[14].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[15].Value = ((string)(Original_PrintPosition));
+ }
+ if ((Original_Remark == null)) {
+ this.Adapter.UpdateCommand.Parameters[16].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[17].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[16].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[17].Value = ((string)(Original_Remark));
+ }
+ global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State;
+ if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open)
+ != global::System.Data.ConnectionState.Open)) {
+ this.Adapter.UpdateCommand.Connection.Open();
+ }
+ try {
+ int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery();
+ return returnValue;
+ }
+ finally {
+ if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+ this.Adapter.UpdateCommand.Connection.Close();
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
+ public virtual int Update(string CustName, string VenderName, string PrintPosition, string Remark, string Original_SID, string Original_CustCode, string Original_CustName, string Original_VenderName, string Original_PartNo, string Original_PrintPosition, string Original_Remark) {
+ return this.Update(Original_SID, Original_CustCode, CustName, VenderName, Original_PartNo, PrintPosition, Remark, Original_SID, Original_CustCode, Original_CustName, Original_VenderName, Original_PartNo, Original_PrintPosition, Original_Remark);
+ }
+ }
+
+ ///
+ ///Represents the connection and commands used to retrieve and save data.
+ ///
+ [global::System.ComponentModel.DesignerCategoryAttribute("code")]
+ [global::System.ComponentModel.ToolboxItem(true)]
+ [global::System.ComponentModel.DataObjectAttribute(true)]
+ [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
+ ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public partial class Component_Reel_SIDConvTableAdapter : global::System.ComponentModel.Component {
+
+ private global::System.Data.SqlClient.SqlDataAdapter _adapter;
+
+ private global::System.Data.SqlClient.SqlConnection _connection;
+
+ private global::System.Data.SqlClient.SqlTransaction _transaction;
+
+ private global::System.Data.SqlClient.SqlCommand[] _commandCollection;
+
+ private bool _clearBeforeFill;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public Component_Reel_SIDConvTableAdapter() {
+ this.ClearBeforeFill = true;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter {
+ get {
+ if ((this._adapter == null)) {
+ this.InitAdapter();
+ }
+ return this._adapter;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal global::System.Data.SqlClient.SqlConnection Connection {
+ get {
+ if ((this._connection == null)) {
+ this.InitConnection();
+ }
+ return this._connection;
+ }
+ set {
+ this._connection = value;
+ if ((this.Adapter.InsertCommand != null)) {
+ this.Adapter.InsertCommand.Connection = value;
+ }
+ if ((this.Adapter.DeleteCommand != null)) {
+ this.Adapter.DeleteCommand.Connection = value;
+ }
+ if ((this.Adapter.UpdateCommand != null)) {
+ this.Adapter.UpdateCommand.Connection = value;
+ }
+ for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) {
+ if ((this.CommandCollection[i] != null)) {
+ ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value;
+ }
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ internal global::System.Data.SqlClient.SqlTransaction Transaction {
+ get {
+ return this._transaction;
+ }
+ set {
+ this._transaction = value;
+ for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) {
+ this.CommandCollection[i].Transaction = this._transaction;
+ }
+ if (((this.Adapter != null)
+ && (this.Adapter.DeleteCommand != null))) {
+ this.Adapter.DeleteCommand.Transaction = this._transaction;
+ }
+ if (((this.Adapter != null)
+ && (this.Adapter.InsertCommand != null))) {
+ this.Adapter.InsertCommand.Transaction = this._transaction;
+ }
+ if (((this.Adapter != null)
+ && (this.Adapter.UpdateCommand != null))) {
+ this.Adapter.UpdateCommand.Transaction = this._transaction;
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ protected global::System.Data.SqlClient.SqlCommand[] CommandCollection {
+ get {
+ if ((this._commandCollection == null)) {
+ this.InitCommandCollection();
+ }
+ return this._commandCollection;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool ClearBeforeFill {
+ get {
+ return this._clearBeforeFill;
+ }
+ set {
+ this._clearBeforeFill = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitAdapter() {
+ this._adapter = new global::System.Data.SqlClient.SqlDataAdapter();
+ global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping();
+ tableMapping.SourceTable = "Table";
+ tableMapping.DataSetTable = "Component_Reel_SIDConv";
+ tableMapping.ColumnMappings.Add("idx", "idx");
+ tableMapping.ColumnMappings.Add("M101", "M101");
+ tableMapping.ColumnMappings.Add("M103", "M103");
+ tableMapping.ColumnMappings.Add("M106", "M106");
+ tableMapping.ColumnMappings.Add("M108", "M108");
+ tableMapping.ColumnMappings.Add("M103_2", "M103_2");
+ tableMapping.ColumnMappings.Add("M101_2", "M101_2");
+ tableMapping.ColumnMappings.Add("Chk", "Chk");
+ tableMapping.ColumnMappings.Add("SIDFrom", "SIDFrom");
+ tableMapping.ColumnMappings.Add("SIDTo", "SIDTo");
+ tableMapping.ColumnMappings.Add("Remark", "Remark");
+ this._adapter.TableMappings.Add(tableMapping);
+ this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand();
+ this._adapter.DeleteCommand.Connection = this.Connection;
+ this._adapter.DeleteCommand.CommandText = @"DELETE FROM [Component_Reel_SIDConv] WHERE (([idx] = @Original_idx) AND ((@IsNull_M101 = 1 AND [M101] IS NULL) OR ([M101] = @Original_M101)) AND ((@IsNull_M103 = 1 AND [M103] IS NULL) OR ([M103] = @Original_M103)) AND ((@IsNull_M106 = 1 AND [M106] IS NULL) OR ([M106] = @Original_M106)) AND ((@IsNull_M108 = 1 AND [M108] IS NULL) OR ([M108] = @Original_M108)) AND ((@IsNull_M103_2 = 1 AND [M103_2] IS NULL) OR ([M103_2] = @Original_M103_2)) AND ((@IsNull_M101_2 = 1 AND [M101_2] IS NULL) OR ([M101_2] = @Original_M101_2)) AND ((@IsNull_Chk = 1 AND [Chk] IS NULL) OR ([Chk] = @Original_Chk)) AND ((@IsNull_SIDFrom = 1 AND [SIDFrom] IS NULL) OR ([SIDFrom] = @Original_SIDFrom)) AND ((@IsNull_SIDTo = 1 AND [SIDTo] IS NULL) OR ([SIDTo] = @Original_SIDTo)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)))";
+ this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text;
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M101", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M101", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M103", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M103", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M106", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M106", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M106", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M106", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M108", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M108", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M108", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M108", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M103_2", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103_2", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M103_2", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103_2", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M101_2", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101_2", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M101_2", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101_2", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Chk", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Chk", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SIDFrom", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SIDFrom", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SIDTo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SIDTo", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand();
+ this._adapter.InsertCommand.Connection = this.Connection;
+ this._adapter.InsertCommand.CommandText = @"INSERT INTO [Component_Reel_SIDConv] ([M101], [M103], [M106], [M108], [M103_2], [M101_2], [Chk], [SIDFrom], [SIDTo], [Remark]) VALUES (@M101, @M103, @M106, @M108, @M103_2, @M101_2, @Chk, @SIDFrom, @SIDTo, @Remark);
+SELECT idx, M101, M103, M106, M108, M103_2, M101_2, Chk, SIDFrom, SIDTo, Remark FROM Component_Reel_SIDConv WHERE (idx = SCOPE_IDENTITY())";
+ this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text;
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M101", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M103", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M106", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M106", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M108", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M108", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M103_2", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103_2", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M101_2", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101_2", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Chk", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SIDFrom", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SIDTo", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand();
+ this._adapter.UpdateCommand.Connection = this.Connection;
+ this._adapter.UpdateCommand.CommandText = @"UPDATE [Component_Reel_SIDConv] SET [M101] = @M101, [M103] = @M103, [M106] = @M106, [M108] = @M108, [M103_2] = @M103_2, [M101_2] = @M101_2, [Chk] = @Chk, [SIDFrom] = @SIDFrom, [SIDTo] = @SIDTo, [Remark] = @Remark WHERE (([idx] = @Original_idx) AND ((@IsNull_M101 = 1 AND [M101] IS NULL) OR ([M101] = @Original_M101)) AND ((@IsNull_M103 = 1 AND [M103] IS NULL) OR ([M103] = @Original_M103)) AND ((@IsNull_M106 = 1 AND [M106] IS NULL) OR ([M106] = @Original_M106)) AND ((@IsNull_M108 = 1 AND [M108] IS NULL) OR ([M108] = @Original_M108)) AND ((@IsNull_M103_2 = 1 AND [M103_2] IS NULL) OR ([M103_2] = @Original_M103_2)) AND ((@IsNull_M101_2 = 1 AND [M101_2] IS NULL) OR ([M101_2] = @Original_M101_2)) AND ((@IsNull_Chk = 1 AND [Chk] IS NULL) OR ([Chk] = @Original_Chk)) AND ((@IsNull_SIDFrom = 1 AND [SIDFrom] IS NULL) OR ([SIDFrom] = @Original_SIDFrom)) AND ((@IsNull_SIDTo = 1 AND [SIDTo] IS NULL) OR ([SIDTo] = @Original_SIDTo)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)));
+SELECT idx, M101, M103, M106, M108, M103_2, M101_2, Chk, SIDFrom, SIDTo, Remark FROM Component_Reel_SIDConv WHERE (idx = @idx)";
+ this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text;
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M101", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M103", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M106", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M106", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M108", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M108", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M103_2", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103_2", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@M101_2", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101_2", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Chk", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SIDFrom", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SIDTo", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M101", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M101", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M103", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M103", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M106", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M106", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M106", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M106", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M108", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M108", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M108", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M108", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M103_2", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103_2", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M103_2", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M103_2", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_M101_2", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101_2", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_M101_2", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "M101_2", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Chk", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Chk", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SIDFrom", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SIDFrom", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SIDTo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SIDTo", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+ this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@idx", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitConnection() {
+ this._connection = new global::System.Data.SqlClient.SqlConnection();
+ this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private void InitCommandCollection() {
+ this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1];
+ this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
+ this._commandCollection[0].Connection = this.Connection;
+ this._commandCollection[0].CommandText = "SELECT idx, M101, M103, M106, M108, M103_2, M101_2, Chk, SIDFrom, SIDTo, Remark\r" +
+ "\nFROM Component_Reel_SIDConv\r\nWHERE (SIDFrom = @sidfrom) AND (SIDTo = @sidt" +
+ "o)";
+ this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
+ this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sidfrom", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sidto", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
+ public virtual int Fill(DSList.Component_Reel_SIDConvDataTable dataTable, string sidfrom, string sidto) {
+ this.Adapter.SelectCommand = this.CommandCollection[0];
+ if ((sidfrom == null)) {
+ this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.SelectCommand.Parameters[0].Value = ((string)(sidfrom));
+ }
+ if ((sidto == null)) {
+ this.Adapter.SelectCommand.Parameters[1].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sidto));
+ }
+ if ((this.ClearBeforeFill == true)) {
+ dataTable.Clear();
+ }
+ int returnValue = this.Adapter.Fill(dataTable);
+ return returnValue;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)]
+ public virtual DSList.Component_Reel_SIDConvDataTable GetData(string sidfrom, string sidto) {
+ this.Adapter.SelectCommand = this.CommandCollection[0];
+ if ((sidfrom == null)) {
+ this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.SelectCommand.Parameters[0].Value = ((string)(sidfrom));
+ }
+ if ((sidto == null)) {
+ this.Adapter.SelectCommand.Parameters[1].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sidto));
+ }
+ DSList.Component_Reel_SIDConvDataTable dataTable = new DSList.Component_Reel_SIDConvDataTable();
+ this.Adapter.Fill(dataTable);
+ return dataTable;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(DSList.Component_Reel_SIDConvDataTable dataTable) {
+ return this.Adapter.Update(dataTable);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(DSList dataSet) {
+ return this.Adapter.Update(dataSet, "Component_Reel_SIDConv");
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(global::System.Data.DataRow dataRow) {
+ return this.Adapter.Update(new global::System.Data.DataRow[] {
+ dataRow});
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ public virtual int Update(global::System.Data.DataRow[] dataRows) {
+ return this.Adapter.Update(dataRows);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)]
+ public virtual int Delete(int Original_idx, string Original_M101, string Original_M103, string Original_M106, string Original_M108, string Original_M103_2, string Original_M101_2, global::System.Nullable Original_Chk, string Original_SIDFrom, string Original_SIDTo, string Original_Remark) {
+ this.Adapter.DeleteCommand.Parameters[0].Value = ((int)(Original_idx));
+ if ((Original_M101 == null)) {
+ this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[2].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[2].Value = ((string)(Original_M101));
+ }
+ if ((Original_M103 == null)) {
+ this.Adapter.DeleteCommand.Parameters[3].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[4].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[3].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[4].Value = ((string)(Original_M103));
+ }
+ if ((Original_M106 == null)) {
+ this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[6].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[6].Value = ((string)(Original_M106));
+ }
+ if ((Original_M108 == null)) {
+ this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[8].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[8].Value = ((string)(Original_M108));
+ }
+ if ((Original_M103_2 == null)) {
+ this.Adapter.DeleteCommand.Parameters[9].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[10].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[9].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[10].Value = ((string)(Original_M103_2));
+ }
+ if ((Original_M101_2 == null)) {
+ this.Adapter.DeleteCommand.Parameters[11].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[12].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[11].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[12].Value = ((string)(Original_M101_2));
+ }
+ if ((Original_Chk.HasValue == true)) {
+ this.Adapter.DeleteCommand.Parameters[13].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[14].Value = ((bool)(Original_Chk.Value));
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[13].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[14].Value = global::System.DBNull.Value;
+ }
+ if ((Original_SIDFrom == null)) {
+ this.Adapter.DeleteCommand.Parameters[15].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[16].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[15].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[16].Value = ((string)(Original_SIDFrom));
+ }
+ if ((Original_SIDTo == null)) {
+ this.Adapter.DeleteCommand.Parameters[17].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[18].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[17].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[18].Value = ((string)(Original_SIDTo));
+ }
+ if ((Original_Remark == null)) {
+ this.Adapter.DeleteCommand.Parameters[19].Value = ((object)(1));
+ this.Adapter.DeleteCommand.Parameters[20].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.DeleteCommand.Parameters[19].Value = ((object)(0));
+ this.Adapter.DeleteCommand.Parameters[20].Value = ((string)(Original_Remark));
+ }
+ global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State;
+ if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open)
+ != global::System.Data.ConnectionState.Open)) {
+ this.Adapter.DeleteCommand.Connection.Open();
+ }
+ try {
+ int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery();
+ return returnValue;
+ }
+ finally {
+ if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+ this.Adapter.DeleteCommand.Connection.Close();
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
+ public virtual int Insert(string M101, string M103, string M106, string M108, string M103_2, string M101_2, global::System.Nullable Chk, string SIDFrom, string SIDTo, string Remark) {
+ if ((M101 == null)) {
+ this.Adapter.InsertCommand.Parameters[0].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[0].Value = ((string)(M101));
+ }
+ if ((M103 == null)) {
+ this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[1].Value = ((string)(M103));
+ }
+ if ((M106 == null)) {
+ this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[2].Value = ((string)(M106));
+ }
+ if ((M108 == null)) {
+ this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[3].Value = ((string)(M108));
+ }
+ if ((M103_2 == null)) {
+ this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[4].Value = ((string)(M103_2));
+ }
+ if ((M101_2 == null)) {
+ this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[5].Value = ((string)(M101_2));
+ }
+ if ((Chk.HasValue == true)) {
+ this.Adapter.InsertCommand.Parameters[6].Value = ((bool)(Chk.Value));
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[6].Value = global::System.DBNull.Value;
+ }
+ if ((SIDFrom == null)) {
+ this.Adapter.InsertCommand.Parameters[7].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[7].Value = ((string)(SIDFrom));
+ }
+ if ((SIDTo == null)) {
+ this.Adapter.InsertCommand.Parameters[8].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[8].Value = ((string)(SIDTo));
+ }
+ if ((Remark == null)) {
+ this.Adapter.InsertCommand.Parameters[9].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.InsertCommand.Parameters[9].Value = ((string)(Remark));
+ }
+ global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State;
+ if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open)
+ != global::System.Data.ConnectionState.Open)) {
+ this.Adapter.InsertCommand.Connection.Open();
+ }
+ try {
+ int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery();
+ return returnValue;
+ }
+ finally {
+ if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+ this.Adapter.InsertCommand.Connection.Close();
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
+ public virtual int Update(
+ string M101,
+ string M103,
+ string M106,
+ string M108,
+ string M103_2,
+ string M101_2,
+ global::System.Nullable Chk,
+ string SIDFrom,
+ string SIDTo,
+ string Remark,
+ int Original_idx,
+ string Original_M101,
+ string Original_M103,
+ string Original_M106,
+ string Original_M108,
+ string Original_M103_2,
+ string Original_M101_2,
+ global::System.Nullable Original_Chk,
+ string Original_SIDFrom,
+ string Original_SIDTo,
+ string Original_Remark,
+ int idx) {
+ if ((M101 == null)) {
+ this.Adapter.UpdateCommand.Parameters[0].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(M101));
+ }
+ if ((M103 == null)) {
+ this.Adapter.UpdateCommand.Parameters[1].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(M103));
+ }
+ if ((M106 == null)) {
+ this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(M106));
+ }
+ if ((M108 == null)) {
+ this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(M108));
+ }
+ if ((M103_2 == null)) {
+ this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[4].Value = ((string)(M103_2));
+ }
+ if ((M101_2 == null)) {
+ this.Adapter.UpdateCommand.Parameters[5].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[5].Value = ((string)(M101_2));
+ }
+ if ((Chk.HasValue == true)) {
+ this.Adapter.UpdateCommand.Parameters[6].Value = ((bool)(Chk.Value));
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[6].Value = global::System.DBNull.Value;
+ }
+ if ((SIDFrom == null)) {
+ this.Adapter.UpdateCommand.Parameters[7].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[7].Value = ((string)(SIDFrom));
+ }
+ if ((SIDTo == null)) {
+ this.Adapter.UpdateCommand.Parameters[8].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[8].Value = ((string)(SIDTo));
+ }
+ if ((Remark == null)) {
+ this.Adapter.UpdateCommand.Parameters[9].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[9].Value = ((string)(Remark));
+ }
+ this.Adapter.UpdateCommand.Parameters[10].Value = ((int)(Original_idx));
+ if ((Original_M101 == null)) {
+ this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[12].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[12].Value = ((string)(Original_M101));
+ }
+ if ((Original_M103 == null)) {
+ this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[14].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[14].Value = ((string)(Original_M103));
+ }
+ if ((Original_M106 == null)) {
+ this.Adapter.UpdateCommand.Parameters[15].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[16].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[15].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[16].Value = ((string)(Original_M106));
+ }
+ if ((Original_M108 == null)) {
+ this.Adapter.UpdateCommand.Parameters[17].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[18].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[17].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[18].Value = ((string)(Original_M108));
+ }
+ if ((Original_M103_2 == null)) {
+ this.Adapter.UpdateCommand.Parameters[19].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[20].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[19].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[20].Value = ((string)(Original_M103_2));
+ }
+ if ((Original_M101_2 == null)) {
+ this.Adapter.UpdateCommand.Parameters[21].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[22].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[21].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[22].Value = ((string)(Original_M101_2));
+ }
+ if ((Original_Chk.HasValue == true)) {
+ this.Adapter.UpdateCommand.Parameters[23].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[24].Value = ((bool)(Original_Chk.Value));
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[23].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[24].Value = global::System.DBNull.Value;
+ }
+ if ((Original_SIDFrom == null)) {
+ this.Adapter.UpdateCommand.Parameters[25].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[26].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[25].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[26].Value = ((string)(Original_SIDFrom));
+ }
+ if ((Original_SIDTo == null)) {
+ this.Adapter.UpdateCommand.Parameters[27].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[28].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[27].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[28].Value = ((string)(Original_SIDTo));
+ }
+ if ((Original_Remark == null)) {
+ this.Adapter.UpdateCommand.Parameters[29].Value = ((object)(1));
+ this.Adapter.UpdateCommand.Parameters[30].Value = global::System.DBNull.Value;
+ }
+ else {
+ this.Adapter.UpdateCommand.Parameters[29].Value = ((object)(0));
+ this.Adapter.UpdateCommand.Parameters[30].Value = ((string)(Original_Remark));
+ }
+ this.Adapter.UpdateCommand.Parameters[31].Value = ((int)(idx));
+ global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State;
+ if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open)
+ != global::System.Data.ConnectionState.Open)) {
+ this.Adapter.UpdateCommand.Connection.Open();
+ }
+ try {
+ int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery();
+ return returnValue;
+ }
+ finally {
+ if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+ this.Adapter.UpdateCommand.Connection.Close();
+ }
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+ [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
+ public virtual int Update(
+ string M101,
+ string M103,
+ string M106,
+ string M108,
+ string M103_2,
+ string M101_2,
+ global::System.Nullable Chk,
+ string SIDFrom,
+ string SIDTo,
+ string Remark,
+ int Original_idx,
+ string Original_M101,
+ string Original_M103,
+ string Original_M106,
+ string Original_M108,
+ string Original_M103_2,
+ string Original_M101_2,
+ global::System.Nullable Original_Chk,
+ string Original_SIDFrom,
+ string Original_SIDTo,
+ string Original_Remark) {
+ return this.Update(M101, M103, M106, M108, M103_2, M101_2, Chk, SIDFrom, SIDTo, Remark, Original_idx, Original_M101, Original_M103, Original_M106, Original_M108, Original_M103_2, Original_M101_2, Original_Chk, Original_SIDFrom, Original_SIDTo, Original_Remark, Original_idx);
+ }
+ }
+
+ ///
+ ///TableAdapterManager is used to coordinate TableAdapters in the dataset to enable Hierarchical Update scenarios
+ ///
+ [global::System.ComponentModel.DesignerCategoryAttribute("code")]
+ [global::System.ComponentModel.ToolboxItem(true)]
+ [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerDesigner, Microsoft.VSD" +
+ "esigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+ [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapterManager")]
+ public partial class TableAdapterManager : global::System.ComponentModel.Component {
+
+ private UpdateOrderOption _updateOrder;
+
+ private Component_Reel_CustRuleTableAdapter _component_Reel_CustRuleTableAdapter;
+
+ private Component_Reel_SIDInfoTableAdapter _component_Reel_SIDInfoTableAdapter;
+
+ private Component_Reel_SIDConvTableAdapter _component_Reel_SIDConvTableAdapter;
+
+ private bool _backupDataSetBeforeUpdate;
+
+ private global::System.Data.IDbConnection _connection;
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public UpdateOrderOption UpdateOrder {
+ get {
+ return this._updateOrder;
+ }
+ set {
+ this._updateOrder = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" +
+ "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" +
+ "a", "System.Drawing.Design.UITypeEditor")]
+ public Component_Reel_CustRuleTableAdapter Component_Reel_CustRuleTableAdapter {
+ get {
+ return this._component_Reel_CustRuleTableAdapter;
+ }
+ set {
+ this._component_Reel_CustRuleTableAdapter = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" +
+ "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" +
+ "a", "System.Drawing.Design.UITypeEditor")]
+ public Component_Reel_SIDInfoTableAdapter Component_Reel_SIDInfoTableAdapter {
+ get {
+ return this._component_Reel_SIDInfoTableAdapter;
+ }
+ set {
+ this._component_Reel_SIDInfoTableAdapter = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" +
+ "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" +
+ "a", "System.Drawing.Design.UITypeEditor")]
+ public Component_Reel_SIDConvTableAdapter Component_Reel_SIDConvTableAdapter {
+ get {
+ return this._component_Reel_SIDConvTableAdapter;
+ }
+ set {
+ this._component_Reel_SIDConvTableAdapter = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public bool BackupDataSetBeforeUpdate {
+ get {
+ return this._backupDataSetBeforeUpdate;
+ }
+ set {
+ this._backupDataSetBeforeUpdate = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ public global::System.Data.IDbConnection Connection {
+ get {
+ if ((this._connection != null)) {
+ return this._connection;
+ }
+ if (((this._component_Reel_CustRuleTableAdapter != null)
+ && (this._component_Reel_CustRuleTableAdapter.Connection != null))) {
+ return this._component_Reel_CustRuleTableAdapter.Connection;
+ }
+ if (((this._component_Reel_SIDInfoTableAdapter != null)
+ && (this._component_Reel_SIDInfoTableAdapter.Connection != null))) {
+ return this._component_Reel_SIDInfoTableAdapter.Connection;
+ }
+ if (((this._component_Reel_SIDConvTableAdapter != null)
+ && (this._component_Reel_SIDConvTableAdapter.Connection != null))) {
+ return this._component_Reel_SIDConvTableAdapter.Connection;
+ }
+ return null;
+ }
+ set {
+ this._connection = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ [global::System.ComponentModel.Browsable(false)]
+ public int TableAdapterInstanceCount {
+ get {
+ int count = 0;
+ if ((this._component_Reel_CustRuleTableAdapter != null)) {
+ count = (count + 1);
+ }
+ if ((this._component_Reel_SIDInfoTableAdapter != null)) {
+ count = (count + 1);
+ }
+ if ((this._component_Reel_SIDConvTableAdapter != null)) {
+ count = (count + 1);
+ }
+ return count;
+ }
+ }
+
+ ///
+ ///Update rows in top-down order.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private int UpdateUpdatedRows(DSList dataSet, global::System.Collections.Generic.List allChangedRows, global::System.Collections.Generic.List allAddedRows) {
+ int result = 0;
+ if ((this._component_Reel_CustRuleTableAdapter != null)) {
+ global::System.Data.DataRow[] updatedRows = dataSet.Component_Reel_CustRule.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent);
+ updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows);
+ if (((updatedRows != null)
+ && (0 < updatedRows.Length))) {
+ result = (result + this._component_Reel_CustRuleTableAdapter.Update(updatedRows));
+ allChangedRows.AddRange(updatedRows);
+ }
+ }
+ if ((this._component_Reel_SIDInfoTableAdapter != null)) {
+ global::System.Data.DataRow[] updatedRows = dataSet.Component_Reel_SIDInfo.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent);
+ updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows);
+ if (((updatedRows != null)
+ && (0 < updatedRows.Length))) {
+ result = (result + this._component_Reel_SIDInfoTableAdapter.Update(updatedRows));
+ allChangedRows.AddRange(updatedRows);
+ }
+ }
+ if ((this._component_Reel_SIDConvTableAdapter != null)) {
+ global::System.Data.DataRow[] updatedRows = dataSet.Component_Reel_SIDConv.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent);
+ updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows);
+ if (((updatedRows != null)
+ && (0 < updatedRows.Length))) {
+ result = (result + this._component_Reel_SIDConvTableAdapter.Update(updatedRows));
+ allChangedRows.AddRange(updatedRows);
+ }
+ }
+ return result;
+ }
+
+ ///
+ ///Insert rows in top-down order.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private int UpdateInsertedRows(DSList dataSet, global::System.Collections.Generic.List allAddedRows) {
+ int result = 0;
+ if ((this._component_Reel_CustRuleTableAdapter != null)) {
+ global::System.Data.DataRow[] addedRows = dataSet.Component_Reel_CustRule.Select(null, null, global::System.Data.DataViewRowState.Added);
+ if (((addedRows != null)
+ && (0 < addedRows.Length))) {
+ result = (result + this._component_Reel_CustRuleTableAdapter.Update(addedRows));
+ allAddedRows.AddRange(addedRows);
+ }
+ }
+ if ((this._component_Reel_SIDInfoTableAdapter != null)) {
+ global::System.Data.DataRow[] addedRows = dataSet.Component_Reel_SIDInfo.Select(null, null, global::System.Data.DataViewRowState.Added);
+ if (((addedRows != null)
+ && (0 < addedRows.Length))) {
+ result = (result + this._component_Reel_SIDInfoTableAdapter.Update(addedRows));
+ allAddedRows.AddRange(addedRows);
+ }
+ }
+ if ((this._component_Reel_SIDConvTableAdapter != null)) {
+ global::System.Data.DataRow[] addedRows = dataSet.Component_Reel_SIDConv.Select(null, null, global::System.Data.DataViewRowState.Added);
+ if (((addedRows != null)
+ && (0 < addedRows.Length))) {
+ result = (result + this._component_Reel_SIDConvTableAdapter.Update(addedRows));
+ allAddedRows.AddRange(addedRows);
+ }
+ }
+ return result;
+ }
+
+ ///
+ ///Delete rows in bottom-up order.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private int UpdateDeletedRows(DSList dataSet, global::System.Collections.Generic.List allChangedRows) {
+ int result = 0;
+ if ((this._component_Reel_SIDConvTableAdapter != null)) {
+ global::System.Data.DataRow[] deletedRows = dataSet.Component_Reel_SIDConv.Select(null, null, global::System.Data.DataViewRowState.Deleted);
+ if (((deletedRows != null)
+ && (0 < deletedRows.Length))) {
+ result = (result + this._component_Reel_SIDConvTableAdapter.Update(deletedRows));
+ allChangedRows.AddRange(deletedRows);
+ }
+ }
+ if ((this._component_Reel_SIDInfoTableAdapter != null)) {
+ global::System.Data.DataRow[] deletedRows = dataSet.Component_Reel_SIDInfo.Select(null, null, global::System.Data.DataViewRowState.Deleted);
+ if (((deletedRows != null)
+ && (0 < deletedRows.Length))) {
+ result = (result + this._component_Reel_SIDInfoTableAdapter.Update(deletedRows));
+ allChangedRows.AddRange(deletedRows);
+ }
+ }
+ if ((this._component_Reel_CustRuleTableAdapter != null)) {
+ global::System.Data.DataRow[] deletedRows = dataSet.Component_Reel_CustRule.Select(null, null, global::System.Data.DataViewRowState.Deleted);
+ if (((deletedRows != null)
+ && (0 < deletedRows.Length))) {
+ result = (result + this._component_Reel_CustRuleTableAdapter.Update(deletedRows));
+ allChangedRows.AddRange(deletedRows);
+ }
+ }
+ return result;
+ }
+
+ ///
+ ///Remove inserted rows that become updated rows after calling TableAdapter.Update(inserted rows) first
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ private global::System.Data.DataRow[] GetRealUpdatedRows(global::System.Data.DataRow[] updatedRows, global::System.Collections.Generic.List allAddedRows) {
+ if (((updatedRows == null)
+ || (updatedRows.Length < 1))) {
+ return updatedRows;
+ }
+ if (((allAddedRows == null)
+ || (allAddedRows.Count < 1))) {
+ return updatedRows;
+ }
+ global::System.Collections.Generic.List realUpdatedRows = new global::System.Collections.Generic.List();
+ for (int i = 0; (i < updatedRows.Length); i = (i + 1)) {
+ global::System.Data.DataRow row = updatedRows[i];
+ if ((allAddedRows.Contains(row) == false)) {
+ realUpdatedRows.Add(row);
+ }
+ }
+ return realUpdatedRows.ToArray();
+ }
+
+ ///
+ ///Update all changes to the dataset.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")]
+ public virtual int UpdateAll(DSList dataSet) {
+ if ((dataSet == null)) {
+ throw new global::System.ArgumentNullException("dataSet");
+ }
+ if ((dataSet.HasChanges() == false)) {
+ return 0;
+ }
+ if (((this._component_Reel_CustRuleTableAdapter != null)
+ && (this.MatchTableAdapterConnection(this._component_Reel_CustRuleTableAdapter.Connection) == false))) {
+ throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다.");
+ }
+ if (((this._component_Reel_SIDInfoTableAdapter != null)
+ && (this.MatchTableAdapterConnection(this._component_Reel_SIDInfoTableAdapter.Connection) == false))) {
+ throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다.");
+ }
+ if (((this._component_Reel_SIDConvTableAdapter != null)
+ && (this.MatchTableAdapterConnection(this._component_Reel_SIDConvTableAdapter.Connection) == false))) {
+ throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다.");
+ }
+ global::System.Data.IDbConnection workConnection = this.Connection;
+ if ((workConnection == null)) {
+ throw new global::System.ApplicationException("TableAdapterManager에 연결 정보가 없습니다. 각 TableAdapterManager TableAdapter 속성을 올바른 Tabl" +
+ "eAdapter 인스턴스로 설정하십시오.");
+ }
+ bool workConnOpened = false;
+ if (((workConnection.State & global::System.Data.ConnectionState.Broken)
+ == global::System.Data.ConnectionState.Broken)) {
+ workConnection.Close();
+ }
+ if ((workConnection.State == global::System.Data.ConnectionState.Closed)) {
+ workConnection.Open();
+ workConnOpened = true;
+ }
+ global::System.Data.IDbTransaction workTransaction = workConnection.BeginTransaction();
+ if ((workTransaction == null)) {
+ throw new global::System.ApplicationException("트랜잭션을 시작할 수 없습니다. 현재 데이터 연결에서 트랜잭션이 지원되지 않거나 현재 상태에서 트랜잭션을 시작할 수 없습니다.");
+ }
+ global::System.Collections.Generic.List allChangedRows = new global::System.Collections.Generic.List();
+ global::System.Collections.Generic.List allAddedRows = new global::System.Collections.Generic.List();
+ global::System.Collections.Generic.List adaptersWithAcceptChangesDuringUpdate = new global::System.Collections.Generic.List();
+ global::System.Collections.Generic.Dictionary