272 lines
9.3 KiB
C#
272 lines
9.3 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
using SmartX;
|
|
|
|
using INT51DB_ImageDll;
|
|
using INT51DB.DialogForms;
|
|
using INT51DB.Forms;
|
|
|
|
namespace INT51DB.Controls
|
|
{
|
|
public partial class ControlMainDisplayFunction2 : UserControl
|
|
{
|
|
#region Field
|
|
private FormMainDisplay m_ParentForm;
|
|
#endregion
|
|
|
|
#region Constructor
|
|
public ControlMainDisplayFunction2(FormMainDisplay parent)
|
|
{
|
|
InitializeComponent();
|
|
|
|
this.ParentForm = parent;
|
|
|
|
this.InitializeDesign();
|
|
this.DefaultSetting();
|
|
}
|
|
#endregion
|
|
|
|
#region Property
|
|
public FormMainDisplay ParentForm
|
|
{
|
|
get { return this.m_ParentForm; }
|
|
set { this.m_ParentForm = value; }
|
|
}
|
|
#endregion
|
|
|
|
#region Method
|
|
public void InitializeDesign()
|
|
{
|
|
Class1 images = new Class1();
|
|
|
|
if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.English)
|
|
{
|
|
}
|
|
else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese)
|
|
{
|
|
}
|
|
else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Czech)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
private void DefaultSetting()
|
|
{
|
|
|
|
}
|
|
|
|
private void ModbusStatusDisplay(bool isOpen)
|
|
{
|
|
if (isOpen == true)
|
|
{
|
|
this.labelModusStatus.Text = "OPEN";
|
|
this.labelModusStatus.BackColor = Color.DarkGreen;
|
|
this.labelModusStatus.ForeColor = Color.White;
|
|
}
|
|
else
|
|
{
|
|
this.labelModusStatus.Text = "CLOSE";
|
|
this.labelModusStatus.BackColor = Color.Crimson;
|
|
this.labelModusStatus.ForeColor = Color.White;
|
|
}
|
|
}
|
|
public void ModbusOpen()
|
|
{
|
|
if (this.ParentForm.ParentForm.smartModbus.IsOpen == true)
|
|
this.ParentForm.ParentForm.smartModbus.PortClose();
|
|
|
|
this.ParentForm.ParentForm.smartModbus.PortOpen();
|
|
this.ModbusStatusDisplay(this.ParentForm.ParentForm.smartModbus.IsOpen);
|
|
}
|
|
public void ModbusClose()
|
|
{
|
|
this.ParentForm.ParentForm.smartModbus.PortClose();
|
|
this.ModbusStatusDisplay(this.ParentForm.ParentForm.smartModbus.IsOpen);
|
|
}
|
|
|
|
private void ServoMotorWrite(int slaveAddress, int parameterAddress, float value)
|
|
{
|
|
byte[] writeData = new byte[4];
|
|
byte[] readData = new byte[8];
|
|
|
|
writeData = BitConverter.GetBytes(value);
|
|
Array.Reverse(writeData);
|
|
|
|
this.ParentForm.ParentForm.smartModbus.SlaveAddress = slaveAddress;
|
|
if (this.ParentForm.ParentForm.smartModbus.DirectParameter(0x06, parameterAddress, 1, writeData, ref readData) == SmartX.SmartModbus.EXCEPTIONCODE.SUCCESS)
|
|
{
|
|
MessageBox.Show("쓰기완료");
|
|
}
|
|
}
|
|
private string ServoMotorRead(int slaveAddress, int parameterAddress)
|
|
{
|
|
float value;
|
|
byte[] readData = new byte[4];
|
|
|
|
this.ParentForm.ParentForm.smartModbus.SlaveAddress = slaveAddress;
|
|
this.ParentForm.ParentForm.smartModbus.ReadHoldingRegister(parameterAddress, 1, ref readData);
|
|
|
|
Array.Reverse(readData);
|
|
value = BitConverter.ToSingle(readData, 0);
|
|
|
|
return string.Format("{0:0}", value);
|
|
}
|
|
|
|
public void DisplayRefresh(SystemStatus status)
|
|
{
|
|
this.ModbusOpen();
|
|
|
|
//this.labelPosition10.Text = "0";
|
|
//this.labelPosition11.Text = "0";
|
|
//this.labelPosition20.Text = "0";
|
|
//this.labelPosition21.Text = "0";
|
|
//this.labelSpeed10.Text = "0";
|
|
//this.labelSpeed20.Text = "0";
|
|
}
|
|
#endregion
|
|
|
|
#region Event Handler
|
|
private void buttonOpen_Click(object sender, EventArgs e)
|
|
{
|
|
this.ModbusOpen();
|
|
}
|
|
|
|
private void buttonParameterRead_Click(object sender, EventArgs e)
|
|
{
|
|
if (this.ParentForm.ParentForm.smartModbus.IsOpen == false)
|
|
{
|
|
// 통신 연결상태를 확인하세요
|
|
DialogFormMessage myMsg = new DialogFormMessage(23, this.ParentForm.ParentForm.SystemConfig.Language);
|
|
myMsg.ShowDialog();
|
|
return;
|
|
}
|
|
|
|
this.ParentForm.ParentForm.smartModbus.ReadTimeout = 500;
|
|
|
|
SmartSplash splash = new SmartSplash();
|
|
splash.CenterPosition = true;
|
|
splash.AnimationInterval = 200;
|
|
splash.LoadingImagePathname = "SmartLoading4";
|
|
splash.Start();
|
|
|
|
this.Enabled = false;
|
|
|
|
// ServoMotor 1
|
|
this.labelSpeed10.Text = this.ServoMotorRead(1, ServoMotorParameterAddress.GropSpeed0);
|
|
this.labelPosition10.Text = this.ServoMotorRead(1, ServoMotorParameterAddress.PositionCMD0);
|
|
this.labelPosition11.Text = this.ServoMotorRead(1, ServoMotorParameterAddress.PositionCMD1);
|
|
|
|
splash.Finish();
|
|
|
|
this.Enabled = true;
|
|
}
|
|
|
|
private void labelMotorParameterSetup_Click(object sender, EventArgs e)
|
|
{
|
|
float fValue = float.NaN;
|
|
|
|
SmartLabel label = sender as SmartLabel;
|
|
|
|
if (label == null)
|
|
return;
|
|
|
|
if (this.ParentForm.ParentForm.smartModbus.IsOpen == false)
|
|
{
|
|
// 통신 연결상태를 확인하세요
|
|
DialogFormMessage myMsg = new DialogFormMessage(23, this.ParentForm.ParentForm.SystemConfig.Language);
|
|
myMsg.ShowDialog();
|
|
return;
|
|
}
|
|
|
|
if (label == this.labelSpeed10)
|
|
{
|
|
#region Conveyor Motor Speed 0
|
|
DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelSpeed10.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig.Language);
|
|
|
|
if (myKeyPad.ShowDialog() == DialogResult.OK)
|
|
{
|
|
if (myKeyPad.doubleValue < 0 || myKeyPad.doubleValue > 9999)
|
|
{
|
|
// 입력범위를 확인하세요
|
|
DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.Language);
|
|
myMsg.ShowDialog();
|
|
}
|
|
else
|
|
{
|
|
this.labelSpeed10.Text = myKeyPad.StringValue;
|
|
|
|
fValue = Convert.ToSingle(this.labelSpeed10.Text);
|
|
|
|
this.ServoMotorWrite(1, ServoMotorParameterAddress.GropSpeed0, fValue);
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
else if (label == this.labelPosition10)
|
|
{
|
|
#region Motor Position 0 - Up
|
|
DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelPosition10.Text, 4, 0, true, this.ParentForm.ParentForm.SystemConfig.Language);
|
|
|
|
if (myKeyPad.ShowDialog() == DialogResult.OK)
|
|
{
|
|
if (myKeyPad.doubleValue < -9999 || myKeyPad.doubleValue > 9999)
|
|
{
|
|
// 입력범위를 확인하세요
|
|
DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.Language);
|
|
myMsg.ShowDialog();
|
|
}
|
|
else
|
|
{
|
|
this.labelPosition10.Text = myKeyPad.StringValue;
|
|
|
|
fValue = Convert.ToSingle(this.labelPosition10.Text);
|
|
|
|
this.ServoMotorWrite(1, ServoMotorParameterAddress.PositionCMD0, fValue);
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
else if (label == this.labelPosition11)
|
|
{
|
|
#region Motor Position 1 - Down
|
|
DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelPosition11.Text, 4, 0, true, this.ParentForm.ParentForm.SystemConfig.Language);
|
|
|
|
if (myKeyPad.ShowDialog() == DialogResult.OK)
|
|
{
|
|
if (myKeyPad.doubleValue < -9999 || myKeyPad.doubleValue > 9999)
|
|
{
|
|
// 입력범위를 확인하세요
|
|
DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.Language);
|
|
myMsg.ShowDialog();
|
|
}
|
|
else
|
|
{
|
|
this.labelPosition11.Text = myKeyPad.StringValue;
|
|
|
|
fValue = Convert.ToSingle(this.labelPosition11.Text);
|
|
|
|
this.ServoMotorWrite(1, ServoMotorParameterAddress.PositionCMD1, fValue);
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
|
|
private void buttonClose_Click(object sender, EventArgs e)
|
|
{
|
|
this.ModbusClose();
|
|
this.Visible = false;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|