diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.Designer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.Designer.cs index 8edfcd5..b0ae983 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.Designer.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.Designer.cs @@ -55,6 +55,8 @@ this.labelTitleCommunicationLog = new SmartX.SmartLabel(); this.buttonCommunicationLog = new SmartX.SmartButton(); this.labelTitleEquipmentType = new SmartX.SmartLabel(); + this.labelMotorNum = new SmartX.SmartLabel(); + this.labelTitleMotorNum = new SmartX.SmartLabel(); this.smartGroupBox1.SuspendLayout(); this.SuspendLayout(); // @@ -63,6 +65,8 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(46)))), ((int)(((byte)(46))))); this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.labelMotorNum); + this.smartGroupBox1.Controls.Add(this.labelTitleMotorNum); this.smartGroupBox1.Controls.Add(this.labelTitleBLDC); this.smartGroupBox1.Controls.Add(this.buttonBLDCUsing); this.smartGroupBox1.Controls.Add(this.labelMovingAverage); @@ -111,7 +115,7 @@ this.labelTitleBLDC.ForeColor = System.Drawing.Color.White; this.labelTitleBLDC.InitVisible = true; this.labelTitleBLDC.LineSpacing = 0F; - this.labelTitleBLDC.Location = new System.Drawing.Point(115, 220); + this.labelTitleBLDC.Location = new System.Drawing.Point(115, 193); this.labelTitleBLDC.Name = "labelTitleBLDC"; this.labelTitleBLDC.Size = new System.Drawing.Size(260, 28); this.labelTitleBLDC.TabIndex = 214; @@ -132,7 +136,7 @@ this.buttonBLDCUsing.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonBLDCUsing.DownImage"))); this.buttonBLDCUsing.GroupID = 0; this.buttonBLDCUsing.InitVisible = true; - this.buttonBLDCUsing.Location = new System.Drawing.Point(381, 220); + this.buttonBLDCUsing.Location = new System.Drawing.Point(381, 193); this.buttonBLDCUsing.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; this.buttonBLDCUsing.Name = "buttonBLDCUsing"; this.buttonBLDCUsing.NestedClickEventPrevent = false; @@ -162,7 +166,7 @@ this.labelMovingAverage.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelMovingAverage.InitVisible = true; this.labelMovingAverage.LineSpacing = 0F; - this.labelMovingAverage.Location = new System.Drawing.Point(381, 177); + this.labelMovingAverage.Location = new System.Drawing.Point(381, 159); this.labelMovingAverage.Name = "labelMovingAverage"; this.labelMovingAverage.Size = new System.Drawing.Size(120, 28); this.labelMovingAverage.TabIndex = 212; @@ -182,7 +186,7 @@ this.labelTitleMovingAverage.ForeColor = System.Drawing.Color.White; this.labelTitleMovingAverage.InitVisible = true; this.labelTitleMovingAverage.LineSpacing = 0F; - this.labelTitleMovingAverage.Location = new System.Drawing.Point(115, 177); + this.labelTitleMovingAverage.Location = new System.Drawing.Point(115, 159); this.labelTitleMovingAverage.Name = "labelTitleMovingAverage"; this.labelTitleMovingAverage.Size = new System.Drawing.Size(260, 28); this.labelTitleMovingAverage.TabIndex = 211; @@ -202,7 +206,7 @@ this.labelFilter.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelFilter.InitVisible = true; this.labelFilter.LineSpacing = 0F; - this.labelFilter.Location = new System.Drawing.Point(381, 143); + this.labelFilter.Location = new System.Drawing.Point(381, 125); this.labelFilter.Name = "labelFilter"; this.labelFilter.Size = new System.Drawing.Size(120, 28); this.labelFilter.TabIndex = 210; @@ -222,7 +226,7 @@ this.labelTitleFilter.ForeColor = System.Drawing.Color.White; this.labelTitleFilter.InitVisible = true; this.labelTitleFilter.LineSpacing = 0F; - this.labelTitleFilter.Location = new System.Drawing.Point(115, 143); + this.labelTitleFilter.Location = new System.Drawing.Point(115, 125); this.labelTitleFilter.Name = "labelTitleFilter"; this.labelTitleFilter.Size = new System.Drawing.Size(260, 28); this.labelTitleFilter.TabIndex = 209; @@ -242,7 +246,7 @@ this.labelConveyorLength.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelConveyorLength.InitVisible = true; this.labelConveyorLength.LineSpacing = 0F; - this.labelConveyorLength.Location = new System.Drawing.Point(381, 98); + this.labelConveyorLength.Location = new System.Drawing.Point(381, 91); this.labelConveyorLength.Name = "labelConveyorLength"; this.labelConveyorLength.Size = new System.Drawing.Size(120, 28); this.labelConveyorLength.TabIndex = 208; @@ -263,7 +267,7 @@ this.labelTitleConveyorLength.ForeColor = System.Drawing.Color.White; this.labelTitleConveyorLength.InitVisible = true; this.labelTitleConveyorLength.LineSpacing = 0F; - this.labelTitleConveyorLength.Location = new System.Drawing.Point(115, 98); + this.labelTitleConveyorLength.Location = new System.Drawing.Point(115, 91); this.labelTitleConveyorLength.Name = "labelTitleConveyorLength"; this.labelTitleConveyorLength.Size = new System.Drawing.Size(260, 28); this.labelTitleConveyorLength.TabIndex = 207; @@ -447,7 +451,7 @@ this.labelTitleCommunicationOption.ForeColor = System.Drawing.Color.White; this.labelTitleCommunicationOption.InitVisible = true; this.labelTitleCommunicationOption.LineSpacing = 0F; - this.labelTitleCommunicationOption.Location = new System.Drawing.Point(115, 64); + this.labelTitleCommunicationOption.Location = new System.Drawing.Point(115, 57); this.labelTitleCommunicationOption.Name = "labelTitleCommunicationOption"; this.labelTitleCommunicationOption.Size = new System.Drawing.Size(260, 28); this.labelTitleCommunicationOption.TabIndex = 196; @@ -468,7 +472,7 @@ this.buttonCommunicationOption.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonCommunicationOption.DownImage"))); this.buttonCommunicationOption.GroupID = 0; this.buttonCommunicationOption.InitVisible = true; - this.buttonCommunicationOption.Location = new System.Drawing.Point(381, 64); + this.buttonCommunicationOption.Location = new System.Drawing.Point(381, 57); this.buttonCommunicationOption.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; this.buttonCommunicationOption.Name = "buttonCommunicationOption"; this.buttonCommunicationOption.NestedClickEventPrevent = false; @@ -490,7 +494,7 @@ // comboBoxEquipmentType // this.comboBoxEquipmentType.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); - this.comboBoxEquipmentType.Location = new System.Drawing.Point(381, 30); + this.comboBoxEquipmentType.Location = new System.Drawing.Point(381, 23); this.comboBoxEquipmentType.Name = "comboBoxEquipmentType"; this.comboBoxEquipmentType.Size = new System.Drawing.Size(180, 28); this.comboBoxEquipmentType.TabIndex = 190; @@ -589,7 +593,7 @@ this.labelTitleEquipmentType.ForeColor = System.Drawing.Color.White; this.labelTitleEquipmentType.InitVisible = true; this.labelTitleEquipmentType.LineSpacing = 0F; - this.labelTitleEquipmentType.Location = new System.Drawing.Point(115, 30); + this.labelTitleEquipmentType.Location = new System.Drawing.Point(115, 23); this.labelTitleEquipmentType.Name = "labelTitleEquipmentType"; this.labelTitleEquipmentType.Size = new System.Drawing.Size(260, 28); this.labelTitleEquipmentType.TabIndex = 117; @@ -599,6 +603,46 @@ this.labelTitleEquipmentType.Visible = false; this.labelTitleEquipmentType.Wordwrap = false; // + // labelMotorNum + // + this.labelMotorNum.BackColor = System.Drawing.SystemColors.Window; + this.labelMotorNum.BackPictureBox = null; + this.labelMotorNum.BackPictureBox1 = null; + this.labelMotorNum.BackPictureBox2 = null; + this.labelMotorNum.BorderColor = System.Drawing.Color.Black; + this.labelMotorNum.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelMotorNum.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelMotorNum.InitVisible = true; + this.labelMotorNum.LineSpacing = 0F; + this.labelMotorNum.Location = new System.Drawing.Point(381, 227); + this.labelMotorNum.Name = "labelMotorNum"; + this.labelMotorNum.Size = new System.Drawing.Size(120, 28); + this.labelMotorNum.TabIndex = 216; + this.labelMotorNum.Text = "0"; + this.labelMotorNum.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelMotorNum.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelMotorNum.Wordwrap = true; + this.labelMotorNum.Click += new System.EventHandler(this.labelMotorNum_Click); + // + // labelTitleMotorNum + // + this.labelTitleMotorNum.BackPictureBox1 = null; + this.labelTitleMotorNum.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleMotorNum.BorderColor = System.Drawing.Color.Black; + this.labelTitleMotorNum.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleMotorNum.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelTitleMotorNum.ForeColor = System.Drawing.Color.White; + this.labelTitleMotorNum.InitVisible = true; + this.labelTitleMotorNum.LineSpacing = 0F; + this.labelTitleMotorNum.Location = new System.Drawing.Point(115, 227); + this.labelTitleMotorNum.Name = "labelTitleMotorNum"; + this.labelTitleMotorNum.Size = new System.Drawing.Size(260, 28); + this.labelTitleMotorNum.TabIndex = 215; + this.labelTitleMotorNum.Text = "모터개수(1~4)"; + this.labelTitleMotorNum.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleMotorNum.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleMotorNum.Wordwrap = true; + // // ControlCenterEquipEngineer // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -639,5 +683,7 @@ private SmartX.SmartLabel labelTitleFilter; private SmartX.SmartLabel labelTitleBLDC; private SmartX.SmartButton buttonBLDCUsing; + public SmartX.SmartLabel labelMotorNum; + private SmartX.SmartLabel labelTitleMotorNum; } } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs index 2d85c13..e1d4867 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs @@ -325,6 +325,11 @@ namespace ITC81DB_0H.Controls else this.buttonBLDCUsing.ButtonDown(); + // BLDC 모터 개수 + value = item2.BLDCMotorNum.ToString(); + if (this.labelMotorNum.Text != value) + this.labelMotorNum.Text = value; + // 옵션보드 index = int.Parse(parameter.OptionBoard.Trim()); if (this.comboBoxOptionBoard.SelectedIndex != index) @@ -497,6 +502,32 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveSystemConfigurationFile1(this.ParentForm.ParentForm.SystemConfig1); } + private void labelMotorNum_Click(object sender, EventArgs e) + { + string value = "", message = ""; + + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelMotorNum.Text, 1, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.IntValue < 1 || myKeyPad.IntValue > 4) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } + else + { + this.labelMotorNum.Text = myKeyPad.StringValue; + this.ParentForm.ParentForm.ChildFormMenu.CenterSystemBLDCMotorSetting.VisibleMotorNum(myKeyPad.IntValue); + + value = Helper.StringZeroFillDigits4(myKeyPad.StringValue); + this.ParentForm.ParentForm.SystemConfig2.BLDCMotorNum = myKeyPad.IntValue; + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + } + } + } + private void comboBoxOptionBoard_SelectedIndexChanged(object sender, EventArgs e) { string value = ""; diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.Designer.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.Designer.cs index 1e9ad25..dd295bc 100644 --- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.Designer.cs +++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.Designer.cs @@ -28,29 +28,47 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterSystemBLDCMotorSetting)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.buttonStart = new SmartX.SmartButton(); + this.smartGroupBox4 = new SmartX.SmartGroupBox(); + this.smartListBox1 = new SmartX.SmartListBox(); + this.buttonAlarmRead = new SmartX.SmartButton(); + this.buttonAlarmReset = new SmartX.SmartButton(); + this.buttonMotor4 = new SmartX.SmartButton(); + this.smartGroupBox2 = new SmartX.SmartGroupBox(); + this.labelTitleMotorID = new SmartX.SmartLabel(); + this.labelMotorID = new SmartX.SmartLabel(); + this.labelTitleMotorSpeed = new SmartX.SmartLabel(); + this.labelTitleMotorPoleNum = new SmartX.SmartLabel(); + this.buttonMotorDirectionWrite = new SmartX.SmartButton(); + this.labelMotorSpeed = new SmartX.SmartLabel(); + this.labelTitleMotorDirectionWrite = new SmartX.SmartLabel(); + this.labelTitleAttenuatorRatio = new SmartX.SmartLabel(); + this.labelAttenuatorRatio = new SmartX.SmartLabel(); + this.comboBoxMotorPoleNum = new System.Windows.Forms.ComboBox(); + this.buttonMotor3 = new SmartX.SmartButton(); + this.buttonRefresh = new SmartX.SmartButton(); + this.buttonMotor2 = new SmartX.SmartButton(); + this.smartGroupBox3 = new SmartX.SmartGroupBox(); + this.labelTitleMotorRPM = new SmartX.SmartLabel(); + this.labelTitleMotorDirectionRead = new SmartX.SmartLabel(); + this.labelMotorDirectionRead = new SmartX.SmartLabel(); + this.labelMotorRPM = new SmartX.SmartLabel(); + this.buttonMotor1 = new SmartX.SmartButton(); this.groupBoxInformation = new SmartX.SmartGroupBox(); this.labelSelectOperMode = new SmartX.SmartLabel(); this.labelTitleSelectOperMode = new SmartX.SmartLabel(); - this.labelMotorDirectionRead = new SmartX.SmartLabel(); - this.labelMotorRPM = new SmartX.SmartLabel(); this.labelVersionBuild = new SmartX.SmartLabel(); this.labelVersionMinor = new SmartX.SmartLabel(); this.labelVersionMajor = new SmartX.SmartLabel(); - this.labelTitleMotorDirectionRead = new SmartX.SmartLabel(); - this.labelTitleMotorRPM = new SmartX.SmartLabel(); this.labelTitleVersion = new SmartX.SmartLabel(); - this.comboBoxMotorPoleNum = new System.Windows.Forms.ComboBox(); - this.labelAttenuatorRatio = new SmartX.SmartLabel(); - this.labelTitleAttenuatorRatio = new SmartX.SmartLabel(); - this.labelMotorSpeed = new SmartX.SmartLabel(); - this.labelTitleMotorSpeed = new SmartX.SmartLabel(); - this.labelTitleMotorPoleNum = new SmartX.SmartLabel(); - this.labelTitleMotorDirectionWrite = new SmartX.SmartLabel(); - this.buttonMotorDirectionWrite = new SmartX.SmartButton(); - this.buttonRefresh = new SmartX.SmartButton(); + this.timer = new SmartX.SmartTimer(this.components); this.smartGroupBox1.SuspendLayout(); + this.smartGroupBox4.SuspendLayout(); + this.smartGroupBox2.SuspendLayout(); + this.smartGroupBox3.SuspendLayout(); this.groupBoxInformation.SuspendLayout(); this.SuspendLayout(); // @@ -59,20 +77,16 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(46)))), ((int)(((byte)(46))))); this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.buttonStart); + this.smartGroupBox1.Controls.Add(this.smartGroupBox4); + this.smartGroupBox1.Controls.Add(this.buttonMotor4); + this.smartGroupBox1.Controls.Add(this.smartGroupBox2); + this.smartGroupBox1.Controls.Add(this.buttonMotor3); this.smartGroupBox1.Controls.Add(this.buttonRefresh); - this.smartGroupBox1.Controls.Add(this.buttonMotorDirectionWrite); - this.smartGroupBox1.Controls.Add(this.labelTitleMotorDirectionWrite); - this.smartGroupBox1.Controls.Add(this.labelMotorDirectionRead); + this.smartGroupBox1.Controls.Add(this.buttonMotor2); + this.smartGroupBox1.Controls.Add(this.smartGroupBox3); + this.smartGroupBox1.Controls.Add(this.buttonMotor1); this.smartGroupBox1.Controls.Add(this.groupBoxInformation); - this.smartGroupBox1.Controls.Add(this.labelMotorRPM); - this.smartGroupBox1.Controls.Add(this.comboBoxMotorPoleNum); - this.smartGroupBox1.Controls.Add(this.labelAttenuatorRatio); - this.smartGroupBox1.Controls.Add(this.labelTitleAttenuatorRatio); - this.smartGroupBox1.Controls.Add(this.labelMotorSpeed); - this.smartGroupBox1.Controls.Add(this.labelTitleMotorDirectionRead); - this.smartGroupBox1.Controls.Add(this.labelTitleMotorSpeed); - this.smartGroupBox1.Controls.Add(this.labelTitleMotorRPM); - this.smartGroupBox1.Controls.Add(this.labelTitleMotorPoleNum); this.smartGroupBox1.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); this.smartGroupBox1.FrameLineColor2 = System.Drawing.Color.Black; this.smartGroupBox1.FrameLineThickness = 2; @@ -86,6 +100,671 @@ this.smartGroupBox1.TabIndex = 175; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // buttonStart + // + this.buttonStart.BackPictureBox = null; + this.buttonStart.BackPictureBox1 = null; + this.buttonStart.BackPictureBox2 = null; + this.buttonStart.ButtonColor = System.Drawing.Color.Gray; + this.buttonStart.ButtonImageAutoSize = true; + this.buttonStart.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonStart.DisableImage = null; + this.buttonStart.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonStart.DownImage"))); + this.buttonStart.GroupID = 0; + this.buttonStart.InitVisible = true; + this.buttonStart.Location = new System.Drawing.Point(623, 20); + this.buttonStart.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; + this.buttonStart.Name = "buttonStart"; + this.buttonStart.NestedClickEventPrevent = false; + this.buttonStart.OutlinePixel = 1; + this.buttonStart.RepeatInterval = 200; + this.buttonStart.RepeatIntervalAccelerate = null; + this.buttonStart.SafeInterval = 200; + this.buttonStart.Size = new System.Drawing.Size(50, 50); + this.buttonStart.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonStart.TabIndex = 211; + this.buttonStart.TextColor = System.Drawing.Color.Black; + this.buttonStart.TextDownColor = System.Drawing.Color.White; + this.buttonStart.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonStart.TextLocation = new System.Drawing.Point(0, 0); + this.buttonStart.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonStart.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonStart.UpImage"))); + this.buttonStart.Click += new System.EventHandler(this.buttonStart_Click); + // + // smartGroupBox4 + // + this.smartGroupBox4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.smartGroupBox4.BackPictureBox = null; + this.smartGroupBox4.BackPictureBox1 = null; + this.smartGroupBox4.Controls.Add(this.smartListBox1); + this.smartGroupBox4.Controls.Add(this.buttonAlarmRead); + this.smartGroupBox4.Controls.Add(this.buttonAlarmReset); + this.smartGroupBox4.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold); + this.smartGroupBox4.FrameLineColor1 = System.Drawing.Color.White; + this.smartGroupBox4.FrameLineColor2 = System.Drawing.Color.Black; + this.smartGroupBox4.FrameLineThickness = 1; + this.smartGroupBox4.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.Rectangle; + this.smartGroupBox4.Image = null; + this.smartGroupBox4.InitVisible = true; + this.smartGroupBox4.Location = new System.Drawing.Point(411, 216); + this.smartGroupBox4.Name = "smartGroupBox4"; + this.smartGroupBox4.RoundRadius = 5; + this.smartGroupBox4.Size = new System.Drawing.Size(272, 233); + this.smartGroupBox4.TabIndex = 205; + this.smartGroupBox4.Text = "Alarm"; + this.smartGroupBox4.TextColor = System.Drawing.Color.White; + // + // smartListBox1 + // + this.smartListBox1.BackPictureBox = null; + this.smartListBox1.BackPictureBox1 = null; + this.smartListBox1.BackPictureBox2 = null; + this.smartListBox1.ColumnAlign = SmartX.SmartListBox.COLUMNALIGNS.CENTER; + this.smartListBox1.ColumnDelimiter = '\0'; + this.smartListBox1.ColumnOffsets = null; + this.smartListBox1.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Regular); + this.smartListBox1.FontColor = System.Drawing.Color.Black; + this.smartListBox1.InitVisible = true; + this.smartListBox1.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; + this.smartListBox1.ItemOffsetGap = 0; + this.smartListBox1.ItemOffsetX = 0; + this.smartListBox1.ItemOffsetY = 0; + this.smartListBox1.Location = new System.Drawing.Point(34, 89); + this.smartListBox1.MouseMoveEventSpace = 3; + this.smartListBox1.MouseMoveSpace = 10; + this.smartListBox1.Name = "smartListBox1"; + this.smartListBox1.OutLineColor = System.Drawing.SystemColors.ControlText; + this.smartListBox1.SelectColor = System.Drawing.Color.Blue; + this.smartListBox1.SelectFilled = true; + this.smartListBox1.SelectFontColor = System.Drawing.Color.DarkBlue; + this.smartListBox1.SelectItemIndex = -1; + this.smartListBox1.SeparationlineColor1 = System.Drawing.Color.Gray; + this.smartListBox1.SeparationlineColor2 = System.Drawing.Color.LightGray; + this.smartListBox1.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; + this.smartListBox1.SeparationlineVisibleBottom = true; + this.smartListBox1.SeparationlineVisibleTop = true; + this.smartListBox1.Size = new System.Drawing.Size(206, 107); + this.smartListBox1.TabIndex = 210; + this.smartListBox1.Text = "smartListBox1"; + // + // buttonAlarmRead + // + this.buttonAlarmRead.BackPictureBox = null; + this.buttonAlarmRead.BackPictureBox1 = null; + this.buttonAlarmRead.BackPictureBox2 = null; + this.buttonAlarmRead.ButtonColor = System.Drawing.Color.Gray; + this.buttonAlarmRead.ButtonImageAutoSize = true; + this.buttonAlarmRead.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonAlarmRead.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmRead.DisableImage"))); + this.buttonAlarmRead.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmRead.DownImage"))); + this.buttonAlarmRead.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Bold); + this.buttonAlarmRead.GroupID = 0; + this.buttonAlarmRead.InitVisible = true; + this.buttonAlarmRead.Location = new System.Drawing.Point(34, 43); + this.buttonAlarmRead.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonAlarmRead.Name = "buttonAlarmRead"; + this.buttonAlarmRead.NestedClickEventPrevent = false; + this.buttonAlarmRead.OutlinePixel = 1; + this.buttonAlarmRead.RepeatInterval = 200; + this.buttonAlarmRead.RepeatIntervalAccelerate = null; + this.buttonAlarmRead.SafeInterval = 200; + this.buttonAlarmRead.Size = new System.Drawing.Size(100, 40); + this.buttonAlarmRead.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonAlarmRead.TabIndex = 209; + this.buttonAlarmRead.Text = "Alarm Read"; + this.buttonAlarmRead.TextColor = System.Drawing.Color.White; + this.buttonAlarmRead.TextDownColor = System.Drawing.Color.White; + this.buttonAlarmRead.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonAlarmRead.TextLocation = new System.Drawing.Point(0, 0); + this.buttonAlarmRead.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonAlarmRead.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmRead.UpImage"))); + this.buttonAlarmRead.Click += new System.EventHandler(this.buttonAlarmRead_Click); + // + // buttonAlarmReset + // + this.buttonAlarmReset.BackPictureBox = null; + this.buttonAlarmReset.BackPictureBox1 = null; + this.buttonAlarmReset.BackPictureBox2 = null; + this.buttonAlarmReset.ButtonColor = System.Drawing.Color.Gray; + this.buttonAlarmReset.ButtonImageAutoSize = true; + this.buttonAlarmReset.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonAlarmReset.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmReset.DisableImage"))); + this.buttonAlarmReset.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmReset.DownImage"))); + this.buttonAlarmReset.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Bold); + this.buttonAlarmReset.GroupID = 0; + this.buttonAlarmReset.InitVisible = true; + this.buttonAlarmReset.Location = new System.Drawing.Point(140, 43); + this.buttonAlarmReset.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonAlarmReset.Name = "buttonAlarmReset"; + this.buttonAlarmReset.NestedClickEventPrevent = false; + this.buttonAlarmReset.OutlinePixel = 1; + this.buttonAlarmReset.RepeatInterval = 200; + this.buttonAlarmReset.RepeatIntervalAccelerate = null; + this.buttonAlarmReset.SafeInterval = 200; + this.buttonAlarmReset.Size = new System.Drawing.Size(100, 40); + this.buttonAlarmReset.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonAlarmReset.TabIndex = 208; + this.buttonAlarmReset.Text = "Alarm Reset"; + this.buttonAlarmReset.TextColor = System.Drawing.Color.White; + this.buttonAlarmReset.TextDownColor = System.Drawing.Color.White; + this.buttonAlarmReset.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonAlarmReset.TextLocation = new System.Drawing.Point(0, 0); + this.buttonAlarmReset.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonAlarmReset.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmReset.UpImage"))); + this.buttonAlarmReset.Click += new System.EventHandler(this.buttonAlarmReset_Click); + // + // buttonMotor4 + // + this.buttonMotor4.BackPictureBox = null; + this.buttonMotor4.BackPictureBox1 = null; + this.buttonMotor4.BackPictureBox2 = null; + this.buttonMotor4.ButtonColor = System.Drawing.Color.Gray; + this.buttonMotor4.ButtonImageAutoSize = true; + this.buttonMotor4.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonMotor4.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor4.DisableImage"))); + this.buttonMotor4.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor4.DownImage"))); + this.buttonMotor4.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); + this.buttonMotor4.GroupID = 0; + this.buttonMotor4.InitVisible = true; + this.buttonMotor4.Location = new System.Drawing.Point(205, 20); + this.buttonMotor4.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; + this.buttonMotor4.Name = "buttonMotor4"; + this.buttonMotor4.NestedClickEventPrevent = false; + this.buttonMotor4.OutlinePixel = 1; + this.buttonMotor4.RepeatInterval = 200; + this.buttonMotor4.RepeatIntervalAccelerate = null; + this.buttonMotor4.SafeInterval = 200; + this.buttonMotor4.Size = new System.Drawing.Size(50, 50); + this.buttonMotor4.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonMotor4.TabIndex = 210; + this.buttonMotor4.Tag = "3"; + this.buttonMotor4.Text = "4"; + this.buttonMotor4.TextColor = System.Drawing.Color.White; + this.buttonMotor4.TextDownColor = System.Drawing.Color.White; + this.buttonMotor4.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonMotor4.TextLocation = new System.Drawing.Point(0, 0); + this.buttonMotor4.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonMotor4.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor4.UpImage"))); + this.buttonMotor4.Click += new System.EventHandler(this.buttonMotor_Click); + // + // smartGroupBox2 + // + this.smartGroupBox2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.smartGroupBox2.BackPictureBox = null; + this.smartGroupBox2.BackPictureBox1 = null; + this.smartGroupBox2.Controls.Add(this.labelTitleMotorID); + this.smartGroupBox2.Controls.Add(this.labelMotorID); + this.smartGroupBox2.Controls.Add(this.labelTitleMotorSpeed); + this.smartGroupBox2.Controls.Add(this.labelTitleMotorPoleNum); + this.smartGroupBox2.Controls.Add(this.buttonMotorDirectionWrite); + this.smartGroupBox2.Controls.Add(this.labelMotorSpeed); + this.smartGroupBox2.Controls.Add(this.labelTitleMotorDirectionWrite); + this.smartGroupBox2.Controls.Add(this.labelTitleAttenuatorRatio); + this.smartGroupBox2.Controls.Add(this.labelAttenuatorRatio); + this.smartGroupBox2.Controls.Add(this.comboBoxMotorPoleNum); + this.smartGroupBox2.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold); + this.smartGroupBox2.FrameLineColor1 = System.Drawing.Color.White; + this.smartGroupBox2.FrameLineColor2 = System.Drawing.Color.Black; + this.smartGroupBox2.FrameLineThickness = 1; + this.smartGroupBox2.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.Rectangle; + this.smartGroupBox2.Image = null; + this.smartGroupBox2.InitVisible = true; + this.smartGroupBox2.Location = new System.Drawing.Point(25, 216); + this.smartGroupBox2.Name = "smartGroupBox2"; + this.smartGroupBox2.RoundRadius = 5; + this.smartGroupBox2.Size = new System.Drawing.Size(380, 233); + this.smartGroupBox2.TabIndex = 205; + this.smartGroupBox2.Text = "Settings"; + this.smartGroupBox2.TextColor = System.Drawing.Color.White; + // + // labelTitleMotorID + // + this.labelTitleMotorID.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleMotorID.BackPictureBox = null; + this.labelTitleMotorID.BackPictureBox1 = null; + this.labelTitleMotorID.BackPictureBox2 = null; + this.labelTitleMotorID.BorderColor = System.Drawing.Color.Black; + this.labelTitleMotorID.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleMotorID.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelTitleMotorID.ForeColor = System.Drawing.Color.White; + this.labelTitleMotorID.InitVisible = true; + this.labelTitleMotorID.LineSpacing = 0F; + this.labelTitleMotorID.Location = new System.Drawing.Point(31, 39); + this.labelTitleMotorID.Name = "labelTitleMotorID"; + this.labelTitleMotorID.Size = new System.Drawing.Size(230, 28); + this.labelTitleMotorID.TabIndex = 207; + this.labelTitleMotorID.Text = "모터ID(1~16)"; + this.labelTitleMotorID.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleMotorID.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleMotorID.Wordwrap = false; + // + // labelMotorID + // + this.labelMotorID.BackColor = System.Drawing.SystemColors.Window; + this.labelMotorID.BackPictureBox = null; + this.labelMotorID.BackPictureBox1 = null; + this.labelMotorID.BackPictureBox2 = null; + this.labelMotorID.BorderColor = System.Drawing.Color.Black; + this.labelMotorID.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelMotorID.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelMotorID.InitVisible = true; + this.labelMotorID.LineSpacing = 0F; + this.labelMotorID.Location = new System.Drawing.Point(267, 39); + this.labelMotorID.Name = "labelMotorID"; + this.labelMotorID.Size = new System.Drawing.Size(80, 28); + this.labelMotorID.TabIndex = 208; + this.labelMotorID.Text = "0"; + this.labelMotorID.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelMotorID.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelMotorID.Wordwrap = false; + this.labelMotorID.Click += new System.EventHandler(this.labelMotorID_Click); + // + // labelTitleMotorSpeed + // + this.labelTitleMotorSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleMotorSpeed.BackPictureBox = null; + this.labelTitleMotorSpeed.BackPictureBox1 = null; + this.labelTitleMotorSpeed.BackPictureBox2 = null; + this.labelTitleMotorSpeed.BorderColor = System.Drawing.Color.Black; + this.labelTitleMotorSpeed.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleMotorSpeed.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelTitleMotorSpeed.ForeColor = System.Drawing.Color.White; + this.labelTitleMotorSpeed.InitVisible = true; + this.labelTitleMotorSpeed.LineSpacing = 0F; + this.labelTitleMotorSpeed.Location = new System.Drawing.Point(31, 73); + this.labelTitleMotorSpeed.Name = "labelTitleMotorSpeed"; + this.labelTitleMotorSpeed.Size = new System.Drawing.Size(230, 28); + this.labelTitleMotorSpeed.TabIndex = 140; + this.labelTitleMotorSpeed.Text = "모터 속도(0~100)"; + this.labelTitleMotorSpeed.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleMotorSpeed.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleMotorSpeed.Wordwrap = false; + // + // labelTitleMotorPoleNum + // + this.labelTitleMotorPoleNum.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleMotorPoleNum.BackPictureBox = null; + this.labelTitleMotorPoleNum.BackPictureBox1 = null; + this.labelTitleMotorPoleNum.BackPictureBox2 = null; + this.labelTitleMotorPoleNum.BorderColor = System.Drawing.Color.Black; + this.labelTitleMotorPoleNum.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleMotorPoleNum.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelTitleMotorPoleNum.ForeColor = System.Drawing.Color.White; + this.labelTitleMotorPoleNum.InitVisible = true; + this.labelTitleMotorPoleNum.LineSpacing = 0F; + this.labelTitleMotorPoleNum.Location = new System.Drawing.Point(31, 107); + this.labelTitleMotorPoleNum.Name = "labelTitleMotorPoleNum"; + this.labelTitleMotorPoleNum.Size = new System.Drawing.Size(230, 28); + this.labelTitleMotorPoleNum.TabIndex = 136; + this.labelTitleMotorPoleNum.Text = "모터 Pole 수"; + this.labelTitleMotorPoleNum.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleMotorPoleNum.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleMotorPoleNum.Wordwrap = false; + // + // buttonMotorDirectionWrite + // + this.buttonMotorDirectionWrite.BackPictureBox = null; + this.buttonMotorDirectionWrite.BackPictureBox1 = null; + this.buttonMotorDirectionWrite.BackPictureBox2 = null; + this.buttonMotorDirectionWrite.ButtonColor = System.Drawing.Color.Gray; + this.buttonMotorDirectionWrite.ButtonImageAutoSize = true; + this.buttonMotorDirectionWrite.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonMotorDirectionWrite.DisableImage = null; + this.buttonMotorDirectionWrite.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonMotorDirectionWrite.DownImage"))); + this.buttonMotorDirectionWrite.GroupID = 0; + this.buttonMotorDirectionWrite.InitVisible = true; + this.buttonMotorDirectionWrite.Location = new System.Drawing.Point(267, 175); + this.buttonMotorDirectionWrite.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; + this.buttonMotorDirectionWrite.Name = "buttonMotorDirectionWrite"; + this.buttonMotorDirectionWrite.NestedClickEventPrevent = false; + this.buttonMotorDirectionWrite.OutlinePixel = 1; + this.buttonMotorDirectionWrite.RepeatInterval = 200; + this.buttonMotorDirectionWrite.RepeatIntervalAccelerate = null; + this.buttonMotorDirectionWrite.SafeInterval = 200; + this.buttonMotorDirectionWrite.Size = new System.Drawing.Size(80, 28); + this.buttonMotorDirectionWrite.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonMotorDirectionWrite.TabIndex = 206; + this.buttonMotorDirectionWrite.TextColor = System.Drawing.Color.Black; + this.buttonMotorDirectionWrite.TextDownColor = System.Drawing.Color.White; + this.buttonMotorDirectionWrite.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonMotorDirectionWrite.TextLocation = new System.Drawing.Point(0, 0); + this.buttonMotorDirectionWrite.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonMotorDirectionWrite.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonMotorDirectionWrite.UpImage"))); + this.buttonMotorDirectionWrite.Click += new System.EventHandler(this.buttonMotorDirectionWrite_Click); + // + // labelMotorSpeed + // + this.labelMotorSpeed.BackColor = System.Drawing.SystemColors.Window; + this.labelMotorSpeed.BackPictureBox = null; + this.labelMotorSpeed.BackPictureBox1 = null; + this.labelMotorSpeed.BackPictureBox2 = null; + this.labelMotorSpeed.BorderColor = System.Drawing.Color.Black; + this.labelMotorSpeed.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelMotorSpeed.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelMotorSpeed.InitVisible = true; + this.labelMotorSpeed.LineSpacing = 0F; + this.labelMotorSpeed.Location = new System.Drawing.Point(267, 73); + this.labelMotorSpeed.Name = "labelMotorSpeed"; + this.labelMotorSpeed.Size = new System.Drawing.Size(80, 28); + this.labelMotorSpeed.TabIndex = 141; + this.labelMotorSpeed.Text = "0"; + this.labelMotorSpeed.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelMotorSpeed.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelMotorSpeed.Wordwrap = false; + this.labelMotorSpeed.Click += new System.EventHandler(this.labelMotorSpeed_Click); + // + // labelTitleMotorDirectionWrite + // + this.labelTitleMotorDirectionWrite.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleMotorDirectionWrite.BackPictureBox = null; + this.labelTitleMotorDirectionWrite.BackPictureBox1 = null; + this.labelTitleMotorDirectionWrite.BackPictureBox2 = null; + this.labelTitleMotorDirectionWrite.BorderColor = System.Drawing.Color.Black; + this.labelTitleMotorDirectionWrite.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleMotorDirectionWrite.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelTitleMotorDirectionWrite.ForeColor = System.Drawing.Color.White; + this.labelTitleMotorDirectionWrite.InitVisible = true; + this.labelTitleMotorDirectionWrite.LineSpacing = 0F; + this.labelTitleMotorDirectionWrite.Location = new System.Drawing.Point(31, 175); + this.labelTitleMotorDirectionWrite.Name = "labelTitleMotorDirectionWrite"; + this.labelTitleMotorDirectionWrite.Size = new System.Drawing.Size(230, 28); + this.labelTitleMotorDirectionWrite.TabIndex = 205; + this.labelTitleMotorDirectionWrite.Text = "모터 방향"; + this.labelTitleMotorDirectionWrite.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleMotorDirectionWrite.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleMotorDirectionWrite.Wordwrap = false; + // + // labelTitleAttenuatorRatio + // + this.labelTitleAttenuatorRatio.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleAttenuatorRatio.BackPictureBox = null; + this.labelTitleAttenuatorRatio.BackPictureBox1 = null; + this.labelTitleAttenuatorRatio.BackPictureBox2 = null; + this.labelTitleAttenuatorRatio.BorderColor = System.Drawing.Color.Black; + this.labelTitleAttenuatorRatio.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleAttenuatorRatio.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelTitleAttenuatorRatio.ForeColor = System.Drawing.Color.White; + this.labelTitleAttenuatorRatio.InitVisible = true; + this.labelTitleAttenuatorRatio.LineSpacing = 0F; + this.labelTitleAttenuatorRatio.Location = new System.Drawing.Point(31, 141); + this.labelTitleAttenuatorRatio.Name = "labelTitleAttenuatorRatio"; + this.labelTitleAttenuatorRatio.Size = new System.Drawing.Size(230, 28); + this.labelTitleAttenuatorRatio.TabIndex = 149; + this.labelTitleAttenuatorRatio.Text = "감속기 비율(1~)"; + this.labelTitleAttenuatorRatio.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleAttenuatorRatio.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleAttenuatorRatio.Wordwrap = false; + // + // labelAttenuatorRatio + // + this.labelAttenuatorRatio.BackColor = System.Drawing.SystemColors.Window; + this.labelAttenuatorRatio.BackPictureBox = null; + this.labelAttenuatorRatio.BackPictureBox1 = null; + this.labelAttenuatorRatio.BackPictureBox2 = null; + this.labelAttenuatorRatio.BorderColor = System.Drawing.Color.Black; + this.labelAttenuatorRatio.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelAttenuatorRatio.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelAttenuatorRatio.InitVisible = true; + this.labelAttenuatorRatio.LineSpacing = 0F; + this.labelAttenuatorRatio.Location = new System.Drawing.Point(267, 141); + this.labelAttenuatorRatio.Name = "labelAttenuatorRatio"; + this.labelAttenuatorRatio.Size = new System.Drawing.Size(80, 28); + this.labelAttenuatorRatio.TabIndex = 150; + this.labelAttenuatorRatio.Text = "0"; + this.labelAttenuatorRatio.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelAttenuatorRatio.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelAttenuatorRatio.Wordwrap = false; + this.labelAttenuatorRatio.Click += new System.EventHandler(this.labelAttenuatorRatio_Click); + // + // comboBoxMotorPoleNum + // + this.comboBoxMotorPoleNum.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.comboBoxMotorPoleNum.Location = new System.Drawing.Point(267, 107); + this.comboBoxMotorPoleNum.Name = "comboBoxMotorPoleNum"; + this.comboBoxMotorPoleNum.Size = new System.Drawing.Size(80, 28); + this.comboBoxMotorPoleNum.TabIndex = 199; + this.comboBoxMotorPoleNum.SelectedIndexChanged += new System.EventHandler(this.comboBoxMotorPoleNum_SelectedIndexChanged); + // + // buttonMotor3 + // + this.buttonMotor3.BackPictureBox = null; + this.buttonMotor3.BackPictureBox1 = null; + this.buttonMotor3.BackPictureBox2 = null; + this.buttonMotor3.ButtonColor = System.Drawing.Color.Gray; + this.buttonMotor3.ButtonImageAutoSize = true; + this.buttonMotor3.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonMotor3.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor3.DisableImage"))); + this.buttonMotor3.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor3.DownImage"))); + this.buttonMotor3.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); + this.buttonMotor3.GroupID = 0; + this.buttonMotor3.InitVisible = true; + this.buttonMotor3.Location = new System.Drawing.Point(149, 20); + this.buttonMotor3.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; + this.buttonMotor3.Name = "buttonMotor3"; + this.buttonMotor3.NestedClickEventPrevent = false; + this.buttonMotor3.OutlinePixel = 1; + this.buttonMotor3.RepeatInterval = 200; + this.buttonMotor3.RepeatIntervalAccelerate = null; + this.buttonMotor3.SafeInterval = 200; + this.buttonMotor3.Size = new System.Drawing.Size(50, 50); + this.buttonMotor3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonMotor3.TabIndex = 209; + this.buttonMotor3.Tag = "2"; + this.buttonMotor3.Text = "3"; + this.buttonMotor3.TextColor = System.Drawing.Color.White; + this.buttonMotor3.TextDownColor = System.Drawing.Color.White; + this.buttonMotor3.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonMotor3.TextLocation = new System.Drawing.Point(0, 0); + this.buttonMotor3.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonMotor3.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor3.UpImage"))); + this.buttonMotor3.Click += new System.EventHandler(this.buttonMotor_Click); + // + // buttonRefresh + // + this.buttonRefresh.BackPictureBox = null; + this.buttonRefresh.BackPictureBox1 = null; + this.buttonRefresh.BackPictureBox2 = null; + this.buttonRefresh.ButtonColor = System.Drawing.Color.Gray; + this.buttonRefresh.ButtonImageAutoSize = true; + this.buttonRefresh.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonRefresh.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonRefresh.DisableImage"))); + this.buttonRefresh.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonRefresh.DownImage"))); + this.buttonRefresh.GroupID = 0; + this.buttonRefresh.InitVisible = true; + this.buttonRefresh.Location = new System.Drawing.Point(567, 20); + this.buttonRefresh.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonRefresh.Name = "buttonRefresh"; + this.buttonRefresh.NestedClickEventPrevent = false; + this.buttonRefresh.OutlinePixel = 1; + this.buttonRefresh.RepeatInterval = 200; + this.buttonRefresh.RepeatIntervalAccelerate = null; + this.buttonRefresh.SafeInterval = 200; + this.buttonRefresh.Size = new System.Drawing.Size(50, 50); + this.buttonRefresh.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonRefresh.TabIndex = 207; + this.buttonRefresh.TextColor = System.Drawing.Color.Black; + this.buttonRefresh.TextDownColor = System.Drawing.Color.White; + this.buttonRefresh.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonRefresh.TextLocation = new System.Drawing.Point(0, 0); + this.buttonRefresh.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonRefresh.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonRefresh.UpImage"))); + this.buttonRefresh.Click += new System.EventHandler(this.buttonRefresh_Click); + // + // buttonMotor2 + // + this.buttonMotor2.BackPictureBox = null; + this.buttonMotor2.BackPictureBox1 = null; + this.buttonMotor2.BackPictureBox2 = null; + this.buttonMotor2.ButtonColor = System.Drawing.Color.Gray; + this.buttonMotor2.ButtonImageAutoSize = true; + this.buttonMotor2.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonMotor2.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor2.DisableImage"))); + this.buttonMotor2.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor2.DownImage"))); + this.buttonMotor2.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); + this.buttonMotor2.GroupID = 0; + this.buttonMotor2.InitVisible = true; + this.buttonMotor2.Location = new System.Drawing.Point(93, 20); + this.buttonMotor2.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; + this.buttonMotor2.Name = "buttonMotor2"; + this.buttonMotor2.NestedClickEventPrevent = false; + this.buttonMotor2.OutlinePixel = 1; + this.buttonMotor2.RepeatInterval = 200; + this.buttonMotor2.RepeatIntervalAccelerate = null; + this.buttonMotor2.SafeInterval = 200; + this.buttonMotor2.Size = new System.Drawing.Size(50, 50); + this.buttonMotor2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonMotor2.TabIndex = 208; + this.buttonMotor2.Tag = "1"; + this.buttonMotor2.Text = "2"; + this.buttonMotor2.TextColor = System.Drawing.Color.White; + this.buttonMotor2.TextDownColor = System.Drawing.Color.White; + this.buttonMotor2.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonMotor2.TextLocation = new System.Drawing.Point(0, 0); + this.buttonMotor2.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonMotor2.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor2.UpImage"))); + this.buttonMotor2.Click += new System.EventHandler(this.buttonMotor_Click); + // + // smartGroupBox3 + // + this.smartGroupBox3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.smartGroupBox3.BackPictureBox = null; + this.smartGroupBox3.BackPictureBox1 = null; + this.smartGroupBox3.Controls.Add(this.labelTitleMotorRPM); + this.smartGroupBox3.Controls.Add(this.labelTitleMotorDirectionRead); + this.smartGroupBox3.Controls.Add(this.labelMotorDirectionRead); + this.smartGroupBox3.Controls.Add(this.labelMotorRPM); + this.smartGroupBox3.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold); + this.smartGroupBox3.FrameLineColor1 = System.Drawing.Color.White; + this.smartGroupBox3.FrameLineColor2 = System.Drawing.Color.Black; + this.smartGroupBox3.FrameLineThickness = 1; + this.smartGroupBox3.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.Rectangle; + this.smartGroupBox3.Image = null; + this.smartGroupBox3.InitVisible = true; + this.smartGroupBox3.Location = new System.Drawing.Point(411, 91); + this.smartGroupBox3.Name = "smartGroupBox3"; + this.smartGroupBox3.RoundRadius = 5; + this.smartGroupBox3.Size = new System.Drawing.Size(272, 119); + this.smartGroupBox3.TabIndex = 204; + this.smartGroupBox3.TextColor = System.Drawing.Color.White; + // + // labelTitleMotorRPM + // + this.labelTitleMotorRPM.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleMotorRPM.BackPictureBox = null; + this.labelTitleMotorRPM.BackPictureBox1 = null; + this.labelTitleMotorRPM.BackPictureBox2 = null; + this.labelTitleMotorRPM.BorderColor = System.Drawing.Color.Black; + this.labelTitleMotorRPM.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleMotorRPM.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelTitleMotorRPM.ForeColor = System.Drawing.Color.White; + this.labelTitleMotorRPM.InitVisible = true; + this.labelTitleMotorRPM.LineSpacing = 0F; + this.labelTitleMotorRPM.Location = new System.Drawing.Point(35, 30); + this.labelTitleMotorRPM.Name = "labelTitleMotorRPM"; + this.labelTitleMotorRPM.Size = new System.Drawing.Size(84, 28); + this.labelTitleMotorRPM.TabIndex = 142; + this.labelTitleMotorRPM.Text = "RPM :"; + this.labelTitleMotorRPM.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleMotorRPM.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleMotorRPM.Wordwrap = false; + // + // labelTitleMotorDirectionRead + // + this.labelTitleMotorDirectionRead.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleMotorDirectionRead.BackPictureBox = null; + this.labelTitleMotorDirectionRead.BackPictureBox1 = null; + this.labelTitleMotorDirectionRead.BackPictureBox2 = null; + this.labelTitleMotorDirectionRead.BorderColor = System.Drawing.Color.Black; + this.labelTitleMotorDirectionRead.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleMotorDirectionRead.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelTitleMotorDirectionRead.ForeColor = System.Drawing.Color.White; + this.labelTitleMotorDirectionRead.InitVisible = true; + this.labelTitleMotorDirectionRead.LineSpacing = 0F; + this.labelTitleMotorDirectionRead.Location = new System.Drawing.Point(35, 64); + this.labelTitleMotorDirectionRead.Name = "labelTitleMotorDirectionRead"; + this.labelTitleMotorDirectionRead.Size = new System.Drawing.Size(84, 28); + this.labelTitleMotorDirectionRead.TabIndex = 143; + this.labelTitleMotorDirectionRead.Text = "Direction :"; + this.labelTitleMotorDirectionRead.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleMotorDirectionRead.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleMotorDirectionRead.Wordwrap = false; + // + // labelMotorDirectionRead + // + this.labelMotorDirectionRead.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelMotorDirectionRead.BackPictureBox = null; + this.labelMotorDirectionRead.BackPictureBox1 = null; + this.labelMotorDirectionRead.BackPictureBox2 = null; + this.labelMotorDirectionRead.BorderColor = System.Drawing.Color.Black; + this.labelMotorDirectionRead.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelMotorDirectionRead.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelMotorDirectionRead.ForeColor = System.Drawing.Color.White; + this.labelMotorDirectionRead.InitVisible = true; + this.labelMotorDirectionRead.LineSpacing = 0F; + this.labelMotorDirectionRead.Location = new System.Drawing.Point(125, 64); + this.labelMotorDirectionRead.Name = "labelMotorDirectionRead"; + this.labelMotorDirectionRead.Size = new System.Drawing.Size(93, 28); + this.labelMotorDirectionRead.TabIndex = 148; + this.labelMotorDirectionRead.Text = "CW"; + this.labelMotorDirectionRead.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelMotorDirectionRead.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelMotorDirectionRead.Wordwrap = false; + // + // labelMotorRPM + // + this.labelMotorRPM.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelMotorRPM.BackPictureBox = null; + this.labelMotorRPM.BackPictureBox1 = null; + this.labelMotorRPM.BackPictureBox2 = null; + this.labelMotorRPM.BorderColor = System.Drawing.Color.Black; + this.labelMotorRPM.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelMotorRPM.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); + this.labelMotorRPM.ForeColor = System.Drawing.Color.White; + this.labelMotorRPM.InitVisible = true; + this.labelMotorRPM.LineSpacing = 0F; + this.labelMotorRPM.Location = new System.Drawing.Point(125, 30); + this.labelMotorRPM.Name = "labelMotorRPM"; + this.labelMotorRPM.Size = new System.Drawing.Size(93, 28); + this.labelMotorRPM.TabIndex = 147; + this.labelMotorRPM.Text = "300"; + this.labelMotorRPM.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelMotorRPM.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelMotorRPM.Wordwrap = false; + // + // buttonMotor1 + // + this.buttonMotor1.BackPictureBox = null; + this.buttonMotor1.BackPictureBox1 = null; + this.buttonMotor1.BackPictureBox2 = null; + this.buttonMotor1.ButtonColor = System.Drawing.Color.Gray; + this.buttonMotor1.ButtonImageAutoSize = true; + this.buttonMotor1.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonMotor1.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor1.DisableImage"))); + this.buttonMotor1.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor1.DownImage"))); + this.buttonMotor1.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); + this.buttonMotor1.GroupID = 0; + this.buttonMotor1.InitVisible = true; + this.buttonMotor1.Location = new System.Drawing.Point(37, 20); + this.buttonMotor1.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; + this.buttonMotor1.Name = "buttonMotor1"; + this.buttonMotor1.NestedClickEventPrevent = false; + this.buttonMotor1.OutlinePixel = 1; + this.buttonMotor1.RepeatInterval = 200; + this.buttonMotor1.RepeatIntervalAccelerate = null; + this.buttonMotor1.SafeInterval = 200; + this.buttonMotor1.Size = new System.Drawing.Size(50, 50); + this.buttonMotor1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonMotor1.TabIndex = 207; + this.buttonMotor1.Tag = "0"; + this.buttonMotor1.Text = "1"; + this.buttonMotor1.TextColor = System.Drawing.Color.White; + this.buttonMotor1.TextDownColor = System.Drawing.Color.White; + this.buttonMotor1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonMotor1.TextLocation = new System.Drawing.Point(0, 0); + this.buttonMotor1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonMotor1.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonMotor1.UpImage"))); + this.buttonMotor1.Click += new System.EventHandler(this.buttonMotor_Click); + // // groupBoxInformation // this.groupBoxInformation.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); @@ -104,10 +783,10 @@ this.groupBoxInformation.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.Rectangle; this.groupBoxInformation.Image = null; this.groupBoxInformation.InitVisible = true; - this.groupBoxInformation.Location = new System.Drawing.Point(184, 67); + this.groupBoxInformation.Location = new System.Drawing.Point(25, 91); this.groupBoxInformation.Name = "groupBoxInformation"; this.groupBoxInformation.RoundRadius = 5; - this.groupBoxInformation.Size = new System.Drawing.Size(327, 119); + this.groupBoxInformation.Size = new System.Drawing.Size(380, 119); this.groupBoxInformation.TabIndex = 204; this.groupBoxInformation.Text = "Information"; this.groupBoxInformation.TextColor = System.Drawing.Color.White; @@ -154,48 +833,6 @@ this.labelTitleSelectOperMode.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelTitleSelectOperMode.Wordwrap = false; // - // labelMotorDirectionRead - // - this.labelMotorDirectionRead.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.labelMotorDirectionRead.BackPictureBox = null; - this.labelMotorDirectionRead.BackPictureBox1 = null; - this.labelMotorDirectionRead.BackPictureBox2 = null; - this.labelMotorDirectionRead.BorderColor = System.Drawing.Color.Black; - this.labelMotorDirectionRead.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelMotorDirectionRead.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); - this.labelMotorDirectionRead.ForeColor = System.Drawing.Color.White; - this.labelMotorDirectionRead.InitVisible = true; - this.labelMotorDirectionRead.LineSpacing = 0F; - this.labelMotorDirectionRead.Location = new System.Drawing.Point(357, 226); - this.labelMotorDirectionRead.Name = "labelMotorDirectionRead"; - this.labelMotorDirectionRead.Size = new System.Drawing.Size(93, 28); - this.labelMotorDirectionRead.TabIndex = 148; - this.labelMotorDirectionRead.Text = "CW"; - this.labelMotorDirectionRead.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelMotorDirectionRead.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelMotorDirectionRead.Wordwrap = false; - // - // labelMotorRPM - // - this.labelMotorRPM.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.labelMotorRPM.BackPictureBox = null; - this.labelMotorRPM.BackPictureBox1 = null; - this.labelMotorRPM.BackPictureBox2 = null; - this.labelMotorRPM.BorderColor = System.Drawing.Color.Black; - this.labelMotorRPM.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelMotorRPM.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); - this.labelMotorRPM.ForeColor = System.Drawing.Color.White; - this.labelMotorRPM.InitVisible = true; - this.labelMotorRPM.LineSpacing = 0F; - this.labelMotorRPM.Location = new System.Drawing.Point(357, 192); - this.labelMotorRPM.Name = "labelMotorRPM"; - this.labelMotorRPM.Size = new System.Drawing.Size(93, 28); - this.labelMotorRPM.TabIndex = 147; - this.labelMotorRPM.Text = "300"; - this.labelMotorRPM.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelMotorRPM.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelMotorRPM.Wordwrap = false; - // // labelVersionBuild // this.labelVersionBuild.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); @@ -259,48 +896,6 @@ this.labelVersionMajor.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelVersionMajor.Wordwrap = false; // - // labelTitleMotorDirectionRead - // - this.labelTitleMotorDirectionRead.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.labelTitleMotorDirectionRead.BackPictureBox = null; - this.labelTitleMotorDirectionRead.BackPictureBox1 = null; - this.labelTitleMotorDirectionRead.BackPictureBox2 = null; - this.labelTitleMotorDirectionRead.BorderColor = System.Drawing.Color.Black; - this.labelTitleMotorDirectionRead.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleMotorDirectionRead.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); - this.labelTitleMotorDirectionRead.ForeColor = System.Drawing.Color.White; - this.labelTitleMotorDirectionRead.InitVisible = true; - this.labelTitleMotorDirectionRead.LineSpacing = 0F; - this.labelTitleMotorDirectionRead.Location = new System.Drawing.Point(267, 226); - this.labelTitleMotorDirectionRead.Name = "labelTitleMotorDirectionRead"; - this.labelTitleMotorDirectionRead.Size = new System.Drawing.Size(84, 28); - this.labelTitleMotorDirectionRead.TabIndex = 143; - this.labelTitleMotorDirectionRead.Text = "Direction :"; - this.labelTitleMotorDirectionRead.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelTitleMotorDirectionRead.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleMotorDirectionRead.Wordwrap = false; - // - // labelTitleMotorRPM - // - this.labelTitleMotorRPM.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.labelTitleMotorRPM.BackPictureBox = null; - this.labelTitleMotorRPM.BackPictureBox1 = null; - this.labelTitleMotorRPM.BackPictureBox2 = null; - this.labelTitleMotorRPM.BorderColor = System.Drawing.Color.Black; - this.labelTitleMotorRPM.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleMotorRPM.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); - this.labelTitleMotorRPM.ForeColor = System.Drawing.Color.White; - this.labelTitleMotorRPM.InitVisible = true; - this.labelTitleMotorRPM.LineSpacing = 0F; - this.labelTitleMotorRPM.Location = new System.Drawing.Point(267, 192); - this.labelTitleMotorRPM.Name = "labelTitleMotorRPM"; - this.labelTitleMotorRPM.Size = new System.Drawing.Size(84, 28); - this.labelTitleMotorRPM.TabIndex = 142; - this.labelTitleMotorRPM.Text = "RPM :"; - this.labelTitleMotorRPM.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelTitleMotorRPM.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleMotorRPM.Wordwrap = false; - // // labelTitleVersion // this.labelTitleVersion.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); @@ -322,194 +917,14 @@ this.labelTitleVersion.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelTitleVersion.Wordwrap = false; // - // comboBoxMotorPoleNum + // timer // - this.comboBoxMotorPoleNum.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); - this.comboBoxMotorPoleNum.Location = new System.Drawing.Point(425, 306); - this.comboBoxMotorPoleNum.Name = "comboBoxMotorPoleNum"; - this.comboBoxMotorPoleNum.Size = new System.Drawing.Size(80, 28); - this.comboBoxMotorPoleNum.TabIndex = 199; - this.comboBoxMotorPoleNum.SelectedIndexChanged += new System.EventHandler(this.comboBoxMotorPoleNum_SelectedIndexChanged); - // - // labelAttenuatorRatio - // - this.labelAttenuatorRatio.BackColor = System.Drawing.SystemColors.Window; - this.labelAttenuatorRatio.BackPictureBox = null; - this.labelAttenuatorRatio.BackPictureBox1 = null; - this.labelAttenuatorRatio.BackPictureBox2 = null; - this.labelAttenuatorRatio.BorderColor = System.Drawing.Color.Black; - this.labelAttenuatorRatio.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelAttenuatorRatio.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); - this.labelAttenuatorRatio.InitVisible = true; - this.labelAttenuatorRatio.LineSpacing = 0F; - this.labelAttenuatorRatio.Location = new System.Drawing.Point(425, 340); - this.labelAttenuatorRatio.Name = "labelAttenuatorRatio"; - this.labelAttenuatorRatio.Size = new System.Drawing.Size(80, 28); - this.labelAttenuatorRatio.TabIndex = 150; - this.labelAttenuatorRatio.Text = "0"; - this.labelAttenuatorRatio.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; - this.labelAttenuatorRatio.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelAttenuatorRatio.Wordwrap = false; - this.labelAttenuatorRatio.Click += new System.EventHandler(this.labelAttenuatorRatio_Click); - // - // labelTitleAttenuatorRatio - // - this.labelTitleAttenuatorRatio.BackPictureBox1 = null; - this.labelTitleAttenuatorRatio.BackPictureBox2 = this.smartGroupBox1; - this.labelTitleAttenuatorRatio.BorderColor = System.Drawing.Color.Black; - this.labelTitleAttenuatorRatio.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleAttenuatorRatio.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); - this.labelTitleAttenuatorRatio.ForeColor = System.Drawing.Color.White; - this.labelTitleAttenuatorRatio.InitVisible = true; - this.labelTitleAttenuatorRatio.LineSpacing = 0F; - this.labelTitleAttenuatorRatio.Location = new System.Drawing.Point(189, 340); - this.labelTitleAttenuatorRatio.Name = "labelTitleAttenuatorRatio"; - this.labelTitleAttenuatorRatio.Size = new System.Drawing.Size(230, 28); - this.labelTitleAttenuatorRatio.TabIndex = 149; - this.labelTitleAttenuatorRatio.Text = "감속기 비율(1~9999)"; - this.labelTitleAttenuatorRatio.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelTitleAttenuatorRatio.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleAttenuatorRatio.Wordwrap = false; - // - // labelMotorSpeed - // - this.labelMotorSpeed.BackColor = System.Drawing.SystemColors.Window; - this.labelMotorSpeed.BackPictureBox = null; - this.labelMotorSpeed.BackPictureBox1 = null; - this.labelMotorSpeed.BackPictureBox2 = null; - this.labelMotorSpeed.BorderColor = System.Drawing.Color.Black; - this.labelMotorSpeed.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelMotorSpeed.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); - this.labelMotorSpeed.InitVisible = true; - this.labelMotorSpeed.LineSpacing = 0F; - this.labelMotorSpeed.Location = new System.Drawing.Point(425, 272); - this.labelMotorSpeed.Name = "labelMotorSpeed"; - this.labelMotorSpeed.Size = new System.Drawing.Size(80, 28); - this.labelMotorSpeed.TabIndex = 141; - this.labelMotorSpeed.Text = "0"; - this.labelMotorSpeed.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; - this.labelMotorSpeed.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelMotorSpeed.Wordwrap = false; - this.labelMotorSpeed.Click += new System.EventHandler(this.labelMotorSpeed_Click); - // - // labelTitleMotorSpeed - // - this.labelTitleMotorSpeed.BackPictureBox1 = null; - this.labelTitleMotorSpeed.BackPictureBox2 = this.smartGroupBox1; - this.labelTitleMotorSpeed.BorderColor = System.Drawing.Color.Black; - this.labelTitleMotorSpeed.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleMotorSpeed.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); - this.labelTitleMotorSpeed.ForeColor = System.Drawing.Color.White; - this.labelTitleMotorSpeed.InitVisible = true; - this.labelTitleMotorSpeed.LineSpacing = 0F; - this.labelTitleMotorSpeed.Location = new System.Drawing.Point(189, 272); - this.labelTitleMotorSpeed.Name = "labelTitleMotorSpeed"; - this.labelTitleMotorSpeed.Size = new System.Drawing.Size(230, 28); - this.labelTitleMotorSpeed.TabIndex = 140; - this.labelTitleMotorSpeed.Text = "모터 속도(0~100)"; - this.labelTitleMotorSpeed.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelTitleMotorSpeed.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleMotorSpeed.Wordwrap = false; - // - // labelTitleMotorPoleNum - // - this.labelTitleMotorPoleNum.BackPictureBox1 = null; - this.labelTitleMotorPoleNum.BackPictureBox2 = this.smartGroupBox1; - this.labelTitleMotorPoleNum.BorderColor = System.Drawing.Color.Black; - this.labelTitleMotorPoleNum.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleMotorPoleNum.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); - this.labelTitleMotorPoleNum.ForeColor = System.Drawing.Color.White; - this.labelTitleMotorPoleNum.InitVisible = true; - this.labelTitleMotorPoleNum.LineSpacing = 0F; - this.labelTitleMotorPoleNum.Location = new System.Drawing.Point(189, 306); - this.labelTitleMotorPoleNum.Name = "labelTitleMotorPoleNum"; - this.labelTitleMotorPoleNum.Size = new System.Drawing.Size(230, 28); - this.labelTitleMotorPoleNum.TabIndex = 136; - this.labelTitleMotorPoleNum.Text = "모터 Pole 수"; - this.labelTitleMotorPoleNum.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelTitleMotorPoleNum.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleMotorPoleNum.Wordwrap = false; - // - // labelTitleMotorDirectionWrite - // - this.labelTitleMotorDirectionWrite.BackPictureBox1 = null; - this.labelTitleMotorDirectionWrite.BackPictureBox2 = this.smartGroupBox1; - this.labelTitleMotorDirectionWrite.BorderColor = System.Drawing.Color.Black; - this.labelTitleMotorDirectionWrite.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleMotorDirectionWrite.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); - this.labelTitleMotorDirectionWrite.ForeColor = System.Drawing.Color.White; - this.labelTitleMotorDirectionWrite.InitVisible = true; - this.labelTitleMotorDirectionWrite.LineSpacing = 0F; - this.labelTitleMotorDirectionWrite.Location = new System.Drawing.Point(189, 374); - this.labelTitleMotorDirectionWrite.Name = "labelTitleMotorDirectionWrite"; - this.labelTitleMotorDirectionWrite.Size = new System.Drawing.Size(230, 28); - this.labelTitleMotorDirectionWrite.TabIndex = 205; - this.labelTitleMotorDirectionWrite.Text = "모터 방향"; - this.labelTitleMotorDirectionWrite.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelTitleMotorDirectionWrite.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleMotorDirectionWrite.Wordwrap = false; - // - // buttonMotorDirectionWrite - // - this.buttonMotorDirectionWrite.BackPictureBox = null; - this.buttonMotorDirectionWrite.BackPictureBox1 = null; - this.buttonMotorDirectionWrite.BackPictureBox2 = null; - this.buttonMotorDirectionWrite.ButtonColor = System.Drawing.Color.Gray; - this.buttonMotorDirectionWrite.ButtonImageAutoSize = true; - this.buttonMotorDirectionWrite.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonMotorDirectionWrite.DisableImage = null; - this.buttonMotorDirectionWrite.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonMotorDirectionWrite.DownImage"))); - this.buttonMotorDirectionWrite.GroupID = 0; - this.buttonMotorDirectionWrite.InitVisible = true; - this.buttonMotorDirectionWrite.Location = new System.Drawing.Point(425, 374); - this.buttonMotorDirectionWrite.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; - this.buttonMotorDirectionWrite.Name = "buttonMotorDirectionWrite"; - this.buttonMotorDirectionWrite.NestedClickEventPrevent = false; - this.buttonMotorDirectionWrite.OutlinePixel = 1; - this.buttonMotorDirectionWrite.RepeatInterval = 200; - this.buttonMotorDirectionWrite.RepeatIntervalAccelerate = null; - this.buttonMotorDirectionWrite.SafeInterval = 200; - this.buttonMotorDirectionWrite.Size = new System.Drawing.Size(80, 28); - this.buttonMotorDirectionWrite.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonMotorDirectionWrite.TabIndex = 206; - this.buttonMotorDirectionWrite.TextColor = System.Drawing.Color.Black; - this.buttonMotorDirectionWrite.TextDownColor = System.Drawing.Color.White; - this.buttonMotorDirectionWrite.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonMotorDirectionWrite.TextLocation = new System.Drawing.Point(0, 0); - this.buttonMotorDirectionWrite.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonMotorDirectionWrite.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonMotorDirectionWrite.UpImage"))); - this.buttonMotorDirectionWrite.Click += new System.EventHandler(this.buttonMotorDirectionWrite_Click); - // - // buttonRefresh - // - this.buttonRefresh.BackPictureBox = null; - this.buttonRefresh.BackPictureBox1 = null; - this.buttonRefresh.BackPictureBox2 = null; - this.buttonRefresh.ButtonColor = System.Drawing.Color.Gray; - this.buttonRefresh.ButtonImageAutoSize = true; - this.buttonRefresh.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonRefresh.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonRefresh.DisableImage"))); - this.buttonRefresh.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonRefresh.DownImage"))); - this.buttonRefresh.GroupID = 0; - this.buttonRefresh.InitVisible = true; - this.buttonRefresh.Location = new System.Drawing.Point(643, 16); - this.buttonRefresh.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; - this.buttonRefresh.Name = "buttonRefresh"; - this.buttonRefresh.NestedClickEventPrevent = false; - this.buttonRefresh.OutlinePixel = 1; - this.buttonRefresh.RepeatInterval = 200; - this.buttonRefresh.RepeatIntervalAccelerate = null; - this.buttonRefresh.SafeInterval = 200; - this.buttonRefresh.Size = new System.Drawing.Size(50, 50); - this.buttonRefresh.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonRefresh.TabIndex = 207; - this.buttonRefresh.TextColor = System.Drawing.Color.Black; - this.buttonRefresh.TextDownColor = System.Drawing.Color.White; - this.buttonRefresh.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonRefresh.TextLocation = new System.Drawing.Point(0, 0); - this.buttonRefresh.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonRefresh.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonRefresh.UpImage"))); - this.buttonRefresh.Click += new System.EventHandler(this.buttonRefresh_Click); + this.timer.EndTime = ((long)(100000000000)); + this.timer.Interval = 200; + this.timer.IntervalSeries = null; + this.timer.NowMillisecond = ((long)(0)); + this.timer.StartTime = ((long)(0)); + this.timer.Tick += new System.EventHandler(this.timer_Tick); // // ControlCenterSystemBLDCMotorSetting // @@ -520,6 +935,9 @@ this.Name = "ControlCenterSystemBLDCMotorSetting"; this.Size = new System.Drawing.Size(710, 470); this.smartGroupBox1.ResumeLayout(false); + this.smartGroupBox4.ResumeLayout(false); + this.smartGroupBox2.ResumeLayout(false); + this.smartGroupBox3.ResumeLayout(false); this.groupBoxInformation.ResumeLayout(false); this.ResumeLayout(false); @@ -548,5 +966,19 @@ private SmartX.SmartLabel labelTitleMotorDirectionWrite; private SmartX.SmartButton buttonMotorDirectionWrite; private SmartX.SmartButton buttonRefresh; + private SmartX.SmartGroupBox smartGroupBox2; + private SmartX.SmartButton buttonMotor1; + private SmartX.SmartGroupBox smartGroupBox3; + private SmartX.SmartButton buttonMotor4; + private SmartX.SmartButton buttonMotor3; + private SmartX.SmartButton buttonMotor2; + private SmartX.SmartLabel labelTitleMotorID; + public SmartX.SmartLabel labelMotorID; + private SmartX.SmartGroupBox smartGroupBox4; + private SmartX.SmartButton buttonStart; + private SmartX.SmartButton buttonAlarmReset; + private SmartX.SmartButton buttonAlarmRead; + private SmartX.SmartListBox smartListBox1; + private SmartX.SmartTimer timer; } } diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.cs index 1be6782..ca1e01c 100644 --- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.cs +++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.cs @@ -19,6 +19,9 @@ namespace ITC81DB_0H.Controls { #region Field private FormMenu m_ParentForm; + + private string CommID; + private int MotorIndex; #endregion #region Constructor @@ -72,22 +75,47 @@ namespace ITC81DB_0H.Controls } private void DefaultSetting() { + this.MotorIndex = 0; + this.CommID = "A"; + this.comboBoxMotorPoleNum.Items.Clear(); this.comboBoxMotorPoleNum.Items.Add("3"); this.comboBoxMotorPoleNum.Items.Add("6"); this.comboBoxMotorPoleNum.Items.Add("9"); this.comboBoxMotorPoleNum.Items.Add("12"); this.comboBoxMotorPoleNum.Items.Add("15"); + + this.VisibleMotorNum(this.ParentForm.ParentForm.SystemConfig2.BLDCMotorNum); } - public void UpdateParameter(BLDCMotorParameter item) + private void RefreshDisplay() { - this.labelVersionMajor.Text = item.VersionMajor + "."; - this.labelVersionMinor.Text = item.VersionMinor + "."; - this.labelVersionBuild.Text = item.VersionBuild; + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, this.CommID, + CommunicationAddress.BLDCMotorParameterRead, ""); + } - this.labelMotorRPM.Text = item.MotorRPM.ToString(); - switch (item.MotorDirection) + public void VisibleMotorNum(int num) + { + Collection button = new Collection(); + + button.Clear(); + button.Add(this.buttonMotor1); + button.Add(this.buttonMotor2); + button.Add(this.buttonMotor3); + button.Add(this.buttonMotor4); + + for (int i = num; i < FormMain.BLDCMotorNum; i++) + button[i].Visible = false; + + } + public void UpdateParameter(int index, Collection items) + { + this.labelVersionMajor.Text = items[index].VersionMajor + "."; + this.labelVersionMinor.Text = items[index].VersionMinor + "."; + this.labelVersionBuild.Text = items[index].VersionBuild; + + this.labelMotorRPM.Text = items[index].MotorRPM.ToString(); + switch (items[index].MotorDirection) { case 0: this.labelMotorDirectionRead.Text = "None"; @@ -102,7 +130,7 @@ namespace ITC81DB_0H.Controls this.labelMotorDirectionRead.Text = "None"; break; } - switch (item.SelectOperMode) + switch (items[index].SelectOperMode) { case 0: this.labelSelectOperMode.Text = "MCU"; @@ -115,31 +143,88 @@ namespace ITC81DB_0H.Controls break; } } + public void DisplayParameter(int index, Collection items) + { + this.labelMotorID.Text = items[index].MotorID.ToString(); + this.labelMotorSpeed.Text = items[index].MotorSpeed.ToString(); + this.comboBoxMotorPoleNum.SelectedIndex = items[index].PoleNum; + this.labelAttenuatorRatio.Text = items[index].AttenuatorRatio.ToString(); + if (items[index].OperDirection == 1) + this.buttonMotorDirectionWrite.ButtonDown(); + else + this.buttonMotorDirectionWrite.ButtonUp(); + } - public void DisplayRefresh(SystemStatus status) + public void DisplayRefresh(SystemStatus status, Collection items) { this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplay = DataStore.DisplayStore.SystemBLDCMotorSetting; this.ParentForm.ParentForm.SetDisplayMode(DataStore.DisplayMode.Menu); this.ParentForm.DisplayTitleRoot(this.ParentForm.ParentForm.CurrentSystemStatus); - this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.BLDCMotorParameterRead, ""); + this.MotorIndex = 0; + this.CommID = "A"; - this.labelMotorSpeed.Text = this.ParentForm.ParentForm.BLDCParameter.MotorSpeed.ToString(); - this.comboBoxMotorPoleNum.SelectedIndex = this.ParentForm.ParentForm.BLDCParameter.PoleNum; - this.labelAttenuatorRatio.Text = this.ParentForm.ParentForm.BLDCParameter.AttenuatorRatio.ToString(); - if (this.ParentForm.ParentForm.BLDCParameter.OperDirection == 1) - this.buttonMotorDirectionWrite.ButtonDown(); - else - this.buttonMotorDirectionWrite.ButtonUp(); + this.buttonMotor1.ButtonDown(); + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, this.CommID, + CommunicationAddress.BLDCMotorParameterRead, ""); + + this.DisplayParameter(0, items); } #endregion #region Event Handler - private void buttonRefresh_Click(object sender, EventArgs e) + private void buttonMotor_Click(object sender, EventArgs e) { - this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.BLDCMotorParameterRead, ""); + SmartX.SmartButton button = sender as SmartX.SmartButton; + + this.MotorIndex = int.Parse(button.Tag.ToString()); + this.CommID = this.ParentForm.ParentForm.CurrentCommunicationID + (this.ParentForm.ParentForm.CollectionBLDCParameter[this.MotorIndex].MotorID); + + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, this.CommID, + CommunicationAddress.BLDCMotorParameterRead, ""); + + this.DisplayParameter(this.MotorIndex, this.ParentForm.ParentForm.CollectionBLDCParameter); } + private void buttonRefresh_Click(object sender, EventArgs e) + { + this.RefreshDisplay(); + } + private void buttonStart_Click(object sender, EventArgs e) + { + if(this.buttonStart.ButtonStatus == SmartButton.BUTSTATUS.DOWN) + this.ParentForm.ParentForm.TransferData(CommunicationCommand.Start, this.CommID); + else + this.ParentForm.ParentForm.TransferData(CommunicationCommand.Stop, this.CommID); + } + + private void labelMotorID_Click(object sender, EventArgs e) + { + string value = "", message = ""; + + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelMotorID.Text, 2, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.IntValue < 1 || myKeyPad.IntValue > 16) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language, message); + myMsg.ShowDialog(); + } + else + { + this.labelMotorID.Text = myKeyPad.StringValue; + this.ParentForm.ParentForm.CollectionBLDCParameter[this.MotorIndex].MotorID = myKeyPad.IntValue; + + value = Helper.StringZeroFillDigits4(myKeyPad.StringValue); + this.ParentForm.ParentForm.SaveBLDCMotorFile(this.ParentForm.ParentForm.CollectionBLDCParameter); + this.ParentForm.ParentForm.TransferBLDCMotorData + (this.CommID, this.ParentForm.ParentForm.CollectionBLDCParameter[this.MotorIndex]); + } + } + } private void labelMotorSpeed_Click(object sender, EventArgs e) { string value = "", message = ""; @@ -157,11 +242,11 @@ namespace ITC81DB_0H.Controls else { this.labelMotorSpeed.Text = myKeyPad.StringValue; - this.ParentForm.ParentForm.BLDCParameter.MotorSpeed = myKeyPad.IntValue; + this.ParentForm.ParentForm.CollectionBLDCParameter[this.MotorIndex].MotorSpeed = myKeyPad.IntValue; - value = Helper.StringZeroFillDigits4(this.ParentForm.ParentForm.BLDCParameter.MotorSpeed.ToString()); - this.ParentForm.ParentForm.SaveBLDCMotorFile(this.ParentForm.ParentForm.BLDCParameter); - this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, + value = Helper.StringZeroFillDigits4(myKeyPad.StringValue); + this.ParentForm.ParentForm.SaveBLDCMotorFile(this.ParentForm.ParentForm.CollectionBLDCParameter); + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, this.CommID, CommunicationAddress.BLDCMotorSpeed, value); } } @@ -170,11 +255,11 @@ namespace ITC81DB_0H.Controls { string value = ""; - this.ParentForm.ParentForm.BLDCParameter.PoleNum = this.comboBoxMotorPoleNum.SelectedIndex; + this.ParentForm.ParentForm.CollectionBLDCParameter[this.MotorIndex].PoleNum = this.comboBoxMotorPoleNum.SelectedIndex; - value = Helper.StringZeroFillDigits4(this.ParentForm.ParentForm.BLDCParameter.PoleNum.ToString()); - this.ParentForm.ParentForm.SaveBLDCMotorFile(this.ParentForm.ParentForm.BLDCParameter); - this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.BLDCPoleNum, value); + value = Helper.StringZeroFillDigits4(this.comboBoxMotorPoleNum.SelectedIndex.ToString()); + this.ParentForm.ParentForm.SaveBLDCMotorFile(this.ParentForm.ParentForm.CollectionBLDCParameter); + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, this.CommID, CommunicationAddress.BLDCPoleNum, value); } private void labelAttenuatorRatio_Click(object sender, EventArgs e) { @@ -193,11 +278,11 @@ namespace ITC81DB_0H.Controls else { this.labelAttenuatorRatio.Text = myKeyPad.StringValue; - this.ParentForm.ParentForm.BLDCParameter.AttenuatorRatio = myKeyPad.IntValue; + this.ParentForm.ParentForm.CollectionBLDCParameter[this.MotorIndex].AttenuatorRatio = myKeyPad.IntValue; - value = Helper.StringZeroFillDigits4(this.ParentForm.ParentForm.BLDCParameter.AttenuatorRatio.ToString()); - this.ParentForm.ParentForm.SaveBLDCMotorFile(this.ParentForm.ParentForm.BLDCParameter); - this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.BLDCAttenuatorRatio, value); + value = Helper.StringZeroFillDigits4(myKeyPad.StringValue); + this.ParentForm.ParentForm.SaveBLDCMotorFile(this.ParentForm.ParentForm.CollectionBLDCParameter); + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, this.CommID, CommunicationAddress.BLDCAttenuatorRatio, value); } } } @@ -206,14 +291,30 @@ namespace ITC81DB_0H.Controls string value = ""; if (this.buttonMotorDirectionWrite.ButtonStatus == SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.BLDCParameter.OperDirection = 1; // CCW + this.ParentForm.ParentForm.CollectionBLDCParameter[this.MotorIndex].OperDirection = 1; // CCW else - this.ParentForm.ParentForm.BLDCParameter.OperDirection = 0; // CW + this.ParentForm.ParentForm.CollectionBLDCParameter[this.MotorIndex].OperDirection = 0; // CW - this.ParentForm.ParentForm.SaveBLDCMotorFile(this.ParentForm.ParentForm.BLDCParameter); - value = Helper.StringZeroFillDigits4(this.ParentForm.ParentForm.BLDCParameter.OperDirection.ToString()); - this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.BLDCOperDirection, value); - } + this.ParentForm.ParentForm.SaveBLDCMotorFile(this.ParentForm.ParentForm.CollectionBLDCParameter); + value = Helper.StringZeroFillDigits4(this.ParentForm.ParentForm.CollectionBLDCParameter[this.MotorIndex].OperDirection.ToString()); + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, this.CommID, CommunicationAddress.BLDCOperDirection, value); + + this.RefreshDisplay(); + } + + private void buttonAlarmRead_Click(object sender, EventArgs e) + { + + } + private void buttonAlarmReset_Click(object sender, EventArgs e) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.MotorAlarmReset, this.CommID); + } + + private void timer_Tick(object sender, EventArgs e) + { + + } #endregion } } diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.resx b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.resx index b5aad5d..694a589 100644 --- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.resx +++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemBLDCMotorSetting.resx @@ -118,6 +118,1178 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + GMh9SUzUqQAAAABJRU5ErkJggg== + + + + + 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 + HL0QaWlp+D/wCVgtPf3sUQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAAGQAAAAoCAIAAACHGsgUAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH + DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp + bGUAAEjHnZZ3VFTXFofPvXd6oc0w0hl6ky4wgPQuIB0EURhmBhjKAMMMTWyIqEBEEREBRZCggAGjoUis + iGIhKKhgD0gQUGIwiqioZEbWSnx5ee/l5ffHvd/aZ+9z99l7n7UuACRPHy4vBZYCIJkn4Ad6ONNXhUfQ + sf0ABniAAaYAMFnpqb5B7sFAJC83F3q6yAn8i94MAUj8vmXo6U+ng/9P0qxUvgAAyF/E5mxOOkvE+SJO + yhSkiu0zIqbGJIoZRomZL0pQxHJijlvkpZ99FtlRzOxkHlvE4pxT2clsMfeIeHuGkCNixEfEBRlcTqaI + b4tYM0mYzBXxW3FsMoeZDgCKJLYLOKx4EZuImMQPDnQR8XIAcKS4LzjmCxZwsgTiQ7mkpGbzuXHxArou + S49uam3NoHtyMpM4AoGhP5OVyOSz6S4pyalMXjYAi2f+LBlxbemiIluaWltaGpoZmX5RqP+6+Dcl7u0i + vQr43DOI1veH7a/8UuoAYMyKarPrD1vMfgA6tgIgd/8Pm+YhACRFfWu/8cV5aOJ5iRcIUm2MjTMzM424 + HJaRuKC/6386/A198T0j8Xa/l4fuyollCpMEdHHdWClJKUI+PT2VyeLQDf88xP848K/zWBrIieXwOTxR + RKhoyri8OFG7eWyugJvCo3N5/6mJ/zDsT1qca5Eo9Z8ANcoISN2gAuTnPoCiEAESeVDc9d/75oMPBeKb + F6Y6sTj3nwX9+65wifiRzo37HOcSGExnCfkZi2viawnQgAAkARXIAxWgAXSBITADVsAWOAI3sAL4gWAQ + DtYCFogHyYAPMkEu2AwKQBHYBfaCSlAD6kEjaAEnQAc4DS6Ay+A6uAnugAdgBIyD52AGvAHzEARhITJE + geQhVUgLMoDMIAZkD7lBPlAgFA5FQ3EQDxJCudAWqAgqhSqhWqgR+hY6BV2ArkID0D1oFJqCfoXewwhM + gqmwMqwNG8MM2An2hoPhNXAcnAbnwPnwTrgCroOPwe3wBfg6fAcegZ/DswhAiAgNUUMMEQbigvghEUgs + wkc2IIVIOVKHtCBdSC9yCxlBppF3KAyKgqKjDFG2KE9UCIqFSkNtQBWjKlFHUe2oHtQt1ChqBvUJTUYr + oQ3QNmgv9Cp0HDoTXYAuRzeg29CX0HfQ4+g3GAyGhtHBWGE8MeGYBMw6TDHmAKYVcx4zgBnDzGKxWHms + AdYO64dlYgXYAux+7DHsOewgdhz7FkfEqeLMcO64CBwPl4crxzXhzuIGcRO4ebwUXgtvg/fDs/HZ+BJ8 + Pb4LfwM/jp8nSBN0CHaEYEICYTOhgtBCuER4SHhFJBLVidbEACKXuIlYQTxOvEIcJb4jyZD0SS6kSJKQ + tJN0hHSedI/0ikwma5MdyRFkAXknuZF8kfyY/FaCImEk4SXBltgoUSXRLjEo8UISL6kl6SS5VjJHslzy + pOQNyWkpvJS2lIsUU2qDVJXUKalhqVlpirSptJ90snSxdJP0VelJGayMtoybDFsmX+awzEWZMQpC0aC4 + UFiULZR6yiXKOBVD1aF6UROoRdRvqP3UGVkZ2WWyobJZslWyZ2RHaAhNm+ZFS6KV0E7QhmjvlygvcVrC + WbJjScuSwSVzcopyjnIcuUK5Vrk7cu/l6fJu8onyu+U75B8poBT0FQIUMhUOKlxSmFakKtoqshQLFU8o + 3leClfSVApXWKR1W6lOaVVZR9lBOVd6vfFF5WoWm4qiSoFKmclZlSpWiaq/KVS1TPaf6jC5Ld6In0Svo + PfQZNSU1TzWhWq1av9q8uo56iHqeeqv6Iw2CBkMjVqNMo1tjRlNV01czV7NZ874WXouhFa+1T6tXa05b + RztMe5t2h/akjpyOl06OTrPOQ12yroNumm6d7m09jB5DL1HvgN5NfVjfQj9ev0r/hgFsYGnANThgMLAU + vdR6KW9p3dJhQ5Khk2GGYbPhqBHNyMcoz6jD6IWxpnGE8W7jXuNPJhYmSSb1Jg9MZUxXmOaZdpn+aqZv + xjKrMrttTjZ3N99o3mn+cpnBMs6yg8vuWlAsfC22WXRbfLS0suRbtlhOWWlaRVtVWw0zqAx/RjHjijXa + 2tl6o/Vp63c2ljYCmxM2v9ga2ibaNtlOLtdZzllev3zMTt2OaVdrN2JPt4+2P2Q/4qDmwHSoc3jiqOHI + dmxwnHDSc0pwOub0wtnEme/c5jznYuOy3uW8K+Lq4Vro2u8m4xbiVun22F3dPc692X3Gw8Jjncd5T7Sn + t+duz2EvZS+WV6PXzAqrFetX9HiTvIO8K72f+Oj78H26fGHfFb57fB+u1FrJW9nhB/y8/Pb4PfLX8U/z + /z4AE+AfUBXwNNA0MDewN4gSFBXUFPQm2Dm4JPhBiG6IMKQ7VDI0MrQxdC7MNaw0bGSV8ar1q66HK4Rz + wzsjsBGhEQ0Rs6vdVu9dPR5pEVkQObRGZ03WmqtrFdYmrT0TJRnFjDoZjY4Oi26K/sD0Y9YxZ2O8Yqpj + ZlgurH2s52xHdhl7imPHKeVMxNrFlsZOxtnF7YmbineIL4+f5rpwK7kvEzwTahLmEv0SjyQuJIUltSbj + kqOTT/FkeIm8nhSVlKyUgVSD1ILUkTSbtL1pM3xvfkM6lL4mvVNAFf1M9Ql1hVuFoxn2GVUZbzNDM09m + SWfxsvqy9bN3ZE/kuOd8vQ61jrWuO1ctd3Pu6Hqn9bUboA0xG7o3amzM3zi+yWPT0c2EzYmbf8gzySvN + e70lbEtXvnL+pvyxrR5bmwskCvgFw9tst9VsR23nbu/fYb5j/45PhezCa0UmReVFH4pZxde+Mv2q4quF + nbE7+0ssSw7uwuzi7Rra7bD7aKl0aU7p2B7fPe1l9LLCstd7o/ZeLV9WXrOPsE+4b6TCp6Jzv+b+Xfs/ + VMZX3qlyrmqtVqreUT13gH1g8KDjwZYa5ZqimveHuIfu1nrUttdp15UfxhzOOPy0PrS+92vG140NCg1F + DR+P8I6MHA082tNo1djYpNRU0gw3C5unjkUeu/mN6zedLYYtta201qLj4Ljw+LNvo78dOuF9ovsk42TL + d1rfVbdR2grbofbs9pmO+I6RzvDOgVMrTnV32Xa1fW/0/ZHTaqerzsieKTlLOJt/duFczrnZ86nnpy/E + XRjrjup+cHHVxds9AT39l7wvXbnsfvlir1PvuSt2V05ftbl66hrjWsd1y+vtfRZ9bT9Y/NDWb9nffsPq + RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP + lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l + f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAzJJREFUaEPt2l1PkmEY + wPH7UziVjWy62eZ3qc461U6cJzmLzDQFpmLNtUwRDV8w31HiTQeoII4UX4ZhB4Qd6Gja9+j/CG06x/0F + uP4nzAc8uH677/t52FDmuzU2NQ1MLyR+/vpduLr6a3RdMTFs4eo6d/mH8QemFqAoofzvDpbVNZO7LFxc + XORyuWw2m8lkTiosRmZwxjcQLgtWl6dEc1MJq76hwZtM84mzs7N0Op1MJuPx+NbWVqzCYmQG39vbAwEK + QGABp6hUwlpJHJyfnx8dHSUSiUgkEg6Hg8FgIBDwV1iMzOCMDwIUgMACTlHJwOodm87n8wcHB9CGQiH+ + 51vFBwIUgMACDkQGVkPjox+5PKsuGo3i6pNuBQgs4GRzeaCUbWL29PR0e3ubN9ale8ECDkRAqWDqMJVK + sUt5Y026FyzgQBRKHarvJ5mdnR12qVcqEzgsLqDU4fHx5uYml1akMoEDEVCK04tjn0vLUpnAgQgotb+/ + zxm2JGmDCCjF0cWeXJC0QQSU4tGeA/+rpA0ioAwsbpBzkjaIDKzd3V1O+1lJG0RAGVirq6szkjaIDKx4 + PM7dcUrSBhFQisf3xcXFL5I2iIBSPMjPz89PSNogAkrFYjFujeOSNoiAUtFo1OPxjEnaIAJKRSIRTvvP + kjaIgFJ8n+a0/yRpgwgotbGx4Xa7P0raIAJKhcPhycnJYUkbRECpYDDocrk+SNogAkoFAgGn0zkkaYMI + KOX3+0dHRwclbRABpXw+H7fGfkkbRECpFe/ayMiIXdLG08Pa+rqaWVoBy2azWaUygQPW3LJXDbvnWGP8 + 3SuVCRyIht0e1WLp4b7ISuuRygQO36VbXr9T5ro6p3uaA5+rb6V7wQLOuHv6wcN6VVtb+6ytgz3Jeuvq + 6noj3QoQWMCBCChlMpmqq6vbbUMOh6O7u7uzs/O1dBMUgMDywjoEEVDGj9l4qakxtdscrDcWHp97VfGB + AAUgsIBDpV/+Fb2qqqoeN7daB9/39fWx/CwWy8ubOiqm4rwMzvggQPGkuRWWohSVsIhLLDYQnz5va+/t + 77H32+z20pNGxcTIDM74IEBR3H0lILP5HwCCSHAf6vltAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAGQAAAAoCAIAAACHGsgUAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH + DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp + bGUAAEjHnZZ3VFTXFofPvXd6oc0w0hl6ky4wgPQuIB0EURhmBhjKAMMMTWyIqEBEEREBRZCggAGjoUis + iGIhKKhgD0gQUGIwiqioZEbWSnx5ee/l5ffHvd/aZ+9z99l7n7UuACRPHy4vBZYCIJkn4Ad6ONNXhUfQ + sf0ABniAAaYAMFnpqb5B7sFAJC83F3q6yAn8i94MAUj8vmXo6U+ng/9P0qxUvgAAyF/E5mxOOkvE+SJO + yhSkiu0zIqbGJIoZRomZL0pQxHJijlvkpZ99FtlRzOxkHlvE4pxT2clsMfeIeHuGkCNixEfEBRlcTqaI + b4tYM0mYzBXxW3FsMoeZDgCKJLYLOKx4EZuImMQPDnQR8XIAcKS4LzjmCxZwsgTiQ7mkpGbzuXHxArou + S49uam3NoHtyMpM4AoGhP5OVyOSz6S4pyalMXjYAi2f+LBlxbemiIluaWltaGpoZmX5RqP+6+Dcl7u0i + vQr43DOI1veH7a/8UuoAYMyKarPrD1vMfgA6tgIgd/8Pm+YhACRFfWu/8cV5aOJ5iRcIUm2MjTMzM424 + HJaRuKC/6386/A198T0j8Xa/l4fuyollCpMEdHHdWClJKUI+PT2VyeLQDf88xP848K/zWBrIieXwOTxR + RKhoyri8OFG7eWyugJvCo3N5/6mJ/zDsT1qca5Eo9Z8ANcoISN2gAuTnPoCiEAESeVDc9d/75oMPBeKb + F6Y6sTj3nwX9+65wifiRzo37HOcSGExnCfkZi2viawnQgAAkARXIAxWgAXSBITADVsAWOAI3sAL4gWAQ + DtYCFogHyYAPMkEu2AwKQBHYBfaCSlAD6kEjaAEnQAc4DS6Ay+A6uAnugAdgBIyD52AGvAHzEARhITJE + geQhVUgLMoDMIAZkD7lBPlAgFA5FQ3EQDxJCudAWqAgqhSqhWqgR+hY6BV2ArkID0D1oFJqCfoXewwhM + gqmwMqwNG8MM2An2hoPhNXAcnAbnwPnwTrgCroOPwe3wBfg6fAcegZ/DswhAiAgNUUMMEQbigvghEUgs + wkc2IIVIOVKHtCBdSC9yCxlBppF3KAyKgqKjDFG2KE9UCIqFSkNtQBWjKlFHUe2oHtQt1ChqBvUJTUYr + oQ3QNmgv9Cp0HDoTXYAuRzeg29CX0HfQ4+g3GAyGhtHBWGE8MeGYBMw6TDHmAKYVcx4zgBnDzGKxWHms + AdYO64dlYgXYAux+7DHsOewgdhz7FkfEqeLMcO64CBwPl4crxzXhzuIGcRO4ebwUXgtvg/fDs/HZ+BJ8 + Pb4LfwM/jp8nSBN0CHaEYEICYTOhgtBCuER4SHhFJBLVidbEACKXuIlYQTxOvEIcJb4jyZD0SS6kSJKQ + tJN0hHSedI/0ikwma5MdyRFkAXknuZF8kfyY/FaCImEk4SXBltgoUSXRLjEo8UISL6kl6SS5VjJHslzy + pOQNyWkpvJS2lIsUU2qDVJXUKalhqVlpirSptJ90snSxdJP0VelJGayMtoybDFsmX+awzEWZMQpC0aC4 + UFiULZR6yiXKOBVD1aF6UROoRdRvqP3UGVkZ2WWyobJZslWyZ2RHaAhNm+ZFS6KV0E7QhmjvlygvcVrC + WbJjScuSwSVzcopyjnIcuUK5Vrk7cu/l6fJu8onyu+U75B8poBT0FQIUMhUOKlxSmFakKtoqshQLFU8o + 3leClfSVApXWKR1W6lOaVVZR9lBOVd6vfFF5WoWm4qiSoFKmclZlSpWiaq/KVS1TPaf6jC5Ld6In0Svo + PfQZNSU1TzWhWq1av9q8uo56iHqeeqv6Iw2CBkMjVqNMo1tjRlNV01czV7NZ874WXouhFa+1T6tXa05b + RztMe5t2h/akjpyOl06OTrPOQ12yroNumm6d7m09jB5DL1HvgN5NfVjfQj9ev0r/hgFsYGnANThgMLAU + vdR6KW9p3dJhQ5Khk2GGYbPhqBHNyMcoz6jD6IWxpnGE8W7jXuNPJhYmSSb1Jg9MZUxXmOaZdpn+aqZv + xjKrMrttTjZ3N99o3mn+cpnBMs6yg8vuWlAsfC22WXRbfLS0suRbtlhOWWlaRVtVWw0zqAx/RjHjijXa + 2tl6o/Vp63c2ljYCmxM2v9ga2ibaNtlOLtdZzllev3zMTt2OaVdrN2JPt4+2P2Q/4qDmwHSoc3jiqOHI + dmxwnHDSc0pwOub0wtnEme/c5jznYuOy3uW8K+Lq4Vro2u8m4xbiVun22F3dPc692X3Gw8Jjncd5T7Sn + t+duz2EvZS+WV6PXzAqrFetX9HiTvIO8K72f+Oj78H26fGHfFb57fB+u1FrJW9nhB/y8/Pb4PfLX8U/z + /z4AE+AfUBXwNNA0MDewN4gSFBXUFPQm2Dm4JPhBiG6IMKQ7VDI0MrQxdC7MNaw0bGSV8ar1q66HK4Rz + wzsjsBGhEQ0Rs6vdVu9dPR5pEVkQObRGZ03WmqtrFdYmrT0TJRnFjDoZjY4Oi26K/sD0Y9YxZ2O8Yqpj + ZlgurH2s52xHdhl7imPHKeVMxNrFlsZOxtnF7YmbineIL4+f5rpwK7kvEzwTahLmEv0SjyQuJIUltSbj + kqOTT/FkeIm8nhSVlKyUgVSD1ILUkTSbtL1pM3xvfkM6lL4mvVNAFf1M9Ql1hVuFoxn2GVUZbzNDM09m + SWfxsvqy9bN3ZE/kuOd8vQ61jrWuO1ctd3Pu6Hqn9bUboA0xG7o3amzM3zi+yWPT0c2EzYmbf8gzySvN + e70lbEtXvnL+pvyxrR5bmwskCvgFw9tst9VsR23nbu/fYb5j/45PhezCa0UmReVFH4pZxde+Mv2q4quF + nbE7+0ssSw7uwuzi7Rra7bD7aKl0aU7p2B7fPe1l9LLCstd7o/ZeLV9WXrOPsE+4b6TCp6Jzv+b+Xfs/ + VMZX3qlyrmqtVqreUT13gH1g8KDjwZYa5ZqimveHuIfu1nrUttdp15UfxhzOOPy0PrS+92vG140NCg1F + DR+P8I6MHA082tNo1djYpNRU0gw3C5unjkUeu/mN6zedLYYtta201qLj4Ljw+LNvo78dOuF9ovsk42TL + d1rfVbdR2grbofbs9pmO+I6RzvDOgVMrTnV32Xa1fW/0/ZHTaqerzsieKTlLOJt/duFczrnZ86nnpy/E + XRjrjup+cHHVxds9AT39l7wvXbnsfvlir1PvuSt2V05ftbl66hrjWsd1y+vtfRZ9bT9Y/NDWb9nffsPq + RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP + lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l + f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAqhJREFUaEPt2t9PUnEY + x/Hn/4Aj6J017+qCLN3UDZqMXwEDy5algtpqrsVWy1mti5aLRGtKUyDQ/AEJaVSmZZaCrn+qj3Bq4/Hb + vI/nu/fG9nw5F9/XDoztQA21y9zU1OoJ+B9FhxeKdzbKdz/9qqtGCz9DyQKO3+oOgEJH+bNqsCwObzi1 + Hl477F068KXLnlTJnayvLqVK/kwZxwcCKCwOn05TWTqWyWy2374/tHbYs1hm19dtoAAIWIBTVdKxum/d + G8gewJVdUOcBBCzAqSodYeFmC+XKIqUMLMCpfh7J1NgYTn8ILvA3SX8DTjhdBBS1eoIDWb4tsUB0zhMk + 7/jzy4t8T2KByPswSv3zed8bviexQAQoGln55jm2J7FANLK6Qzdzu2xDUgYoGs5+Z1NJGaBoaGWHTSVl + gKLw8lc2lZQBikJvt9lUUgYoGljcYlNJGaCoP7PJppIyQNGN9Gc2lZQBivpSH9lUUgYoupYssqmkDFB0 + dX6DTSVlgKLeuXU2lZQBiq68fs+mkjJAUc9snk0lZYCi4Mwam0rKAEWBVzk2lZQBivwvs2wqKQMU+aZW + 2VRSBijyxpbZVFIGKPJMLrGppAxQ5HiadCf22IZ0rH3XRIZsD1645+SZxUnN/7g4Pk1tgxFX/Avfk2pz + xbfaQhFq6ex2xuRH/Ak5p/ItnXbSTCbr2JQrLo8t/hlwrGPTmslMRqPxdLvVMflOvubVJfaAAyJAkaZp + eDnju+6IFfj7pGQJLMABEaCO/sxW8dLOBgbt0axzVh726Dnj2wABSwVK0//5V/UyGAzN57s6Is/s0Zxj + ZtOF3xOJfXb9/19iHwfH8YEAiuYLXWCpSmHpWFiV+8toMGqn2m2WvtGOyIT1cdz2ZK6uwpFxcBwfCKCo + fvp0oIaG3yhXP/qw1nqaAAAAAElFTkSuQmCC + + + + + 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 + gg== + + + + + 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 + fvp0oIaG3yhXP/qw1nqaAAAAAElFTkSuQmCC + + + + + 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 + gg== + + + + + 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 + Y/x3hKIo+Au6wRIdIDPAfAAAAABJRU5ErkJggg== + + + + + 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 + JPgbmuKFXMQvXwMAAAAASUVORK5CYII= + + + + + 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 + YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln + yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v + vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp + vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L + Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA + bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z + llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW + ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s + xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 + eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw + YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR + XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm + WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl + xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 + dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 + 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 + Y/x3hKIo+Au6wRIdIDPAfAAAAABJRU5ErkJggg== + + + + + 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 + JPgbmuKFXMQvXwMAAAAASUVORK5CYII= + + iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH @@ -393,9 +1565,9 @@ SUVORK5CYII= - + - iVBORw0KGgoAAAANSUhEUgAAAFAAAAAcCAYAAAD2izi6AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH + iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs @@ -440,43 +1612,30 @@ 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 @@ -521,39 +1680,309 @@ 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 + Y/x3hKIo+Au6wRIdIDPAfAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH + DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp + bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE + sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs + AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4 + JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR + 3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd + li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF + ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX + wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF + hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55 + 4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ + VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB + 5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC + qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE + j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I + 1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9 + rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG + fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp + B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ + yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC + YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln + yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v + vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp + vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L + Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA + bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z + llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW + ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s + xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 + eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw + YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR + XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm + WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl + xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 + dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 + V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za + Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v + Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb + PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ + 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h + /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr + XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS + fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ + tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAABbBJREFUaEPVmldTW0cY + hvd3GBDYk2RykUkmCeNxiYfEYztgikAS1RgwWEiiIzoYGAK4AAbTMYjeO6aZ3hGi9+YCrrHzK958q4yd + EN/b7MVz8c2ew3kfrfY9oxmYRCLB/7E4dQrnZW5wSclGQF0fInrmEPV48YsQ0aOHpqYXiqQMnHVQwNzi + 5Cd5OZ+I8Is1Vd3I0e+iYv0lanffoXb/Par3/0LV3vvPCn8mfzbPUL7+Avdnd6Eq78Bpa4cjmTkfRcwt + LGAXGk8X70C38QqlO++Qvf4Gd1ZeIXX5JVKWiMXPCD3vD4I/m2fIoSxllEm38RKRffOwVmshMTf/VMSW + JHIN+yjf+ROZq6+RtPACsYZDROoPoJ19biT8M/PhuTwDz5K8+AJZa6+h235rzHpFGXpU5KzUBRnT2yjZ + emv8BGINB4jQP6M/dnzQEjwTz5ZGGYs339D5McDyit0/IuYnT9Jh6kPeyiFSaSuj9PRpzDxD2DGFZ4um + jGmUNXfpAEpdB8zpK8bOyz2QPrmJe/Q9jKYtDJ+mG445PGMMZc1ceY3U8Q2cvuoIpkjJQeb8U9yiLQuf + eYrQaTHgWZPmD5Ex9wTS2HQw/8pHuLdwiGg6VKFTdJFAxFDmu/MH8ClsAAtum0AqmYXTQsjkE6HQ0s6k + kYi6th8spHMGySTCF4IFg+9KiuE5NA1DtCMd00iaO0DIBC0KBs+cTA2mrh8EC2qfQiINQeP7whE8sY9E + er+o6gbAAlsnkUBD4NiecASN7yGR2su/5jFYQMsEEuglEzhKi4IRRDKJdOCVNXTYNc3jiKcXTMDInnBw + mVt04G9W94Gpm0YRR4NmeFc4AkZ2kTD1BH5VPWCqxhGjiHp4Rzg0IzuIn9qHb2U3vdnrhxFLIqqhHeHg + MnGTJFJOIsq6IcTSy0U1uC0c6qFtxE3s4YbuEZhf7SBiqJP9H28Jh2pgC7Fju/Au6wLzrRlA9Ng+lP1b + wsFlYkZ34VXaCXajqh9RVGM3+zaFQ9m/iWhqrusl7WA+lX2IpE72690UDi4TTTXsWdwG5l3RiwgafHs2 + hMOvdwNR1FzXilrBvHQ90FKV3eheFw7fnnVEUnN5FLSAXS/rRjgNPo/WhONG9xoiBrfgnt8M5lnahfCB + bXh3rgmHT9catNRcbnmNYB4POxFGg1fHqnB4d64inJrLJY9+s7sXdyCUhuvtK8Lh1bGCsL4NOD+oB3Mr + akcI1Zhn24pwcJlQai5FTh2Ya2Ebgmm41rosHJ5tyySyDnl2LZhLQSuCujfg0bwkHNdalhBCzSW7XwPm + nNeCQOpk96ZF4fBoXkQw1bAsk0QUuU3Q0ODauCAcbk0LCOxahVNGFZj8QSM01Mmu9bQoGG4NJEI17Hiv + EkyW0wA1Dc5188LhUj8PDTWX9G4FmFN2PVQ0KGoNwuFcZ4C6fRkOd8rBHO/Xwb91BfJqg3AoakikdQn2 + t3Vg0qxaElmGrGpOOOTVc1C1LMIuvQzMNq0UN+n0yyr1cBIMOckoGw2wTsoDuxyXBb8GvVHEsWJWKORV + evjVz+CiNg3svJ8WPlWjkFfOQlo+IxTOJOJTOYwzngFg3/1qDffCLrjSNjmUzQiDlHCjzK757fj2jBWY + mUSCy3HZcCsbNS7al04LgaNuBu5lQ7gYcQempmYkYmaGb8/9hqu3yyHTTcKudAq2D483PKOsdBw26Tp8 + bXkO3MEoYmpqih8dPKDI64IjXWRXQjcUH094NqeScTjnd+H7352M2T/+CweXMTExxU8yL6OltGDAeNPV + oknYHBN4Fi4hze+HTZoOP9i6UGYTY/aPIv/KmOCb0xdgFZYK+6xGOOT2wK5gGLZFY7Ap/DLYEvaUgWex + z2zEhaBkfPXzmSMSR0Q+yPCtOmEU+gWWrkpYhabiUkIuLt/K+yJcin8Aq5AUWDr7Gs/DiRMmxoz/lZBI + JPgbmuKFXMQvXwMAAAAASUVORK5CYII= + + + + + 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 + Y/x3hKIo+Au6wRIdIDPAfAAAAABJRU5ErkJggg== + + + + + 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 + JPgbmuKFXMQvXwMAAAAASUVORK5CYII= @@ -659,8 +2088,11 @@ AACoEmMAAPgSYwAAuO7nAzC+Sc7BlfbIAAAAAElFTkSuQmCC + + 17, 17 + - 39 + 49 WEBPAD diff --git a/ITC81DB_0H/DataStore.cs b/ITC81DB_0H/DataStore.cs index 43a9994..8f3b0e1 100644 --- a/ITC81DB_0H/DataStore.cs +++ b/ITC81DB_0H/DataStore.cs @@ -537,6 +537,10 @@ namespace ITC81DB_0H public static readonly string SubBoard10 = "J"; public static readonly string SubBoard11 = "K"; public static readonly string SubBoard12 = "L"; + public static readonly string SubBoard13 = "M"; + public static readonly string SubBoard14 = "N"; + public static readonly string SubBoard15 = "O"; + public static readonly string SubBoard16 = "P"; public static readonly string SubBoardAll = "Z"; } public class CommunicationAddress @@ -1294,6 +1298,8 @@ namespace ITC81DB_0H private int m_FileNameExtension; + private int m_BLDCMotorNum; + private int m_HitachiRoomNumberEthernet; private int m_MarkoprintLineNumberEthernet; private bool m_IsMarkoprintDatePrintEthernet; @@ -1525,6 +1531,11 @@ namespace ITC81DB_0H set { this.m_FileNameExtension = value; } } + public int BLDCMotorNum + { + get { return this.m_BLDCMotorNum; } + set { this.m_BLDCMotorNum = value; } + } public int HitachiRoomNumberEthernet { get { return this.m_HitachiRoomNumberEthernet; } @@ -1684,6 +1695,7 @@ namespace ITC81DB_0H this.IsGroup5UsingRandomMode = false; this.FileNameExtension = 0; + this.BLDCMotorNum = 3; this.HitachiRoomNumberEthernet = 1; this.MarkoprintLineNumberEthernet = 0; @@ -1759,7 +1771,7 @@ namespace ITC81DB_0H public int DummyInt7; public int DummyInt8; public int DummyInt9; - public int DummyInt10; + public int BLDCMotorNum; public int ModbusRTUSelectFunction; public int ModbusRTUSlaveIDCOM1; public int ModbusRTUSlaveIDCOM3; @@ -2909,6 +2921,8 @@ namespace ITC81DB_0H public class BLDCMotorParameter { #region Field + private int m_MotorID; + private int m_CommBaudrate; private int m_CommParityBit; private int m_PWMDelay; @@ -2917,6 +2931,13 @@ namespace ITC81DB_0H private int m_PoleNum; private int m_AttenuatorRatio; + private int m_BootingStart; + private int m_PortUse; + private int m_Feedback; + private int m_InitDirection; + private int m_OperDirection; + private int m_SelectOperMode; + private string m_VersionMajor; private string m_VersionMinor; private string m_VersionBuild; @@ -2925,12 +2946,6 @@ namespace ITC81DB_0H private int m_MotorDirection; private string m_AttenuatorRPM; - private int m_BootingStart; - private int m_PortUse; - private int m_Feedback; - private int m_InitDirection; - private int m_OperDirection; - private int m_SelectOperMode; #endregion #region Constructor @@ -2941,6 +2956,12 @@ namespace ITC81DB_0H #endregion #region Property + public int MotorID + { + get { return this.m_MotorID; } + set { this.m_MotorID = value; } + } + public int CommBaudrate { get { return this.m_CommBaudrate; } @@ -2977,6 +2998,37 @@ namespace ITC81DB_0H set { this.m_AttenuatorRatio = value; } } + public int BootingStart + { + get { return this.m_BootingStart; } + set { this.m_BootingStart = value; } + } + public int PortUse + { + get { return this.m_PortUse; } + set { this.m_PortUse = value; } + } + public int Feedback + { + get { return this.m_Feedback; } + set { this.m_Feedback = value; } + } + public int InitDirection + { + get { return this.m_InitDirection; } + set { this.m_InitDirection = value; } + } + public int OperDirection + { + get { return this.m_OperDirection; } + set { this.m_OperDirection = value; } + } + public int SelectOperMode + { + get { return this.m_SelectOperMode; } + set { this.m_SelectOperMode = value; } + } + public string VersionMajor { get { return this.m_VersionMajor; } @@ -3012,42 +3064,13 @@ namespace ITC81DB_0H get { return this.m_AttenuatorRPM; } set { this.m_AttenuatorRPM = value; } } - - public int BootingStart - { - get { return this.m_BootingStart; } - set { this.m_BootingStart = value; } - } - public int PortUse - { - get { return this.m_PortUse; } - set { this.m_PortUse = value; } - } - public int Feedback - { - get { return this.m_Feedback; } - set { this.m_Feedback = value; } - } - public int InitDirection - { - get { return this.m_InitDirection; } - set { this.m_InitDirection = value; } - } - public int OperDirection - { - get { return this.m_OperDirection; } - set { this.m_OperDirection = value; } - } - public int SelectOperMode - { - get { return this.m_SelectOperMode; } - set { this.m_SelectOperMode = value; } - } #endregion #region Method public void Initialization() { + this.MotorID = 0; + this.CommBaudrate = 0; this.CommParityBit = 0; this.PWMDelay = 5; @@ -3056,6 +3079,13 @@ namespace ITC81DB_0H this.PoleNum = 1; this.AttenuatorRatio = 5; + this.BootingStart = 0; + this.PortUse = 1; + this.Feedback = 0; + this.InitDirection = 0; + this.OperDirection = 0; + this.SelectOperMode = 0; + this.VersionMajor = "01"; this.VersionMinor = "00"; this.VersionBuild = "00"; @@ -3063,21 +3093,16 @@ namespace ITC81DB_0H this.MotorRPM = "0"; this.MotorDirection = 1; this.AttenuatorRPM = "0"; - - this.BootingStart = 0; - this.PortUse = 1; - this.Feedback = 0; - this.InitDirection = 0; - this.OperDirection = 0; - this.SelectOperMode = 0; } #endregion } #endregion - #region StructBLDCMotorParameter1 - Holding Register + #region StructBLDCMotorParameter [StructLayout(LayoutKind.Sequential)] - public struct StructBLDCMotorParameter1 + public struct StructBLDCMotorParameter { + public int MotorID; + public int CommBaudrate; public int CommParityBit; public int PWMDelay; @@ -3101,11 +3126,6 @@ namespace ITC81DB_0H public int DummyInt13; public int DummyInt14; public int DummyInt15; - public int DummyInt16; - public int DummyInt17; - public int DummyInt18; - public int DummyInt19; - public int DummyInt20; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] public string DummyString1; @@ -3127,59 +3147,49 @@ namespace ITC81DB_0H public string DummyString9; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] public string DummyString10; - } - #endregion - #region StructBLDCMotorParameter2 - Coils - [StructLayout(LayoutKind.Sequential)] - public struct StructBLDCMotorParameter2 - { + public int BootingStart; public int PortUse; public int Feedback; public int InitDirection; public int OperDirection; - public int DummyInt1; - public int DummyInt2; - public int DummyInt3; - public int DummyInt4; - public int DummyInt5; - public int DummyInt6; - public int DummyInt7; - public int DummyInt8; - public int DummyInt9; - public int DummyInt10; - public int DummyInt11; - public int DummyInt12; - public int DummyInt13; - public int DummyInt14; - public int DummyInt15; public int DummyInt16; public int DummyInt17; public int DummyInt18; public int DummyInt19; public int DummyInt20; + public int DummyInt21; + public int DummyInt22; + public int DummyInt23; + public int DummyInt24; + public int DummyInt25; + public int DummyInt26; + public int DummyInt27; + public int DummyInt28; + public int DummyInt29; + public int DummyInt30; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string DummyString1; + public string DummyString11; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string DummyString2; + public string DummyString12; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string DummyString3; + public string DummyString13; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string DummyString4; + public string DummyString14; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string DummyString5; + public string DummyString15; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string DummyString6; + public string DummyString16; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string DummyString7; + public string DummyString17; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string DummyString8; + public string DummyString18; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string DummyString9; + public string DummyString19; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string DummyString10; + public string DummyString20; } #endregion diff --git a/ITC81DB_0H/Forms/FormMain.cs b/ITC81DB_0H/Forms/FormMain.cs index 514564b..7d8fcb7 100644 --- a/ITC81DB_0H/Forms/FormMain.cs +++ b/ITC81DB_0H/Forms/FormMain.cs @@ -35,6 +35,8 @@ namespace ITC81DB_0H.Forms public bool IsCurrentKeyKorean; public int SensorDetectingTime; public double OverloadWeight; + public static readonly int BLDCMotorNum = 4; + private int BLDCMotorIndex; #region 통신관련 // OPT2 @@ -108,8 +110,6 @@ namespace ITC81DB_0H.Forms public SystemParameter3 CurrentSystemParameter3; // 시스템파라미터4 public SystemParameter4 CurrentSystemParameter4; - // BLDC 파라미터 - public BLDCMotorParameter BLDCParameter; // 시스템정보 파라미터 public SystemInformation2 SystemInfo2; @@ -142,6 +142,8 @@ namespace ITC81DB_0H.Forms public Collection CollectionWeightData; // 종근당 중량 데이터 버퍼 private Collection CollectionBufferWeightData; + // BLDC 파라미터 + public Collection CollectionBLDCParameter; // 리젝데이터 private JudgmentResult CurrentJudgmentResult; @@ -279,6 +281,7 @@ namespace ITC81DB_0H.Forms this.FlagThreadMessage1 = false; this.IsCurrentKeyKorean = false; this.OverloadWeight = 700.00; + this.BLDCMotorIndex = 0; #region 통신관련 this.CurrentOPT2COM1 = new SerialOPT2(); @@ -335,7 +338,6 @@ namespace ITC81DB_0H.Forms this.CurrentSystemParameter2 = new SystemParameter2(); this.CurrentSystemParameter3 = new SystemParameter3(); this.CurrentSystemParameter4 = new SystemParameter4(); - this.BLDCParameter = new BLDCMotorParameter(); //this.CurrentAutoZeroItem = new SystemParameter4(); this.SystemInfo2 = new SystemInformation2(); this.SystemInfo3 = new SystemInformation3(); @@ -344,12 +346,15 @@ namespace ITC81DB_0H.Forms this.CollectionBufferWeightData = new Collection(); this.UpdateForMain = new UpdateForMainBoard(); + this.CurrentJudgmentResult = new JudgmentResult(); + + this.CollectionBLDCParameter = new Collection(); + for (int i = 0; i < BLDCMotorNum; i++) + this.CollectionBLDCParameter.Add(new BLDCMotorParameter()); + this.CollectionProductItem = new Collection(); this.CollectionJudgmentItem = new Collection(); this.CollectionWeightData = new Collection(); - - this.CurrentJudgmentResult = new JudgmentResult(); - for (int i = 0; i < this.ProductCount; i++) { this.CollectionProductItem.Add(new ProductItem()); @@ -2035,7 +2040,7 @@ namespace ITC81DB_0H.Forms // 파라미터 읽기 응답 private int ReceiveCommandPR0(string lane, string address, string receiveData) { - int ret = 0, iValue = 0; + int ret = 0, iValue = 0, index = 0; string sValue = ""; try @@ -2260,18 +2265,24 @@ namespace ITC81DB_0H.Forms break; case "9516": #region Value Assign - this.BLDCParameter.VersionMajor = receiveData.Substring(0, 4); - this.BLDCParameter.VersionMinor = receiveData.Substring(4, 4); - this.BLDCParameter.VersionBuild = receiveData.Substring(8, 4); - this.BLDCParameter.Frequency = receiveData.Substring(12, 4); - this.BLDCParameter.MotorRPM = receiveData.Substring(16, 4); - this.BLDCParameter.MotorDirection = int.Parse(receiveData.Substring(20, 4)); - this.BLDCParameter.AttenuatorRPM = receiveData.Substring(24, 4); - this.BLDCParameter.SelectOperMode = int.Parse(receiveData.Substring(28, 4)); + for (int i = 0; i < BLDCMotorNum; i++) + { + if (this.CurrentMotorID(lane) == this.CollectionBLDCParameter[i].MotorID) + index = i; + } + + this.CollectionBLDCParameter[index].VersionMajor = receiveData.Substring(0, 4); + this.CollectionBLDCParameter[index].VersionMinor = receiveData.Substring(4, 4); + this.CollectionBLDCParameter[index].VersionBuild = receiveData.Substring(8, 4); + this.CollectionBLDCParameter[index].Frequency = receiveData.Substring(12, 4); + this.CollectionBLDCParameter[index].MotorRPM = receiveData.Substring(16, 4); + this.CollectionBLDCParameter[index].MotorDirection = int.Parse(receiveData.Substring(20, 4)); + this.CollectionBLDCParameter[index].AttenuatorRPM = receiveData.Substring(24, 4); + this.CollectionBLDCParameter[index].SelectOperMode = int.Parse(receiveData.Substring(28, 4)); #endregion if (this.ChildFormMenu.CenterSystemBLDCMotorSetting != null) - this.ChildFormMenu.CenterSystemBLDCMotorSetting.UpdateParameter(this.BLDCParameter); + this.ChildFormMenu.CenterSystemBLDCMotorSetting.UpdateParameter(index, this.CollectionBLDCParameter); break; default: break; @@ -2389,7 +2400,11 @@ namespace ITC81DB_0H.Forms break; case "9023": if (response == DataStore.ResponseData.ACK) - this.TransferBLDCMotorData(); + { + this.TransferBLDCMotorData(this.CurrentCommunicationID(this.BLDCMotorIndex), + this.CollectionBLDCParameter[this.BLDCMotorIndex]); + this.BLDCMotorIndex++; + } break; case "9033": if (response == DataStore.ResponseData.ACK) @@ -2400,9 +2415,19 @@ namespace ITC81DB_0H.Forms case "9040": if (response == DataStore.ResponseData.ACK) { - if (this.SystemConfig2.IsUsingRandomMode == true) - this.SystemConfig1.ProductNumber = 996; - this.TransferProductParameter(this.SystemConfig1.ProductNumber); + if (this.BLDCMotorIndex < BLDCMotorNum) + { + this.TransferBLDCMotorData(this.CurrentCommunicationID(this.BLDCMotorIndex), + this.CollectionBLDCParameter[this.BLDCMotorIndex]); + this.BLDCMotorIndex++; + } + else + { + this.BLDCMotorIndex = 0; + if (this.SystemConfig2.IsUsingRandomMode == true) + this.SystemConfig1.ProductNumber = 996; + this.TransferProductParameter(this.SystemConfig1.ProductNumber); + } } break; default: @@ -7040,7 +7065,7 @@ namespace ITC81DB_0H.Forms structItem.DummyInt7 = 0; structItem.DummyInt8 = 0; structItem.DummyInt9 = 0; - structItem.DummyInt10 = 0; + structItem.BLDCMotorNum = this.SystemConfig2.BLDCMotorNum; structItem.ModbusRTUSelectFunction = this.SystemConfig2.ModbusRTUSelectFunction; structItem.ModbusRTUSlaveIDCOM1 = this.SystemConfig2.ModbusRTUSlaveIDCOM1; structItem.ModbusRTUSlaveIDCOM3 = this.SystemConfig2.ModbusRTUSlaveIDCOM3; @@ -7145,7 +7170,7 @@ namespace ITC81DB_0H.Forms structItem.DummyInt7 = 0; structItem.DummyInt8 = 0; structItem.DummyInt9 = 0; - structItem.DummyInt10 = 0; + structItem.BLDCMotorNum = item.BLDCMotorNum; structItem.ModbusRTUSelectFunction = item.ModbusRTUSelectFunction; structItem.ModbusRTUSlaveIDCOM1 = item.ModbusRTUSlaveIDCOM1; structItem.ModbusRTUSlaveIDCOM3 = item.ModbusRTUSlaveIDCOM3; @@ -7257,6 +7282,7 @@ namespace ITC81DB_0H.Forms this.SystemConfig2.Barcode = structItem.Barcode; this.SystemConfig2.FileNameExtension = structItem.FileNameExtension; + this.SystemConfig2.BLDCMotorNum = structItem.BLDCMotorNum; this.SystemConfig2.EthernetPort = structItem.EthernetPort; this.SystemConfig2.EthernetCommMode = structItem.EthernetCommMode; this.SystemConfig2.EthernetOperationMode = structItem.EthernetOperationMode; @@ -7292,101 +7318,216 @@ namespace ITC81DB_0H.Forms #endregion #region BLDCMotorParameter + public int CurrentMotorID(string lane) + { + int motorID = 0; + + switch (lane) + { + case "A": + motorID = 1; + break; + case "B": + motorID = 2; + break; + case "C": + motorID = 3; + break; + case "D": + motorID = 4; + break; + case "E": + motorID = 5; + break; + case "F": + motorID = 6; + break; + case "G": + motorID = 7; + break; + case "H": + motorID = 8; + break; + case "I": + motorID = 9; + break; + case "J": + motorID = 10; + break; + case "K": + motorID = 11; + break; + case "L": + motorID = 12; + break; + case "M": + motorID =13; + break; + case "N": + motorID = 14; + break; + case "O": + motorID = 15; + break; + case "P": + motorID = 16; + break; + default: + motorID = 1; + break; + } + + return motorID; + } + public string CurrentCommunicationID(int num) + { + string ID = "A"; + + switch (num) + { + case 1: + ID = "A"; + break; + case 2: + ID = "B"; + break; + case 3: + ID = "C"; + break; + case 4: + ID = "D"; + break; + case 5: + ID = "E"; + break; + case 6: + ID = "F"; + break; + case 7: + ID = "G"; + break; + case 8: + ID = "H"; + break; + case 9: + ID = "I"; + break; + case 10: + ID = "J"; + break; + case 11: + ID = "K"; + break; + case 12: + ID = "L"; + break; + case 13: + ID = "M"; + break; + case 14: + ID = "N"; + break; + case 15: + ID = "O"; + break; + case 16: + ID = "P"; + break; + default: + ID = "A"; + break; + } + + return ID; + } + private void CreateBLDCMotorParameter() { - StructBLDCMotorParameter1 structItem1; - StructBLDCMotorParameter2 structItem2; + StructBLDCMotorParameter structItem; - this.BLDCParameter.Initialization(); - structItem1.CommBaudrate = this.BLDCParameter.CommBaudrate; - structItem1.CommParityBit = this.BLDCParameter.CommParityBit; - structItem1.PWMDelay = this.BLDCParameter.PWMDelay; - structItem1.FeedbackDeviation = this.BLDCParameter.FeedbackDeviation; - structItem1.MotorSpeed = this.BLDCParameter.MotorSpeed; - structItem1.PoleNum = this.BLDCParameter.PoleNum; - structItem1.AttenuatorRatio = this.BLDCParameter.AttenuatorRatio; + for (int i = 0; i < BLDCMotorNum; i++) + { + this.CollectionBLDCParameter[i].Initialization(); - structItem1.DummyInt1 = 0; - structItem1.DummyInt2 = 0; - structItem1.DummyInt3 = 0; - structItem1.DummyInt4 = 0; - structItem1.DummyInt5 = 0; - structItem1.DummyInt6 = 0; - structItem1.DummyInt7 = 0; - structItem1.DummyInt8 = 0; - structItem1.DummyInt9 = 0; - structItem1.DummyInt10 = 0; - structItem1.DummyInt11 = 0; - structItem1.DummyInt12 = 0; - structItem1.DummyInt13 = 0; - structItem1.DummyInt14 = 0; - structItem1.DummyInt15 = 0; - structItem1.DummyInt16 = 0; - structItem1.DummyInt17 = 0; - structItem1.DummyInt18 = 0; - structItem1.DummyInt19 = 0; - structItem1.DummyInt20 = 0; + structItem.MotorID = this.CollectionBLDCParameter[i].MotorID; - structItem1.DummyString1 = "0"; - structItem1.DummyString2 = "0"; - structItem1.DummyString3 = "0"; - structItem1.DummyString4 = "0"; - structItem1.DummyString5 = "0"; - structItem1.DummyString6 = "0"; - structItem1.DummyString7 = "0"; - structItem1.DummyString8 = "0"; - structItem1.DummyString9 = "0"; - structItem1.DummyString10 = "0"; - - this.smartFileIO.WriteStructure(structItem1, 0); + structItem.CommBaudrate = this.CollectionBLDCParameter[i].CommBaudrate; + structItem.CommParityBit = this.CollectionBLDCParameter[i].CommParityBit; + structItem.PWMDelay = this.CollectionBLDCParameter[i].PWMDelay; + structItem.FeedbackDeviation = this.CollectionBLDCParameter[i].FeedbackDeviation; + structItem.MotorSpeed = this.CollectionBLDCParameter[i].MotorSpeed; + structItem.PoleNum = this.CollectionBLDCParameter[i].PoleNum; + structItem.AttenuatorRatio = this.CollectionBLDCParameter[i].AttenuatorRatio; - structItem2.BootingStart = this.BLDCParameter.BootingStart; - structItem2.PortUse = this.BLDCParameter.PortUse; - structItem2.Feedback = this.BLDCParameter.Feedback; - structItem2.InitDirection = this.BLDCParameter.InitDirection; - structItem2.OperDirection = this.BLDCParameter.OperDirection; + structItem.DummyInt1 = 0; + structItem.DummyInt2 = 0; + structItem.DummyInt3 = 0; + structItem.DummyInt4 = 0; + structItem.DummyInt5 = 0; + structItem.DummyInt6 = 0; + structItem.DummyInt7 = 0; + structItem.DummyInt8 = 0; + structItem.DummyInt9 = 0; + structItem.DummyInt10 = 0; + structItem.DummyInt11 = 0; + structItem.DummyInt12 = 0; + structItem.DummyInt13 = 0; + structItem.DummyInt14 = 0; + structItem.DummyInt15 = 0; - structItem2.DummyInt1 = 0; - structItem2.DummyInt2 = 0; - structItem2.DummyInt3 = 0; - structItem2.DummyInt4 = 0; - structItem2.DummyInt5 = 0; - structItem2.DummyInt6 = 0; - structItem2.DummyInt7 = 0; - structItem2.DummyInt8 = 0; - structItem2.DummyInt9 = 0; - structItem2.DummyInt10 = 0; - structItem2.DummyInt11 = 0; - structItem2.DummyInt12 = 0; - structItem2.DummyInt13 = 0; - structItem2.DummyInt14 = 0; - structItem2.DummyInt15 = 0; - structItem2.DummyInt16 = 0; - structItem2.DummyInt17 = 0; - structItem2.DummyInt18 = 0; - structItem2.DummyInt19 = 0; - structItem2.DummyInt20 = 0; + structItem.DummyString1 = "0"; + structItem.DummyString2 = "0"; + structItem.DummyString3 = "0"; + structItem.DummyString4 = "0"; + structItem.DummyString5 = "0"; + structItem.DummyString6 = "0"; + structItem.DummyString7 = "0"; + structItem.DummyString8 = "0"; + structItem.DummyString9 = "0"; + structItem.DummyString10 = "0"; - structItem2.DummyString1 = "0"; - structItem2.DummyString2 = "0"; - structItem2.DummyString3 = "0"; - structItem2.DummyString4 = "0"; - structItem2.DummyString5 = "0"; - structItem2.DummyString6 = "0"; - structItem2.DummyString7 = "0"; - structItem2.DummyString8 = "0"; - structItem2.DummyString9 = "0"; - structItem2.DummyString10 = "0"; + structItem.BootingStart = this.CollectionBLDCParameter[i].BootingStart; + structItem.PortUse = this.CollectionBLDCParameter[i].PortUse; + structItem.Feedback = this.CollectionBLDCParameter[i].Feedback; + structItem.InitDirection = this.CollectionBLDCParameter[i].InitDirection; + structItem.OperDirection = this.CollectionBLDCParameter[i].OperDirection; - this.smartFileIO.WriteStructure(structItem2, 1); + structItem.DummyInt16 = 0; + structItem.DummyInt17 = 0; + structItem.DummyInt18 = 0; + structItem.DummyInt19 = 0; + structItem.DummyInt20 = 0; + structItem.DummyInt21 = 0; + structItem.DummyInt22 = 0; + structItem.DummyInt23 = 0; + structItem.DummyInt24 = 0; + structItem.DummyInt25 = 0; + structItem.DummyInt26 = 0; + structItem.DummyInt27 = 0; + structItem.DummyInt28 = 0; + structItem.DummyInt29 = 0; + structItem.DummyInt30 = 0; + + structItem.DummyString11 = "0"; + structItem.DummyString12 = "0"; + structItem.DummyString13 = "0"; + structItem.DummyString14 = "0"; + structItem.DummyString15 = "0"; + structItem.DummyString16 = "0"; + structItem.DummyString17 = "0"; + structItem.DummyString18 = "0"; + structItem.DummyString19 = "0"; + structItem.DummyString20 = "0"; + + this.smartFileIO.WriteStructure(structItem, i); + } } - public void SaveBLDCMotorFile(BLDCMotorParameter item) + public void SaveBLDCMotorFile(BLDCMotorParameter item, int index) { string fullFilePath = ""; bool fileCheck = false; - StructBLDCMotorParameter1 structItem1; - StructBLDCMotorParameter2 structItem2; + StructBLDCMotorParameter structItem; fullFilePath = this.PathSDCardSystemFile1Folder + "BLDCMotorItem.cfg"; this.smartFileIO.FilePathName = fullFilePath; @@ -7403,95 +7544,185 @@ namespace ITC81DB_0H.Forms this.CreateBLDCMotorParameter(); } - structItem1.CommBaudrate = item.CommBaudrate; - structItem1.CommParityBit = item.CommParityBit; - structItem1.PWMDelay = item.PWMDelay; - structItem1.FeedbackDeviation = item.FeedbackDeviation; - structItem1.MotorSpeed = item.MotorSpeed; - structItem1.PoleNum = item.PoleNum; - structItem1.AttenuatorRatio = item.AttenuatorRatio; + structItem.MotorID = item.MotorID; - structItem1.DummyInt1 = 0; - structItem1.DummyInt2 = 0; - structItem1.DummyInt3 = 0; - structItem1.DummyInt4 = 0; - structItem1.DummyInt5 = 0; - structItem1.DummyInt6 = 0; - structItem1.DummyInt7 = 0; - structItem1.DummyInt8 = 0; - structItem1.DummyInt9 = 0; - structItem1.DummyInt10 = 0; - structItem1.DummyInt11 = 0; - structItem1.DummyInt12 = 0; - structItem1.DummyInt13 = 0; - structItem1.DummyInt14 = 0; - structItem1.DummyInt15 = 0; - structItem1.DummyInt16 = 0; - structItem1.DummyInt17 = 0; - structItem1.DummyInt18 = 0; - structItem1.DummyInt19 = 0; - structItem1.DummyInt20 = 0; + structItem.CommBaudrate = item.CommBaudrate; + structItem.CommParityBit = item.CommParityBit; + structItem.PWMDelay = item.PWMDelay; + structItem.FeedbackDeviation = item.FeedbackDeviation; + structItem.MotorSpeed = item.MotorSpeed; + structItem.PoleNum = item.PoleNum; + structItem.AttenuatorRatio = item.AttenuatorRatio; - structItem1.DummyString1 = "0"; - structItem1.DummyString2 = "0"; - structItem1.DummyString3 = "0"; - structItem1.DummyString4 = "0"; - structItem1.DummyString5 = "0"; - structItem1.DummyString6 = "0"; - structItem1.DummyString7 = "0"; - structItem1.DummyString8 = "0"; - structItem1.DummyString9 = "0"; - structItem1.DummyString10 = "0"; + structItem.DummyInt1 = 0; + structItem.DummyInt2 = 0; + structItem.DummyInt3 = 0; + structItem.DummyInt4 = 0; + structItem.DummyInt5 = 0; + structItem.DummyInt6 = 0; + structItem.DummyInt7 = 0; + structItem.DummyInt8 = 0; + structItem.DummyInt9 = 0; + structItem.DummyInt10 = 0; + structItem.DummyInt11 = 0; + structItem.DummyInt12 = 0; + structItem.DummyInt13 = 0; + structItem.DummyInt14 = 0; + structItem.DummyInt15 = 0; - this.smartFileIO.WriteStructure(structItem1, 0); + structItem.DummyString1 = "0"; + structItem.DummyString2 = "0"; + structItem.DummyString3 = "0"; + structItem.DummyString4 = "0"; + structItem.DummyString5 = "0"; + structItem.DummyString6 = "0"; + structItem.DummyString7 = "0"; + structItem.DummyString8 = "0"; + structItem.DummyString9 = "0"; + structItem.DummyString10 = "0"; - structItem2.BootingStart = item.BootingStart; - structItem2.PortUse = item.PortUse; - structItem2.Feedback = item.Feedback; - structItem2.InitDirection = item.InitDirection; - structItem2.OperDirection = item.OperDirection; + structItem.BootingStart = item.BootingStart; + structItem.PortUse = item.PortUse; + structItem.Feedback = item.Feedback; + structItem.InitDirection = item.InitDirection; + structItem.OperDirection = item.OperDirection; - structItem2.DummyInt1 = 0; - structItem2.DummyInt2 = 0; - structItem2.DummyInt3 = 0; - structItem2.DummyInt4 = 0; - structItem2.DummyInt5 = 0; - structItem2.DummyInt6 = 0; - structItem2.DummyInt7 = 0; - structItem2.DummyInt8 = 0; - structItem2.DummyInt9 = 0; - structItem2.DummyInt10 = 0; - structItem2.DummyInt11 = 0; - structItem2.DummyInt12 = 0; - structItem2.DummyInt13 = 0; - structItem2.DummyInt14 = 0; - structItem2.DummyInt15 = 0; - structItem2.DummyInt16 = 0; - structItem2.DummyInt17 = 0; - structItem2.DummyInt18 = 0; - structItem2.DummyInt19 = 0; - structItem2.DummyInt20 = 0; + structItem.DummyInt16 = 0; + structItem.DummyInt17 = 0; + structItem.DummyInt18 = 0; + structItem.DummyInt19 = 0; + structItem.DummyInt20 = 0; + structItem.DummyInt21 = 0; + structItem.DummyInt22 = 0; + structItem.DummyInt23 = 0; + structItem.DummyInt24 = 0; + structItem.DummyInt25 = 0; + structItem.DummyInt26 = 0; + structItem.DummyInt27 = 0; + structItem.DummyInt28 = 0; + structItem.DummyInt29 = 0; + structItem.DummyInt30 = 0; - structItem2.DummyString1 = "0"; - structItem2.DummyString2 = "0"; - structItem2.DummyString3 = "0"; - structItem2.DummyString4 = "0"; - structItem2.DummyString5 = "0"; - structItem2.DummyString6 = "0"; - structItem2.DummyString7 = "0"; - structItem2.DummyString8 = "0"; - structItem2.DummyString9 = "0"; - structItem2.DummyString10 = "0"; + structItem.DummyString11 = "0"; + structItem.DummyString12 = "0"; + structItem.DummyString13 = "0"; + structItem.DummyString14 = "0"; + structItem.DummyString15 = "0"; + structItem.DummyString16 = "0"; + structItem.DummyString17 = "0"; + structItem.DummyString18 = "0"; + structItem.DummyString19 = "0"; + structItem.DummyString20 = "0"; + + this.smartFileIO.WriteStructure_Begin(structItem, index); + this.smartFileIO.WriteStructure_End(); - this.smartFileIO.WriteStructure(structItem2, 1); this.smartFileIO.Close(); } - public void LoadBLDCMotorFile() + public void SaveBLDCMotorFile(Collection items) + { + string fullFilePath = ""; + bool fileCheck = false; + StructBLDCMotorParameter structItem; + + fullFilePath = this.PathSDCardSystemFile1Folder + "BLDCMotorItem.cfg"; + this.smartFileIO.FilePathName = fullFilePath; + + FileInfo fileInfo = new FileInfo(fullFilePath); + fileCheck = fileInfo.Exists; + + if (fileCheck == true) + this.smartFileIO.Open(this.BufferSmartUart); + else + { + this.smartFileIO.Open(this.BufferSmartUart); + + this.CreateBLDCMotorParameter(); + } + + for (int i = 0; i < BLDCMotorNum; i++) + { + structItem.MotorID = items[i].MotorID; + + structItem.CommBaudrate = items[i].CommBaudrate; + structItem.CommParityBit = items[i].CommParityBit; + structItem.PWMDelay = items[i].PWMDelay; + structItem.FeedbackDeviation = items[i].FeedbackDeviation; + structItem.MotorSpeed = items[i].MotorSpeed; + structItem.PoleNum = items[i].PoleNum; + structItem.AttenuatorRatio = items[i].AttenuatorRatio; + + structItem.DummyInt1 = 0; + structItem.DummyInt2 = 0; + structItem.DummyInt3 = 0; + structItem.DummyInt4 = 0; + structItem.DummyInt5 = 0; + structItem.DummyInt6 = 0; + structItem.DummyInt7 = 0; + structItem.DummyInt8 = 0; + structItem.DummyInt9 = 0; + structItem.DummyInt10 = 0; + structItem.DummyInt11 = 0; + structItem.DummyInt12 = 0; + structItem.DummyInt13 = 0; + structItem.DummyInt14 = 0; + structItem.DummyInt15 = 0; + + structItem.DummyString1 = "0"; + structItem.DummyString2 = "0"; + structItem.DummyString3 = "0"; + structItem.DummyString4 = "0"; + structItem.DummyString5 = "0"; + structItem.DummyString6 = "0"; + structItem.DummyString7 = "0"; + structItem.DummyString8 = "0"; + structItem.DummyString9 = "0"; + structItem.DummyString10 = "0"; + + structItem.BootingStart = items[i].BootingStart; + structItem.PortUse = items[i].PortUse; + structItem.Feedback = items[i].Feedback; + structItem.InitDirection = items[i].InitDirection; + structItem.OperDirection = items[i].OperDirection; + + structItem.DummyInt16 = 0; + structItem.DummyInt17 = 0; + structItem.DummyInt18 = 0; + structItem.DummyInt19 = 0; + structItem.DummyInt20 = 0; + structItem.DummyInt21 = 0; + structItem.DummyInt22 = 0; + structItem.DummyInt23 = 0; + structItem.DummyInt24 = 0; + structItem.DummyInt25 = 0; + structItem.DummyInt26 = 0; + structItem.DummyInt27 = 0; + structItem.DummyInt28 = 0; + structItem.DummyInt29 = 0; + structItem.DummyInt30 = 0; + + structItem.DummyString11 = "0"; + structItem.DummyString12 = "0"; + structItem.DummyString13 = "0"; + structItem.DummyString14 = "0"; + structItem.DummyString15 = "0"; + structItem.DummyString16 = "0"; + structItem.DummyString17 = "0"; + structItem.DummyString18 = "0"; + structItem.DummyString19 = "0"; + structItem.DummyString20 = "0"; + + this.smartFileIO.WriteStructure_Begin(structItem, i); + } + this.smartFileIO.WriteStructure_End(); + + this.smartFileIO.Close(); + } + public void LoadBLDCMotorFile(ref Collection items) { string fullFilePath = "", value = ""; bool fileCheck = false; - StructBLDCMotorParameter1 structItem1; - StructBLDCMotorParameter2 structItem2; + StructBLDCMotorParameter structItem; fullFilePath = this.PathSDCardSystemFile1Folder + "BLDCMotorItem.cfg"; this.smartFileIO.FilePathName = fullFilePath; @@ -7510,23 +7741,29 @@ namespace ITC81DB_0H.Forms try { - structItem1 = (StructBLDCMotorParameter1)this.smartFileIO.ReadStructure(0, typeof(StructBLDCMotorParameter1)); + if (this.smartFileIO.ReadStructureAllBuffer() == true) + { + for (int i = 0; i < BLDCMotorNum; i++) + { + structItem = (StructBLDCMotorParameter)this.smartFileIO.ReadStructureBuffer(typeof(StructBLDCMotorParameter), i); - this.BLDCParameter.CommBaudrate = structItem1.CommBaudrate; - this.BLDCParameter.CommParityBit = structItem1.CommParityBit; - this.BLDCParameter.PWMDelay = structItem1.PWMDelay; - this.BLDCParameter.FeedbackDeviation = structItem1.FeedbackDeviation; - this.BLDCParameter.MotorSpeed = structItem1.MotorSpeed; - this.BLDCParameter.PoleNum = structItem1.PoleNum; - this.BLDCParameter.AttenuatorRatio = structItem1.AttenuatorRatio; + items[i].MotorID = structItem.MotorID; - structItem2 = (StructBLDCMotorParameter2)this.smartFileIO.ReadStructure(1, typeof(StructBLDCMotorParameter2)); + items[i].CommBaudrate = structItem.CommBaudrate; + items[i].CommParityBit = structItem.CommParityBit; + items[i].PWMDelay = structItem.PWMDelay; + items[i].FeedbackDeviation = structItem.FeedbackDeviation; + items[i].MotorSpeed = structItem.MotorSpeed; + items[i].PoleNum = structItem.PoleNum; + items[i].AttenuatorRatio = structItem.AttenuatorRatio; - this.BLDCParameter.BootingStart = structItem2.BootingStart; - this.BLDCParameter.PortUse = structItem2.PortUse; - this.BLDCParameter.Feedback = structItem2.Feedback; - this.BLDCParameter.InitDirection = structItem2.InitDirection; - this.BLDCParameter.OperDirection = structItem2.OperDirection; + items[i].BootingStart = structItem.BootingStart; + items[i].PortUse = structItem.PortUse; + items[i].Feedback = structItem.Feedback; + items[i].InitDirection = structItem.InitDirection; + items[i].OperDirection = structItem.OperDirection; + } + } } catch { @@ -7797,22 +8034,22 @@ namespace ITC81DB_0H.Forms this.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ParameterCount, sb.ToString()); } - public void TransferBLDCMotorData() + public void TransferBLDCMotorData(string ID, BLDCMotorParameter item) { StringBuilder sb = new StringBuilder(); - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.CommBaudrate)); // 메인보드와의 통신 Baudrate(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.CommParityBit)); // 메인보드와의 통신 Parity bit(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.PWMDelay)); // PWM 변화 속도(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.FeedbackDeviation)); // Feedback 구동을 위한 변화 편차(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.MotorSpeed)); // Motor 속도(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.PoleNum)); // BLDC 모터 Pole 수(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.AttenuatorRatio)); // 감속기 비율(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.BootingStart)); // 부팅 시 자동 구동 여부(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.PortUse)); // 타 Port 모터 사용 여부(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.Feedback)); // 모터 구동 중 피드백 제어 여부(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.InitDirection)); // 초기 모터 방향(4) - sb.Append(Helper.StringZeroFillDigits4(this.BLDCParameter.OperDirection)); // 구동 중 모터 방향(4) + sb.Append(Helper.StringZeroFillDigits4(item.CommBaudrate)); // 메인보드와의 통신 Baudrate(4) + sb.Append(Helper.StringZeroFillDigits4(item.CommParityBit)); // 메인보드와의 통신 Parity bit(4) + sb.Append(Helper.StringZeroFillDigits4(item.PWMDelay)); // PWM 변화 속도(4) + sb.Append(Helper.StringZeroFillDigits4(item.FeedbackDeviation)); // Feedback 구동을 위한 변화 편차(4) + sb.Append(Helper.StringZeroFillDigits4(item.MotorSpeed)); // Motor 속도(4) + sb.Append(Helper.StringZeroFillDigits4(item.PoleNum)); // BLDC 모터 Pole 수(4) + sb.Append(Helper.StringZeroFillDigits4(item.AttenuatorRatio)); // 감속기 비율(4) + sb.Append(Helper.StringZeroFillDigits4(item.BootingStart)); // 부팅 시 자동 구동 여부(4) + sb.Append(Helper.StringZeroFillDigits4(item.PortUse)); // 타 Port 모터 사용 여부(4) + sb.Append(Helper.StringZeroFillDigits4(item.Feedback)); // 모터 구동 중 피드백 제어 여부(4) + sb.Append(Helper.StringZeroFillDigits4(item.InitDirection)); // 초기 모터 방향(4) + sb.Append(Helper.StringZeroFillDigits4(item.OperDirection)); // 구동 중 모터 방향(4) sb.Append("0000"); // Dummy1(4) sb.Append("0000"); // Dummy2(4) sb.Append("0000"); // Dummy3(4) @@ -7837,7 +8074,7 @@ namespace ITC81DB_0H.Forms sb.Append("0000"); // Dummy22(4) sb.Append("0000"); // Dummy23(4) - this.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.BLDCMotorSetting, sb.ToString()); + this.TransferDataStream(CommunicationCommand.Write, ID, CommunicationAddress.BLDCMotorSetting, sb.ToString()); } #endregion #region SystemParameter1 @@ -10238,7 +10475,7 @@ namespace ITC81DB_0H.Forms this.LoadUserGroupPasswordFile(); // BLDC Motor Settings 파일 읽기 - this.LoadBLDCMotorFile(); + this.LoadBLDCMotorFile(ref this.CollectionBLDCParameter); // UserGroup 파일 읽기 this.LoadUserGroupFile(ref this.CurrentUserGroup); diff --git a/ITC81DB_0H/Forms/FormMenu.cs b/ITC81DB_0H/Forms/FormMenu.cs index 9836ec6..453d655 100644 --- a/ITC81DB_0H/Forms/FormMenu.cs +++ b/ITC81DB_0H/Forms/FormMenu.cs @@ -723,7 +723,7 @@ namespace ITC81DB_0H.Forms this.CenterSystemExternalOutput.BringToFront(); break; case DataStore.MenuBottomSystem.BLDCMotorSetting: - this.CenterSystemBLDCMotorSetting.DisplayRefresh(this.ParentForm.CurrentSystemStatus); + this.CenterSystemBLDCMotorSetting.DisplayRefresh(this.ParentForm.CurrentSystemStatus, this.ParentForm.CollectionBLDCParameter); this.CenterSystemBLDCMotorSetting.BringToFront(); break; default: diff --git a/ITC81DB_0H/bin/Release/ITC81DB_0H.exe b/ITC81DB_0H/bin/Release/ITC81DB_0H.exe index fe9f7a9..e15702b 100644 Binary files a/ITC81DB_0H/bin/Release/ITC81DB_0H.exe and b/ITC81DB_0H/bin/Release/ITC81DB_0H.exe differ diff --git a/ITC81DB_0H/obj/Release/ITC81DB_0H.exe b/ITC81DB_0H/obj/Release/ITC81DB_0H.exe index fe9f7a9..e15702b 100644 Binary files a/ITC81DB_0H/obj/Release/ITC81DB_0H.exe and b/ITC81DB_0H/obj/Release/ITC81DB_0H.exe differ